19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1996,1997 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1997 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Moscow Center for SPARC Technology 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* NOTE: This is an internal header file, included by other STL headers. 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * You should not attempt to use it directly. 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_DBG_SLIST_H 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_DBG_SLIST_H 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_DBG_ITERATOR_H 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/debug/_iterator.h> 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NON_DBG_SLIST _STLP_PRIV _STLP_NON_DBG_NAME(slist) <_Tp, _Alloc> 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _Tp* 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvalue_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_SLIST >&) 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (_Tp*)0; } 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline forward_iterator_tag 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockiterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_SLIST >&) 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return forward_iterator_tag(); } 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_PRIV_NAMESPACE 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * slist special debug traits version. 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Traits> 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _SlistDbgTraits : _Traits { 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _SlistDbgTraits<typename _Traits::_ConstTraits> _ConstTraits; 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _SlistDbgTraits<typename _Traits::_NonConstTraits> _NonConstTraits; 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block /* 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * We don't want the before_begin iterator to return false at _Dereferenceable 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * call to do not break the current debug framework but calling * operator should 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * fail. 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Iterator> 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static bool _Check(const _Iterator& __it) 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return !(__it._M_iterator == (__it._Get_container_ptr())->before_begin()); } 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_STD_NAMESPACE 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Tp, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Tp>) > 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass slist : 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (__DMC__) 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block private 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __construct_checker<_STLP_NON_DBG_SLIST > 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block , public __stlport_class<slist<_Tp, _Alloc> > 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_NON_DBG_SLIST _Base; 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef slist<_Tp,_Alloc> _Self; 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_SLIST > _ConstructCheck; 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __IMPORT_CONTAINER_TYPEDEFS(_Base) 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _SlistDbgTraits<_Nonconst_traits<value_type> > > iterator; 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _SlistDbgTraits<_Const_traits<value_type> > > const_iterator; 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base _M_non_dbg_impl; 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __owned_list _M_iter_list; 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void _Invalidate_iterator(const iterator& __it) 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _STLP_PRIV __invalidate_iterator(&_M_iter_list, __it); } 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void _Invalidate_iterators(const iterator& __first, const iterator& __last) 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Base::iterator _Base_iterator; 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit slist(const allocator_type& __a = allocator_type()) 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__a) , _M_iter_list(&_M_non_dbg_impl) {} 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined(_STLP_DONT_SUP_DFLT_PARAM) 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit slist(size_type __n, const value_type& __x = _Tp(), 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block slist(size_type __n, const value_type& __x, 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {} 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined(_STLP_DONT_SUP_DFLT_PARAM) 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit slist(size_type __n) : _M_non_dbg_impl(__n) , _M_iter_list(&_M_non_dbg_impl) {} 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_MOVE_SEMANTIC) 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block slist(__move_source<_Self> src) 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block src.get()._M_iter_list._Invalidate_all(); 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block src.get()._M_iter_list._Set_owner(_M_iter_list); 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // We don't need any dispatching tricks here, because _M_insert_after_range 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // already does them. 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block slist(_InputIterator __first, _InputIterator __last, 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a), 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block slist(_InputIterator __first, _InputIterator __last) 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)), 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block slist(const value_type* __first, const value_type* __last, 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__first, __last, __a), 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block slist(const_iterator __first, const_iterator __last, 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type() ) 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a), 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block slist(const _Self& __x) : 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _ConstructCheck(__x), 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__x._M_non_dbg_impl), _M_iter_list(&_M_non_dbg_impl) {} 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator= (const _Self& __x) { 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (this != &__x) { 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(begin(), end()); 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl = __x._M_non_dbg_impl; 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~slist() {} 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(size_type __n, const value_type& __val) { 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(begin(), end()); 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__n, __val); 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator before_begin() 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return iterator(&_M_iter_list, _M_non_dbg_impl.before_begin()); } 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator before_begin() const 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return const_iterator(&_M_iter_list, _M_non_dbg_impl.before_begin()); } 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator begin() 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator begin() const 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin());} 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator end() 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator end() const 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool empty() const { return _M_non_dbg_impl.empty(); } 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type size() const { return _M_non_dbg_impl.size(); } 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type max_size() const { return _M_non_dbg_impl.max_size(); } 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void swap(_Self& __x) { 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list._Swap_owners(__x._M_iter_list); 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.swap(__x._M_non_dbg_impl); 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 207e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 208e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void _M_swap_workaround(_Self& __x) { swap(__x); } 209e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reference front() { 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.front(); 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reference front() const { 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.front(); 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_front(const_reference __x) { _M_non_dbg_impl.push_front(__x); } 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void pop_front() { 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.pop_front(); 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator previous(const_iterator __pos) { 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.previous(__pos._M_iterator)); 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator previous(const_iterator __pos) const { 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return const_iterator(&_M_iter_list, _M_non_dbg_impl.previous(__pos._M_iterator)); 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert_after(iterator __pos, const value_type& __x = _Tp()) { 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert_after(iterator __pos, const value_type& __x) { 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list,_M_non_dbg_impl.insert_after(__pos._M_iterator, __x)); 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert_after(iterator __pos) { 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return insert_after(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert_after(iterator __pos, size_type __n, const value_type& __x) { 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert_after(__pos._M_iterator, __n, __x); 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(_InputIterator __first, _InputIterator __last) { 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(begin(), end()); 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(const_iterator __first, const_iterator __last) { 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(begin(), end()); 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator); 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(const value_type *__first, const value_type *__last) { 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(begin(), end()); 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__first, __last); 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InIter> 2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert_after(iterator __pos, _InIter __first, _InIter __last) { 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert_after(__pos._M_iterator, 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InIter> 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, _InIter __first, _InIter __last) { 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert_after(iterator __pos, 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator __first, const_iterator __last) { 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert_after(__pos._M_iterator, __first._M_iterator, __last._M_iterator); 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert_after(iterator __pos, 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const value_type* __first, const value_type* __last) { 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert_after(__pos._M_iterator, __first, __last); 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, const_iterator __first, const_iterator __last) { 3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); 3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, const value_type* __first, 3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const value_type* __last) { 3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) 3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last); 3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos, const value_type& __x = _Tp()) { 3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos, const value_type& __x) { 3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator, __x)); 3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) 3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos) { 3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); 3419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, size_type __n, const value_type& __x) { 3459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 3479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x); 3489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase_after(iterator __pos) { 3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator __tmp = __pos; ++__tmp; 3559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__tmp)) 3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(__tmp); 3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.erase_after(__pos._M_iterator)); 3589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase_after(iterator __before_first, iterator __last) { 3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__before_first)) 3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__before_first, __last, begin(), end())) 3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator __tmp = __before_first; ++__tmp; 3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__tmp)) 3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(__tmp, __last); 3659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.erase_after(__before_first._M_iterator, __last._M_iterator)); 3669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase(iterator __pos) { 3699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 3709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(__pos._M_iterator != _M_non_dbg_impl.before_begin(), _StlMsg_INVALID_ARGUMENT) 3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(__pos); 3739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); 3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase(iterator __first, iterator __last) { 3769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(__first, __last); 3789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator)); 3799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined(_STLP_DONT_SUP_DFLT_PARAM) 3829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __new_size, const value_type& __x = _Tp()) { 3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __new_size, const value_type& __x) { 3859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 3869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.resize(__new_size, __x); 3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined(_STLP_DONT_SUP_DFLT_PARAM) 3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __new_size) { resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } 3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void clear() { 3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(begin(), end()); 3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.clear(); 3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Removes all of the elements from the list __x to *this, inserting 4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // them immediately after __pos. __x must not be *this. Complexity: 4019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // linear in __x.size(). 4029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void splice_after(iterator __pos, _Self& __x) { 4039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 4049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 4059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(&__x == this), _StlMsg_INVALID_ARGUMENT) 4069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.splice_after(__pos._M_iterator, __x._M_non_dbg_impl); 4079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (get_allocator() == __x.get_allocator()) { 4089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._M_iter_list._Set_owner(_M_iter_list); 4099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 4119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._Invalidate_iterators(__x.begin(), __x.end()); 4129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Moves the element that follows __prev to *this, inserting it immediately 4169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // after __pos. This is constant time. 4179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void splice_after(iterator __pos, _Self& __x, iterator __prev) { 4189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 4199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 4209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__prev)) 4219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&__x._M_iter_list, __prev)) 4229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator __elem = __prev; ++__elem; 4239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.splice_after(__pos._M_iterator, __x._M_non_dbg_impl, __prev._M_iterator); 4249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (get_allocator() == __x.get_allocator()) { 4259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __change_ite_owner(__elem, &_M_iter_list); 4269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 4289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._Invalidate_iterator(__elem); 4299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Moves the range [__before_first + 1, __before_last + 1) to *this, 4339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // inserting it immediately after __pos. This is constant time. 4349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void splice_after(iterator __pos, _Self& __x, 4359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator __before_first, iterator __before_last) { 4369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 4379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 4389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__before_first, __before_last)) 4399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&__x._M_iter_list, __before_first)) 4409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__before_first)) 4419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__before_last)) 4429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator __first = __before_first; ++__first; 4439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator __last = __before_last; ++__last; 4449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (get_allocator() == __x.get_allocator()) { 4459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __change_range_owner(__first, __last, &_M_iter_list); 4469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 4489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._Invalidate_iterators(__first, __last); 4499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.splice_after(__pos._M_iterator, __x._M_non_dbg_impl, 4519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __before_first._M_iterator, __before_last._M_iterator); 4529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void splice(iterator __pos, _Self& __x) { 4559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 4569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 4579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(&__x == this), _StlMsg_INVALID_ARGUMENT) 4589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl); 4599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (get_allocator() == __x.get_allocator()) { 4609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._M_iter_list._Set_owner(_M_iter_list); 4619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 4639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._Invalidate_iterators(__x.begin(), __x.end()); 4649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void splice(iterator __pos, _Self& __x, iterator __i) { 4689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //__pos should be owned by *this and not be the before_begin iterator 4699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 4709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 4719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //__i should be dereferenceable, not before_begin and be owned by __x 4729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__i)) 4739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&__x._M_iter_list ,__i)) 4749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__i == __x.before_begin()), _StlMsg_INVALID_ARGUMENT) 4759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (get_allocator() == __x.get_allocator()) { 4769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __change_ite_owner(__i, &_M_iter_list); 4779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 4799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._Invalidate_iterator(__i); 4809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl, __i._M_iterator); 4829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) { 4859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 4869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) 4879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //_STLP_VERBOSE_ASSERT(&__x != this, _StlMsg_INVALID_ARGUMENT) 4889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, __x.begin(), __x.end())) 4899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (get_allocator() == __x.get_allocator()) { 4909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __change_range_owner(__first, __last, &_M_iter_list); 4919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 4939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._Invalidate_iterators(__first, __last); 4949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl, 4969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __first._M_iterator, __last._M_iterator); 4979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void reverse() 5009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _M_non_dbg_impl.reverse(); } 5019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void remove(const value_type& __val) { 5039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); 5049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__first != __last) { 5059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base_iterator __next = __first; 5069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__next; 5079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__val == *__first) { 5089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(iterator(&_M_iter_list, __first)); 5099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.erase(__first); 5109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __first = __next; 5129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void unique() { 5159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); 5169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first == __last) return; 5179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base_iterator __next = __first; 5189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (++__next != __last) { 5199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (*__first == *__next) { 5209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(iterator(&_M_iter_list, __next)); 5219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.erase(__next); 5229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 5249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __first = __next; 5259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __next = __first; 5269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void merge(_Self& __x) { 5299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(&__x != this, _StlMsg_INVALID_ARGUMENT) 5309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_EXTENSIONS) 5319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block /* comments below due to bug in GCC compilers: ones eat all memory and die if see 5329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * something like namespace_name::func_name() - ptr 5339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 5349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK( /* _STLP_STD:: */ is_sorted(_M_non_dbg_impl.begin(), _M_non_dbg_impl.end())) 5359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK( /* _STLP_STD:: */ is_sorted(__x.begin()._M_iterator, __x.end()._M_iterator)) 5369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 5379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.merge(__x._M_non_dbg_impl); 5389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (get_allocator() == __x.get_allocator()) { 5399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._M_iter_list._Set_owner(_M_iter_list); 5409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 5429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._Invalidate_iterators(__x.begin(), __x.end()); 5439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void sort() { 5469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.sort(); 5479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 5509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _Predicate> 5519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void remove_if(_Predicate __pred) { 5529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); 5539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (__first != __last) { 5549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base_iterator __next = __first; 5559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ++__next; 5569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__pred(*__first)) { 5579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(iterator(&_M_iter_list, __first)); 5589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.erase(__first); 5599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __first = __next; 5619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _BinaryPredicate> 5659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void unique(_BinaryPredicate __pred) { 5669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); 5679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first == __last) return; 5689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base_iterator __next = __first; 5699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block while (++__next != __last) { 5709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__binary_pred(*__first, *__next)) { 5719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(iterator(&_M_iter_list, __next)); 5729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.erase(__next); 5739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 5759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __first = __next; 5769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __next = __first; 5779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _StrictWeakOrdering> 5819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void merge(_Self& __x, _StrictWeakOrdering __ord) { 5829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(&__x != this, _StlMsg_INVALID_ARGUMENT) 5839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_EXTENSIONS) 5849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block /* comments below due to bug in GCC compilers: ones eat all memory and die if see 5859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * something like namespace_name::func_name() - ptr 5869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 5879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK( /* _STLP_STD:: */ is_sorted(_M_non_dbg_impl.begin(), _M_non_dbg_impl.end(), __ord)) 5889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK( /* _STLP_STD:: */ is_sorted(__x.begin()._M_iterator, __x.end()._M_iterator, __ord)) 5899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 5909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.merge(__x._M_non_dbg_impl, __ord); 5919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (get_allocator() == __x.get_allocator()) { 5929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._M_iter_list._Set_owner(_M_iter_list); 5939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 5959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __x._Invalidate_iterators(__x.begin(), __x.end()); 5969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _StrictWeakOrdering> 6009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void sort(_StrictWeakOrdering __comp) 6019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _M_non_dbg_impl.sort(__comp); } 6029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 6039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 6069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NON_DBG_SLIST 6089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_DBG_SLIST_H */ 6109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 6129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 6139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 614