Lines Matching defs:_CharT

27 // rope<_CharT,_Alloc> is a sequence of _CharT.
91 template<class _CharT, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_CharT>) > class rope;
92 template<class _CharT, class _Alloc> struct _Rope_RopeConcatenation;
93 template<class _CharT, class _Alloc> struct _Rope_RopeRep;
94 template<class _CharT, class _Alloc> struct _Rope_RopeLeaf;
95 template<class _CharT, class _Alloc> struct _Rope_RopeFunction;
96 template<class _CharT, class _Alloc> struct _Rope_RopeSubstring;
97 template<class _CharT, class _Alloc> class _Rope_iterator;
98 template<class _CharT, class _Alloc> class _Rope_const_iterator;
99 template<class _CharT, class _Alloc> class _Rope_char_ref_proxy;
100 template<class _CharT, class _Alloc> class _Rope_char_ptr_proxy;
104 template <class _CharT>
120 template<class _CharT, class _Alloc>
122 : public binary_function<rope<_CharT,_Alloc>, rope<_CharT,_Alloc>,
123 rope<_CharT,_Alloc> > {
124 rope<_CharT,_Alloc> operator() (const rope<_CharT,_Alloc>& __x,
125 const rope<_CharT,_Alloc>& __y) {
130 template <class _CharT, class _Alloc>
132 rope<_CharT,_Alloc>
133 __identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
134 { return rope<_CharT,_Alloc>(); }
139 template <class _CharT>
140 inline void _S_construct_null_aux(_CharT *__p, const __true_type&)
143 template <class _CharT>
144 inline void _S_construct_null_aux(_CharT *__p, const __false_type&)
147 template <class _CharT>
148 inline void _S_construct_null(_CharT *__p) {
149 typedef typename _IsIntegral<_CharT>::_Ret _Char_Is_Integral;
157 template <class _CharT>
162 _CharT* __buffer) = 0;
289 template<class _CharT>
296 virtual bool operator()(const _CharT* __buffer, size_t __len) = 0;
326 template<class _CharT, class _Alloc>
330 typedef _Rope_RopeRep<_CharT, _Alloc> _Self;
355 _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
361 _CharT* _STLP_VOLATILE _M_c_string;
362 _STLP_PRIV _STLP_alloc_proxy<size_t, _CharT, allocator_type> _M_size;
387 typedef _STLP_TYPENAME _STLP_PRIV _BasicCharType<_CharT>::_Ret _IsBasicCharType;
411 static void _S_free_string( _CharT* __s, size_t __len,
418 __stl_alloc_rebind (__a, (_CharT*)0).deallocate(__s, _S_rounded_up_size(__len));
450 template<class _CharT, class _Alloc>
451 struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
453 _CharT* _M_data; /* Not necessarily 0 terminated. */
459 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
467 _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
470 _Rope_RopeLeaf( _CharT* __d, size_t _p_size, allocator_type __a)
471 : _Rope_RopeRep<_CharT,_Alloc>(_RopeRep::_S_leaf, 0, true, _p_size, __a),
479 _Rope_RopeLeaf(const _Rope_RopeLeaf<_CharT, _Alloc>& ) {}
493 template<class _CharT, class _Alloc>
494 struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT, _Alloc> {
496 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
501 _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
504 : _Rope_RopeRep<_CharT,_Alloc>(_RopeRep::_S_concat,
510 _Rope_RopeConcatenation(const _Rope_RopeConcatenation<_CharT, _Alloc>&) {}
520 template <class _CharT, class _Alloc>
521 struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT, _Alloc> {
523 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
525 char_producer<_CharT>* _M_fn;
533 _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
534 typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
537 _Rope_RopeFunction(const _Rope_RopeFunction<_CharT, _Alloc>& ) {}
540 _Rope_RopeFunction(char_producer<_CharT>* __f, size_t _p_size,
542 : _Rope_RopeRep<_CharT,_Alloc>(_RopeRep::_S_function, 0, true, _p_size, __a), _M_fn(__f)
563 template<class _CharT, class _Alloc>
564 struct _Rope_RopeSubstring : public char_producer<_CharT>, public _Rope_RopeFunction<_CharT,_Alloc> {
567 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
571 _CharT* __buffer) {
572 typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction;
573 typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf;
578 char_producer<_CharT>* __fn =
587 _CharT* __s =
598 _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
602 : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a),
624 template<class _CharT, class _Alloc>
626 _Rope_RopeRep<_CharT,_Alloc>* _M_ptr;
628 { _Rope_RopeRep<_CharT,_Alloc>::_S_unref(_M_ptr); }
634 _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT,_Alloc>* __p) : _M_ptr(__p) {}
635 _Rope_RopeRep<_CharT,_Alloc>& operator*() { return *_M_ptr; }
636 _Rope_RopeRep<_CharT,_Alloc>* operator->() { return _M_ptr; }
637 operator _Rope_RopeRep<_CharT,_Alloc>*() { return _M_ptr; }
638 _Rope_self_destruct_ptr<_CharT, _Alloc>&
639 operator= (_Rope_RopeRep<_CharT,_Alloc>* __x)
650 template<class _CharT, class _Alloc>
652 typedef _Rope_char_ref_proxy<_CharT, _Alloc> _Self;
653 friend class rope<_CharT,_Alloc>;
654 friend class _Rope_iterator<_CharT,_Alloc>;
655 friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
656 typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
657 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
658 typedef rope<_CharT,_Alloc> _My_rope;
660 _CharT _M_current;
672 _Rope_char_ref_proxy(_My_rope* __r, size_t __p, _CharT __c)
674 inline operator _CharT () const;
675 _Self& operator= (_CharT __c);
676 _Rope_char_ptr_proxy<_CharT, _Alloc> operator& () const;
678 return operator=((_CharT)__c);
683 template<class _CharT, class __Alloc>
684 inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a,
685 _Rope_char_ref_proxy <_CharT, __Alloc > __b) {
686 _CharT __tmp = __a;
697 # define _ROPE_SWAP_SPECIALIZATION(_CharT, __Alloc) \
698 inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, \
699 _Rope_char_ref_proxy <_CharT, __Alloc > __b) { \
700 _CharT __tmp = __a; \
713 template<class _CharT, class _Alloc>
717 typedef _Rope_char_ptr_proxy<_CharT, _Alloc> _Self;
718 friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
720 rope<_CharT,_Alloc>* _M_root; // The whole rope.
722 _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x)
727 _Rope_char_ptr_proxy(_CharT* __x) : _M_pos(0), _M_root(0) {
736 _Rope_char_ref_proxy<_CharT,_Alloc> operator*() const {
737 return _Rope_char_ref_proxy<_CharT,_Alloc>(_M_root, _M_pos);
752 template<class _CharT, class _Alloc>
754 /* : public random_access_iterator<_CharT, ptrdiff_t> */
756 friend class rope<_CharT,_Alloc>;
757 typedef _Rope_iterator_base<_CharT, _Alloc> _Self;
758 typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcat;
760 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
770 _CharT* _M_buf_start;
772 _CharT* _M_buf_ptr;
774 _CharT* _M_buf_end;
805 _CharT _M_data[15];
807 _CharT _M_data[_S_iterator_buf_len];
812 static void _S_setbuf(_Rope_iterator_base<_CharT, _Alloc>& __x);
814 static void _S_setcache(_Rope_iterator_base<_CharT, _Alloc>& __x);
816 static void _S_setcache_for_incr(_Rope_iterator_base<_CharT, _Alloc>& __x);
868 template<class _CharT, class _Alloc> class _Rope_iterator;
870 template<class _CharT, class _Alloc>
871 class _Rope_const_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
872 friend class rope<_CharT,_Alloc>;
873 typedef _Rope_const_iterator<_CharT, _Alloc> _Self;
874 typedef _Rope_iterator_base<_CharT,_Alloc> _Base;
878 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
882 _Rope_iterator_base<_CharT,_Alloc>(__CONST_CAST(_RopeRep*,__root), __pos)
886 typedef _CharT reference; // Really a value. Returning a reference
889 typedef const _CharT* pointer;
890 typedef _CharT value_type;
897 _Rope_iterator_base<_CharT,_Alloc>(__x) { }
898 _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x):
899 _Rope_iterator_base<_CharT,_Alloc>(__x) {}
900 _Rope_const_iterator(const rope<_CharT,_Alloc>& __r, size_t __pos) :
901 _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr._M_data, __pos) {}
911 { _Rope_iterator_base<_CharT, _Alloc>* __x = this; _S_setcache(*__x); }
918 _CharT *__next = this->_M_buf_ptr + 1;
951 return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
959 return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
964 template<class _CharT, class _Alloc>
965 class _Rope_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
966 friend class rope<_CharT,_Alloc>;
967 typedef _Rope_iterator<_CharT, _Alloc> _Self;
968 typedef _Rope_iterator_base<_CharT,_Alloc> _Base;
969 typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
972 rope<_CharT,_Alloc>* _M_root_rope;
980 _Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos);
984 typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
985 typedef _Rope_char_ref_proxy<_CharT,_Alloc>* pointer;
986 typedef _CharT value_type;
994 rope<_CharT,_Alloc>& container() { return *_M_root_rope; }
999 _Rope_iterator_base<_CharT,_Alloc>(__x) {
1003 _Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos);
1060 template <class _CharT, class _Alloc>
1062 iterator_category(const _Rope_iterator<_CharT,_Alloc>&) { return random_access_iterator_tag();}
1063 template <class _CharT, class _Alloc>
1064 inline _CharT* value_type(const _Rope_iterator<_CharT,_Alloc>&) { return 0; }
1065 template <class _CharT, class _Alloc>
1066 inline ptrdiff_t* distance_type(const _Rope_iterator<_CharT,_Alloc>&) { return 0; }
1067 template <class _CharT, class _Alloc>
1069 iterator_category(const _Rope_const_iterator<_CharT,_Alloc>&) { return random_access_iterator_tag(); }
1070 template <class _CharT, class _Alloc>
1071 inline _CharT* value_type(const _Rope_const_iterator<_CharT,_Alloc>&) { return 0; }
1072 template <class _CharT, class _Alloc>
1073 inline ptrdiff_t* distance_type(const _Rope_const_iterator<_CharT,_Alloc>&) { return 0; }
1076 template <class _CharT, class _Alloc, class _CharConsumer>
1078 _Rope_RopeRep<_CharT, _Alloc> *__r,
1082 template <class _CharT, class _Alloc>
1085 : public __stlport_class<rope<_CharT, _Alloc> >
1088 typedef rope<_CharT,_Alloc> _Self;
1090 typedef _CharT value_type;
1093 typedef _CharT const_reference;
1094 typedef const _CharT* const_pointer;
1095 typedef _Rope_iterator<_CharT,_Alloc> iterator;
1096 typedef _Rope_const_iterator<_CharT,_Alloc> const_iterator;
1097 typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
1098 typedef _Rope_char_ptr_proxy<_CharT,_Alloc> pointer;
1100 friend class _Rope_iterator<_CharT,_Alloc>;
1101 friend class _Rope_const_iterator<_CharT,_Alloc>;
1102 friend struct _Rope_RopeRep<_CharT,_Alloc>;
1103 friend class _Rope_iterator_base<_CharT,_Alloc>;
1104 friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
1105 friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
1106 friend struct _Rope_RopeSubstring<_CharT,_Alloc>;
1111 typedef _CharT* _Cstrptr;
1113 static _CharT _S_empty_c_str[1];
1119 typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
1123 _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1128 _STLP_PRIV _STLP_alloc_proxy<_RopeRep*, _CharT, allocator_type> _M_tree_ptr;
1134 typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcatenation;
1135 typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf;
1136 typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction;
1137 typedef _Rope_RopeSubstring<_CharT,_Alloc> _RopeSubstring;
1140 static _CharT _S_fetch(_RopeRep* __r, size_type __pos);
1148 static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos);
1157 typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
1164 const _CharT* __iter, size_t __slen);
1169 const _CharT* __iter, size_t __slen);
1182 typedef _Rope_char_consumer<_CharT> _CharConsumer;
1195 static _RopeLeaf* _S_new_RopeLeaf(_CharT *__s,
1214 static _RopeFunction* _S_new_RopeFunction(char_producer<_CharT>* __f,
1221 static _RopeSubstring* _S_new_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
1229 _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s,
1233 _CharT* __buf = _STLP_CREATE_ALLOCATOR(allocator_type,__a, _CharT).allocate(_S_rounded_up_size(_p_size));
1258 const _CharT* __iter, size_t __slen);
1263 (_RopeLeaf* __r, const _CharT* __iter, size_t __slen);
1270 typedef _STLP_PRIV _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn;
1274 friend struct _STLP_PRIV _Rope_Concat_fn<_CharT,_Alloc>;
1278 static size_t _S_char_ptr_len(const _CharT* __s) {
1279 return char_traits<_CharT>::length(__s);
1286 // Copy __r to the _CharT buffer.
1289 static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer);
1293 static _CharT* _S_flatten(_RopeRep* __r,
1295 _CharT* __buffer);
1363 rope(const _CharT* __s, const allocator_type& __a = allocator_type())
1367 rope(const _CharT* __s, size_t __len,
1375 rope(const _CharT *__s, const _CharT *__e,
1392 rope(_CharT __c, const allocator_type& __a = allocator_type())
1394 _CharT* __buf = _M_tree_ptr.allocate(_S_rounded_up_size(1));
1405 rope(size_t __n, _CharT __c,
1411 rope<_CharT,_Alloc> __result;
1414 rope<_CharT,_Alloc> __remainder_rope;
1417 typedef _STLP_PRIV _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn;
1424 _CharT* __rest_buffer = _M_tree_ptr.allocate(_S_rounded_up_size(__rest));
1434 _CharT* __base_buffer = _M_tree_ptr.allocate(_S_rounded_up_size(__exponentiate_threshold));
1436 rope<_CharT,_Alloc> __base_rope;
1468 rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn,
1502 void push_back(_CharT __x) {
1513 _CharT back() const {
1517 void push_front(_CharT __x) {
1535 _CharT front() const {
1545 void copy(_CharT* __buffer) const {
1557 size_type copy(size_type __pos, size_type __n, _CharT* __buffer) const {
1576 const _CharT* c_str() const;
1580 const _CharT* replace_with_c_str();
1597 _CharT operator[] (size_type __pos) const {
1601 _CharT at(size_type __pos) const {
1658 // forward iterator with value_type _CharT.
1659 _Self& append(const _CharT* __iter, size_t __n) {
1664 _Self& append(const _CharT* __c_string) {
1670 _Self& append(const _CharT* __s, const _CharT* __e) {
1683 _Self& append(_CharT __c) {
1688 _Self& append() { return append(_CharT()); } // XXX why?
1696 _Self& append(size_t __n, _CharT __c) {
1697 rope<_CharT,_Alloc> __last(__n, __c);
1736 void insert(size_t __p, size_t __n, _CharT __c) {
1737 rope<_CharT,_Alloc> __r(__n,__c);
1741 void insert(size_t __p, const _CharT* __i, size_t __n) {
1753 void insert(size_t __p, const _CharT* __c_string) {
1757 void insert(size_t __p, _CharT __c) {
1762 _CharT __c = _CharT();
1766 void insert(size_t __p, const _CharT* __i, const _CharT* __j) {
1790 const _CharT* __i, size_t __i_len) {
1795 void replace(size_t __p, size_t __n, _CharT __c) {
1800 void replace(size_t __p, size_t __n, const _CharT* __c_string) {
1806 const _CharT* __i, const _CharT* __j) {
1824 void replace(size_t __p, _CharT __c) {
1834 void replace(size_t __p, const _CharT* __i, size_t __i_len) {
1838 void replace(size_t __p, const _CharT* __c_string) {
1842 void replace(size_t __p, const _CharT* __i, const _CharT* __j) {
1870 iterator insert(const iterator& __p, size_t __n, _CharT __c)
1872 iterator insert(const iterator& __p, _CharT __c)
1876 iterator insert(const iterator& __p, const _CharT* c_string)
1878 iterator insert(const iterator& __p, const _CharT* __i, size_t __n)
1880 iterator insert(const iterator& __p, const _CharT* __i,
1881 const _CharT* __j)
1894 void replace(const iterator& __p, const iterator& __q, _CharT __c)
1897 const _CharT* __c_string)
1900 const _CharT* __i, size_t __n)
1903 const _CharT* __i, const _CharT* __j)
1915 void replace(const iterator& __p, _CharT __c)
1917 void replace(const iterator& __p, const _CharT* __c_string)
1919 void replace(const iterator& __p, const _CharT* __i, size_t __n)
1921 void replace(const iterator& __p, const _CharT* __i, const _CharT* __j)
1943 return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __start, __start + __len));
1947 return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __start.index(), __end.index()));
1952 return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __pos, __pos + 1));
1958 return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __start.index(), __end.index()));
1961 rope<_CharT,_Alloc> substr(const_iterator __start) {
1963 return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __pos, __pos + 1));
1984 size_type find(_CharT __c, size_type __pos = 0) const;
1985 size_type find(const _CharT* __s, size_type __pos = 0) const {
2026 void resize(size_type, _CharT) {}
2036 size_type copy(_CharT* __buffer, size_type __n,
2063 template <class _CharT, class _Alloc>
2064 const size_t rope<_CharT, _Alloc>::npos = ~(size_t) 0;
2067 template <class _CharT, class _Alloc>
2068 inline _CharT
2069 _Rope_const_iterator< _CharT, _Alloc>::operator[](size_t __n)
2070 { return rope<_CharT,_Alloc>::_S_fetch(this->_M_root, this->_M_current_pos + __n); }
2072 template <class _CharT, class _Alloc>
2073 inline bool operator== (const _Rope_const_iterator<_CharT,_Alloc>& __x,
2074 const _Rope_const_iterator<_CharT,_Alloc>& __y) {
2079 template <class _CharT, class _Alloc>
2080 inline bool operator< (const _Rope_const_iterator<_CharT,_Alloc>& __x,
2081 const _Rope_const_iterator<_CharT,_Alloc>& __y)
2086 template <class _CharT, class _Alloc>
2087 inline bool operator!= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
2088 const _Rope_const_iterator<_CharT,_Alloc>& __y)
2091 template <class _CharT, class _Alloc>
2092 inline bool operator> (const _Rope_const_iterator<_CharT,_Alloc>& __x,
2093 const _Rope_const_iterator<_CharT,_Alloc>& __y)
2096 template <class _CharT, class _Alloc>
2097 inline bool operator<= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
2098 const _Rope_const_iterator<_CharT,_Alloc>& __y)
2101 template <class _CharT, class _Alloc>
2102 inline bool operator>= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
2103 const _Rope_const_iterator<_CharT,_Alloc>& __y)
2108 template <class _CharT, class _Alloc>
2109 inline ptrdiff_t operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x,
2110 const _Rope_const_iterator<_CharT,_Alloc>& __y)
2114 template <class _CharT, class _Alloc>
2115 inline _Rope_const_iterator<_CharT,_Alloc>
2116 operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n)
2117 { return _Rope_const_iterator<_CharT,_Alloc>(__x._M_root, __x._M_current_pos - __n); }
2120 template <class _CharT, class _Alloc>
2121 inline _Rope_const_iterator<_CharT,_Alloc>
2122 operator+(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n)
2123 { return _Rope_const_iterator<_CharT,_Alloc>(__x._M_root, __x._M_current_pos + __n); }
2125 template <class _CharT, class _Alloc>
2126 inline _Rope_const_iterator<_CharT,_Alloc>
2127 operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT,_Alloc>& __x)
2128 { return _Rope_const_iterator<_CharT,_Alloc>(__x._M_root, __x._M_current_pos + __n); }
2130 template <class _CharT, class _Alloc>
2131 inline bool operator== (const _Rope_iterator<_CharT,_Alloc>& __x,
2132 const _Rope_iterator<_CharT,_Alloc>& __y) {
2137 template <class _CharT, class _Alloc>
2138 inline bool operator< (const _Rope_iterator<_CharT,_Alloc>& __x,
2139 const _Rope_iterator<_CharT,_Alloc>& __y)
2143 template <class _CharT, class _Alloc>
2144 inline bool operator!= (const _Rope_iterator<_CharT,_Alloc>& __x,
2145 const _Rope_iterator<_CharT,_Alloc>& __y)
2148 template <class _CharT, class _Alloc>
2149 inline bool operator> (const _Rope_iterator<_CharT,_Alloc>& __x,
2150 const _Rope_iterator<_CharT,_Alloc>& __y)
2153 template <class _CharT, class _Alloc>
2154 inline bool operator<= (const _Rope_iterator<_CharT,_Alloc>& __x,
2155 const _Rope_iterator<_CharT,_Alloc>& __y)
2158 template <class _CharT, class _Alloc>
2159 inline bool operator>= (const _Rope_iterator<_CharT,_Alloc>& __x,
2160 const _Rope_iterator<_CharT,_Alloc>& __y)
2164 template <class _CharT, class _Alloc>
2165 inline ptrdiff_t operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
2166 const _Rope_iterator<_CharT,_Alloc>& __y)
2170 template <class _CharT, class _Alloc>
2171 inline _Rope_iterator<_CharT,_Alloc>
2172 operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
2174 return _Rope_iterator<_CharT,_Alloc>(__x._M_root_rope, __x._M_current_pos - __n);
2178 template <class _CharT, class _Alloc>
2179 inline _Rope_iterator<_CharT,_Alloc>
2180 operator+(const _Rope_iterator<_CharT,_Alloc>& __x,
2182 return _Rope_iterator<_CharT,_Alloc>(__x._M_root_rope, __x._M_current_pos + __n);
2185 template <class _CharT, class _Alloc>
2186 inline _Rope_iterator<_CharT,_Alloc>
2187 operator+(ptrdiff_t __n, const _Rope_iterator<_CharT,_Alloc>& __x) {
2188 return _Rope_iterator<_CharT,_Alloc>(__x._M_root_rope, __x._M_current_pos + __n);
2191 template <class _CharT, class _Alloc>
2192 inline rope<_CharT,_Alloc>
2193 operator+ (const rope<_CharT,_Alloc>& __left,
2194 const rope<_CharT,_Alloc>& __right) {
2196 return rope<_CharT,_Alloc>(rope<_CharT,_Alloc>::_S_concat_rep(__left._M_tree_ptr._M_data, __right._M_tree_ptr._M_data));
2200 template <class _CharT, class _Alloc>
2201 inline rope<_CharT,_Alloc>&
2202 operator+= (rope<_CharT,_Alloc>& __left,
2203 const rope<_CharT,_Alloc>& __right) {
2208 template <class _CharT, class _Alloc>
2209 inline rope<_CharT,_Alloc>
2210 operator+ (const rope<_CharT,_Alloc>& __left,
2211 const _CharT* __right) {
2212 size_t __rlen = rope<_CharT,_Alloc>::_S_char_ptr_len(__right);
2213 return rope<_CharT,_Alloc>(rope<_CharT,_Alloc>::_S_concat_char_iter(__left._M_tree_ptr._M_data, __right, __rlen));
2216 template <class _CharT, class _Alloc>
2217 inline rope<_CharT,_Alloc>&
2218 operator+= (rope<_CharT,_Alloc>& __left,
2219 const _CharT* __right) {
2224 template <class _CharT, class _Alloc>
2225 inline rope<_CharT,_Alloc>
2226 operator+ (const rope<_CharT,_Alloc>& __left, _CharT __right) {
2227 return rope<_CharT,_Alloc>(rope<_CharT,_Alloc>::_S_concat_char_iter(__left._M_tree_ptr._M_data, &__right, 1));
2230 template <class _CharT, class _Alloc>
2231 inline rope<_CharT,_Alloc>&
2232 operator+= (rope<_CharT,_Alloc>& __left, _CharT __right) {
2237 template <class _CharT, class _Alloc>
2239 operator< (const rope<_CharT,_Alloc>& __left,
2240 const rope<_CharT,_Alloc>& __right) {
2244 template <class _CharT, class _Alloc>
2246 operator== (const rope<_CharT,_Alloc>& __left,
2247 const rope<_CharT,_Alloc>& __right) {
2253 template <class _CharT, class _Alloc>
2255 operator!= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
2259 template <class _CharT, class _Alloc>
2261 operator> (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
2265 template <class _CharT, class _Alloc>
2267 operator<= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
2271 template <class _CharT, class _Alloc>
2273 operator>= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
2277 template <class _CharT, class _Alloc>
2278 inline bool operator!= (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
2279 const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
2285 template <class _CharT, class _Alloc>
2286 inline bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
2287 const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
2292 template<class _CharT, class _Traits, class _Alloc>
2293 basic_ostream<_CharT, _Traits>& operator<< (basic_ostream<_CharT, _Traits>& __o,
2294 const rope<_CharT, _Alloc>& __r);
2311 template <class _CharT, class _Alloc>
2312 inline void swap(rope<_CharT,_Alloc>& __x, rope<_CharT,_Alloc>& __y)
2347 template<class _CharT,class _Alloc>
2351 void _Rope_rotate(_Rope_iterator<_CharT, _Alloc> __first,
2352 _Rope_iterator<_CharT, _Alloc> __middle,
2353 _Rope_iterator<_CharT, _Alloc> __last);
2361 template <class _CharT, class _Alloc>
2362 inline _Rope_char_ref_proxy<_CharT, _Alloc>::operator _CharT () const {
2371 template <class _CharT, class _Alloc>
2372 struct __move_traits<rope<_CharT, _Alloc> > {