20#ifndef _STLP_SPECIALIZED_SLIST_H
21#define _STLP_SPECIALIZED_SLIST_H
23#ifndef _STLP_POINTERS_SPEC_TOOLS_H
29#define SLIST_IMPL _STLP_PTR_IMPL_NAME(slist)
31#if defined (__BORLANDC__) || defined (__DMC__)
35#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND)
47#if defined (_STLP_DEBUG)
48# define slist _STLP_NON_DBG_NAME(slist)
52template <
class _Tp, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Tp>) >
54#
if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (
slist)
90#if !defined(_STLP_DONT_SUP_DFLT_PARAM)
98#if defined(_STLP_DONT_SUP_DFLT_PARAM)
102#if defined (_STLP_MEMBER_TEMPLATES)
105 template <
class _InputIterator>
106 slist(_InputIterator __first, _InputIterator
__last,
108# if !defined (_STLP_USE_ITERATOR_WRAPPER)
115# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
117 template <
class _InputIterator>
118 slist(_InputIterator __first, _InputIterator
__last)
119# if !defined (_STLP_USE_WRAPPER_ITERATOR)
138#if !defined (_STLP_NO_MOVE_SEMANTIC)
148#if defined (_STLP_MEMBER_TEMPLATES)
149# if defined (_STLP_USE_ITERATOR_WRAPPER)
151 template <
class _Integer>
152 void _M_assign_dispatch(_Integer
__n, _Integer
__val,
156 template <
class _InputIterator>
157 void _M_assign_dispatch(_InputIterator __first, _InputIterator
__last,
166 template <
class _InputIterator>
167 void assign(_InputIterator __first, _InputIterator
__last) {
168# if defined (_STLP_USE_ITERATOR_WRAPPER)
170 _M_assign_dispatch(__first,
__last, _Integral());
177 _M_impl.assign(cast_traits::to_storage_type_cptr(__first),
178 cast_traits::to_storage_type_cptr(
__last));
200#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
201 void _M_swap_workaround(
_Self& __x) {
swap(__x); }
207#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS)
212 {
_M_impl.push_front(cast_traits::to_storage_type_cref(__x)); }
214# if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS)
225#if !defined(_STLP_DONT_SUP_DFLT_PARAM)
231 cast_traits::to_storage_type_cref(__x))._M_node); }
233#if defined(_STLP_DONT_SUP_DFLT_PARAM)
239 {
_M_impl.insert_after(
_BaseIte(__pos._M_node),
__n, cast_traits::to_storage_type_cref(__x)); }
241#if defined (_STLP_MEMBER_TEMPLATES)
242# if defined (_STLP_USE_ITERATOR_WRAPPER)
244 template <
class _Integer>
250 template <
class _InputIterator>
251 void _M_insert_after_dispatch(
iterator __pos,
252 _InputIterator __first, _InputIterator
__last,
262 template <
class _InputIterator>
264# if defined (_STLP_USE_ITERATOR_WRAPPER)
267 _M_insert_after_dispatch(__pos, __first,
__last, _Integral());
281 cast_traits::to_storage_type_cptr(__first),
282 cast_traits::to_storage_type_cptr(
__last));
286#if !defined(_STLP_DONT_SUP_DFLT_PARAM)
292 cast_traits::to_storage_type_cref(__x))._M_node); }
294#if defined(_STLP_DONT_SUP_DFLT_PARAM)
300 {
_M_impl.insert(
_BaseIte(__pos._M_node),
__n, cast_traits::to_storage_type_cref(__x)); }
302#if defined (_STLP_MEMBER_TEMPLATES)
303# if defined (_STLP_USE_ITERATOR_WRAPPER)
305 template <
class _Integer>
311 template <
class _InputIterator>
312 void _M_insert_dispatch(
iterator __pos,
313 _InputIterator __first, _InputIterator
__last,
322 template <
class _InputIterator>
324# if defined (_STLP_USE_ITERATOR_WRAPPER)
327 _M_insert_dispatch(__pos, __first,
__last, _Integral());
337 {
_M_impl.insert(
_BaseIte(__pos._M_node), cast_traits::to_storage_type_cptr(__first),
338 cast_traits::to_storage_type_cptr(
__last)); }
352#if !defined(_STLP_DONT_SUP_DFLT_PARAM)
357 {
_M_impl.resize(__new_size, cast_traits::to_storage_type_cref(__x));}
359#if defined(_STLP_DONT_SUP_DFLT_PARAM)
388#ifdef _STLP_MEMBER_TEMPLATES
389 template <
class _Predicate>
393 template <
class _BinaryPredicate>
397 template <
class _StrictWeakOrdering>
398 void merge(
_Self& __x, _StrictWeakOrdering __comp)
401 template <
class _StrictWeakOrdering>
402 void sort(_StrictWeakOrdering __comp)
417#if defined (__BORLANDC__) || defined (__DMC__)
_STLP_MOVE_TO_STD_NAMESPACE void sort(_RandomAccessIter __first, _RandomAccessIter __last)
_STLP_MOVE_TO_STD_NAMESPACE _OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result)
_STLP_INLINE_LOOP _InputIter __last
_STLP_INLINE_LOOP _InputIter _Predicate __pred
_STLP_INLINE_LOOP _ForwardIter remove_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred)
_STLP_INLINE_LOOP _InputIter const _Tp & __val
#define _STLP_CONVERT_ALLOCATOR(__a, _Tp)
#define _STLP_FORCE_ALLOCATORS(a, y)
#define _STLP_DEFAULT_CONSTRUCTED(_TTp)
void get(int argc, const char *argv[])
_Self & operator=(const _Self &__x)
const_iterator end() const
const value_type * const_pointer
void insert(iterator __pos, const_iterator __first, const_iterator __last)
_STLP_PRIV _Slist_iterator< _Tp, _Nonconst_traits< _Tp > > iterator
iterator erase_after(iterator __before_first, iterator __last)
void resize(size_type new_size, const value_type &__x=_Tp())
slist(const_iterator __first, const_iterator __last, const allocator_type &__a=allocator_type())
_STLP_PRIV SLIST_IMPL< _StorageType, _StorageTypeAlloc > _Base
void insert(iterator __pos, const value_type *__first, const value_type *__last)
_STLP_PRIV _Slist_iterator< value_type, _Nonconst_traits< value_type > > iterator
iterator erase(iterator __pos)
_STLP_TYPENAME _STLP_PRIV _StorageType< _Tp >::_Type _StorageType
void splice_after(iterator __pos, _Self &__x, iterator __before_first, iterator __before_last)
_Alloc_traits< _StorageType, _Alloc >::allocator_type _StorageTypeAlloc
void splice(iterator __pos, _Self &__x, iterator __first, iterator __last)
iterator erase(iterator __first, iterator __last)
_Base::allocator_type allocator_type
const value_type & const_reference
void assign(const value_type *__first, const value_type *__last)
iterator insert(iterator __pos, const value_type &__x=_STLP_DEFAULT_CONSTRUCTED(value_type))
size_type max_size() const
const_reference front() const
_STLP_PRIV _CastTraits< _StorageType, _Tp > cast_traits
void insert_after(iterator __pos, const value_type *__first, const value_type *__last)
iterator insert_after(iterator __pos, const value_type &__x=_Tp())
slist(const value_type *__first, const value_type *__last, const allocator_type &__a=allocator_type())
void assign(size_type __n, const value_type &__val)
slist(__move_source< _Self > src)
void push_front(const value_type &__x=_STLP_DEFAULT_CONSTRUCTED(value_type))
_STLP_PRIV _Slist_iterator< value_type, _Const_traits< value_type > > const_iterator
_Base::const_iterator _BaseConstIte
void push_front(const value_type &__x=_Tp())
iterator erase_after(iterator __pos)
forward_iterator_tag _Iterator_category
const_iterator before_begin() const
allocator_type get_allocator() const
void resize(size_type __new_size, const value_type &__x=_STLP_DEFAULT_CONSTRUCTED(value_type))
void assign(const_iterator __first, const_iterator __last)
void assign(size_type __n, const _Tp &__val)
const_iterator begin() const
void insert_after(iterator __pos, size_type __n, const value_type &__x)
_STLP_PRIV _Slist_node_base _Node_base
void remove(const value_type &__val)
iterator insert_after(iterator __pos, const value_type &__x=_STLP_DEFAULT_CONSTRUCTED(value_type))
void splice_after(iterator __pos, _Self &__x)
slist< _Tp, _Alloc > _Self
void insert_after(iterator __pos, const_iterator __first, const_iterator __last)
void insert(iterator __pos, size_type __n, const value_type &__x)
_STLP_PRIV _Slist_iterator< _Tp, _Const_traits< _Tp > > const_iterator
void splice(iterator __pos, _Self &__x)
slist(const allocator_type &__a=allocator_type())
slist< _Tp, _Alloc > _Self
_STLP_PRIV _Slist_base< _Tp, _Alloc > _Base
void splice(iterator __pos, _Self &__x, iterator __i)
void splice_after(iterator __pos, _Self &__x, iterator __prev)
iterator previous(const_iterator __pos)
const_iterator previous(const_iterator __pos) const
slist(size_type __n, const value_type &__x=_STLP_DEFAULT_CONSTRUCTED(value_type), const allocator_type &__a=allocator_type())
ptrdiff_t difference_type
__kernel_ptrdiff_t ptrdiff_t
#define _STLP_MOVE_TO_STD_NAMESPACE
#define _STLP_ALLOCATOR_TYPE_DFL
#define _STLP_EXPORT_TEMPLATE_CLASS
#define _STLP_BEGIN_NAMESPACE
#define _STLP_END_NAMESPACE
#define _STLP_MOVE_TO_PRIV_NAMESPACE
_Rebind_type::other allocator_type