Lines Matching refs:_CharT
47 template <class _CharT>
48 inline _CharT _S_eos(_CharT*) { return _CharT(); } in _S_eos() argument
52 template <class _CharT>
53 inline bool _S_is_basic_char_type(_CharT*) { return false; } in _S_is_basic_char_type() argument
54 template <class _CharT>
55 inline bool _S_is_one_byte_char_type(_CharT*) { return false; } in _S_is_one_byte_char_type() argument
63 template <class _CharT>
64 inline void _S_cond_store_eos(_CharT&) {} in _S_cond_store_eos() argument
73 template <class _CharT>
78 _CharT* __buffer) = 0;
195 template<class _CharT>
204 virtual bool operator()(const _CharT* __buffer, size_t __len) = 0;
220 template<class _CharT, class _Alloc=__STL_DEFAULT_ALLOCATOR(_CharT)> class rope;
221 template<class _CharT, class _Alloc> struct _Rope_RopeConcatenation;
222 template<class _CharT, class _Alloc> struct _Rope_RopeLeaf;
223 template<class _CharT, class _Alloc> struct _Rope_RopeFunction;
224 template<class _CharT, class _Alloc> struct _Rope_RopeSubstring;
225 template<class _CharT, class _Alloc> class _Rope_iterator;
226 template<class _CharT, class _Alloc> class _Rope_const_iterator;
227 template<class _CharT, class _Alloc> class _Rope_char_ref_proxy;
228 template<class _CharT, class _Alloc> class _Rope_char_ptr_proxy;
253 __ROPE_DEFINE_ALLOC(_CharT,_Data) /* character data */ \
254 typedef _Rope_RopeConcatenation<_CharT,__a> __C; \
256 typedef _Rope_RopeLeaf<_CharT,__a> __L; \
258 typedef _Rope_RopeFunction<_CharT,__a> __F; \
260 typedef _Rope_RopeSubstring<_CharT,__a> __S; \
278 template <class _CharT, class _Allocator, bool _IsStatic>
281 typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
306 template <class _CharT, class _Allocator>
307 class _Rope_rep_alloc_base<_CharT,_Allocator,true> {
309 typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
331 template <class _CharT, class _Alloc>
333 : public _Rope_rep_alloc_base<_CharT,_Alloc,
334 _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
336 typedef _Rope_rep_alloc_base<_CharT,_Alloc,
337 _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
348 template <class _CharT, class _Alloc>
371 template<class _CharT, class _Alloc>
372 struct _Rope_RopeRep : public _Rope_rep_base<_CharT,_Alloc> {
379 __GC_CONST _CharT* _M_c_string;
386 typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
389 : _Rope_rep_base<_CharT,_Alloc>(__size, __a), in _Rope_RopeRep()
485 static void _S_free_string(__GC_CONST _CharT*, size_t __len,
489 static void _S_free_string(__GC_CONST _CharT*, size_t __len);
534 template<class _CharT, class _Alloc>
535 struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
545 if (_S_is_basic_char_type((_CharT*)0)) { in _S_rounded_up_size()
558 __GC_CONST _CharT* _M_data; /* Not necessarily 0 terminated. */
563 typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
564 _Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size, allocator_type __a) in _Rope_RopeLeaf()
565 : _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a), in _Rope_RopeLeaf()
569 if (_S_is_basic_char_type((_CharT *)0)) { in _Rope_RopeLeaf()
587 template<class _CharT, class _Alloc>
588 struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> {
590 _Rope_RopeRep<_CharT,_Alloc>* _M_left;
591 _Rope_RopeRep<_CharT,_Alloc>* _M_right;
592 typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
593 _Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l, in _Rope_RopeConcatenation()
594 _Rope_RopeRep<_CharT,_Alloc>* __r, in _Rope_RopeConcatenation()
596 : _Rope_RopeRep<_CharT,_Alloc>( in _Rope_RopeConcatenation()
610 template<class _CharT, class _Alloc>
611 struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> {
613 char_producer<_CharT>* _M_fn;
629 typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
630 _Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size, in _Rope_RopeFunction()
632 :_Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a), in _Rope_RopeFunction()
662 template<class _CharT, class _Alloc>
663 struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,
664 public char_producer<_CharT> {
667 _Rope_RopeRep<_CharT,_Alloc>* _M_base; // not 0
670 _CharT* __buffer) { in operator()
675 char_producer<_CharT>* __fn = in operator()
676 ((_Rope_RopeFunction<_CharT,_Alloc>*)_M_base)->_M_fn; in operator()
684 __GC_CONST _CharT* __s = in operator()
685 ((_Rope_RopeLeaf<_CharT,_Alloc>*)_M_base)->_M_data; in operator()
694 typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
695 _Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s, in _Rope_RopeSubstring()
697 : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a), _M_base(__b) in _Rope_RopeSubstring()
727 template<class _CharT, class _Alloc>
729 _Rope_RopeRep<_CharT,_Alloc>* _M_ptr;
731 { _Rope_RopeRep<_CharT,_Alloc>::_S_unref(_M_ptr); } in ~_Rope_self_destruct_ptr()
737 _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT,_Alloc>* __p) : _M_ptr(__p) {} in _Rope_self_destruct_ptr()
738 _Rope_RopeRep<_CharT,_Alloc>& operator*() { return *_M_ptr; }
739 _Rope_RopeRep<_CharT,_Alloc>* operator->() { return _M_ptr; }
740 operator _Rope_RopeRep<_CharT,_Alloc>*() { return _M_ptr; }
741 _Rope_self_destruct_ptr& operator= (_Rope_RopeRep<_CharT,_Alloc>* __x)
751 template<class _CharT, class _Alloc>
753 friend class rope<_CharT,_Alloc>;
754 friend class _Rope_iterator<_CharT,_Alloc>;
755 friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
757 typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
759 typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
761 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
762 typedef rope<_CharT,_Alloc> _My_rope;
764 _CharT _M_current;
777 _CharT __c) : in _Rope_char_ref_proxy()
779 inline operator _CharT () const;
780 _Rope_char_ref_proxy& operator= (_CharT __c);
781 _Rope_char_ptr_proxy<_CharT,_Alloc> operator& () const;
783 return operator=((_CharT)__c);
788 template<class _CharT, class __Alloc>
789 inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, in swap() argument
790 _Rope_char_ref_proxy <_CharT, __Alloc > __b) { in swap()
791 _CharT __tmp = __a; in swap()
802 # define _ROPE_SWAP_SPECIALIZATION(_CharT, __Alloc) \ argument
803 inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, \
804 _Rope_char_ref_proxy <_CharT, __Alloc > __b) { \
805 _CharT __tmp = __a; \
814 template<class _CharT, class _Alloc> in _ROPE_SWAP_SPECIALIZATION()
817 friend class _Rope_char_ref_proxy<_CharT,_Alloc>; in _ROPE_SWAP_SPECIALIZATION()
819 rope<_CharT,_Alloc>* _M_root; // The whole rope. in _ROPE_SWAP_SPECIALIZATION()
821 _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x) in _ROPE_SWAP_SPECIALIZATION()
826 _Rope_char_ptr_proxy(_CharT* __x) : _M_root(0), _M_pos(0) { in _ROPE_SWAP_SPECIALIZATION()
836 (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x, in _ROPE_SWAP_SPECIALIZATION()
837 const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y); in _ROPE_SWAP_SPECIALIZATION()
839 _Rope_char_ref_proxy<_CharT,_Alloc> operator*() const { in _ROPE_SWAP_SPECIALIZATION()
840 return _Rope_char_ref_proxy<_CharT,_Alloc>(_M_root, _M_pos); in _ROPE_SWAP_SPECIALIZATION()
858 template<class _CharT, class _Alloc>
860 : public random_access_iterator<_CharT, ptrdiff_t> {
861 friend class rope<_CharT,_Alloc>;
863 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
871 __GC_CONST _CharT* _M_buf_start;
874 __GC_CONST _CharT* _M_buf_ptr;
877 __GC_CONST _CharT* _M_buf_end;
892 _CharT _M_tmp_buf[_S_iterator_buf_len];
927 template<class _CharT, class _Alloc> class _Rope_iterator;
929 template<class _CharT, class _Alloc>
930 class _Rope_const_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
931 friend class rope<_CharT,_Alloc>;
934 _Rope_iterator_base<_CharT,_Alloc>( in _Rope_const_iterator()
939 typedef _CharT reference; // Really a value. Returning a reference
942 typedef const _CharT* pointer;
947 _Rope_iterator_base<_CharT,_Alloc>(__x) { } in _Rope_const_iterator()
948 _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x);
949 _Rope_const_iterator(const rope<_CharT,_Alloc>& __r, size_t __pos) : in _Rope_const_iterator() argument
950 _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos) {} in _Rope_const_iterator()
953 *(static_cast<_Rope_iterator_base<_CharT,_Alloc>*>(this)) = __x;
966 __GC_CONST _CharT* __next;
998 return _Rope_const_iterator<_CharT,_Alloc>(_M_root, __old_pos);
1006 return _Rope_const_iterator<_CharT,_Alloc>(_M_root, __old_pos);
1008 friend _Rope_const_iterator<_CharT,_Alloc> operator- __STL_NULL_TMPL_ARGS
1009 (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1011 friend _Rope_const_iterator<_CharT,_Alloc> operator+ __STL_NULL_TMPL_ARGS
1012 (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1014 friend _Rope_const_iterator<_CharT,_Alloc> operator+ __STL_NULL_TMPL_ARGS
1016 const _Rope_const_iterator<_CharT,_Alloc>& __x);
1018 return rope<_CharT,_Alloc>::_S_fetch(_M_root, _M_current_pos + __n);
1021 (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1022 const _Rope_const_iterator<_CharT,_Alloc>& __y);
1024 (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1025 const _Rope_const_iterator<_CharT,_Alloc>& __y);
1027 (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1028 const _Rope_const_iterator<_CharT,_Alloc>& __y);
1031 template<class _CharT, class _Alloc>
1032 class _Rope_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
1033 friend class rope<_CharT,_Alloc>;
1035 rope<_CharT,_Alloc>* _M_root_rope;
1043 _Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos) in _Rope_iterator() argument
1044 : _Rope_iterator_base<_CharT,_Alloc>(__r->_M_tree_ptr, __pos), in _Rope_iterator()
1050 typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
1051 typedef _Rope_char_ref_proxy<_CharT,_Alloc>* pointer;
1054 rope<_CharT,_Alloc>& container() { return *_M_root_rope; } in container()
1059 _Rope_iterator_base<_CharT,_Alloc>(__x) { in _Rope_iterator()
1063 _Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos);
1073 *(static_cast<_Rope_iterator_base<_CharT,_Alloc>*>(this)) = __x;
1086 return _Rope_char_ref_proxy<_CharT,_Alloc>(
1089 return _Rope_char_ref_proxy<_CharT,_Alloc>(
1120 return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
1125 return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
1128 return _Rope_char_ref_proxy<_CharT,_Alloc>(
1132 (const _Rope_iterator<_CharT,_Alloc>& __x,
1133 const _Rope_iterator<_CharT,_Alloc>& __y);
1135 (const _Rope_iterator<_CharT,_Alloc>& __x,
1136 const _Rope_iterator<_CharT,_Alloc>& __y);
1138 (const _Rope_iterator<_CharT,_Alloc>& __x,
1139 const _Rope_iterator<_CharT,_Alloc>& __y);
1140 friend _Rope_iterator<_CharT,_Alloc> operator- __STL_NULL_TMPL_ARGS
1141 (const _Rope_iterator<_CharT,_Alloc>& __x,
1143 friend _Rope_iterator<_CharT,_Alloc> operator+ __STL_NULL_TMPL_ARGS
1144 (const _Rope_iterator<_CharT,_Alloc>& __x,
1146 friend _Rope_iterator<_CharT,_Alloc> operator+ __STL_NULL_TMPL_ARGS
1148 const _Rope_iterator<_CharT,_Alloc>& __x);
1163 template <class _CharT, class _Allocator, bool _IsStatic>
1166 typedef _Rope_RopeRep<_CharT,_Allocator> _RopeRep;
1167 typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
1193 template <class _CharT, class _Allocator>
1194 class _Rope_alloc_base<_CharT,_Allocator,true> {
1196 typedef _Rope_RopeRep<_CharT,_Allocator> _RopeRep;
1197 typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
1221 template <class _CharT, class _Alloc>
1223 : public _Rope_alloc_base<_CharT,_Alloc,
1224 _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
1226 typedef _Rope_alloc_base<_CharT,_Alloc,
1227 _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
1236 template <class _CharT, class _Alloc>
1239 typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
1262 template <class _CharT, class _Alloc>
1263 class rope : public _Rope_base<_CharT,_Alloc> {
1265 typedef _CharT value_type;
1268 typedef _CharT const_reference;
1269 typedef const _CharT* const_pointer;
1270 typedef _Rope_iterator<_CharT,_Alloc> iterator;
1271 typedef _Rope_const_iterator<_CharT,_Alloc> const_iterator;
1272 typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
1273 typedef _Rope_char_ptr_proxy<_CharT,_Alloc> pointer;
1275 friend class _Rope_iterator<_CharT,_Alloc>;
1276 friend class _Rope_const_iterator<_CharT,_Alloc>;
1277 friend struct _Rope_RopeRep<_CharT,_Alloc>;
1278 friend class _Rope_iterator_base<_CharT,_Alloc>;
1279 friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
1280 friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
1281 friend struct _Rope_RopeSubstring<_CharT,_Alloc>;
1284 typedef _Rope_base<_CharT,_Alloc> _Base;
1289 typedef __GC_CONST _CharT* _Cstrptr;
1325 static _CharT _S_empty_c_str[1];
1327 static bool _S_is0(_CharT __c) { return __c == _S_eos((_CharT*)0); }
1332 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1333 typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcatenation;
1334 typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf;
1335 typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction;
1336 typedef _Rope_RopeSubstring<_CharT,_Alloc> _RopeSubstring;
1339 static _CharT _S_fetch(_RopeRep* __r, size_type __pos);
1348 static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos);
1353 _Rope_char_consumer<_CharT>& __c,
1374 typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
1376 typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
1384 const _CharT* __iter, size_t __slen);
1389 const _CharT* __iter, size_t __slen)
1406 _Rope_char_consumer<_CharT>& __c) const {
1418 if (_S_is_basic_char_type((_CharT*)0)) {
1427 static _RopeLeaf* _S_new_RopeLeaf(__GC_CONST _CharT *__s,
1450 static _RopeFunction* _S_new_RopeFunction(char_producer<_CharT>* __f,
1462 _Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
1475 _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s,
1481 _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr2(const _CharT* __s,
1489 _CharT* __buf = __a.allocate(_S_rounded_up_size(__size));
1491 _CharT* __buf = _Data_allocate(_S_rounded_up_size(__size));
1516 const _CharT* __iter, size_t __slen);
1522 (_RopeLeaf* __r, const _CharT* __iter, size_t __slen);
1530 : public binary_function<rope<_CharT,_Alloc>,
1531 rope<_CharT,_Alloc>,
1532 rope<_CharT,_Alloc> > {
1541 { return rope<_CharT,_Alloc>(); }
1543 static size_t _S_char_ptr_len(const _CharT* __s);
1553 static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer);
1557 static _CharT* _S_flatten(_RopeRep* __r,
1559 _CharT* __buffer);
1614 rope(const _CharT* __s, const allocator_type& __a = allocator_type())
1619 rope(const _CharT* __s, size_t __len,
1627 rope(const _CharT *__s, const _CharT *__e,
1644 rope(_CharT __c, const allocator_type& __a = allocator_type())
1647 _CharT* __buf = _Data_allocate(_S_rounded_up_size(1));
1656 rope(size_t __n, _CharT __c,
1663 rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn,
1694 void push_back(_CharT __x)
1709 _CharT back() const
1714 void push_front(_CharT __x)
1734 _CharT front() const
1746 void copy(_CharT* __buffer) const {
1756 size_type copy(size_type __pos, size_type __n, _CharT* __buffer) const
1774 const _CharT* c_str() const;
1778 const _CharT* replace_with_c_str();
1797 _CharT operator[] (size_type __pos) const {
1801 _CharT at(size_type __pos) const {
1861 friend rope<_CharT,_Alloc>
1862 operator+ __STL_NULL_TMPL_ARGS (const rope<_CharT,_Alloc>& __left,
1863 const rope<_CharT,_Alloc>& __right);
1865 friend rope<_CharT,_Alloc>
1866 operator+ __STL_NULL_TMPL_ARGS (const rope<_CharT,_Alloc>& __left,
1867 const _CharT* __right);
1869 friend rope<_CharT,_Alloc>
1870 operator+ __STL_NULL_TMPL_ARGS (const rope<_CharT,_Alloc>& __left,
1871 _CharT __right);
1879 rope& append(const _CharT* __iter, size_t __n) {
1887 rope& append(const _CharT* __c_string) {
1893 rope& append(const _CharT* __s, const _CharT* __e) {
1915 rope& append(_CharT __c) {
1923 rope& append() { return append(_CharT()); } // XXX why?
1935 rope& append(size_t __n, _CharT __c) {
1936 rope<_CharT,_Alloc> __last(__n, __c);
1984 void insert(size_t __p, size_t __n, _CharT __c) {
1985 rope<_CharT,_Alloc> __r(__n,__c);
1989 void insert(size_t __p, const _CharT* __i, size_t __n) {
1999 void insert(size_t __p, const _CharT* __c_string) {
2003 void insert(size_t __p, _CharT __c) {
2008 _CharT __c = _CharT();
2012 void insert(size_t __p, const _CharT* __i, const _CharT* __j) {
2039 const _CharT* __i, size_t __i_len) {
2044 void replace(size_t __p, size_t __n, _CharT __c) {
2049 void replace(size_t __p, size_t __n, const _CharT* __c_string) {
2055 const _CharT* __i, const _CharT* __j) {
2073 void replace(size_t __p, _CharT __c) {
2082 void replace(size_t __p, const _CharT* __i, size_t __i_len) {
2086 void replace(size_t __p, const _CharT* __c_string) {
2090 void replace(size_t __p, const _CharT* __i, const _CharT* __j) {
2119 iterator insert(const iterator& __p, size_t __n, _CharT __c)
2121 iterator insert(const iterator& __p, _CharT __c)
2125 iterator insert(const iterator& __p, const _CharT* c_string)
2127 iterator insert(const iterator& __p, const _CharT* __i, size_t __n)
2129 iterator insert(const iterator& __p, const _CharT* __i,
2130 const _CharT* __j)
2143 void replace(const iterator& __p, const iterator& __q, _CharT __c)
2146 const _CharT* __c_string)
2149 const _CharT* __i, size_t __n)
2152 const _CharT* __i, const _CharT* __j)
2164 void replace(const iterator& __p, _CharT __c)
2166 void replace(const iterator& __p, const _CharT* __c_string)
2168 void replace(const iterator& __p, const _CharT* __i, size_t __n)
2170 void replace(const iterator& __p, const _CharT* __i, const _CharT* __j)
2191 return rope<_CharT,_Alloc>(
2196 return rope<_CharT,_Alloc>(
2202 return rope<_CharT,_Alloc>(
2209 return rope<_CharT,_Alloc>(
2213 rope<_CharT,_Alloc> substr(const_iterator __start) {
2215 return rope<_CharT,_Alloc>(
2221 size_type find(_CharT __c, size_type __pos = 0) const;
2222 size_type find(_CharT* __s, size_type __pos = 0) const {
2270 void resize(size_type __n, _CharT __c) {}
2280 size_type copy(_CharT* __buffer, size_type __n,
2307 template <class _CharT, class _Alloc>
2308 const rope<_CharT, _Alloc>::size_type rope<_CharT, _Alloc>::npos =
2311 template <class _CharT, class _Alloc>
2312 inline bool operator== (const _Rope_const_iterator<_CharT,_Alloc>& __x,
2313 const _Rope_const_iterator<_CharT,_Alloc>& __y) {
2318 template <class _CharT, class _Alloc>
2319 inline bool operator< (const _Rope_const_iterator<_CharT,_Alloc>& __x,
2320 const _Rope_const_iterator<_CharT,_Alloc>& __y) {
2324 template <class _CharT, class _Alloc>
2325 inline ptrdiff_t operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x,
2326 const _Rope_const_iterator<_CharT,_Alloc>& __y) {
2330 template <class _CharT, class _Alloc>
2331 inline _Rope_const_iterator<_CharT,_Alloc>
2332 operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
2333 return _Rope_const_iterator<_CharT,_Alloc>(
2337 template <class _CharT, class _Alloc>
2338 inline _Rope_const_iterator<_CharT,_Alloc>
2339 operator+(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
2340 return _Rope_const_iterator<_CharT,_Alloc>(
2344 template <class _CharT, class _Alloc>
2345 inline _Rope_const_iterator<_CharT,_Alloc>
2346 operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT,_Alloc>& __x) {
2347 return _Rope_const_iterator<_CharT,_Alloc>(
2351 template <class _CharT, class _Alloc>
2352 inline bool operator== (const _Rope_iterator<_CharT,_Alloc>& __x,
2353 const _Rope_iterator<_CharT,_Alloc>& __y) {
2358 template <class _CharT, class _Alloc>
2359 inline bool operator< (const _Rope_iterator<_CharT,_Alloc>& __x,
2360 const _Rope_iterator<_CharT,_Alloc>& __y) {
2364 template <class _CharT, class _Alloc>
2365 inline ptrdiff_t operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
2366 const _Rope_iterator<_CharT,_Alloc>& __y) {
2370 template <class _CharT, class _Alloc>
2371 inline _Rope_iterator<_CharT,_Alloc>
2372 operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
2374 return _Rope_iterator<_CharT,_Alloc>(
2378 template <class _CharT, class _Alloc>
2379 inline _Rope_iterator<_CharT,_Alloc>
2380 operator+(const _Rope_iterator<_CharT,_Alloc>& __x,
2382 return _Rope_iterator<_CharT,_Alloc>(
2386 template <class _CharT, class _Alloc>
2387 inline _Rope_iterator<_CharT,_Alloc>
2388 operator+(ptrdiff_t __n, const _Rope_iterator<_CharT,_Alloc>& __x) {
2389 return _Rope_iterator<_CharT,_Alloc>(
2393 template <class _CharT, class _Alloc>
2395 rope<_CharT,_Alloc>
2396 operator+ (const rope<_CharT,_Alloc>& __left,
2397 const rope<_CharT,_Alloc>& __right)
2402 return rope<_CharT,_Alloc>(
2403 rope<_CharT,_Alloc>::_S_concat(__left._M_tree_ptr, __right._M_tree_ptr));
2408 template <class _CharT, class _Alloc>
2410 rope<_CharT,_Alloc>&
2411 operator+= (rope<_CharT,_Alloc>& __left,
2412 const rope<_CharT,_Alloc>& __right)
2418 template <class _CharT, class _Alloc>
2420 rope<_CharT,_Alloc>
2421 operator+ (const rope<_CharT,_Alloc>& __left,
2422 const _CharT* __right) {
2423 size_t __rlen = rope<_CharT,_Alloc>::_S_char_ptr_len(__right);
2424 return rope<_CharT,_Alloc>(
2425 rope<_CharT,_Alloc>::_S_concat_char_iter(
2429 template <class _CharT, class _Alloc>
2431 rope<_CharT,_Alloc>&
2432 operator+= (rope<_CharT,_Alloc>& __left,
2433 const _CharT* __right) {
2438 template <class _CharT, class _Alloc>
2440 rope<_CharT,_Alloc>
2441 operator+ (const rope<_CharT,_Alloc>& __left, _CharT __right) {
2442 return rope<_CharT,_Alloc>(
2443 rope<_CharT,_Alloc>::_S_concat_char_iter(
2447 template <class _CharT, class _Alloc>
2449 rope<_CharT,_Alloc>&
2450 operator+= (rope<_CharT,_Alloc>& __left, _CharT __right) {
2455 template <class _CharT, class _Alloc>
2457 operator< (const rope<_CharT,_Alloc>& __left,
2458 const rope<_CharT,_Alloc>& __right) {
2462 template <class _CharT, class _Alloc>
2464 operator== (const rope<_CharT,_Alloc>& __left,
2465 const rope<_CharT,_Alloc>& __right) {
2469 template <class _CharT, class _Alloc>
2470 inline bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
2471 const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
2475 template<class _CharT, class _Alloc>
2476 ostream& operator<< (ostream& __o, const rope<_CharT,_Alloc>& __r);
2493 template <class _CharT, class _Alloc>
2494 inline void swap(rope<_CharT,_Alloc>& __x, rope<_CharT,_Alloc>& __y) {