177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* 277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1994 477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Hewlett-Packard Company 577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1996,1997 777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Silicon Graphics Computer Systems, Inc. 877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1997 1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Moscow Center for SPARC Technology 1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Boris Fomitchev 1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * This material is provided "as is", with absolutely no warranty expressed 1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * or implied. Any use is at your own risk. 1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to use or copy this software for any purpose is hereby granted 1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * without fee, provided the above notices are retained on all copies. 2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to modify the code and to distribute modified code is granted, 2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * provided the above notices are retained, and a notice that the code was 2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * modified is included with the above copyright notice. 2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* NOTE: This is an internal header file, included by other STL headers. 2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * You should not attempt to use it directly. 2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_DBG_DEQUE_H 3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_INTERNAL_DBG_DEQUE_H 3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_DBG_ITERATOR_H 3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/debug/_iterator.h> 3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_NON_DBG_DEQUE _STLP_PRIV _STLP_NON_DBG_NAME(deque) <_Tp,_Alloc> 3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE 4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) 4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, class _Alloc> 4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Tp* value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_DEQUE >&) 4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return (_Tp*)0; } 4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, class _Alloc> 4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline random_access_iterator_tag iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_DEQUE >&) 4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return random_access_iterator_tag(); } 4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Tp>) > 5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass deque : 5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (__DMC__) 5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner private 5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __construct_checker<_STLP_NON_DBG_DEQUE > 5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) 5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner , public __stlport_class<deque<_Tp, _Alloc> > 5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ 6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef deque<_Tp,_Alloc> _Self; 6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _STLP_NON_DBG_DEQUE _Base; 6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_DEQUE > _ConstructCheck; 6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Basic types 6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __IMPORT_CONTAINER_TYPEDEFS(_Base) 6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Iterators 6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Nonconst_traits<value_type> > > iterator; 7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Const_traits<value_type> > > const_iterator; 7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; 7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprotected: 7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Base _M_non_dbg_impl; 7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __owned_list _M_iter_list; 7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _Invalidate_all() 7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { _M_iter_list._Invalidate_all(); } 8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _Invalidate_iterator(const iterator& __it) 8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { _STLP_PRIV __invalidate_iterator(&_M_iter_list,__it); } 8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _Invalidate_iterators(const iterator& __first, const iterator& __last) 8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } 8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Basic accessors 8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } 8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reverse_iterator rbegin() { return reverse_iterator(end()); } 9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reverse_iterator rend() { return reverse_iterator(begin()); } 9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } 9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } 9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reference operator[](size_type __n) { 10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS) 10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl[__n]; 10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reference operator[](size_type __n) const { 10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS) 10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl[__n]; 10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reference at(size_type __n) { return _M_non_dbg_impl.at(__n); } 10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reference at(size_type __n) const { return _M_non_dbg_impl.at(__n); } 11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reference front() { 11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *begin(); 11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reference front() const { 11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *begin(); 11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reference back() { 12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *(--end()); 12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reference back() const { 12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *(--end()); 12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Constructor, destructor. 12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit deque(const allocator_type& __a = allocator_type()) : 13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {} 13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner deque(const _Self& __x) : 13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _ConstructCheck(__x), _M_non_dbg_impl(__x._M_non_dbg_impl), 13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) {} 13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined(_STLP_DONT_SUP_DFLT_PARAM) 13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit deque(size_type __n, const value_type& __x = _Tp(), 13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner deque(size_type __n, const value_type& __x, 13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) : 14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {} 14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_DONT_SUP_DFLT_PARAM) 14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit deque(size_type __n) : 14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__n), _M_iter_list(&_M_non_dbg_impl) {} 14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ 14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_MOVE_SEMANTIC) 14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner deque(__move_source<_Self> src) 14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), 15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) { 15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner src.get()._M_iter_list._Invalidate_all(); 15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# else 15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner src.get()._M_iter_list._Set_owner(_M_iter_list); 15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) 16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIterator> 16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner deque(_InputIterator __first, _InputIterator __last, 16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) 16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__first, __last), 16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a), 16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) { 16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIterator> 16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner deque(_InputIterator __first, _InputIterator __last) 17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__first, __last), 17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)), 17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) { 17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner deque(const value_type* __first, const value_type* __last, 17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) 17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__first, __last), 17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__first, __last, __a), 18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) { 18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner deque(const_iterator __first, const_iterator __last, 18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) 18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__first, __last), 18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a), 18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) { 18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(const _Self& __x) { 19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (this != &__x) { 19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl = __x._M_non_dbg_impl; 19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner bool empty() const { return _M_non_dbg_impl.empty(); } 20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type size() const { return _M_non_dbg_impl.size(); } 20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type max_size() const { return _M_non_dbg_impl.max_size(); } 20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void swap(_Self& __x) { 20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list._Swap_owners(__x._M_iter_list); 20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.swap(__x._M_non_dbg_impl); 20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _M_swap_workaround(_Self& __x) { swap(__x); } 20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void assign(size_type __n, const _Tp& __val) { 21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__n, __val); 21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) 21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIterator> 21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void assign(_InputIterator __first, _InputIterator __last) { 22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void assign(const_iterator __first, const_iterator __last) { 22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator); 22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void assign(const value_type *__first, const value_type *__last) { 23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) 23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__first, __last); 23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // push_* and pop_* 23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void push_back(const value_type& __t = _Tp()) { 24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void push_back(const value_type& __t) { 24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.push_back(__t); 24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void push_back() { 25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.push_back(); 25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 25477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 25677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void push_front(const value_type& __t = _Tp()) { 25777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 25877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void push_front(const value_type& __t) { 25977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 26077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 26177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.push_front(__t); 26277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 26377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 26477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 26577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void push_front() { 26677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 26777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.push_front(); 26877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 26977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 27077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void pop_back() { 27277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 27377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterator(end()); 27477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.pop_back(); 27577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 27677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void pop_front() { 27877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) 27977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterator(begin()); 28077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.pop_front(); 28177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 28277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Insert 28477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 28677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator insert(iterator __pos, const value_type& __x = _Tp()) { 28777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 28877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator insert(iterator __pos, const value_type& __x) { 28977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 29077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 29177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 29277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator, __x)); 29377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 29477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 29577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) 29677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator insert(iterator __pos) { 29777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 29877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 29977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator)); 30077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 30177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 30277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 30377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __pos, size_type __n, const value_type& __x) { 30477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 30577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__n != 0) _Invalidate_all(); 30677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x); 30777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 30877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 30977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) 31077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIterator> 31177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { 31277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 31377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // We perform invalidate first to detect self referencing in __check_range as __first and __last 31477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // will have been invalidated. 31577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__first != __last) _Invalidate_all(); 31677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 31777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos._M_iterator, 31877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 31977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 32077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 32177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) 32377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __pos, 32477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const value_type* __first, const value_type* __last) { 32577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 32677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) 32777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__first != __last) _Invalidate_all(); 32877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last); 32977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 33077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 33177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 33277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) 33377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __pos, 33477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_iterator __first, const_iterator __last) { 33577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 33677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 33777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner //Sequence requirements 23.1.1 Table 67: 33877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first)); 33977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__first != __last) _Invalidate_all(); 34077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); 34177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 34277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 34377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __pos, 34477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator __first, iterator __last) { 34577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 34677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 34777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner //Sequence requirements 23.1.1 Table 67: 34877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first)); 34977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__first != __last) _Invalidate_all(); 35077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); 35177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 35277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 35377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 35477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_DONT_SUP_DFLT_PARAM) 35577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void resize(size_type __new_size, const value_type& __x = _Tp()) { 35677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 35777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void resize(size_type __new_size, const value_type& __x) { 35877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 35977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__new_size != size()) { 36077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if ((__new_size > size()) || (__new_size < size() - 1)) 36177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 36277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner else 36377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterator(end()); 36477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 36577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.resize(__new_size, __x); 36677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 36777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_DONT_SUP_DFLT_PARAM) 36977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void resize(size_type new_size) { resize(new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } 37077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 37177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 37277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Erase 37377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator erase(iterator __pos) { 37477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) 37577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 37677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__pos._M_iterator == _M_non_dbg_impl.begin()) { 37777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterator(__pos); 37877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } else { 37977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typename _Base::iterator tmp = --(_M_non_dbg_impl.end()); 38077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__pos._M_iterator == tmp) 38177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterator(__pos); 38277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner else 38377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 38477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 38577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); 38677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 38777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 38877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator erase(iterator __first, iterator __last) { 38977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 39077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (!empty()) { 39177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__first._M_iterator == _M_non_dbg_impl.begin() || 39277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __last._M_iterator == _M_non_dbg_impl.end()) 39377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterators(__first, __last); 39477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner else 39577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 39677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 39777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator)); 39877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 39977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void clear() { 40177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 40277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.clear(); 40377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 40477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 40577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE 40777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#undef _STLP_NON_DBG_DEQUE 40977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_INTERNAL_DEQUE_H */ 41177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Local Variables: 41377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// mode:C++ 41477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// End: 415