hat-trie
Public Types | Public Member Functions | Friends | List of all members
tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator > Class Template Reference

#include <htrie_hash.h>

Public Types

using iterator_category = std::forward_iterator_tag
 
using value_type = typename std::conditional< has_value< T >::value, T, void >::type
 
using difference_type = std::ptrdiff_t
 
using reference = typename std::conditional< has_value< T >::value, typename std::conditional< IsConst, typename std::add_lvalue_reference< const T >::type, typename std::add_lvalue_reference< T >::type >::type, void >::type
 
using pointer = typename std::conditional< has_value< T >::value, typename std::conditional< IsConst, const T *, T * >::type, void >::type
 

Public Member Functions

 htrie_hash_iterator () noexcept
 
template<bool P = IsPrefixIterator, typename std::enable_if<!P >::type * = nullptr>
 htrie_hash_iterator (const htrie_hash_iterator< false, false > &other) noexcept
 
template<bool P = IsPrefixIterator, typename std::enable_if< P >::type * = nullptr>
 htrie_hash_iterator (const htrie_hash_iterator< false, true > &other) noexcept
 
void key (std::basic_string< CharT > &key_buffer_out) const
 
std::basic_string< CharT > key () const
 
template<class U = T, typename std::enable_if< has_value< U >::value >::type * = nullptr>
reference value () const
 
template<class U = T, typename std::enable_if< has_value< U >::value >::type * = nullptr>
reference operator* () const
 
template<class U = T, typename std::enable_if< has_value< U >::value >::type * = nullptr>
pointer operator-> () const
 
htrie_hash_iteratoroperator++ ()
 
htrie_hash_iterator operator++ (int)
 

Friends

class htrie_hash
 
bool operator== (const htrie_hash_iterator &lhs, const htrie_hash_iterator &rhs)
 
bool operator!= (const htrie_hash_iterator &lhs, const htrie_hash_iterator &rhs)
 

Member Typedef Documentation

◆ difference_type

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
using tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::difference_type = std::ptrdiff_t

◆ iterator_category

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
using tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::iterator_category = std::forward_iterator_tag

◆ pointer

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
using tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::pointer = typename std::conditional< has_value<T>::value, typename std::conditional<IsConst, const T*, T*>::type, void>::type

◆ reference

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
using tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::reference = typename std::conditional< has_value<T>::value, typename std::conditional<IsConst, typename std::add_lvalue_reference<const T>::type, typename std::add_lvalue_reference<T>::type>::type, void>::type

◆ value_type

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
using tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::value_type = typename std::conditional<has_value<T>::value, T, void>::type

Constructor & Destructor Documentation

◆ htrie_hash_iterator() [1/3]

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::htrie_hash_iterator ( )
inlinenoexcept

◆ htrie_hash_iterator() [2/3]

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
template<bool P = IsPrefixIterator, typename std::enable_if<!P >::type * = nullptr>
tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::htrie_hash_iterator ( const htrie_hash_iterator< false, false > &  other)
inlinenoexcept

◆ htrie_hash_iterator() [3/3]

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
template<bool P = IsPrefixIterator, typename std::enable_if< P >::type * = nullptr>
tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::htrie_hash_iterator ( const htrie_hash_iterator< false, true > &  other)
inlinenoexcept

Member Function Documentation

◆ key() [1/2]

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
void tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::key ( std::basic_string< CharT > &  key_buffer_out) const
inline

◆ key() [2/2]

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
std::basic_string<CharT> tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::key ( ) const
inline

◆ operator*()

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
template<class U = T, typename std::enable_if< has_value< U >::value >::type * = nullptr>
reference tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::operator* ( ) const
inline

◆ operator++() [1/2]

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
htrie_hash_iterator& tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::operator++ ( )
inline

◆ operator++() [2/2]

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
htrie_hash_iterator tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::operator++ ( int  )
inline

◆ operator->()

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
template<class U = T, typename std::enable_if< has_value< U >::value >::type * = nullptr>
pointer tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::operator-> ( ) const
inline

◆ value()

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
template<class U = T, typename std::enable_if< has_value< U >::value >::type * = nullptr>
reference tsl::detail_htrie_hash::htrie_hash< CharT, T, Hash, KeySizeT >::htrie_hash_iterator< IsConst, IsPrefixIterator >::value ( ) const
inline

Friends And Related Function Documentation

◆ htrie_hash

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
friend class htrie_hash
friend

◆ operator!=

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
bool operator!= ( const htrie_hash_iterator< IsConst, IsPrefixIterator > &  lhs,
const htrie_hash_iterator< IsConst, IsPrefixIterator > &  rhs 
)
friend

◆ operator==

template<class CharT, class T, class Hash, class KeySizeT>
template<bool IsConst, bool IsPrefixIterator>
bool operator== ( const htrie_hash_iterator< IsConst, IsPrefixIterator > &  lhs,
const htrie_hash_iterator< IsConst, IsPrefixIterator > &  rhs 
)
friend

The documentation for this class was generated from the following file: