19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1997-1999 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_DBG_STRING_H 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_DBG_STRING_H 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_DBG_ITERATOR_H 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/debug/_iterator.h> 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NON_DBG_STRING_NAME _STLP_NON_DBG_NAME(str) 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NON_DBG_STRING _STLP_PRIV _STLP_NON_DBG_STRING_NAME <_CharT, _Traits, _Alloc> 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT,class _Traits, class _Alloc> 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline _CharT* 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvalue_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_STRING >&) 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return (_CharT*)0; } 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits, class _Alloc> 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline random_access_iterator_tag 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockiterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_STRING >&) 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return random_access_iterator_tag(); } 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits, class _Alloc> 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass basic_string : 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (__DMC__) 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block private 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __construct_checker<_STLP_NON_DBG_STRING > 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (basic_string) 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block , public __stlport_class<basic_string<_CharT, _Traits, _Alloc> > 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_NON_DBG_STRING _Base; 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_string<_CharT, _Traits, _Alloc> _Self; 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_STRING > _ConstructCheck; 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _IsPOD<_CharT>::_Type _Char_Is_POD; 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __IMPORT_CONTAINER_TYPEDEFS(_Base) 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Base::traits_type traits_type; 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Nonconst_traits<value_type> > > iterator; 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Const_traits<value_type> > > const_iterator; 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Constructor, destructor, assignment. 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Base::_Reserve_t _Reserve_t; 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Base _M_non_dbg_impl; 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_PRIV __owned_list _M_iter_list; 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void _Invalidate_all() 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _M_iter_list._Invalidate_all(); } 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void _Compare_Capacity (size_type __old_capacity) { 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (this->capacity() > __old_capacity) { 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 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& __f, const iterator& __l) 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { _STLP_PRIV __invalidate_range(&_M_iter_list, __f, __l); } 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/_string_npos.h> 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit basic_string(const allocator_type& __a = allocator_type()) 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {} 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(_Reserve_t __r, size_t __n, 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__r, __n, __a), _M_iter_list(&_M_non_dbg_impl) {} 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(const _Self& __s) 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__s), 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__s._M_non_dbg_impl), _M_iter_list(&_M_non_dbg_impl) {} 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(const _Self& __s, size_type __pos, size_type __n = npos, 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__s._M_non_dbg_impl, __pos, __n, __a), 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(const _CharT* __s, size_type __n, 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__s), _M_non_dbg_impl(__s, __n, __a), 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(const _CharT* __s, 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__s), 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__s, __a), _M_iter_list(&_M_non_dbg_impl) {} 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(size_type __n, _CharT __c, 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__n, __c, __a), _M_iter_list(&_M_non_dbg_impl) {} 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_MOVE_SEMANTIC) 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(__move_source<_Self> src) 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__move_source<_Base >(src.get()._M_non_dbg_impl)), 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) { 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block src.get()._M_iter_list._Invalidate_all(); 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block src.get()._M_iter_list._Set_owner(_M_iter_list); 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MEMBER_TEMPLATES) 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(const _CharT* __f, const _CharT* __l, 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type& __a = allocator_type()) 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__f, __l), 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__f, __l, __a), _M_iter_list(&_M_non_dbg_impl) { 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(const_iterator __f, const_iterator __l, 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type & __a = allocator_type()) 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__f, __l), 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(__f._M_iterator, __l._M_iterator, __a), _M_iter_list(&_M_non_dbg_impl) { 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(_InputIterator __f, _InputIterator __l, 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const allocator_type & __a _STLP_ALLOCATOR_TYPE_DFL) 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__f, __l), 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l), __a), 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIterator> 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string(_InputIterator __f, _InputIterator __l) 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _ConstructCheck(__f, __l), 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)), 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list(&_M_non_dbg_impl) {} 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // constructor from non-debug version for substr 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_string (const _Base& __x) 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_non_dbg_impl(__x), _M_iter_list(&_M_non_dbg_impl) {} 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator=(const _Self& __s) { 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (this != &__s) { 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block assign(__s); 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator=(const _CharT* __s) { 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return assign(__s); 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator=(_CharT __c) { 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return assign(1, __c); 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Iterators. 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reverse_iterator rbegin() { return reverse_iterator(end()); } 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reverse_iterator rend() { return reverse_iterator(begin()); } 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Size, capacity, etc. 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type size() const { return _M_non_dbg_impl.size(); } 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type length() const { return _M_non_dbg_impl.length(); } 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_t max_size() const { return _M_non_dbg_impl.max_size(); } 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __n, _CharT __c) { 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__n > capacity()) 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block else if (__n < size()) 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(begin() + __n, end()); 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.resize(__n, __c); 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void resize(size_type __n) { resize(__n, _STLP_DEFAULT_CONSTRUCTED(_CharT)); } 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type capacity() const { return _M_non_dbg_impl.capacity(); } 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void reserve(size_type __s = 0) { 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__s > capacity()) _Invalidate_all(); 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.reserve(__s); 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void clear() { 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_all(); 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.clear(); 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool empty() const { return _M_non_dbg_impl.empty(); } 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reference operator[](size_type __n) const { 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(__n <= this->size(), _StlMsg_OUT_OF_BOUNDS); 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl[__n]; 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reference operator[](size_type __n) { 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT(__n < this->size(), _StlMsg_OUT_OF_BOUNDS) 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl[__n]; 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_reference at(size_type __n) const { return _M_non_dbg_impl.at(__n); } 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block reference at(size_type __n) { return _M_non_dbg_impl.at(__n); } 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Append, operator+=, push_back. 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator+=(const _Self& __s) { return append(__s); } 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator+=(const _CharT* __s) { 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return append(__s); 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator+=(_CharT __c) { return append(1, __c); } 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIter> 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& append(_InputIter __first, _InputIter __last) { 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.append(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_MEMBER_TEMPLATES) || \ 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& append(const _CharT* __f, const _CharT* __l) { 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.append(__f, __l); 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& append(const_iterator __f, const_iterator __l) { 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.append(__f._M_iterator, __l._M_iterator); 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& append(const _Self& __s) { 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.append(__s._M_non_dbg_impl); 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& append(const _Self& __s, size_type __pos, size_type __n) { 2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.append(__s._M_non_dbg_impl, __pos, __n); 2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& append(const _CharT* __s, size_type __n) { 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.append(__s, __n); 2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& append(const _CharT* __s) { 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.append(__s); 3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& append(size_type __n, _CharT __c) { 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = this->capacity(); 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.append(__n, __c); 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void push_back(_CharT __c) { 3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = this->capacity(); 3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.push_back(__c); 3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void pop_back() { 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterator(this->end()); 3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.pop_back(); 3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Assign 3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& assign(const _Self& __s) { 325e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Invalidate_all(); 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__s._M_non_dbg_impl); 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& assign(const _Self& __s, size_type __pos, size_type __n) { 3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__pos < __s.size()) { 332e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Invalidate_all(); 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__s._M_non_dbg_impl, __pos, __n); 3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& assign(const _CharT* __s, size_type __n) { 3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 341e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Invalidate_all(); 3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__s, __s + __n); 3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& assign(const _CharT* __s) { 3479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 3489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 349e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Invalidate_all(); 3509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__s); 3519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& assign(size_type __n, _CharT __c) { 355e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Invalidate_all(); 3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__n, __c); 3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined(_STLP_MEMBER_TEMPLATES) 3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIter> 3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block inline _Self& assign(_InputIter __first, _InputIter __last) { 3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) 3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 365e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Invalidate_all(); 366e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 3709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_MEMBER_TEMPLATES) || \ 3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) 3739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& assign(const _CharT* __f, const _CharT* __l) { 3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) 3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) 376e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Invalidate_all(); 3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__f, __l); 3789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& assign(const_iterator __f, const_iterator __l) { 3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 382e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Invalidate_all(); 3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.assign(__f._M_iterator, __l._M_iterator); 3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Insert 3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& insert(size_type __pos, const _Self& __s) { 3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos, __s._M_non_dbg_impl); 3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& insert(size_type __pos, const _Self& __s, 3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __beg, size_type __n) { 3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos, __s._M_non_dbg_impl, __beg, __n); 4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 4019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 4029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& insert(size_type __pos, const _CharT* __s, size_type __n) { 4059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 4069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 4079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 4089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos, __s, __n); 4099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 4109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 4119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& insert(size_type __pos, const _CharT* __s) { 4149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 4159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 4169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return insert(__pos, __s, _Traits::length(__s)); 4179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& insert(size_type __pos, size_type __n, _CharT __c) { 4209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 4219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__pos, __n, __c); 4229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 4239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 4249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator insert(iterator __p, _CharT __c) { 4279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 4289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 4299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typename _Base::iterator __ret = _M_non_dbg_impl.insert(__p._M_iterator, __c); 4309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 4319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, __ret); 4329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __p, size_t __n, _CharT __c) { 4359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 4369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 4379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__p._M_iterator, __n, __c); 4389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 4399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 4429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIter> 4439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __p, _InputIter __first, _InputIter __last) { 4449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 4459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last)) 4469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = this->capacity(); 448e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.insert(__p._M_iterator, 449e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 4509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 4519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 4539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 454e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MEMBER_TEMPLATES) 455e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void insert(iterator __p, const _CharT* __f, const _CharT* __l) { 456e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) 457e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 458e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f,__l)) 459e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_type __old_capacity = capacity(); 460e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.insert(__p._M_iterator, __f, __l); 461e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Compare_Capacity(__old_capacity); 462e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 463e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 464e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 465e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) 466e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // Those overloads are necessary to check self referencing correctly in non debug 467e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // basic_string implementation 4689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void insert(iterator __p, const_iterator __f, const_iterator __l) { 4699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 4709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f,__l)) 471e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 472e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __f)) 473e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 4749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 4759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.insert(__p._M_iterator, __f._M_iterator, __l._M_iterator); 4769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 4779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 478e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void insert(iterator __p, iterator __f, iterator __l) { 4799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 480e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f,__l)) 481e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 482e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __f)) 483e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 4849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 485e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.insert(__p._M_iterator, __f._M_iterator, __l._M_iterator); 4869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 4879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 4899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Erase. 4919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& erase(size_type __pos = 0, size_type __n = npos) { 4929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (__pos < size()) { 4939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(begin() + __pos, end()); 4949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.erase(__pos, __n); 4969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 4979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 4989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase(iterator __pos) { 4999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 5009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 5019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(__pos, end()); 5029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); 5039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block iterator erase(iterator __f, iterator __l) { 5059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 5069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Invalidate_iterators(__f, end()); 5079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__f._M_iterator, __l._M_iterator)); 5089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Substring. 5119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self substr(size_type __pos = 0, size_type __n = npos) const 5129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.substr(__pos, __n); } 5139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Replace. (Conceptually equivalent to erase followed by insert.) 5159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(size_type __pos, size_type __n, const _Self& __s) { 5169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__pos, __n, __s._M_non_dbg_impl); 5189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(size_type __pos1, size_type __n1, const _Self& __s, 5239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __pos2, size_type __n2) { 5249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__pos1, __n1, __s._M_non_dbg_impl, __pos2, __n2); 5269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) { 5319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 5329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 5339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__pos, __n1, __s, __n2); 5359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(size_type __pos, size_type __n1, const _CharT* __s) { 5409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 5419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 5429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__pos, __n1, __s); 5449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) { 5499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__pos, __n1, __n2, __c); 5519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(iterator __f, iterator __l, const _Self& __s) { 5569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 5579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s._M_non_dbg_impl); 5599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(iterator __f, iterator __l, const _CharT* __s, size_type __n) { 5649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 5659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 5669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 5679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s, __n); 5699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(iterator __f, iterator __l, const _CharT* __s) { 5749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 5759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 5769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 5779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s); 5799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(iterator __f, iterator __l, size_type __n, _CharT __c) { 5849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 5859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 5869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __n, __c); 5879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 5889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 5899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) 5929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template <class _InputIter> 5939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(iterator __first, iterator __last, 5949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _InputIter __f, _InputIter __l) { 5959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 5969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 5979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 598e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_type __old_capacity = capacity(); 599e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, 600e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)); 601e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Compare_Capacity(__old_capacity); 602e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return *this; 603e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 604e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 6059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 606e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MEMBER_TEMPLATES) 607e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Self& replace(iterator __first, iterator __last, 608e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const _CharT* __f, const _CharT* __l) { 609e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) 610e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 611e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) 6129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 613e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, __f, __l); 6149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 6159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 6169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 6179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 6189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 619e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) 6209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(iterator __first, iterator __last, 6219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator __f, const_iterator __l) { 6229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 6239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 6249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 6259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, 6269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __f._M_iterator, __l._M_iterator); 6279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 6289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 6299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 6309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& replace(iterator __first, iterator __last, 631e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott iterator __f, iterator __l) { 6329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 633e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 6349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __old_capacity = capacity(); 635e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, 636e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __f._M_iterator, __l._M_iterator); 6379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Compare_Capacity(__old_capacity); 6389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 6399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 6409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 6419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Other modifier member functions. 6439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void swap(_Self& __s) { 6449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_iter_list._Swap_owners(__s._M_iter_list); 6459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_non_dbg_impl.swap(__s._M_non_dbg_impl); 6469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 647e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 648e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void _M_swap_workaround(_Self& __x) { swap(__x); } 649e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 6509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int compare(const _Self& __s) const 6529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.compare(__s._M_non_dbg_impl); } 6539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int compare(size_type __pos, size_type __n, const _Self& __s) const 6549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.compare(__pos, __n, __s._M_non_dbg_impl); } 6559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int compare(size_type __pos1, size_type __n1, const _Self& __s, 6569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __pos2, size_type __n2) const 6579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.compare(__pos1, __n1, __s._M_non_dbg_impl, __pos2, __n2); } 6589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int compare(const _CharT* __s) const { 6599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 6609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.compare(__s); 6619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 6629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int compare(size_type __pos, size_type __n, const _CharT* __s) const { 6639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 6649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.compare(__pos, __n, __s); 6659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 6669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int compare(size_type __pos1, size_type __n1, const _CharT* __s, 6679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type __n2) const { 6689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 6699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.compare(__pos1, __n1, __s, __n2); 6709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 6719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // Helper functions for compare. 6739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int _STLP_CALL _M_compare(const _CharT* __f1, const _CharT* __l1, 6749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _CharT* __f2, const _CharT* __l2) 6759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _Base::_M_compare(__f1, __l1, __f2, __l2); } 6769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int _STLP_CALL _M_compare(const_iterator __f1, const_iterator __l1, 6779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _CharT* __f2, const _CharT* __l2) 6789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _Base::_M_compare(__f1._M_iterator, __l1._M_iterator, __f2, __l2); } 6799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int _STLP_CALL _M_compare(const _CharT* __f1, const _CharT* __l1, 6809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator __f2, const_iterator __l2) 6819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _Base::_M_compare(__f1, __l1, __f2._M_iterator, __l2._M_iterator); } 6829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static int _STLP_CALL _M_compare(const_iterator __f1, const_iterator __l1, 6839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const_iterator __f2, const_iterator __l2) 6849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _Base::_M_compare(__f1._M_iterator, __l1._M_iterator, __f2._M_iterator, __l2._M_iterator); } 6859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _CharT* c_str() const { return _M_non_dbg_impl.c_str(); } 6879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const _CharT* data() const { return _M_non_dbg_impl.data(); } 6889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const 6909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.copy(__s, __n, __pos); } 6919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // find. 6939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find(const _Self& __s, size_type __pos = 0) const 6949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find(__s._M_non_dbg_impl, __pos); } 6959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find(const _CharT* __s, size_type __pos = 0) const { 6969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 6979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 6989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find(__s, __pos); 6999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find(const _CharT* __s, size_type __pos, size_type __n) const { 7019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find(__s, __pos, __n); 7049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // WIE: Versant schema compiler 5.2.2 ICE workaround 7069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find(_CharT __c) const { return find(__c, 0); } 7079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find(_CharT __c, size_type __pos /* = 0 */) const 7089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find(__c, __pos); } 7099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // rfind. 7119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type rfind(const _Self& __s, size_type __pos = npos) const 7129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.rfind(__s._M_non_dbg_impl, __pos); } 7139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type rfind(const _CharT* __s, size_type __pos = npos) const { 7149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.rfind(__s, __pos); 7179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const { 7199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.rfind(__s, __pos, __n); 7229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type rfind(_CharT __c, size_type __pos = npos) const 7249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.rfind(__c, __pos); } 7259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // find_first_of 7279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_first_of(const _Self& __s, size_type __pos = 0) const 7289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find_first_of(__s._M_non_dbg_impl, __pos); } 7299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_first_of(const _CharT* __s, size_type __pos = 0) const { 7309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find_first_of(__s, __pos); 7339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const { 7359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find_first_of(__s, __pos, __n); 7389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_first_of(_CharT __c, size_type __pos = 0) const 7409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find_first_of(__c, __pos); } 7419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // find_last_of 7439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_last_of(const _Self& __s, size_type __pos = npos) const 7449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find_last_of(__s._M_non_dbg_impl, __pos); } 7459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_last_of(const _CharT* __s, size_type __pos = npos) const { 7469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find_last_of(__s, __pos); 7499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const { 7519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find_last_of(__s, __pos, __n); 7549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_last_of(_CharT __c, size_type __pos = npos) const 7569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.rfind(__c, __pos); } 7579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // find_first_not_of 7599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_first_not_of(const _Self& __s, size_type __pos = 0) const 7609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find_first_not_of(__s._M_non_dbg_impl, __pos); } 7619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_first_not_of(const _CharT* __s, size_type __pos = 0) const { 7629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find_first_not_of(__s, __pos); 7659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const { 7679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find_first_not_of(__s, __pos, __n); 7709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_first_not_of(_CharT __c, size_type __pos = 0) const 7729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find_first_not_of(__c, __pos); } 7739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // find_last_not_of 7759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_last_not_of(const _Self& __s, size_type __pos = npos) const 7769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find_last_not_of(__s._M_non_dbg_impl, __pos); } 7779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_last_not_of(const _CharT* __s, size_type __pos = npos) const { 7789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find_last_not_of(__s, __pos); 7819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const { 7839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_FIX_LITERAL_BUG(__s) 7849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 7859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_non_dbg_impl.find_last_not_of(__s, __pos, __n); 7869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 7879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block size_type find_last_not_of(_CharT __c, size_type __pos = npos) const 7889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return _M_non_dbg_impl.find_last_not_of(__c, __pos); } 7899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_TEMPLATE_EXPRESSION) 7919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/debug/_string_sum_methods.h> 792e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 7939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 7949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This is a hook to instantiate STLport exports in a designated DLL 7969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) 7979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_PRIV_NAMESPACE 7989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS __construct_checker<_STLP_NON_DBG_STRING_NAME <char, char_traits<char>, allocator<char> > >; 7999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_STD_NAMESPACE 8009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_string<char, char_traits<char>, allocator<char> >; 8019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined (_STLP_HAS_WCHAR_T) 8029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_PRIV_NAMESPACE 8039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS __construct_checker<_STLP_NON_DBG_STRING_NAME <wchar_t, char_traits<wchar_t>, allocator<wchar_t> > >; 8049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_STD_NAMESPACE 8059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 8069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 807e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 8089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NON_DBG_STRING 8109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NON_DBG_STRING_NAME 8119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 812e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96) 8139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits, class _Alloc> 8149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockconst size_t basic_string<_CharT, _Traits, _Alloc>::npos = ~(size_t) 0; 8159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 8169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (basic_string) 8189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_STD_NAMESPACE 8199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef basic_string 8209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 8219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 8239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_DBG_STRING */ 8259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 8279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 8289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 829