177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* 277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1997-1999 377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Silicon Graphics Computer Systems, Inc. 477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Boris Fomitchev 777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * This material is provided "as is", with absolutely no warranty expressed 977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * or implied. Any use is at your own risk. 1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to use or copy this software for any purpose is hereby granted 1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * without fee, provided the above notices are retained on all copies. 1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to modify the code and to distribute modified code is granted, 1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * provided the above notices are retained, and a notice that the code was 1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * modified is included with the above copyright notice. 1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_DBG_STRING_H 1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_DBG_STRING_H 2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_DBG_ITERATOR_H 2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/debug/_iterator.h> 2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE 2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_NON_DBG_STRING_NAME _STLP_NON_DBG_NAME(str) 2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_NON_DBG_STRING _STLP_PRIV _STLP_NON_DBG_STRING_NAME <_CharT, _Traits, _Alloc> 2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) 3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _CharT,class _Traits, class _Alloc> 3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _CharT* 3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervalue_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_STRING >&) 3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return (_CharT*)0; } 3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _CharT, class _Traits, class _Alloc> 3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline random_access_iterator_tag 3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneriterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_STRING >&) 3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return random_access_iterator_tag(); } 3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _CharT, class _Traits, class _Alloc> 4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass basic_string : 4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (__DMC__) 4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner private 4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner public 4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __construct_checker<_STLP_NON_DBG_STRING > 4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (basic_string) 5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner , public __stlport_class<basic_string<_CharT, _Traits, _Alloc> > 5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ 5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprotected: 5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _STLP_NON_DBG_STRING _Base; 5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_string<_CharT, _Traits, _Alloc> _Self; 5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_STRING > _ConstructCheck; 5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _IsPOD<_CharT>::_Type _Char_Is_POD; 5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __IMPORT_CONTAINER_TYPEDEFS(_Base) 6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Base::traits_type traits_type; 6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Nonconst_traits<value_type> > > iterator; 6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Const_traits<value_type> > > const_iterator; 6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; 6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Constructor, destructor, assignment. 6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Base::_Reserve_t _Reserve_t; 6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Base _M_non_dbg_impl; 7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV __owned_list _M_iter_list; 7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _Invalidate_all() 7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { _M_iter_list._Invalidate_all(); } 7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _Compare_Capacity (size_type __old_capacity) { 7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (this->capacity() > __old_capacity) { 7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 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& __f, const iterator& __l) 8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { _STLP_PRIV __invalidate_range(&_M_iter_list, __f, __l); } 8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#include <stl/_string_npos.h> 8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } 8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit basic_string(const allocator_type& __a = allocator_type()) 9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {} 9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(_Reserve_t __r, size_t __n, 9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) 9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_non_dbg_impl(__r, __n, __a), _M_iter_list(&_M_non_dbg_impl) {} 9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(const _Self& __s) 9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__s), 9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__s._M_non_dbg_impl), _M_iter_list(&_M_non_dbg_impl) {} 10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(const _Self& __s, size_type __pos, size_type __n = npos, 10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) 10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_non_dbg_impl(__s._M_non_dbg_impl, __pos, __n, __a), 10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) {} 10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(const _CharT* __s, size_type __n, 10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) 10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__s), _M_non_dbg_impl(__s, __n, __a), 10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) {} 11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(const _CharT* __s, 11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) 11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__s), 11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__s, __a), _M_iter_list(&_M_non_dbg_impl) {} 11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(size_type __n, _CharT __c, 11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) 11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_non_dbg_impl(__n, __c, __a), _M_iter_list(&_M_non_dbg_impl) {} 11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_NO_MOVE_SEMANTIC) 12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(__move_source<_Self> src) 12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_non_dbg_impl(__move_source<_Base >(src.get()._M_non_dbg_impl)), 12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) { 12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner src.get()._M_iter_list._Invalidate_all(); 12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# else 12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner src.get()._M_iter_list._Set_owner(_M_iter_list); 12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) 13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(const _CharT* __f, const _CharT* __l, 13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type& __a = allocator_type()) 13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__f, __l), 13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__f, __l, __a), _M_iter_list(&_M_non_dbg_impl) { 13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(const_iterator __f, const_iterator __l, 13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type & __a = allocator_type()) 14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__f, __l), 14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(__f._M_iterator, __l._M_iterator, __a), _M_iter_list(&_M_non_dbg_impl) { 14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else 14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIterator> 14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(_InputIterator __f, _InputIterator __l, 14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const allocator_type & __a _STLP_ALLOCATOR_TYPE_DFL) 14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__f, __l), 14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l), __a), 14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) {} 15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) 15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIterator> 15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string(_InputIterator __f, _InputIterator __l) 15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _ConstructCheck(__f, __l), 15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)), 15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list(&_M_non_dbg_impl) {} 15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // constructor from non-debug version for substr 16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_string (const _Base& __x) 16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_non_dbg_impl(__x), _M_iter_list(&_M_non_dbg_impl) {} 16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(const _Self& __s) { 16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (this != &__s) { 16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner assign(__s); 16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(const _CharT* __s) { 17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return assign(__s); 17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator=(_CharT __c) { 17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return assign(1, __c); 18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Iterators. 18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } 18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } 18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reverse_iterator rbegin() { return reverse_iterator(end()); } 18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } 19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reverse_iterator rend() { return reverse_iterator(begin()); } 19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } 19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Size, capacity, etc. 19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type size() const { return _M_non_dbg_impl.size(); } 19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type length() const { return _M_non_dbg_impl.length(); } 19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_t max_size() const { return _M_non_dbg_impl.max_size(); } 19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void resize(size_type __n, _CharT __c) { 19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__n > capacity()) 20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner else if (__n < size()) 20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterators(begin() + __n, end()); 20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.resize(__n, __c); 20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void resize(size_type __n) { resize(__n, _STLP_DEFAULT_CONSTRUCTED(_CharT)); } 20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type capacity() const { return _M_non_dbg_impl.capacity(); } 20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void reserve(size_type __s = 0) { 20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__s > capacity()) _Invalidate_all(); 21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.reserve(__s); 21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void clear() { 21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.clear(); 21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner bool empty() const { return _M_non_dbg_impl.empty(); } 21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reference operator[](size_type __n) const { 22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(__n <= this->size(), _StlMsg_OUT_OF_BOUNDS); 22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl[__n]; 22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reference operator[](size_type __n) { 22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT(__n < this->size(), _StlMsg_OUT_OF_BOUNDS) 22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl[__n]; 22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_reference at(size_type __n) const { return _M_non_dbg_impl.at(__n); } 23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner reference at(size_type __n) { return _M_non_dbg_impl.at(__n); } 23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Append, operator+=, push_back. 23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+=(const _Self& __s) { return append(__s); } 23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+=(const _CharT* __s) { 23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return append(__s); 23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator+=(_CharT __c) { return append(1, __c); } 24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) 24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIter> 24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& append(_InputIter __first, _InputIter __last) { 24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.append(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) || \ 25477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) 25577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& append(const _CharT* __f, const _CharT* __l) { 25677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) 25777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) 25877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 25977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.append(__f, __l); 26077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 26177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 26277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 26377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 26477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& append(const_iterator __f, const_iterator __l) { 26577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 26677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 26777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.append(__f._M_iterator, __l._M_iterator); 26877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 26977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 27077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 27177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 27277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& append(const _Self& __s) { 27477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 27577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.append(__s._M_non_dbg_impl); 27677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 27777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 27877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 27977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& append(const _Self& __s, size_type __pos, size_type __n) { 28177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 28277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.append(__s._M_non_dbg_impl, __pos, __n); 28377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 28477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 28577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 28677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 28777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& append(const _CharT* __s, size_type __n) { 28877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 28977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 29077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 29177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.append(__s, __n); 29277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 29377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 29477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 29577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 29677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& append(const _CharT* __s) { 29777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 29877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 29977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 30077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.append(__s); 30177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 30277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 30377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 30477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 30577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& append(size_type __n, _CharT __c) { 30677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = this->capacity(); 30777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.append(__n, __c); 30877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 30977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 31077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 31177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void push_back(_CharT __c) { 31377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = this->capacity(); 31477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.push_back(__c); 31577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 31677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 31777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 31877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void pop_back() { 31977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterator(this->end()); 32077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.pop_back(); 32177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 32277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 32377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Assign 32477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& assign(const _Self& __s) { 32577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 32677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__s._M_non_dbg_impl); 32777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 32877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 32977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 33077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& assign(const _Self& __s, size_type __pos, size_type __n) { 33177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__pos < __s.size()) { 33277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 33377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 33477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__s._M_non_dbg_impl, __pos, __n); 33577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 33677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 33777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 33877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& assign(const _CharT* __s, size_type __n) { 33977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 34077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 34177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 34277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__s, __s + __n); 34377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 34477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 34577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 34677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& assign(const _CharT* __s) { 34777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 34877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 34977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 35077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__s); 35177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 35277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 35377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 35477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& assign(size_type __n, _CharT __c) { 35577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 35677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__n, __c); 35777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 35877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 35977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 36077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined(_STLP_MEMBER_TEMPLATES) 36177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIter> 36277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner inline _Self& assign(_InputIter __first, _InputIter __last) { 36377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) 36477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) 36577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 36677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 36777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 36877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 36977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 37077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 37177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) || \ 37277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) 37377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& assign(const _CharT* __f, const _CharT* __l) { 37477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) 37577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) 37677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 37777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__f, __l); 37877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 37977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 38077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& assign(const_iterator __f, const_iterator __l) { 38177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 38277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_all(); 38377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.assign(__f._M_iterator, __l._M_iterator); 38477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 38577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 38677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 38777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 38877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Insert 38977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& insert(size_type __pos, const _Self& __s) { 39077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 39177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos, __s._M_non_dbg_impl); 39277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 39377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 39477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 39577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 39677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& insert(size_type __pos, const _Self& __s, 39777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __beg, size_type __n) { 39877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 39977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos, __s._M_non_dbg_impl, __beg, __n); 40077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 40177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 40277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 40377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 40477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& insert(size_type __pos, const _CharT* __s, size_type __n) { 40577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 40677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 40777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 40877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos, __s, __n); 40977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 41077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 41177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 41277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& insert(size_type __pos, const _CharT* __s) { 41477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 41577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 41677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return insert(__pos, __s, _Traits::length(__s)); 41777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 41877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 41977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& insert(size_type __pos, size_type __n, _CharT __c) { 42077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 42177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__pos, __n, __c); 42277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 42377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 42477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 42577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 42677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator insert(iterator __p, _CharT __c) { 42777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 42877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 42977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typename _Base::iterator __ret = _M_non_dbg_impl.insert(__p._M_iterator, __c); 43077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 43177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return iterator(&_M_iter_list, __ret); 43277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 43377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 43477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __p, size_t __n, _CharT __c) { 43577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 43677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 43777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__p._M_iterator, __n, __c); 43877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 43977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 44077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 44177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) 44277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIter> 44377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __p, _InputIter __first, _InputIter __last) { 44477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 44577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last)) 44677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 44777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = this->capacity(); 44877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__p._M_iterator, 44977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); 45077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 45177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 45277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 45377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 45477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) 45577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __p, const _CharT* __f, const _CharT* __l) { 45677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) 45777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 45877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f,__l)) 45977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 46077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__p._M_iterator, __f, __l); 46177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 46277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 46377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 46477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 46577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) 46677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Those overloads are necessary to check self referencing correctly in non debug 46777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // basic_string implementation 46877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __p, const_iterator __f, const_iterator __l) { 46977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 47077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f,__l)) 47177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 47277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __f)) 47377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 47477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 47577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__p._M_iterator, __f._M_iterator, __l._M_iterator); 47677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 47777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 47877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void insert(iterator __p, iterator __f, iterator __l) { 47977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) 48077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f,__l)) 48177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) 48277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __f)) 48377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 48477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 48577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.insert(__p._M_iterator, __f._M_iterator, __l._M_iterator); 48677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 48777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 48877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 48977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 49077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Erase. 49177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& erase(size_type __pos = 0, size_type __n = npos) { 49277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner if (__pos < size()) { 49377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterators(begin() + __pos, end()); 49477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 49577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.erase(__pos, __n); 49677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 49777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 49877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator erase(iterator __pos) { 49977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) 50077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) 50177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterators(__pos, end()); 50277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); 50377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 50477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator erase(iterator __f, iterator __l) { 50577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 50677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Invalidate_iterators(__f, end()); 50777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__f._M_iterator, __l._M_iterator)); 50877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 50977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 51077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Substring. 51177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self substr(size_type __pos = 0, size_type __n = npos) const 51277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.substr(__pos, __n); } 51377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 51477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Replace. (Conceptually equivalent to erase followed by insert.) 51577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(size_type __pos, size_type __n, const _Self& __s) { 51677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 51777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__pos, __n, __s._M_non_dbg_impl); 51877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 51977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 52077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 52177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 52277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(size_type __pos1, size_type __n1, const _Self& __s, 52377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __pos2, size_type __n2) { 52477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 52577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__pos1, __n1, __s._M_non_dbg_impl, __pos2, __n2); 52677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 52777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 52877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 52977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 53077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) { 53177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 53277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 53377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 53477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__pos, __n1, __s, __n2); 53577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 53677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 53777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 53877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 53977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(size_type __pos, size_type __n1, const _CharT* __s) { 54077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 54177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 54277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 54377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__pos, __n1, __s); 54477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 54577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 54677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 54777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 54877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) { 54977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 55077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__pos, __n1, __n2, __c); 55177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 55277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 55377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 55477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 55577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(iterator __f, iterator __l, const _Self& __s) { 55677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 55777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 55877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s._M_non_dbg_impl); 55977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 56077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 56177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 56277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 56377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(iterator __f, iterator __l, const _CharT* __s, size_type __n) { 56477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 56577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 56677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 56777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 56877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s, __n); 56977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 57077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 57177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 57277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 57377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(iterator __f, iterator __l, const _CharT* __s) { 57477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 57577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 57677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 57777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 57877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s); 57977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 58077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 58177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 58277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 58377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(iterator __f, iterator __l, size_type __n, _CharT __c) { 58477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) 58577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 58677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __n, __c); 58777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 58877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 58977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 59077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 59177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MEMBER_TEMPLATES) 59277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner template <class _InputIter> 59377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(iterator __first, iterator __last, 59477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _InputIter __f, _InputIter __l) { 59577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 59677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 59777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 59877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 59977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, 60077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)); 60177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 60277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 60377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 60477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 60577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 60677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) 60777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(iterator __first, iterator __last, 60877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _CharT* __f, const _CharT* __l) { 60977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) 61077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 61177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) 61277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 61377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, __f, __l); 61477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 61577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 61677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 61777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 61877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 61977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) 62077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(iterator __first, iterator __last, 62177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_iterator __f, const_iterator __l) { 62277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 62377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 62477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 62577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, 62677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __f._M_iterator, __l._M_iterator); 62777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 62877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 62977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 63077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& replace(iterator __first, iterator __last, 63177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner iterator __f, iterator __l) { 63277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) 63377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) 63477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __old_capacity = capacity(); 63577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, 63677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner __f._M_iterator, __l._M_iterator); 63777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Compare_Capacity(__old_capacity); 63877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return *this; 63977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 64077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 64177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 64277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Other modifier member functions. 64377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void swap(_Self& __s) { 64477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_iter_list._Swap_owners(__s._M_iter_list); 64577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _M_non_dbg_impl.swap(__s._M_non_dbg_impl); 64677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 64777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 64877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _M_swap_workaround(_Self& __x) { swap(__x); } 64977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 65077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 65177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner int compare(const _Self& __s) const 65277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.compare(__s._M_non_dbg_impl); } 65377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner int compare(size_type __pos, size_type __n, const _Self& __s) const 65477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.compare(__pos, __n, __s._M_non_dbg_impl); } 65577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner int compare(size_type __pos1, size_type __n1, const _Self& __s, 65677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __pos2, size_type __n2) const 65777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.compare(__pos1, __n1, __s._M_non_dbg_impl, __pos2, __n2); } 65877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner int compare(const _CharT* __s) const { 65977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 66077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.compare(__s); 66177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 66277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner int compare(size_type __pos, size_type __n, const _CharT* __s) const { 66377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 66477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.compare(__pos, __n, __s); 66577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 66677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner int compare(size_type __pos1, size_type __n1, const _CharT* __s, 66777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type __n2) const { 66877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 66977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.compare(__pos1, __n1, __s, __n2); 67077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 67177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 67277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // Helper functions for compare. 67377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static int _STLP_CALL _M_compare(const _CharT* __f1, const _CharT* __l1, 67477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _CharT* __f2, const _CharT* __l2) 67577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _Base::_M_compare(__f1, __l1, __f2, __l2); } 67677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static int _STLP_CALL _M_compare(const_iterator __f1, const_iterator __l1, 67777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _CharT* __f2, const _CharT* __l2) 67877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _Base::_M_compare(__f1._M_iterator, __l1._M_iterator, __f2, __l2); } 67977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static int _STLP_CALL _M_compare(const _CharT* __f1, const _CharT* __l1, 68077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_iterator __f2, const_iterator __l2) 68177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _Base::_M_compare(__f1, __l1, __f2._M_iterator, __l2._M_iterator); } 68277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static int _STLP_CALL _M_compare(const_iterator __f1, const_iterator __l1, 68377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const_iterator __f2, const_iterator __l2) 68477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _Base::_M_compare(__f1._M_iterator, __l1._M_iterator, __f2._M_iterator, __l2._M_iterator); } 68577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 68677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _CharT* c_str() const { return _M_non_dbg_impl.c_str(); } 68777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const _CharT* data() const { return _M_non_dbg_impl.data(); } 68877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 68977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const 69077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.copy(__s, __n, __pos); } 69177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 69277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // find. 69377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find(const _Self& __s, size_type __pos = 0) const 69477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find(__s._M_non_dbg_impl, __pos); } 69577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find(const _CharT* __s, size_type __pos = 0) const { 69677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 69777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 69877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find(__s, __pos); 69977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 70077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find(const _CharT* __s, size_type __pos, size_type __n) const { 70177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 70277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 70377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find(__s, __pos, __n); 70477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 70577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // WIE: Versant schema compiler 5.2.2 ICE workaround 70677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find(_CharT __c) const { return find(__c, 0); } 70777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find(_CharT __c, size_type __pos /* = 0 */) const 70877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find(__c, __pos); } 70977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 71077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // rfind. 71177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type rfind(const _Self& __s, size_type __pos = npos) const 71277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.rfind(__s._M_non_dbg_impl, __pos); } 71377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type rfind(const _CharT* __s, size_type __pos = npos) const { 71477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 71577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 71677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.rfind(__s, __pos); 71777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 71877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const { 71977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 72077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 72177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.rfind(__s, __pos, __n); 72277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 72377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type rfind(_CharT __c, size_type __pos = npos) const 72477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.rfind(__c, __pos); } 72577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 72677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // find_first_of 72777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_first_of(const _Self& __s, size_type __pos = 0) const 72877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find_first_of(__s._M_non_dbg_impl, __pos); } 72977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_first_of(const _CharT* __s, size_type __pos = 0) const { 73077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 73177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 73277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find_first_of(__s, __pos); 73377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 73477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const { 73577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 73677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 73777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find_first_of(__s, __pos, __n); 73877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 73977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_first_of(_CharT __c, size_type __pos = 0) const 74077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find_first_of(__c, __pos); } 74177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 74277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // find_last_of 74377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_last_of(const _Self& __s, size_type __pos = npos) const 74477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find_last_of(__s._M_non_dbg_impl, __pos); } 74577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_last_of(const _CharT* __s, size_type __pos = npos) const { 74677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 74777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 74877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find_last_of(__s, __pos); 74977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 75077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const { 75177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 75277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 75377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find_last_of(__s, __pos, __n); 75477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 75577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_last_of(_CharT __c, size_type __pos = npos) const 75677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.rfind(__c, __pos); } 75777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 75877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // find_first_not_of 75977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_first_not_of(const _Self& __s, size_type __pos = 0) const 76077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find_first_not_of(__s._M_non_dbg_impl, __pos); } 76177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_first_not_of(const _CharT* __s, size_type __pos = 0) const { 76277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 76377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 76477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find_first_not_of(__s, __pos); 76577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 76677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const { 76777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 76877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 76977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find_first_not_of(__s, __pos, __n); 77077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 77177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_first_not_of(_CharT __c, size_type __pos = 0) const 77277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find_first_not_of(__c, __pos); } 77377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 77477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner // find_last_not_of 77577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_last_not_of(const _Self& __s, size_type __pos = npos) const 77677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find_last_not_of(__s._M_non_dbg_impl, __pos); } 77777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_last_not_of(const _CharT* __s, size_type __pos = npos) const { 77877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 77977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 78077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find_last_not_of(__s, __pos); 78177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 78277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const { 78377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_FIX_LITERAL_BUG(__s) 78477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) 78577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return _M_non_dbg_impl.find_last_not_of(__s, __pos, __n); 78677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 78777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner size_type find_last_not_of(_CharT __c, size_type __pos = npos) const 78877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return _M_non_dbg_impl.find_last_not_of(__c, __pos); } 78977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 79077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_TEMPLATE_EXPRESSION) 79177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/debug/_string_sum_methods.h> 79277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 79377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 79477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 79577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// This is a hook to instantiate STLport exports in a designated DLL 79677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) 79777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 79877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS __construct_checker<_STLP_NON_DBG_STRING_NAME <char, char_traits<char>, allocator<char> > >; 79977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 80077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_string<char, char_traits<char>, allocator<char> >; 80177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if defined (_STLP_HAS_WCHAR_T) 80277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_PRIV_NAMESPACE 80377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS __construct_checker<_STLP_NON_DBG_STRING_NAME <wchar_t, char_traits<wchar_t>, allocator<wchar_t> > >; 80477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 80577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 80677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 80777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 80877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 80977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#undef _STLP_NON_DBG_STRING 81077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#undef _STLP_NON_DBG_STRING_NAME 81177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 81277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96) 81377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _CharT, class _Traits, class _Alloc> 81477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerconst size_t basic_string<_CharT, _Traits, _Alloc>::npos = ~(size_t) 0; 81577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 81677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 81777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (basic_string) 81877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_MOVE_TO_STD_NAMESPACE 81977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#undef basic_string 82077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 82177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 82277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE 82377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 82477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_DBG_STRING */ 82577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 82677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Local Variables: 82777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// mode:C++ 82877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// End: 829