_string.h
来自「symbian 上的stl_port进过编译的。」· C头文件 代码 · 共 867 行 · 第 1/3 页
H
867 行
_Compare_Capacity(__old_capacity); return *this; } _Self& append(const _CharT* __s) { _STLP_FIX_LITERAL_BUG(__s) _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) size_type __old_capacity = capacity(); _M_non_dbg_impl.append(__s); _Compare_Capacity(__old_capacity); return *this; } _Self& append(size_type __n, _CharT __c) { size_type __old_capacity = this->capacity(); _M_non_dbg_impl.append(__n, __c); _Compare_Capacity(__old_capacity); return *this; } void push_back(_CharT __c) { size_type __old_capacity = this->capacity(); _M_non_dbg_impl.push_back(__c); _Compare_Capacity(__old_capacity); } void pop_back() { _Invalidate_iterator(this->end()); _M_non_dbg_impl.pop_back(); } // Assignprivate: void _M_check_assign(size_type __n) { if (__n > capacity()) { _Invalidate_all(); } else if (__n < size()) { _Invalidate_iterators(begin() + __n, end()); } }public: _Self& assign(const _Self& __s) { _M_check_assign(__s.size()); _M_non_dbg_impl.assign(__s._M_non_dbg_impl); return *this; } _Self& assign(const _Self& __s, size_type __pos, size_type __n) { if (__pos < __s.size()) { _M_check_assign((min) (__n, __s.size() - __pos)); } _M_non_dbg_impl.assign(__s._M_non_dbg_impl, __pos, __n); return *this; } _Self& assign(const _CharT* __s, size_type __n) { _STLP_FIX_LITERAL_BUG(__s) _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) _M_check_assign((min) (_Traits::length(__s), __n)); _M_non_dbg_impl.assign(__s, __s + __n); return *this; } _Self& assign(const _CharT* __s) { _STLP_FIX_LITERAL_BUG(__s) _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) _M_check_assign(_Traits::length(__s)); _M_non_dbg_impl.assign(__s); return *this; } _Self& assign(size_type __n, _CharT __c) { _M_check_assign(__n); _M_non_dbg_impl.assign(__n, __c); return *this; }#if defined(_STLP_MEMBER_TEMPLATES)private: template <class _Integer> void _M_assign_dispatch(_Integer __n, _Integer __x, const __true_type& /*_Integral*/) { _M_check_assign(__n); _M_non_dbg_impl.assign((size_type)__n, (_CharT)__x); } template <class _InputIter> void _M_assign_dispatch(_InputIter __f, _InputIter __l, const __false_type& /*_Integral*/) { _M_check_assign(distance(__f, __l)); _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)); }public: template <class _InputIter> inline _Self& assign(_InputIter __first, _InputIter __last) { _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) typedef typename _IsIntegral<_InputIter>::_Ret _Integral; _M_assign_dispatch(__first, __last, _Integral()); return *this; }#endif#if !defined (_STLP_MEMBER_TEMPLATES) || \ !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) _Self& assign(const _CharT* __f, const _CharT* __l) { _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) _M_check_assign(distance(__f, __l)); _M_non_dbg_impl.assign(__f, __l); return *this; } _Self& assign(const_iterator __f, const_iterator __l) { _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) _M_check_assign(distance(__f, __l)); _M_non_dbg_impl.assign(__f._M_iterator, __l._M_iterator); return *this; }#endif // Insert _Self& insert(size_type __pos, const _Self& __s) { size_type __old_capacity = capacity(); _M_non_dbg_impl.insert(__pos, __s._M_non_dbg_impl); _Compare_Capacity(__old_capacity); return *this; } _Self& insert(size_type __pos, const _Self& __s, size_type __beg, size_type __n) { size_type __old_capacity = capacity(); _M_non_dbg_impl.insert(__pos, __s._M_non_dbg_impl, __beg, __n); _Compare_Capacity(__old_capacity); return *this; } _Self& insert(size_type __pos, const _CharT* __s, size_type __n) { _STLP_FIX_LITERAL_BUG(__s) _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) size_type __old_capacity = capacity(); _M_non_dbg_impl.insert(__pos, __s, __n); _Compare_Capacity(__old_capacity); return *this; } _Self& insert(size_type __pos, const _CharT* __s) { _STLP_FIX_LITERAL_BUG(__s) _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) return insert(__pos, __s, _Traits::length(__s)); } _Self& insert(size_type __pos, size_type __n, _CharT __c) { size_type __old_capacity = capacity(); _M_non_dbg_impl.insert(__pos, __n, __c); _Compare_Capacity(__old_capacity); return *this; } iterator insert(iterator __p, _CharT __c) { _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) size_type __old_capacity = capacity(); typename _Base::iterator __ret = _M_non_dbg_impl.insert(__p._M_iterator, __c); _Compare_Capacity(__old_capacity); return iterator(&_M_iter_list, __ret); } void insert(iterator __p, size_t __n, _CharT __c) { _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) size_type __old_capacity = capacity(); _M_non_dbg_impl.insert(__p._M_iterator, __n, __c); _Compare_Capacity(__old_capacity); }#if defined (_STLP_MEMBER_TEMPLATES)private: template <class _RandomIter> void _M_insert_aux (iterator __p, _RandomIter __first, _RandomIter __last, const __true_type& /*_IsIterator*/) { _M_non_dbg_impl.insert(__p._M_iterator, __first._M_iterator, __last._M_iterator); } template<class _InputIter> void _M_insert_aux (iterator __p, _InputIter __first, _InputIter __last, const __false_type& /*_IsIterator*/) { _M_non_dbg_impl.insert(__p._M_iterator, _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); }public: template <class _InputIter> void insert(iterator __p, _InputIter __first, _InputIter __last) { _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last)) /* In debug mode we are encapsulating non debug string iterators in debug one. * Doing so the non debug implementation will not check for self insertion * (x.insert(x.begin(), x.begin(), x.end()). To avoid this problem we try to * guess when _InputIter is iterator or const_iterator and in this case call * the non debug insert method with non debug string iterator. */ typedef typename _AreSameUnCVTypes<_InputIter, iterator>::_Ret _IsNonConstIterator; typedef typename _AreSameUnCVTypes<_InputIter, const_iterator>::_Ret _IsConstIterator; typedef typename _Lor2<_IsNonConstIterator, _IsConstIterator>::_Ret _IsIterator; size_type __old_capacity = this->capacity(); _M_insert_aux(__p, __first, __last, _IsIterator()); _Compare_Capacity(__old_capacity); }#endif#if !defined (_STLP_MEMBER_TEMPLATES) || \ !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) void insert(iterator __p, const_iterator __f, const_iterator __l) { _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f,__l)) size_type __old_capacity = capacity(); _M_non_dbg_impl.insert(__p._M_iterator, __f._M_iterator, __l._M_iterator); _Compare_Capacity(__old_capacity); } void insert(iterator __p, const _CharT* __f, const _CharT* __l) { _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f,__l)) size_type __old_capacity = capacity(); _M_non_dbg_impl.insert(__p._M_iterator, __f, __l); _Compare_Capacity(__old_capacity); }#endif // Erase. _Self& erase(size_type __pos = 0, size_type __n = npos) { if (__pos < size()) { _Invalidate_iterators(begin() + __pos, end()); } _M_non_dbg_impl.erase(__pos, __n); return *this; } iterator erase(iterator __pos) { _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) _Invalidate_iterators(__pos, end()); return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); } iterator erase(iterator __f, iterator __l) { _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) _Invalidate_iterators(__f, end()); return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__f._M_iterator, __l._M_iterator)); } // Substring. _Self substr(size_type __pos = 0, size_type __n = npos) const { return _M_non_dbg_impl.substr(__pos, __n); } // Replace. (Conceptually equivalent to erase followed by insert.) _Self& replace(size_type __pos, size_type __n, const _Self& __s) { size_type __old_capacity = capacity(); _M_non_dbg_impl.replace(__pos, __n, __s._M_non_dbg_impl); _Compare_Capacity(__old_capacity); return *this; } _Self& replace(size_type __pos1, size_type __n1, const _Self& __s, size_type __pos2, size_type __n2) { size_type __old_capacity = capacity(); _M_non_dbg_impl.replace(__pos1, __n1, __s._M_non_dbg_impl, __pos2, __n2); _Compare_Capacity(__old_capacity); return *this; } _Self& replace(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) { _STLP_FIX_LITERAL_BUG(__s) _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) size_type __old_capacity = capacity(); _M_non_dbg_impl.replace(__pos, __n1, __s, __n2); _Compare_Capacity(__old_capacity); return *this; } _Self& replace(size_type __pos, size_type __n1, const _CharT* __s) { _STLP_FIX_LITERAL_BUG(__s) _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) size_type __old_capacity = capacity(); _M_non_dbg_impl.replace(__pos, __n1, __s); _Compare_Capacity(__old_capacity); return *this; } _Self& replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) { size_type __old_capacity = capacity(); _M_non_dbg_impl.replace(__pos, __n1, __n2, __c);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?