19 #ifndef _STLP_PTR_SPECIALIZED_SET_H 20 #define _STLP_PTR_SPECIALIZED_SET_H 22 #ifndef _STLP_POINTERS_SPEC_TOOLS_H 28 #if defined (__BORLANDC__) || defined (__DMC__) 35 #if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) 43 # if defined (_STLP_DEBUG) 45 # define _Rb_tree _STLP_NON_DBG_NAME(Rb_tree) 55 template <
class _Key, _STLP_DFL_TMPL_PARAM(_Compare, less<_Key>),
56 _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Key>) >
58 #
if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
62 #if !defined (__BORLANDC__) 116 #if defined (_STLP_DEBUG) 118 {
return iterator(__ite._Owner(), __ite._M_iterator._M_node); }
120 {
return base_iterator(__ite._Owner(), __ite._M_iterator._M_node); }
130 explicit set(
const _Compare& __comp,
134 #if defined (_STLP_MEMBER_TEMPLATES) 135 template <
class _InputIterator>
136 set(_InputIterator __first, _InputIterator
__last)
138 # if defined (_STLP_USE_ITERATOR_WRAPPER) 146 # if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 147 template <
class _InputIterator>
148 set(_InputIterator __first, _InputIterator
__last,
const _Compare& __comp)
150 # if defined (_STLP_USE_ITERATOR_WRAPPER) 158 template <
class _InputIterator>
159 set(_InputIterator __first, _InputIterator
__last,
const _Compare& __comp,
162 # if defined (_STLP_USE_ITERATOR_WRAPPER) 172 _M_t.insert_unique(cast_traits::to_storage_type_cptr(__first),
173 cast_traits::to_storage_type_cptr(
__last));
179 _M_t.insert_unique(cast_traits::to_storage_type_cptr(__first),
180 cast_traits::to_storage_type_cptr(
__last));
195 #if !defined (_STLP_NO_MOVE_SEMANTIC) 223 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 224 void _M_swap_workaround(
_Self& __x) {
swap(__x); }
235 #if defined (_STLP_MEMBER_TEMPLATES) 236 template <
class _InputIterator>
237 void insert(_InputIterator __first, _InputIterator
__last) {
238 # if defined (_STLP_USE_ITERATOR_WRAPPER) 249 _M_t.insert_unique(cast_traits::to_storage_type_cptr(__first),
250 cast_traits::to_storage_type_cptr(
__last));
256 {
return _M_t.erase_unique(cast_traits::to_storage_type_cref(__x)); }
270 {
return _M_t.find(cast_traits::to_storage_type_crefT(__x)) ==
_M_t.end() ? 0 : 1; }
286 __ret =
_M_t.equal_range(cast_traits::to_storage_type_crefT(__x));
293 __ret =
_M_t.equal_range_unique(cast_traits::to_storage_type_crefT(__x));
302 template <
class _Key, _STLP_DFL_TMPL_PARAM(_Compare, less<_Key>),
303 _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Key>) >
305 #
if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
309 #if !defined (__BORLANDC__) 363 #if defined (_STLP_DEBUG) 365 {
return iterator(__ite._Owner(), __ite._M_iterator._M_node); }
367 {
return base_iterator(__ite._Owner(), __ite._M_iterator._M_node); }
381 #if defined (_STLP_MEMBER_TEMPLATES) 382 template <
class _InputIterator>
385 # if defined (_STLP_USE_ITERATOR_WRAPPER) 393 # if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 394 template <
class _InputIterator>
396 const _Compare& __comp)
398 # if defined (_STLP_USE_ITERATOR_WRAPPER) 406 template <
class _InputIterator>
408 const _Compare& __comp,
411 # if defined (_STLP_USE_ITERATOR_WRAPPER) 422 _M_t.insert_equal(cast_traits::to_storage_type_cptr(__first),
423 cast_traits::to_storage_type_cptr(
__last));
427 const _Compare& __comp,
430 _M_t.insert_equal(cast_traits::to_storage_type_cptr(__first),
431 cast_traits::to_storage_type_cptr(
__last));
439 const _Compare& __comp,
453 #if !defined (_STLP_NO_MOVE_SEMANTIC) 476 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 477 void _M_swap_workaround(
_Self& __x) {
swap(__x); }
485 cast_traits::to_storage_type_cref(__x)));
488 #if defined (_STLP_MEMBER_TEMPLATES) 489 template <
class _InputIterator>
490 void insert(_InputIterator __first, _InputIterator
__last) {
491 # if defined (_STLP_USE_ITERATOR_WRAPPER) 500 _M_t.insert_equal(cast_traits::to_storage_type_cptr(__first),
501 cast_traits::to_storage_type_cptr(
__last));
510 {
return _M_t.erase(cast_traits::to_storage_type_cref(__x)); }
525 {
return _M_t.count(cast_traits::to_storage_type_crefT(__x)); }
541 __ret =
_M_t.equal_range(cast_traits::to_storage_type_crefT(__x));
548 __ret =
_M_t.equal_range(cast_traits::to_storage_type_crefT(__x));
554 #if defined (__BORLANDC__) || defined (__DMC__) #define _STLP_CONVERT_ALLOCATOR(__a, _Tp)
value_compare value_comp() const
_STLP_TEMPLATE_FOR_CONT_EXT pair< iterator, iterator > equal_range(const _KT &__x)
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__x)
set< _Key, _Compare, _Alloc > _Self
multiset(const value_type *__first, const value_type *__last, const _Compare &__comp, const allocator_type &__a=allocator_type())
const_reverse_iterator rbegin() const
_STLP_TEMPLATE_FOR_CONT_EXT iterator lower_bound(const _KT &__x)
_STLP_PRIV _CastTraits< _KeyStorageType, _Key > cast_traits
void insert(const_iterator __first, const_iterator __last)
#define _STLP_CREATE_ITERATOR_TRAITS(Motif, Traits)
size_type max_size() const
_STLP_TEMPLATE_FOR_CONT_EXT iterator upper_bound(const _KT &__x)
_Rep_type::const_reverse_iterator const_reverse_iterator
size_type max_size() const
const_iterator end() const
multiset(__move_source< _Self > src)
GLsizei const GLvoid * pointer
_Priv_Rep_type::reference reference
_STLP_PRIV _Rb_tree< _KeyStorageType, _CompareStorageType, _KeyStorageType, _STLP_PRIV _Identity< _KeyStorageType >, _MultisetStorageTraits, _StorageTypeAlloc > _Rep_type
multiset(const _Compare &__comp, const allocator_type &__a=allocator_type())
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator find(const _KT &__x) const
size_type erase(const key_type &__x)
set(const_iterator __first, const_iterator __last, const _Compare &__comp, const allocator_type &__a=allocator_type())
_Rep_type::iterator base_iterator
_Rep_type::size_type size_type
_STLP_TEMPLATE_FOR_CONT_EXT pair< const_iterator, const_iterator > equal_range(const _KT &__x) const
_STLP_PRIV _AssocStorageTypes< _Key, _Compare > _AssocStorageTypes
_STLP_PRIV _Rb_tree< key_type, key_compare, value_type, _STLP_PRIV _Identity< value_type >, _SetTraits, _Alloc > _Rep_type
#define _STLP_TEMPLATE_FOR_CONT_EXT
iterator insert(const value_type &__x)
key_compare key_comp() const
_STLP_PRIV _Rb_tree< _KeyStorageType, _CompareStorageType, _KeyStorageType, _STLP_PRIV _Identity< _KeyStorageType >, _SetStorageTraits, _StorageTypeAlloc > _Rep_type
_Self & operator=(const _Self &__x)
value_compare value_comp() const
set(const_iterator __first, const_iterator __last)
_STLP_PRIV _SetTraitsT< value_type > _SetTraits
_Rep_type::iterator base_iterator
const_iterator begin() const
static base_iterator _S_to_storage_ite(const_iterator __ite)
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator lower_bound(const _KT &__x) const
_Rep_type::size_type size_type
const_iterator begin() const
_Rep_type::const_iterator const_base_iterator
_Priv_Rep_type::const_iterator const_iterator
__select< is_default_less &&ptr_type, _BinaryPredWrapper< _KeyStorageType, _Tp, _Compare >, _Compare >::_Ret _CompareStorageType
set(const value_type *__first, const value_type *__last, const _Compare &__comp, const allocator_type &__a=allocator_type())
_Priv_Rep_type::const_reverse_iterator const_reverse_iterator
#define _STLP_MOVE_TO_PRIV_NAMESPACE
_Rep_type::const_iterator const_iterator
_Rep_type::allocator_type allocator_type
void erase(iterator __pos)
_Priv_Rep_type::const_reference const_reference
_AssocStorageTypes::_CompareStorageType _CompareStorageType
multiset(const_iterator __first, const_iterator __last, const _Compare &__comp, const allocator_type &__a=allocator_type())
_Priv_Rep_type::reverse_iterator reverse_iterator
_Rep_type::reverse_iterator reverse_iterator
_AssocStorageTypes::_KeyStorageType _KeyStorageType
_STLP_PRIV _MultisetTraitsT< _KeyStorageType > _MultisetStorageTraits
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator lower_bound(const _KT &__x) const
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__x) const
_Priv_Rep_type::const_pointer const_pointer
_Priv_Rep_type::size_type size_type
const_reverse_iterator rbegin() const
pair< iterator, bool > insert(const value_type &__x)
_STLP_PRIV _CastTraits< _KeyStorageType, _Key > cast_traits
_Self & operator=(const _Self &__x)
_STLP_INLINE_LOOP _InputIter __last
key_compare key_comp() const
_Priv_Rep_type::reverse_iterator reverse_iterator
void erase(iterator __pos)
_Priv_Rep_type::pointer pointer
__select< is_default_less, _SType, _Tp >::_Ret _KeyStorageType
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator find(const _KT &__x) const
_Priv_Rep_type::difference_type difference_type
#define _STLP_MOVE_TO_STD_NAMESPACE
_STLP_TEMPLATE_FOR_CONT_EXT pair< iterator, iterator > equal_range(const _KT &__x)
void get(int argc, const char *argv[])
const_iterator end() const
void erase(iterator __first, iterator __last)
_Rep_type::iterator iterator
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__x)
#define _STLP_ALLOCATOR_TYPE_DFL
_Rep_type::const_iterator const_base_iterator
_Priv_Rep_type::const_reverse_iterator const_reverse_iterator
#define _STLP_EXPORT_TEMPLATE_CLASS
reverse_iterator rbegin()
_Priv_Rep_type::allocator_type allocator_type
_Priv_Rep_type::iterator iterator
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator upper_bound(const _KT &__x) const
const_reverse_iterator rend() const
_STLP_PRIV _Rb_tree< key_type, key_compare, value_type, _STLP_PRIV _Identity< value_type >, _MultisetTraits, _Alloc > _Rep_type
_STLP_PRIV _MultisetTraitsT< value_type > _MultisetTraits
_Rep_type::reverse_iterator reverse_iterator
_Priv_Rep_type::const_pointer const_pointer
_Priv_Rep_type::difference_type difference_type
_Rebind_type::other allocator_type
void insert(const value_type *__first, const value_type *__last)
_STLP_PRIV _Rb_tree< key_type, key_compare, value_type, _STLP_PRIV _Identity< value_type >, _SetTraits, _Alloc > _Priv_Rep_type
#define _STLP_CLASS_DECLSPEC
iterator insert(iterator __pos, const value_type &__x)
#define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
WDF_CHILD_LIST_ITERATOR iterator
_Priv_Rep_type::iterator iterator
void insert(const value_type *__first, const value_type *__last)
_Priv_Rep_type::allocator_type allocator_type
multiset(const _Self &__x)
set(const _Compare &__comp, const allocator_type &__a=allocator_type())
_STLP_PRIV _SetTraitsT< _KeyStorageType > _SetStorageTraits
_Priv_Rep_type::const_reference const_reference
_Alloc_traits< _KeyStorageType, _Alloc >::allocator_type _StorageTypeAlloc
_AssocStorageTypes::_CompareStorageType _CompareStorageType
allocator_type get_allocator() const
_Rep_type::const_reverse_iterator const_reverse_iterator
_STLP_TEMPLATE_FOR_CONT_EXT size_type count(const _KT &__x) const
_STLP_TEMPLATE_FOR_CONT_EXT iterator lower_bound(const _KT &__x)
multiset< _Key, _Compare, _Alloc > _Self
multiset(const_iterator __first, const_iterator __last)
_STLP_PRIV _Rb_tree< key_type, key_compare, value_type, _STLP_PRIV _Identity< value_type >, _MultisetTraits, _Alloc > _Priv_Rep_type
#define _STLP_END_NAMESPACE
iterator insert(iterator __pos, const value_type &__x)
size_type erase(const key_type &__x)
reverse_iterator rbegin()
static iterator _S_to_value_ite(const_base_iterator __ite)
multiset(const value_type *__first, const value_type *__last)
_STLP_TEMPLATE_FOR_CONT_EXT const_iterator upper_bound(const _KT &__x) const
set(__move_source< _Self > src)
allocator_type get_allocator() const
_AssocStorageTypes::_KeyStorageType _KeyStorageType
const_reverse_iterator rend() const
_STLP_TEMPLATE_FOR_CONT_EXT pair< const_iterator, const_iterator > equal_range(const _KT &__x) const
_Rep_type::const_iterator const_iterator
_Alloc_traits< _KeyStorageType, _Alloc >::allocator_type _StorageTypeAlloc
void insert(const_iterator __first, const_iterator __last)
set(const value_type *__first, const value_type *__last)
#define _STLP_BEGIN_NAMESPACE
_Rep_type::iterator iterator
static iterator _S_to_value_ite(const_base_iterator __ite)
_STLP_TEMPLATE_FOR_CONT_EXT iterator upper_bound(const _KT &__x)
_STLP_PRIV _AssocStorageTypes< _Key, _Compare > _AssocStorageTypes
_Priv_Rep_type::pointer pointer
_Priv_Rep_type::reference reference
void erase(iterator __first, iterator __last)
static base_iterator _S_to_storage_ite(const_iterator __ite)
_Priv_Rep_type::size_type size_type
_Priv_Rep_type::const_iterator const_iterator
_Rep_type::allocator_type allocator_type