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 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Tp, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_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 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott deque(size_type __n, const value_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 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_MOVE_SEMANTIC) 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(__move_source<_Self> src) 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block src.get()._M_iter_list._Invalidate_all(); 153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block src.get()._M_iter_list._Set_owner(_M_iter_list); 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(_InputIterator __first, _InputIterator __last, 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a), 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(_InputIterator __first, _InputIterator __last) 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)), 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(const value_type* __first, const value_type* __last, 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__first, __last, __a), 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block deque(const_iterator __first, const_iterator __last, 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__first, __last), 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a), 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator=(const _Self& __x) { 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (this != &__x) { 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl = __x._M_non_dbg_impl; 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 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 Blockpublic: 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(size_type __n, const _Tp& __val) { 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__n, __val); 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(_InputIterator __first, _InputIterator __last) { 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(const_iterator __first, const_iterator __last) { 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator); 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void assign(const value_type *__first, const value_type *__last) { 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__first, __last); 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // push_* and pop_* 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_back(const value_type& __t = _Tp()) { 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_back(const value_type& __t) { 243e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_back(__t); 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_back() { 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_back(); 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 253e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_front(const value_type& __t = _Tp()) { 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_front(const value_type& __t) { 259e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_front(__t); 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_front() { 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_front(); 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 269e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void pop_back() { 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(end()); 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.pop_back(); 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void pop_front() { 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(begin()); 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.pop_front(); 2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Insert 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos, const value_type& __x = _Tp()) { 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos, const value_type& __x) { 289e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator, __x)); 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __pos) { 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator)); 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 301e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, size_type __n, const value_type& __x) { 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__n != 0) _Invalidate_all(); 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x); 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 313e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // We perform invalidate first to detect self referencing in __check_range as __first and __last 314e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // will have been invalidated. 315e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__first != __last) _Invalidate_all(); 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, 3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 320e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 321e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 322e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MEMBER_TEMPLATES) 3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, 3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const value_type* __first, const value_type* __last) { 3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first != __last) _Invalidate_all(); 328e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last); 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 330e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 331e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 332e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __pos, 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator __first, const_iterator __last) { 3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //Sequence requirements 23.1.1 Table 67: 338e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first)); 339e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__first != __last) _Invalidate_all(); 3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); 341e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 342e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 343e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void insert(iterator __pos, 344e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott iterator __first, iterator __last) { 345e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 346e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 347e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //Sequence requirements 23.1.1 Table 67: 348e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first)); 3499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first != __last) _Invalidate_all(); 350e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); 3519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_SUP_DFLT_PARAM) 3559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __new_size, const value_type& __x = _Tp()) { 3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __new_size, const value_type& __x) { 358e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__new_size != size()) { 3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if ((__new_size > size()) || (__new_size < size() - 1)) 3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(end()); 3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.resize(__new_size, __x); 3669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DONT_SUP_DFLT_PARAM) 3699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type new_size) { resize(new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } 370e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Erase 3739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase(iterator __pos) { 3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 376e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__pos._M_iterator == _M_non_dbg_impl.begin()) { 3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(__pos); 378e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } else { 379e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typename _Base::iterator tmp = --(_M_non_dbg_impl.end()); 380e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__pos._M_iterator == tmp) 3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(__pos); 3829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); 3869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase(iterator __first, iterator __last) { 3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (!empty()) { 3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__first._M_iterator == _M_non_dbg_impl.begin() || 3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __last._M_iterator == _M_non_dbg_impl.end()) 3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(__first, __last); 3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else 3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator)); 3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void clear() { 4019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 4029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.clear(); 4039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 4079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NON_DBG_DEQUE 4099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_DEQUE_H */ 4119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 4139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 4149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 415