30 #ifndef _STLP_INTERNAL_HASHTABLE_H 31 #define _STLP_INTERNAL_HASHTABLE_H 33 #ifndef _STLP_INTERNAL_VECTOR_H 37 #ifndef _STLP_INTERNAL_SLIST_H 41 #ifndef _STLP_INTERNAL_ITERATOR_H 45 #ifndef _STLP_INTERNAL_FUNCTION_BASE_H 49 #ifndef _STLP_INTERNAL_ALGOBASE_H 53 #ifndef _STLP_HASH_FUN_H 65 #if defined (_STLP_USE_TEMPLATE_EXPORT) 67 # if !defined (_STLP_USE_PTR_SPECIALIZATIONS) 80 # if defined (_STLP_DEBUG) 82 # define _STLP_NON_DBG_VECTOR _STLP_NON_DBG_NAME(vector) 85 # undef _STLP_NON_DBG_VECTOR 93 #if defined (_STLP_DEBUG) 94 # define hashtable _STLP_NON_DBG_NAME(hashtable) 99 template <
class _Val,
class _Key,
class _HF,
100 class _Traits,
class _ExK,
class _EqK,
class _All>
103 #if !defined (_STLP_DEBUG) 107 template <
class _BaseIte,
class _Traits>
156 #if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) 157 template <
class _BaseIte,
class _Traits>
167 #if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) 168 template <
class _BaseIte,
class _Traits>
170 # if defined (_STLP_NESTED_TYPE_PARAM_BUG) 179 template <
class _BaseIte,
class _Traits>
182 template <
class _BaseIte,
class _Traits>
189 template <
class _Dummy>
204 #if defined (_STLP_USE_TEMPLATE_EXPORT) 210 #if !defined (_STLP_DEBUG) 223 template <
class _Val,
class _Key,
class _HF,
224 class _Traits,
class _ExK,
class _EqK,
class _All>
251 #if defined (_STLP_DEBUG) 268 #if defined (_STLP_DEBUG) 291 #if !defined (_STLP_DEBUG) 302 #if !defined (_STLP_DONT_SUP_DFLT_PARAM) 341 #if !defined (_STLP_NO_MOVE_SEMANTIC) 423 #if defined (_STLP_MEMBER_TEMPLATES) 424 template <
class _InputIterator>
428 template <
class _InputIterator>
429 void insert_equal(_InputIterator __f, _InputIterator __l)
432 template <
class _InputIterator>
435 for ( ; __f != __l; ++__f)
439 template <
class _InputIterator>
440 void insert_equal(_InputIterator __f, _InputIterator __l,
442 for ( ; __f != __l; ++__f)
446 template <
class _ForwardIterator>
447 void insert_unique(_ForwardIterator __f, _ForwardIterator __l,
451 for ( ;
__n > 0; --
__n, ++__f)
455 template <
class _ForwardIterator>
456 void insert_equal(_ForwardIterator __f, _ForwardIterator __l,
460 for ( ;
__n > 0; --
__n, ++__f)
468 for ( ;
__n > 0; --
__n, ++__f)
475 for ( ;
__n > 0; --
__n, ++__f)
482 for ( ;
__n > 0; --
__n, ++__f)
489 for ( ;
__n > 0; --
__n, ++__f)
521 for (; __cur !=
__last; ++__cur) {
526 ++__result, ++__cur);
539 __first !=
__last; ++__first) {
543 return _Pii(__first, __cur);
546 return _Pii(
end(),
end());
555 __first !=
__last; ++__first) {
559 return _Pii(__first, __cur);
562 return _Pii(
end(),
end());
574 #if defined (_STLP_DEBUG) 575 void _M_check()
const;
581 {
rehash(__num_buckets_hint); }
618 #if defined (_STLP_DEBUG) 625 #if !defined (_STLP_LINK_TIME_INSTANTIATION) 629 #if defined (_STLP_DEBUG) 635 #define _STLP_TEMPLATE_HEADER template <class _Val, class _Key, class _HF, class _Traits, class _ExK, class _EqK, class _All> 636 #define _STLP_TEMPLATE_CONTAINER hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> 638 #undef _STLP_TEMPLATE_CONTAINER 639 #undef _STLP_TEMPLATE_HEADER 641 #if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) 642 template <
class _Val,
class _Key,
class _HF,
class _Traits,
class _ExK,
class _EqK,
class _All>
#define _STLP_CONVERT_ALLOCATOR(__a, _Tp)
ptrdiff_t difference_type
_Ht_iterator< _BaseIte, _NonConstTraits > iterator
forward_iterator_tag iterator_category
_ElemsCont::iterator _ElemsIte
size_type _M_bkt_num(const value_type &__obj) const
_Ht_iterator< _BaseIte, _ConstTraits > const_iterator
const_local_iterator end(size_type __n) const
ptrdiff_t difference_type
GLsizei const GLvoid * pointer
__bool2type< pod >::_Ret is_POD_type
#define __STATIC_CAST(__x, __y)
float max_load_factor() const
_Alloc_traits< _BucketType *, _All >::allocator_type _BucketAllocType
_STLP_PRIV _Slist_node_base _BucketType
#define _STLP_TEMPLATE_FOR_CONT_EXT
_Traits::_ConstLocalTraits _ConstLocalTraits
_Self & operator=(const _Self &__ht)
forward_iterator_tag _Iterator_category
_STLP_PRIV _Ht_iterator< _ElemsIte, _NonConstLocalTraits > local_iterator
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator find(const _KT &__key) const
_STLP_TEMPLATE_FOR_CONT_EXT pair< const_iterator, const_iterator > equal_range(const _KT &__key) const
_Ht_iterator(_BaseIte __it)
void resize(size_type __num_buckets_hint)
_STLP_PRIV _Ht_iterator< _ElemsIte, _ConstLocalTraits > const_local_iterator
_STLP_PRIV _Slist_iterator< value_type, _Const_traits< value_type > > const_iterator
_Traits::_NonConstTraits _NonConstTraits
local_iterator end(size_type __n)
#define _STLP_ITERATOR_CATEGORY(_It, _Tp)
_STLP_PRIV _Ht_iterator< _ElemsIte, _ConstTraits > const_iterator
GLsizei GLsizei GLfloat distance
#define _STLP_MOVE_TO_PRIV_NAMESPACE
_STLP_TEMPLATE_FOR_CONT_EXT size_type _M_bkt_num_key(const _KT &__key) const
static iterator _S_before_begin(const _ElemsCont &__elems, const _BucketVector &__buckets, size_type &__n)
void insert_equal(const_iterator __f, const_iterator __l)
allocator_type get_allocator() const
_ElemsCont::const_iterator _ElemsConstIte
const value_type * const_pointer
size_type max_bucket_count() const
static void _STLP_CALL _S_prev_sizes(size_t __hint, const size_t *&__begin, const size_t *&__end)
void insert_unique(const_iterator __f, const_iterator __l)
iterator _M_insert_noresize(size_type __n, const value_type &__obj)
hasher hash_funct() const
const_iterator begin() const
_Traits::_ConstTraits _ConstTraits
iterator insert_equal(const value_type &__obj)
__type_traits< _Tp >::has_trivial_destructor complete
_STLP_INLINE_LOOP _InputIter __last
_Traits::_NonConstLocalTraits _NonConstLocalTraits
bool operator==(const_iterator __rhs) const
const_local_iterator begin(size_type __n) const
size_type bucket_count() const
#define _STLP_MOVE_TO_STD_NAMESPACE
void get(int argc, const char *argv[])
_NonConstTraits::reference reference
void max_load_factor(float __z)
_Traits::_ConstTraits _ConstTraits
_STLP_TEMPLATE_FOR_CONT_EXT _ElemsIte _M_find(const _KT &__key) const
_STLP_INLINE_LOOP _InputIter const _Tp & __val
void rehash(size_type __num_buckets_hint)
float load_factor() const
iterator _M_before_begin(size_type &__n) const
#define _STLP_EXPORT_TEMPLATE_CLASS
static const key_type & _M_get_key(const value_type &__val)
hashtable(const _Self &__ht)
pair< iterator, bool > insert_unique_noresize(const value_type &__obj)
_STLP_PRIV _Ht_iterator< _ElemsIte, _NonConstTraits > iterator
__bool2type< trivial_constructor >::_Ret has_trivial_default_constructor
_STLP_MOVE_TO_PRIV_NAMESPACE const _InputIterator const input_iterator_tag &_InputIterator __it(__first)
_STLP_DEFINE_ARROW_OPERATOR _Self & operator++()
void _M_rehash(size_type __num_buckets)
size_type elems_in_bucket(size_type __bucket) const
_NonConstTraits::pointer pointer
static size_t _STLP_CALL _S_max_nb_buckets()
_Rebind_type::other allocator_type
iterator insert_equal_noresize(const value_type &__obj)
_STLP_TYPENAME_ON_RETURN_TYPE _MoveSourceTraits< _Tp >::_Type _AsMoveSource(_Tp &src)
void insert_unique(const value_type *__f, const value_type *__l)
size_type max_size() const
#define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
_STLP_PRIV _Slist_iterator< value_type, _Nonconst_traits< value_type > > iterator
allocator_type get_allocator() const
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__key)
void assign(size_type __n, const _Tp &__val)
void insert_equal(const value_type *__f, const value_type *__l)
vector< _BucketType *, _BucketAllocType > _BucketVector
static float(__cdecl *square_half_float)(float x
hashtable(size_type __n, const _HF &__hf, const _EqK &__eql, const allocator_type &__a=allocator_type())
#define __CONST_CAST(__x, __y)
reference operator *() const
static size_t _STLP_CALL _S_next_size(size_t)
__bool2type< trivial_assign >::_Ret has_trivial_assignment_operator
#define _STLP_END_NAMESPACE
const_iterator end() const
local_iterator begin(size_type __n)
_STLP_TEMPLATE_FOR_CONT_EXT size_type _M_bkt_num_key(const _KT &__key, size_type __n) const
__bool2type< trivial_copy >::_Ret has_trivial_copy_constructor
hashtable(__move_source< _Self > src)
__kernel_ptrdiff_t ptrdiff_t
void _M_copy_from(const _Self &__ht)
_Traits::_NonConstTraits _NonConstTraits
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__key) const
#define _STLP_DEFINE_ARROW_OPERATOR
#define _STLP_TYPENAME_ON_RETURN_TYPE
static const size_t * _S_primes(size_t &)
_Traits::reference reference
size_type _M_bkt_num(const value_type &__obj, size_t __n) const
_STLP_TEMPLATE_FOR_CONT_EXT pair< iterator, iterator > equal_range(const _KT &__key)
bool operator !=(const_iterator __rhs) const
void _M_initialize_buckets(size_type __n)
slist< value_type, _All > _ElemsCont
#define _STLP_BEGIN_NAMESPACE
pair< iterator, bool > insert_unique(const value_type &__obj)
_STLP_TEMPLATE_FOR_CONT_EXT size_type bucket(const _KT &__k) const
_Ht_iterator< _BaseIte, _Traits > _Self
_Ht_iterator(const iterator &__it)
void _M_enlarge(size_type __n)
reference _M_insert(const value_type &__obj)
hashtable< _Val, _Key, _HF, _Traits, _ExK, _EqK, _All > _Self
_Traits::value_type value_type
__bool2type< trivial_destructor >::_Ret has_trivial_destructor
void reserve(size_type __n)
size_type erase(const key_type &__key)
const value_type & const_reference
size_type _M_num_elements
#define _STLP_FORCE_ALLOCATORS(a, y)
_Stl_prime< bool > _Stl_prime_type