_deque.h revision 9720d5f59b9c1f5d1b9ecbc9173dbcb71bd557be
19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1994 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Hewlett-Packard Company 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1996,1997 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1997 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Moscow Center for SPARC Technology 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* NOTE: This is an internal header file, included by other STL headers. 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * You should not attempt to use it directly. 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_DBG_DEQUE_H 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_DBG_DEQUE_H 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_DBG_ITERATOR_H 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/debug/_iterator.h> 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NON_DBG_DEQUE _STLP_PRIV _STLP_NON_DBG_NAME(deque) <_Tp,_Alloc> 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _Tp* value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_DEQUE >&) 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (_Tp*)0; } 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Alloc> 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline random_access_iterator_tag iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_DEQUE >&) 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return random_access_iterator_tag(); } 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, _STLP_DBG_ALLOCATOR_SELECT(_Tp) > 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass deque : 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (__DMC__) 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block private 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __construct_checker<_STLP_NON_DBG_DEQUE > 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block , public __stlport_class<deque<_Tp, _Alloc> > 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef deque<_Tp,_Alloc> _Self; 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_NON_DBG_DEQUE _Base; 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_DEQUE > _ConstructCheck; 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Basic types 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __IMPORT_CONTAINER_TYPEDEFS(_Base) 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Iterators 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Nonconst_traits<value_type> > > iterator; 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Const_traits<value_type> > > const_iterator; 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base _M_non_dbg_impl; 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __owned_list _M_iter_list; 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void _Invalidate_all() 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _M_iter_list._Invalidate_all(); } 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void _Invalidate_iterator(const iterator& __it) 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _STLP_PRIV __invalidate_iterator(&_M_iter_list,__it); } 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void _Invalidate_iterators(const iterator& __first, const iterator& __last) 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Basic accessors 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reverse_iterator rbegin() { return reverse_iterator(end()); } 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reverse_iterator rend() { return reverse_iterator(begin()); } 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reference operator[](size_type __n) { 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS) 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl[__n]; 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reference operator[](size_type __n) const { 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS) 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl[__n]; 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reference at(size_type __n) { return _M_non_dbg_impl.at(__n); } 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reference at(size_type __n) const { return _M_non_dbg_impl.at(__n); } 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reference front() { 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *begin(); 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reference front() const { 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *begin(); 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reference back() { 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *(--end()); 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reference back() const { 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *(--end()); 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Constructor, destructor. 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit deque(const allocator_type& __a = allocator_type()) : 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {} 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(const _Self& __x) : 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _ConstructCheck(__x), _M_non_dbg_impl(__x._M_non_dbg_impl), 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined(_STLP_DONT_SUP_DFLT_PARAM) 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit deque(size_type __n, const value_type& __x = _Tp(), 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(size_type __n, param_type __x, 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) : 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {} 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit deque(size_type __n) : 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__n), _M_iter_list(&_M_non_dbg_impl) {} 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(__move_source<_Self> src) 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block src.get()._M_iter_list._Invalidate_all(); 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block src.get()._M_iter_list._Set_owner(_M_iter_list); 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(_InputIterator __first, _InputIterator __last, 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a), 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(_InputIterator __first, _InputIterator __last) 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)), 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(const value_type* __first, const value_type* __last, 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__first, __last, __a), 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(const_iterator __first, const_iterator __last, 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a), 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator=(const _Self& __x) { 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (this != &__x) { 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl = __x._M_non_dbg_impl; 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool empty() const { return _M_non_dbg_impl.empty(); } 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type size() const { return _M_non_dbg_impl.size(); } 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type max_size() const { return _M_non_dbg_impl.max_size(); } 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void swap(_Self& __x) { 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list._Swap_owners(__x._M_iter_list); 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.swap(__x._M_non_dbg_impl); 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(size_type __n, const _Tp& __val) { 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__n, __val); 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(_InputIterator __first, _InputIterator __last) { 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(const_iterator __first, const_iterator __last) { 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator); 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(const value_type *__first, const value_type *__last) { 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__first, __last); 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // push_* and pop_* 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_back(const value_type& __t = _Tp()) { 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_back(const value_type& __t) { 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_back(__t); 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_back() { 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_back(); 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_front(const value_type& __t = _Tp()) { 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_front(const value_type& __t) { 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_front(__t); 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_front() { 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_front(); 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void pop_back() { 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(end()); 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.pop_back(); 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void pop_front() { 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(begin()); 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.pop_front(); 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Insert 2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos, const value_type& __x = _Tp()) { 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos, const value_type& __x) { 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator, __x)); 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos) { 2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator)); 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, size_type __n, const value_type& __x) { 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__n != 0) _Invalidate_all(); 3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x); 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _AreSameUnCVTypes<_InputIterator, iterator>::_Ret _IsNonConstIterator; 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _AreSameUnCVTypes<_InputIterator, const_iterator>::_Ret _IsConstIterator; 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Lor2<_IsNonConstIterator, _IsConstIterator>::_Ret _DoCheck; 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //Sequence requirements 23.1.1 Table 67: 3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first, _DoCheck())); 3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, 3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //dums: because of self insertion iterators must be invalidated after insertion. 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first != __last) _Invalidate_all(); 3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, 3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const value_type* __first, const value_type* __last) { 3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 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 //dums: because of self insertion iterators must be invalidated after insertion. 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first != __last) _Invalidate_all(); 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator __first, const_iterator __last) { 3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //Sequence requirements 23.1.1 Table 67: 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first, __true_type())); 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); 3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //dums: because of self insertion iterators must be invalidated after insertion. 3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first != __last) _Invalidate_all(); 3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) 3419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __new_size, const value_type& __x = _Tp()) { 3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __new_size, const value_type& __x) { 3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 3459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__new_size != size()) { 3469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if ((__new_size > size()) || (__new_size < size() - 1)) 3479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 3489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 3499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(end()); 3509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.resize(__new_size, __x); 3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) 3559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type new_size) { resize(new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } 3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Erase 3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase(iterator __pos) { 3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__pos._M_iterator == _M_non_dbg_impl.begin()) 3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(__pos); 3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else { 3659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typename _Base::iterator __tmp = --(_M_non_dbg_impl.end()); 3669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__pos._M_iterator == __tmp) 3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(__pos); 3689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 3699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 3709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); 3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase(iterator __first, iterator __last) { 3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 3769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (!empty()) { 3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first._M_iterator == _M_non_dbg_impl.begin() || 3789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __last._M_iterator == _M_non_dbg_impl.end()) 3799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(__first, __last); 3809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 3829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator)); 3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void clear() { 3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.clear(); 3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NON_DBG_DEQUE 3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_DEQUE_H */ 3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 401