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)
99template <
class _Val,
class _Key,
class _HF,
100 class _Traits,
class _ExK,
class _EqK,
class _All>
103#if !defined (_STLP_DEBUG)
107template <
class _BaseIte,
class _Traits>
156#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
157template <
class _BaseIte,
class _Traits>
167#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES)
168template <
class _BaseIte,
class _Traits>
170# if defined (_STLP_NESTED_TYPE_PARAM_BUG)
179template <
class _BaseIte,
class _Traits>
182template <
class _BaseIte,
class _Traits>
189template <
class _Dummy>
204#if defined (_STLP_USE_TEMPLATE_EXPORT)
210#if !defined (_STLP_DEBUG)
223template <
class _Val,
class _Key,
class _HF,
224 class _Traits,
class _ExK,
class _EqK,
class _All>
240 typedef typename _NonConstTraits::pointer
pointer;
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)
642template <
class _Val,
class _Key,
class _HF,
class _Traits,
class _ExK,
class _EqK,
class _All>
_STLP_INLINE_LOOP _InputIter __last
_STLP_INLINE_LOOP _InputIter const _Tp & __val
#define _STLP_CONVERT_ALLOCATOR(__a, _Tp)
#define _STLP_FORCE_ALLOCATORS(a, y)
bool _STLP_CALL operator!=(const allocator< _T1 > &, const allocator< _T2 > &) _STLP_NOTHROW
_Stl_prime< bool > _Stl_prime_type
#define _STLP_ITERATOR_CATEGORY(_It, _Tp)
_STLP_MOVE_TO_PRIV_NAMESPACE const _InputIterator const input_iterator_tag &_InputIterator __it(__first)
_STLP_TYPENAME_ON_RETURN_TYPE _MoveSourceTraits< _Tp >::_Type _AsMoveSource(_Tp &src)
#define _STLP_DEFINE_ARROW_OPERATOR
void get(int argc, const char *argv[])
static void _STLP_CALL _S_prev_sizes(size_t __hint, const size_t *&__begin, const size_t *&__end)
static size_t _STLP_CALL _S_max_nb_buckets()
static size_t _STLP_CALL _S_next_size(size_t)
static const size_t * _S_primes(size_t &)
reference _M_insert(const value_type &__obj)
local_iterator begin(size_type __n)
_NonConstTraits::reference reference
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator find(const _KT &__key) const
_Traits::_NonConstLocalTraits _NonConstLocalTraits
_STLP_PRIV _Ht_iterator< _ElemsIte, _ConstTraits > const_iterator
size_type erase(const key_type &__key)
const_local_iterator begin(size_type __n) const
hashtable(__move_source< _Self > src)
hashtable(size_type __n, const _HF &__hf, const _EqK &__eql, const allocator_type &__a=allocator_type())
const value_type & const_reference
const value_type * const_pointer
void insert_equal(const_iterator __f, const_iterator __l)
void _M_rehash(size_type __num_buckets)
size_type _M_bkt_num(const value_type &__obj, size_t __n) const
allocator_type get_allocator() const
hashtable< _Val, _Key, _HF, _Traits, _ExK, _EqK, _All > _Self
void _M_copy_from(const _Self &__ht)
ptrdiff_t difference_type
local_iterator end(size_type __n)
void max_load_factor(float __z)
_Traits::_ConstTraits _ConstTraits
size_type _M_bkt_num(const value_type &__obj) const
static const key_type & _M_get_key(const value_type &__val)
iterator _M_insert_noresize(size_type __n, const value_type &__obj)
iterator insert_equal(const value_type &__obj)
const_iterator begin() const
pair< iterator, bool > insert_unique(const value_type &__obj)
_STLP_PRIV _Ht_iterator< _ElemsIte, _NonConstTraits > iterator
_Alloc_traits< _BucketType *, _All >::allocator_type _BucketAllocType
_Traits::_ConstLocalTraits _ConstLocalTraits
hashtable(const _Self &__ht)
size_type _M_num_elements
iterator insert_equal_noresize(const value_type &__obj)
void insert_unique(const_iterator __f, const_iterator __l)
size_type bucket_count() const
float max_load_factor() const
iterator _M_before_begin(size_type &__n) const
size_type max_bucket_count() const
void _M_initialize_buckets(size_type __n)
void insert_equal(const value_type *__f, const value_type *__l)
_STLP_TEMPLATE_FOR_CONT_EXT size_type _M_bkt_num_key(const _KT &__key) const
_STLP_TEMPLATE_FOR_CONT_EXT pair< iterator, iterator > equal_range(const _KT &__key)
_ElemsCont::iterator _ElemsIte
_STLP_TEMPLATE_FOR_CONT_EXT _ElemsIte _M_find(const _KT &__key) const
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__key)
static iterator _S_before_begin(const _ElemsCont &__elems, const _BucketVector &__buckets, size_type &__n)
slist< value_type, _All > _ElemsCont
void _M_enlarge(size_type __n)
size_type max_size() const
const_iterator end() const
_Traits::_NonConstTraits _NonConstTraits
forward_iterator_tag _Iterator_category
_NonConstTraits::pointer pointer
void insert_unique(const value_type *__f, const value_type *__l)
_Self & operator=(const _Self &__ht)
_STLP_PRIV _Slist_node_base _BucketType
size_type elems_in_bucket(size_type __bucket) const
_ElemsCont::const_iterator _ElemsConstIte
_STLP_PRIV _Ht_iterator< _ElemsIte, _ConstLocalTraits > const_local_iterator
const_local_iterator end(size_type __n) const
void rehash(size_type __num_buckets_hint)
void resize(size_type __num_buckets_hint)
float load_factor() const
_STLP_TEMPLATE_FOR_CONT_EXT pair< const_iterator, const_iterator > equal_range(const _KT &__key) const
_STLP_PRIV _Ht_iterator< _ElemsIte, _NonConstLocalTraits > local_iterator
hasher hash_funct() const
_STLP_TEMPLATE_FOR_CONT_EXT size_type bucket(const _KT &__k) const
_STLP_TEMPLATE_FOR_CONT_EXT size_type _M_bkt_num_key(const _KT &__key, size_type __n) const
vector< _BucketType *, _BucketAllocType > _BucketVector
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__key) const
pair< iterator, bool > insert_unique_noresize(const value_type &__obj)
_STLP_PRIV _Slist_iterator< value_type, _Nonconst_traits< value_type > > iterator
allocator_type get_allocator() const
_STLP_PRIV _Slist_iterator< value_type, _Const_traits< value_type > > const_iterator
__kernel_ptrdiff_t ptrdiff_t
#define _STLP_TEMPLATE_FOR_CONT_EXT
#define _STLP_TYPENAME_ON_RETURN_TYPE
#define _STLP_MOVE_TO_STD_NAMESPACE
#define __STATIC_CAST(__x, __y)
#define __CONST_CAST(__x, __y)
#define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
#define _STLP_EXPORT_TEMPLATE_CLASS
#define _STLP_BEGIN_NAMESPACE
#define _STLP_END_NAMESPACE
#define _STLP_MOVE_TO_PRIV_NAMESPACE
static float(__cdecl *square_half_float)(float x
_Rebind_type::other allocator_type
_Ht_iterator< _BaseIte, _ConstTraits > const_iterator
_Traits::_NonConstTraits _NonConstTraits
forward_iterator_tag iterator_category
_Ht_iterator< _BaseIte, _Traits > _Self
ptrdiff_t difference_type
_Ht_iterator< _BaseIte, _NonConstTraits > iterator
reference operator*() const
_Traits::value_type value_type
_STLP_DEFINE_ARROW_OPERATOR _Self & operator++()
_Ht_iterator(const iterator &__it)
_Ht_iterator(_BaseIte __it)
_Traits::reference reference
_Traits::_ConstTraits _ConstTraits
__type_traits< _Tp >::has_trivial_destructor complete
__bool2type< pod >::_Ret is_POD_type
__bool2type< trivial_destructor >::_Ret has_trivial_destructor
__bool2type< trivial_constructor >::_Ret has_trivial_default_constructor
__bool2type< trivial_copy >::_Ret has_trivial_copy_constructor
__bool2type< trivial_assign >::_Ret has_trivial_assignment_operator
void reserve(size_type __n)
void assign(size_type __n, const _Tp &__val)
bool operator==(const TKeyDef &t1, const TKeyDef &t2)