Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B > Struct Template Reference

#include <champ_iterator.hpp>

+ Inheritance diagram for immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >:
+ Collaboration diagram for immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >:

Classes

struct  end_t
 

Public Types

using tree_t = champ< T, Hash, Eq, MP, B >
 
using node_t = typename tree_t::node_t
 

Public Member Functions

 champ_iterator ()=default
 
 champ_iterator (const tree_t &v)
 
 champ_iterator (const tree_t &v, end_t)
 
 champ_iterator (const champ_iterator &other)
 
- Public Member Functions inherited from immer::detail::iterator_facade< champ_iterator< T, Hash, Eq, MP, B >, std::forward_iterator_tag, T, const T &, std::ptrdiff_t, const T *>
const T & operator* () const
 
const T * operator-> () const
 
reference_proxy operator[] (std::ptrdiff_t n) const
 
bool operator== (const champ_iterator< T, Hash, Eq, MP, B > &rhs) const
 
bool operator!= (const champ_iterator< T, Hash, Eq, MP, B > &rhs) const
 
champ_iterator< T, Hash, Eq, MP, B > & operator++ ()
 
champ_iterator< T, Hash, Eq, MP, B > operator++ (int)
 
champ_iterator< T, Hash, Eq, MP, B > & operator-- ()
 
champ_iterator< T, Hash, Eq, MP, B > operator-- (int)
 
champ_iterator< T, Hash, Eq, MP, B > & operator+= (std::ptrdiff_t n)
 
champ_iterator< T, Hash, Eq, MP, B > & operator-= (std::ptrdiff_t n)
 
champ_iterator< T, Hash, Eq, MP, B > operator+ (std::ptrdiff_t n) const
 
champ_iterator< T, Hash, Eq, MP, B > operator- (std::ptrdiff_t n) const
 
std::ptrdiff_t operator- (const champ_iterator< T, Hash, Eq, MP, B > &rhs) const
 
bool operator< (const champ_iterator< T, Hash, Eq, MP, B > &rhs) const
 
bool operator<= (const champ_iterator< T, Hash, Eq, MP, B > &rhs) const
 
bool operator> (const champ_iterator< T, Hash, Eq, MP, B > &rhs) const
 
bool operator>= (const champ_iterator< T, Hash, Eq, MP, B > &rhs) const
 

Private Member Functions

void increment ()
 
bool step_down ()
 
bool step_right ()
 
void ensure_valid_ ()
 
bool equal (const champ_iterator &other) const
 
const T & dereference () const
 

Private Attributes

friend iterator_core_access
 
T * cur_
 
T * end_
 
count_t depth_
 
node_t *const * path_ [max_depth< B >+1]
 

Additional Inherited Members

- Protected Types inherited from immer::detail::iterator_facade< champ_iterator< T, Hash, Eq, MP, B >, std::forward_iterator_tag, T, const T &, std::ptrdiff_t, const T *>
using access_t = iterator_core_access
 
- Protected Member Functions inherited from immer::detail::iterator_facade< champ_iterator< T, Hash, Eq, MP, B >, std::forward_iterator_tag, T, const T &, std::ptrdiff_t, const T *>
const champ_iterator< T, Hash, Eq, MP, B > & derived () const
 
champ_iterator< T, Hash, Eq, MP, B > & derived ()
 
- Static Protected Attributes inherited from immer::detail::iterator_facade< champ_iterator< T, Hash, Eq, MP, B >, std::forward_iterator_tag, T, const T &, std::ptrdiff_t, const T *>
static constexpr auto is_random_access
 
static constexpr auto is_bidirectional
 

Detailed Description

template<typename T, typename Hash, typename Eq, typename MP, bits_t B>
struct immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >

Definition at line 19 of file champ_iterator.hpp.

Member Typedef Documentation

◆ node_t

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
using immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::node_t = typename tree_t::node_t

Definition at line 28 of file champ_iterator.hpp.

◆ tree_t

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
using immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::tree_t = champ<T, Hash, Eq, MP, B>

Definition at line 27 of file champ_iterator.hpp.

Constructor & Destructor Documentation

◆ champ_iterator() [1/4]

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::champ_iterator ( )
default

◆ champ_iterator() [2/4]

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::champ_iterator ( const tree_t v)
inline

Definition at line 34 of file champ_iterator.hpp.

◆ champ_iterator() [3/4]

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::champ_iterator ( const tree_t v,
end_t   
)
inline

Definition at line 47 of file champ_iterator.hpp.

◆ champ_iterator() [4/4]

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::champ_iterator ( const champ_iterator< T, Hash, Eq, MP, B > &  other)
inline

Member Function Documentation

◆ dereference()

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
const T& immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::dereference ( ) const
inlineprivate

◆ ensure_valid_()

◆ equal()

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
bool immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::equal ( const champ_iterator< T, Hash, Eq, MP, B > &  other) const
inlineprivate

◆ increment()

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
void immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::increment ( )
inlineprivate

◆ step_down()

◆ step_right()

Member Data Documentation

◆ cur_

◆ depth_

◆ end_

◆ iterator_core_access

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
friend immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::iterator_core_access
private

Definition at line 64 of file champ_iterator.hpp.

◆ path_

template<typename T , typename Hash , typename Eq , typename MP , bits_t B>
node_t* const* immer::detail::hamts::champ_iterator< T, Hash, Eq, MP, B >::path_[max_depth< B >+1]
private

The documentation for this struct was generated from the following file:
Released under the MIT license