mdds
Loading...
Searching...
No Matches
mdds::trie::detail::iterator_base< _TrieType, IsConst > Class Template Reference
Inheritance diagram for mdds::trie::detail::iterator_base< _TrieType, IsConst >:
mdds::trie::detail::const_iterator< trie_map > mdds::trie::detail::iterator< trie_map >

Public Types

using value_type = mdds::detail::ref_pair<typename std::add_const<key_type>::type, trie_value_type>
using pointer = value_type*
using reference = value_type&
using difference_type = std::ptrdiff_t
using iterator_category = std::bidirectional_iterator_tag

Public Member Functions

 iterator_base (node_stack_type &&node_stack, key_type &&buf, iterator_type type)
bool operator== (const iterator_base &other) const
bool operator!= (const iterator_base &other) const
value_type operator* ()
value_type operator-> ()
iterator_base & operator++ ()
iterator_base operator++ (int)
iterator_base & operator-- ()
iterator_base operator-- (int)

Protected Types

using trie_type = _TrieType
using _is_const = std::bool_constant<IsConst>
using node_stack_type = typename get_node_stack_type<trie_type, _is_const>::type
using trie_node_type = mdds::detail::const_t<typename trie_type::trie_node, IsConst>
using trie_node_child_pos_type
using key_type = typename trie_type::key_type
using trie_value_type = typename mdds::detail::const_or_not<typename trie_type::value_type, _is_const>::type

Protected Member Functions

 iterator_base (empty_iterator_type)

Static Protected Member Functions

static trie_node_type * push_child_node_to_stack (node_stack_type &node_stack, key_type &buf, trie_node_child_pos_type &child_pos)
static trie_node_type * descend_to_previus_leaf_node (node_stack_type &node_stack, key_type &buf)

Protected Attributes

friend trie_type
friend search_results< trie_type >
node_stack_type m_node_stack
key_type m_buffer
key_type m_current_key
trie_value_type * m_current_value_ptr
iterator_type m_type

Member Typedef Documentation

◆ trie_node_child_pos_type

template<typename _TrieType, bool IsConst>
using mdds::trie::detail::iterator_base< _TrieType, IsConst >::trie_node_child_pos_type
protected
Initial value:
typename std::remove_const<trie_node_type>::type::children_type, _is_const>::type
Definition global.hpp:158

Member Function Documentation

◆ descend_to_previus_leaf_node()

template<typename _TrieType, bool IsConst>
trie_node_type * mdds::trie::detail::iterator_base< _TrieType, IsConst >::descend_to_previus_leaf_node ( node_stack_type & node_stack,
key_type & buf )
inlinestaticprotected

From the current node, move to its previous child node and descend all the way to the leaf node.