33 #ifndef _STLP_INTERNAL_ROPE_H 34 #define _STLP_INTERNAL_ROPE_H 36 #ifndef _STLP_INTERNAL_ALGOBASE_H 40 #if !defined (_STLP_USE_NO_IOSTREAMS) && !defined (_STLP_INTERNAL_IOSFWD) 44 #ifndef _STLP_INTERNAL_ALLOC_H 48 #ifndef _STLP_INTERNAL_ITERATOR_H 52 #ifndef _STLP_INTERNAL_ALGO_H 56 #ifndef _STLP_INTERNAL_FUNCTION_BASE_H 60 #ifndef _STLP_INTERNAL_NUMERIC_H 64 #ifndef _STLP_INTERNAL_HASH_FUN_H 68 #ifndef _STLP_CHAR_TRAITS_H 72 #ifndef _STLP_INTERNAL_THREADS_H 76 #ifdef _STLP_SGI_THREADS 80 #ifndef _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 81 # define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) (_Alloc_traits<_Tp,__atype>::create_allocator(__a)) 83 # define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) __stl_alloc_create(__a,(_Tp*)0) 91 template<
class _CharT, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_CharT>) >
class rope;
104 template <
class _CharT>
110 #ifdef _STLP_HAS_WCHAR_T 120 template<
class _CharT,
class _Alloc>
123 rope<_CharT,_Alloc> > {
130 template <
class _CharT,
class _Alloc>
139 template <
class _CharT>
143 template <
class _CharT>
147 template <
class _CharT>
157 template <
class _CharT>
161 virtual void operator()(
size_t __start_pos,
size_t __len,
162 _CharT* __buffer) = 0;
183 template<
class _Sequence
184 # if !(defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) || \ 185 defined ( _STLP_NO_DEFAULT_NON_TYPE_PARAM )) 186 ,
size_t _Buf_sz = 100
187 # if defined(__sgi) && !defined(__GNUC__) 188 # define __TYPEDEF_WORKAROUND 189 ,
class _V =
typename _Sequence::value_type
196 # ifndef __TYPEDEF_WORKAROUND 199 # if !(defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) || \ 200 defined ( _STLP_NO_DEFAULT_NON_TYPE_PARAM )) 205 enum { _Buf_sz = 100};
260 for (; __j < __len; __i++, __j++) {
289 template<
class _CharT>
291 #if !defined (_STLP_MEMBER_TEMPLATES) 296 virtual bool operator()(
const _CharT* __buffer,
size_t __len) = 0;
326 template<
class _CharT,
class _Alloc>
342 # define __ROPE_MAX_DEPTH 45 343 # define __ROPE_DEPTH_SIZE 46 // __ROPE_MAX_DEPTH + 1 364 #ifdef _STLP_NO_ARROW_OPERATOR 366 # if defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) 367 _STLP_CHECK_RUNTIME_COMPATIBILITY();
382 #if defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) 383 _STLP_CHECK_RUNTIME_COMPATIBILITY();
396 static size_t _S_rounded_up_size_aux(
size_t __n,
__true_type const& ) {
401 static size_t _S_rounded_up_size_aux(
size_t __n,
__false_type const& ) {
415 # ifndef _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 450 template<
class _CharT,
class _Alloc>
477 # ifdef _STLP_NO_ARROW_OPERATOR 486 if (
_M_data != this->_M_c_string) {
493 template<
class _CharT,
class _Alloc>
508 # ifdef _STLP_NO_ARROW_OPERATOR 520 template <
class _CharT,
class _Alloc>
535 # ifdef _STLP_NO_ARROW_OPERATOR 548 if (_M_delete_when_done) {
563 template<
class _CharT,
class _Alloc>
582 (*__fn)(__start_pos +
_M_start, __req_len, __buffer);
624 template<
class _CharT,
class _Alloc>
629 # ifdef _STLP_USE_EXCEPTIONS 640 {
_M_ptr = __x;
return *
this; }
650 template<
class _CharT,
class _Alloc>
674 inline operator _CharT ()
const;
682 #ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER 683 template<
class _CharT,
class __Alloc>
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; \ 707 # ifndef _STLP_NO_WCHAR_T 713 template<
class _CharT,
class _Alloc>
752 template<
class _CharT,
class _Alloc>
781 # if defined (__BORLANDC__) && (__BORLANDC__ < 0x560) 804 # if defined (__BORLANDC__) && (__BORLANDC__ < 0x560) 870 template<
class _CharT,
class _Alloc>
877 # ifndef _STLP_HAS_NO_NAMESPACES 908 #if !defined (__DMC__) 964 template<
class _CharT,
class _Alloc>
1047 return _Self(_M_root_rope, __old_pos);
1052 return _Self(_M_root_rope, __old_pos);
1059 # ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES 1060 template <
class _CharT,
class _Alloc>
1063 template <
class _CharT,
class _Alloc>
1065 template <
class _CharT,
class _Alloc>
1067 template <
class _CharT,
class _Alloc>
1070 template <
class _CharT,
class _Alloc>
1072 template <
class _CharT,
class _Alloc>
1076 template <
class _CharT,
class _Alloc,
class _CharConsumer>
1079 size_t __begin,
size_t __end);
1082 template <
class _CharT,
class _Alloc>
1084 #
if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
1161 size_t __start,
size_t __endp1);
1164 const _CharT* __iter,
size_t __slen);
1169 const _CharT* __iter,
size_t __slen);
1179 #if defined (_STLP_MEMBER_TEMPLATES) 1180 template <
class _CharConsumer>
1200 new(__space)
_RopeLeaf(__s, _p_size, __a);
1231 if (0 == _p_size)
return 0;
1258 const _CharT* __iter,
size_t __slen);
1263 (
_RopeLeaf* __r,
const _CharT* __iter,
size_t __slen);
1271 #if !defined (__GNUC__) || (__GNUC__ < 3) 1294 size_t __start,
size_t __len,
1338 static void _S_dump(
_RopeRep* __r,
int __indent = 0);
1367 rope(
const _CharT* __s,
size_t __len,
1375 rope(
const _CharT *__s,
const _CharT *__e,
1383 __e._M_current_pos))
1389 __e._M_current_pos))
1412 # define __exponentiate_threshold size_t(32) 1432 __remainder_rope.
_M_tree_ptr._M_data = __remainder;
1433 if (__exponent != 0) {
1446 if (1 == __exponent) {
1447 __result = __base_rope;
1453 if (0 != __remainder) {
1454 __result += __remainder_rope;
1457 __result = __remainder_rope;
1461 # undef __exponentiate_threshold 1480 #if !defined (_STLP_NO_MOVE_SEMANTIC) 1545 void copy(_CharT* __buffer)
const {
1558 size_t _p_size =
size();
1559 size_t __len = (__pos +
__n > _p_size? _p_size - __pos :
__n);
1576 const _CharT*
c_str()
const;
1603 return (*
this)[__pos];
1639 return const_reverse_iterator(
end());
1643 return const_reverse_iterator(
end());
1646 const_reverse_iterator
rend()
const {
1647 return const_reverse_iterator(
begin());
1651 return const_reverse_iterator(
begin());
1666 append(__c_string, __len);
1704 #if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 1705 void _M_swap_workaround(
_Self& __x) {
swap(__x); }
1712 if (0 == __old) {
_S_ref(__r);
return __r; }
1753 void insert(
size_t __p,
const _CharT* __c_string) {
1762 _CharT
__c = _CharT();
1766 void insert(
size_t __p,
const _CharT* __i,
const _CharT* __j) {
1767 _Self __r(__i, __j);
1773 _Self __r(__i, __j);
1779 _Self __r(__i, __j);
1790 const _CharT* __i,
size_t __i_len) {
1791 _Self __r(__i, __i_len);
1801 _Self __r(__c_string);
1806 const _CharT* __i,
const _CharT* __j) {
1807 _Self __r(__i, __j);
1813 _Self __r(__i, __j);
1819 _Self __r(__i, __j);
1834 void replace(
size_t __p,
const _CharT* __i,
size_t __i_len) {
1835 replace(__p, 1, __i, __i_len);
1838 void replace(
size_t __p,
const _CharT* __c_string) {
1842 void replace(
size_t __p,
const _CharT* __i,
const _CharT* __j) {
1864 erase(__p, __p + 1);
1897 const _CharT* __c_string)
1900 const _CharT* __i,
size_t __n)
1903 const _CharT* __i,
const _CharT* __j)
1931 size_t __p_index = __p.
index();
1936 size_t __p_index = __p.
index();
1937 erase(__p_index, 1);
1951 size_t __pos = __start.
index();
1962 size_t __pos = __start.
index();
1969 if (__pos >=
size())
1970 # ifndef _STLP_OLD_ROPE_SEMANTICS 1978 __result_pos = __result.
index();
1979 # ifndef _STLP_OLD_ROPE_SEMANTICS 1980 if (__result_pos ==
size()) __result_pos =
npos;
1982 return __result_pos;
1989 __result_pos = __result.
index();
1990 # ifndef _STLP_OLD_ROPE_SEMANTICS 1991 if (__result_pos ==
size()) __result_pos =
npos;
1993 return __result_pos;
2023 return (*
this)[__pos];
2038 return copy(__pos,
__n, __buffer);
2062 #if defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96) 2063 template <
class _CharT,
class _Alloc>
2067 template <
class _CharT,
class _Alloc>
2072 template <
class _CharT,
class _Alloc>
2079 template <
class _CharT,
class _Alloc>
2084 #ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE 2086 template <
class _CharT,
class _Alloc>
2089 {
return !(__x == __y); }
2091 template <
class _CharT,
class _Alloc>
2094 {
return __y < __x; }
2096 template <
class _CharT,
class _Alloc>
2099 {
return !(__y < __x); }
2101 template <
class _CharT,
class _Alloc>
2104 {
return !(__x < __y); }
2108 template <
class _CharT,
class _Alloc>
2113 #if !defined( __MWERKS__ ) || __MWERKS__ >= 0x2000 // dwa 8/21/97 - "ambiguous access to overloaded function" bug. 2114 template <
class _CharT,
class _Alloc>
2120 template <
class _CharT,
class _Alloc>
2125 template <
class _CharT,
class _Alloc>
2130 template <
class _CharT,
class _Alloc>
2137 template <
class _CharT,
class _Alloc>
2142 #if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) 2143 template <
class _CharT,
class _Alloc>
2146 {
return !(__x == __y); }
2148 template <
class _CharT,
class _Alloc>
2151 {
return __y < __x; }
2153 template <
class _CharT,
class _Alloc>
2156 {
return !(__y < __x); }
2158 template <
class _CharT,
class _Alloc>
2161 {
return !(__x < __y); }
2164 template <
class _CharT,
class _Alloc>
2169 #if !defined( __MWERKS__ ) || __MWERKS__ >= 0x2000 // dwa 8/21/97 - "ambiguous access to overloaded function" bug. 2170 template <
class _CharT,
class _Alloc>
2178 template <
class _CharT,
class _Alloc>
2185 template <
class _CharT,
class _Alloc>
2191 template <
class _CharT,
class _Alloc>
2200 template <
class _CharT,
class _Alloc>
2208 template <
class _CharT,
class _Alloc>
2211 const _CharT* __right) {
2216 template <
class _CharT,
class _Alloc>
2219 const _CharT* __right) {
2224 template <
class _CharT,
class _Alloc>
2230 template <
class _CharT,
class _Alloc>
2237 template <
class _CharT,
class _Alloc>
2241 return __left.
compare(__right) < 0;
2244 template <
class _CharT,
class _Alloc>
2248 return __left.
compare(__right) == 0;
2251 #ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE 2253 template <
class _CharT,
class _Alloc>
2256 return !(__x == __y);
2259 template <
class _CharT,
class _Alloc>
2265 template <
class _CharT,
class _Alloc>
2268 return !(__y < __x);
2271 template <
class _CharT,
class _Alloc>
2274 return !(__x < __y);
2277 template <
class _CharT,
class _Alloc>
2280 return !(__x == __y);
2285 template <
class _CharT,
class _Alloc>
2291 #if !defined (_STLP_USE_NO_IOSTREAMS) 2292 template<
class _CharT,
class _Traits,
class _Alloc>
2298 #if defined (_STLP_HAS_WCHAR_T) 2303 {
return __c.mutable_reference_at(__i); }
2305 #if defined (_STLP_HAS_WCHAR_T) 2307 {
return __c.mutable_reference_at(__i); }
2310 #if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) 2311 template <
class _CharT,
class _Alloc>
2317 # ifdef _STLP_HAS_WCHAR_T // dwa 8/21/97 2318 inline void swap(wrope& __x, wrope& __y) { __x.swap(__y); }
2327 size_t _p_size = __str.
size();
2329 if (0 == _p_size)
return 0;
2330 return 13*__str[0] + 5*__str[_p_size - 1] + _p_size;
2334 #if defined (_STLP_HAS_WCHAR_T) // dwa 8/21/97 2336 size_t operator()(
const wrope& __str)
const {
2337 size_t _p_size = __str.size();
2339 if (0 == _p_size)
return 0;
2340 return 13*__str[0] + 5*__str[_p_size - 1] + _p_size;
2345 #if (!defined (_STLP_MSVC) || (_STLP_MSVC >= 1310)) 2347 template<
class _CharT,
class _Alloc>
2348 # if defined (__DMC__) 2361 template <
class _CharT,
class _Alloc>
2363 if (_M_current_valid) {
2366 return _My_rope::_S_fetch(_M_root->_M_tree_ptr._M_data, _M_pos);
2370 #if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) 2371 template <
class _CharT,
class _Alloc>
2381 #if !defined (_STLP_LINK_TIME_INSTANTIATION) rope(const const_iterator &__s, const const_iterator &__e, const allocator_type &__a=allocator_type())
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
static void _S_add_to_forest(_RopeRep *__r, _RopeRep **__forest)
struct _Rope_iterator_base::@1801 _M_path_end
bool _STLP_CALL operator!=(const allocator< _T1 > &, const allocator< _T2 > &) _STLP_NOTHROW
iterator insert(const iterator &__p, const iterator &__i, const iterator &__j)
static short search(int val, const short *table, int size)
void replace(size_t __p, size_t __n, const _CharT *__i, size_t __i_len)
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
void insert(size_t __p, const const_iterator &__i, const const_iterator &__j)
unsigned char _M_path_directions
void replace(const iterator &__p, const iterator &__q, const _CharT *__i, size_t __n)
reference operator[](ptrdiff_t __n)
static _RopeLeaf * _S_leaf_concat_char_iter(_RopeLeaf *__r, const _CharT *__iter, size_t __slen)
_STLP_PRIV _Rope_Concat_fn< _CharT, _Alloc > _Concat_fn
static void _S_setbuf(_Rope_iterator_base< _CharT, _Alloc > &__x)
_Rope_RopeFunction(char_producer< _CharT > *__f, size_t _p_size, bool __d, allocator_type __a)
allocator_type get_allocator() const
iterator insert(const iterator &__p, const _CharT *c_string)
_Self substr(const_iterator __start, const_iterator __end) const
static void _S_setcache(_Rope_iterator_base< _CharT, _Alloc > &__x)
_Rope_iterator< _CharT, _Alloc > iterator
static _RopeRep * _S_destr_concat_char_iter(_RopeRep *__r, const _CharT *__iter, size_t __slen)
_Self & operator=(const _Self &__x)
_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr)
rope< _CharT, _Alloc > _My_rope
_Rope_char_ptr_proxy< _CharT, _Alloc > operator &() const
_Rope_char_ptr_proxy(const _Rope_char_ref_proxy< _CharT, _Alloc > &__x)
size_type copy(size_type __pos, size_type __n, _CharT *__buffer) const
rope(const allocator_type &__a=allocator_type())
_Rope_self_destruct_ptr< _CharT, _Alloc > & operator=(_Rope_RopeRep< _CharT, _Alloc > *__x)
void _STLP_FUNCTION_THROWS _M_throw_out_of_range() const
rope(const _CharT *__s, const _CharT *__e, const allocator_type &__a=allocator_type())
rope(size_t __n, _CharT __c, const allocator_type &__a=allocator_type())
void insert(size_t __p, const _CharT *__c_string)
#define random_access_iterator_tag
void _M_copy_buf(const _Self &__x)
friend class _Rope_char_ref_proxy< _CharT, _Alloc >
_Self & append(_CharT __c)
iterator erase(const iterator &__p)
iterator insert(const iterator &__p, const _CharT *__i, size_t __n)
_Rope_iterator(const _Self &__x)
iterator erase(const iterator &__p, const iterator &__q)
ptrdiff_t difference_type
_Rope_char_ref_proxy< _CharT, _Alloc > reference
bool operator==(const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)
void replace(size_t __p, const _CharT *__i, const _CharT *__j)
#define __STATIC_CAST(__x, __y)
void replace(size_t __p, size_t __n, const const_iterator &__i, const const_iterator &__j)
_Rope_const_iterator< _CharT, _Alloc > operator+(const _Rope_const_iterator< _CharT, _Alloc > &__x, ptrdiff_t __n)
void replace(const iterator &__p, const iterator &__q, _CharT __c)
_Self & operator=(const _Self &__x)
const_reverse_iterator const_rend() const
virtual void operator()(size_t __start_pos, size_t __len, _CharT *__buffer)=0
void replace(const iterator &__p, iterator __i, iterator __j)
_Self & operator=(_CharT __c)
void replace(const iterator &__p, const_iterator __i, const_iterator __j)
const_reverse_iterator rbegin()
_Self & operator+=(ptrdiff_t __n)
sequence_buffer(const _Self &__x)
static _RopeRep * _S_balance(_RopeRep *__r)
_CharT *_STLP_VOLATILE _M_c_string
_Rope_char_ptr_proxy(_CharT *__x)
friend class _Rope_const_iterator< _CharT, _Alloc >
iterator insert(const iterator &__p, size_t __n, _CharT __c)
size_type find(const _CharT *__s, size_type __pos=0) const
rope< _CharT, _Alloc > __identity_element(_Rope_Concat_fn< _CharT, _Alloc >)
_Self & append(const_iterator __s, const_iterator __e)
rope(const _CharT *__s, const allocator_type &__a=allocator_type())
_RopeRep::_IsBasicCharType _IsBasicCharType
_Self & put(value_type __x)
_RopeRep const * _M_data[_S_path_cache_len]
static _RopeLeaf * _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s, size_t _p_size, allocator_type __a)
void replace(size_t __p, const const_iterator &__i, const const_iterator &__j)
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
_Rope_self_destruct_ptr()
_Self & append(const _CharT *__s, const _CharT *__e)
void replace(const iterator &__p, const _CharT *__i, const _CharT *__j)
void push_back(value_type __x)
void _M_init(__true_type const &)
_Rope_const_iterator(const rope< _CharT, _Alloc > &__r, size_t __pos)
reference operator[](size_t __n)
iterator insert(const iterator &__p, const const_iterator &__i, const const_iterator &__j)
_Self & operator+=(ptrdiff_t __n)
void push_back(_CharT __x)
reverse_iterator mutable_rend()
const_reverse_iterator rend() const
static _RopeRep * _S_concat_rep(_RopeRep *__left, _RopeRep *__right)
#define _STLP_RET_AFTER_THROW(data)
#define _STLP_MOVE_TO_PRIV_NAMESPACE
rope(_CharT __c, const allocator_type &__a=allocator_type())
#define __ROPE_DEPTH_SIZE
~_Rope_self_destruct_ptr()
void _Rope_rotate(_Rope_iterator< _CharT, _Alloc > __first, _Rope_iterator< _CharT, _Alloc > __middle, _Rope_iterator< _CharT, _Alloc > __last)
_Rope_char_ref_proxy< _CharT, _Alloc > * pointer
_Self & append(const _CharT *__c_string)
void replace(size_t __p, _CharT __c)
int compare(const _Self &__y) const
void insert(size_t __p, const _CharT *__i, const _CharT *__j)
_Rope_char_ref_proxy(_My_rope *__r, size_t __p, _CharT __c)
static void _S_setcache_for_incr(_Rope_iterator_base< _CharT, _Alloc > &__x)
random_access_iterator_tag iterator_category
static size_t _S_char_ptr_len(const _CharT *__s)
iterator insert(const iterator &__p, _CharT __c)
virtual ~_Rope_char_consumer()
allocator_type get_allocator() const
void replace(const iterator &__p, const _Self &__r)
const_iterator begin() const
static _RopeLeaf * _S_destr_leaf_concat_char_iter(_RopeLeaf *__r, const _CharT *__iter, size_t __slen)
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
static bool _S_is_balanced(_RopeRep *__r)
static BOOL reserve(struct dynamic_array *array, int count, int itemsize)
allocator< _Tp2 > &_STLP_CALL __stl_alloc_rebind(allocator< _Tp1 > &__a, const _Tp2 *)
_Rope_const_iterator(const _Self &__x)
_Rope_char_ref_proxy< _CharT, _Alloc > operator *() const
_Self & operator=(const value_type &__rhs)
_Self & operator=(const _Self &__x)
void insert(size_t __p, const iterator &__i, const iterator &__j)
#define _STLP_UNWIND(action)
static int _S_compare(const _RopeRep *__x, const _RopeRep *__y)
_Rope_iterator_base< _CharT, _Alloc > _Self
void replace(size_t __p, size_t __n, _CharT __c)
_Rope_RopeRep< _CharT, _Alloc > _Self
_Rope_char_ref_proxy< _CharT, _Alloc > reference
_Sequence::value_type value_type
void replace(const iterator &__p, const iterator &__q, const _CharT *__i, const _CharT *__j)
void _M_reset(_RopeRep *__r)
__type_traits< _Tp >::has_trivial_destructor complete
_Self & append(const _CharT *__iter, size_t __n)
_STLP_MOVE_TO_PRIV_NAMESPACE _STLP_INLINE_LOOP pair< _InputIter, _ForwardIter > __ucopy_n(_InputIter __first, _Size __count, _ForwardIter __result, const input_iterator_tag &)
const_reverse_iterator const_rbegin() const
_STLP_INLINE_LOOP _InputIter __last
void replace(size_t __p, const _CharT *__i, size_t __i_len)
crope::reference __mutable_reference_at(crope &__c, size_t __i)
sequence_buffer(_Sequence &__s)
static bool _S_is_roughly_balanced(_RopeRep *__r)
_Rope_self_destruct_ptr< _CharT, _Alloc > _Self_destruct_ptr
void replace(const iterator &__p, const iterator &__q, const const_iterator &__i, const const_iterator &__j)
static _RopeRep * _S_substring(_RopeRep *__base, size_t __start, size_t __endp1)
static _CharT _S_fetch(_RopeRep *__r, size_type __pos)
_Rope_RopeConcatenation< _CharT, _Alloc > _RopeConcatenation
rope< _CharT, _Alloc > & container()
size_type max_size() const
#define _STLP_MOVE_TO_STD_NAMESPACE
void get(int argc, const char *argv[])
void _Copy_Construct(_Tp *__p, const _Tp &__val)
rope< _CharT, _Alloc > substr(const_iterator __start)
_Self substr(size_t __start, size_t __len=1) const
bool _STLP_CALL operator>=(const _Bit_iterator_base &__x, const _Bit_iterator_base &__y)
_Rope_self_destruct_ptr< _CharT, _Alloc > _Self_destruct_ptr
void replace(size_t __p, size_t __n, const _CharT *__c_string)
_Self & append(const _Self &__y)
_Rope_char_ref_proxy< _CharT, _Alloc > _Self
const_iterator const_begin() const
rope< char, allocator< char > > crope
_STLP_MOVE_TO_STD_NAMESPACE void _S_construct_null_aux(_CharT *__p, const __true_type &)
void replace(size_t __p, size_t __n, const iterator &__i, const iterator &__j)
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
static size_t _STLP_CALL length(const char_type *__s)
static _CharT * _S_fetch_ptr(_RopeRep *__r, size_type __pos)
const_iterator const_end() const
const_reverse_iterator rend()
static _RopeConcatenation * _S_new_RopeConcatenation(_RopeRep *__left, _RopeRep *__right, allocator_type __a)
static void _S_unref(_Self *__t)
_Rope_RopeSubstring< _CharT, _Alloc > _RopeSubstring
bool _STLP_CALL operator<=(const _Bit_iterator_base &__x, const _Bit_iterator_base &__y)
_Rope_char_ptr_proxy< _CharT, _Alloc > pointer
void swap(crope &__x, crope &__y)
void insert(size_t __p, size_t __n, _CharT __c)
static _RopeRep * _S_concat_char_iter(_RopeRep *__r, const _CharT *__iter, size_t __slen)
sequence_buffer< _Sequence, _Buf_sz > _Self
void replace(const iterator &__p, const iterator &__q, const _CharT *__c_string)
void replace(const iterator &__p, _CharT __c)
ptrdiff_t operator-(const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)
void replace(size_t __p, const iterator &__i, const iterator &__j)
_Rope_RopeConcatenation(_RopeRep *__l, _RopeRep *__r, allocator_type __a)
_Rope_iterator< _CharT, _Alloc > _Self
struct _Rope_iterator_base::@1802 _M_tmp_buf
_Self & append(size_t __n, _CharT __c)
_Rope_iterator_base(const _Self &__x)
#define __exponentiate_threshold
void replace(const iterator &__p, const _CharT *__c_string)
_Rope_RopeRep< _CharT, _Alloc > * _M_ptr
size_type find(const _Self &__s, size_type __pos=0) const
static void _S_add_leaf_to_forest(_RopeRep *__r, _RopeRep **__forest)
_STLP_PRIV _STLP_alloc_proxy< _RopeRep *, _CharT, allocator_type > _M_tree_ptr
void erase(size_t __p, size_t __n)
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
#define _STLP_FUNCTION_THROWS
static size_t _S_rounded_up_size(size_t __n)
_Self & operator=(const _Self &__x)
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
static _RopeLeaf * _S_new_RopeLeaf(_CharT *__s, size_t _p_size, allocator_type __a)
_STLP_MOVE_TO_STD_NAMESPACE void uninitialized_fill_n(_ForwardIter __first, _Size __n, const _Tp &__x)
#define _STLP_TEMPLATE_NULL
rope< _CharT, _Alloc > _Self
_Rope_iterator_base< _CharT, _Alloc > _Base
void replace(const iterator &__p, const iterator &__q, const iterator &__i, const iterator &__j)
void _Construct(_T1 *__p)
void replace(size_t __p, size_t __n, const _CharT *__i, const _CharT *__j)
_Rope_char_ref_proxy(const _Self &__x)
void _Destroy_Range(_ForwardIterator __first, _ForwardIterator __last)
void replace(size_t __p, const _CharT *__c_string)
void replace(const iterator &__p, const _CharT *__i, size_t __n)
void insert(size_t __p, const _Self &__r)
ptrdiff_t difference_type
static _RopeFunction * _S_new_RopeFunction(char_producer< _CharT > *__f, size_t _p_size, bool __d, allocator_type __a)
_Rope_char_ref_proxy(_My_rope *__r, size_t __p)
ptrdiff_t difference_type
void _M_init(__false_type const &)
rope(_RopeRep *__t, const allocator_type &__a=allocator_type())
bool _S_apply_to_pieces(_CharConsumer &__c, _Rope_RopeRep< _CharT, _Alloc > *__r, size_t __begin, size_t __end)
static _RopeRep * _S_tree_concat(_RopeRep *__left, _RopeRep *__right)
bool _STLP_CALL operator>(const _Bit_iterator_base &__x, const _Bit_iterator_base &__y)
const _CharT * const_pointer
rope< _CharT, _Alloc > & operator+=(rope< _CharT, _Alloc > &__left, const rope< _CharT, _Alloc > &__right)
_Rope_RopeConcatenation< _CharT, _Alloc > _RopeConcat
#define __CONST_CAST(__x, __y)
#define _STLP_CREATE_ALLOCATOR(__atype, __a, _Tp)
virtual ~_Rope_RopeSubstring()
static size_t _S_rounded_up_size(size_t __n)
rope(char_producer< _CharT > *__fn, size_t __len, bool __delete_fn, const allocator_type &__a=allocator_type())
#define _STLP_END_NAMESPACE
_Rope_char_consumer< _CharT > _CharConsumer
basic_ostream< _CharT, _Traits > & operator<<(basic_ostream< _CharT, _Traits > &__o, const rope< _CharT, _Alloc > &__r)
_Self & operator=(_Self &__x)
_Self & operator-=(ptrdiff_t __n)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
_Rope_RopeRep< _CharT, _Alloc > * operator->()
static bool _S_is_almost_balanced(_RopeRep *__r)
__kernel_ptrdiff_t ptrdiff_t
_Rope_RopeFunction< _CharT, _Alloc > _RopeFunction
_STLP_TYPENAME _STLP_PRIV _BasicCharType< _CharT >::_Ret _IsBasicCharType
void insert(size_t __p, _CharT __c)
static void _S_unref(_RopeRep *__t)
reference mutable_reference_at(size_type __pos)
void replace(size_t __p, const _Self &__r)
_Self substr(iterator __start) const
#define _STLP_MPWFIX_CATCH
void rotate(_Rope_iterator< char, allocator< char > > __first, _Rope_iterator< char, allocator< char > > __middle, _Rope_iterator< char, allocator< char > > __last)
_Self & write(const value_type *__s, size_t __len)
void copy(_CharT *__buffer) const
#define _STLP_ASSERT(expr)
sequence_buffer(_Self &__x)
rope(const _CharT *__s, size_t __len, const allocator_type &__a=allocator_type())
size_t operator()(const crope &__str) const
_Rope_RopeLeaf(_CharT *__d, size_t _p_size, allocator_type __a)
_Rope_iterator_base< _CharT, _Alloc > _Base
iterator insert(const iterator &__p)
_Self substr(iterator __start, iterator __end) const
_STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS
static _RopeSubstring * _S_new_RopeSubstring(_Rope_RopeRep< _CharT, _Alloc > *__b, size_t __s, size_t __l, allocator_type __a)
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
rope< _CharT, _Alloc > operator()(const rope< _CharT, _Alloc > &__x, const rope< _CharT, _Alloc > &__y)
random_access_iterator_tag iterator_category
const_reverse_iterator rbegin() const
const_iterator end() const
static const unsigned long _S_min_len[__ROPE_DEPTH_SIZE]
_Rope_self_destruct_ptr(_Rope_RopeRep< _CharT, _Alloc > *__p)
_CharT at(size_type __pos) const
#define _STLP_BEGIN_NAMESPACE
_RopeRep::_IsBasicCharType _IsBasicCharType
void replace(size_t __p, size_t __n, const _Self &__r)
void replace(const iterator &__p, const iterator &__q, const _Self &__r)
static _CharT * _S_flatten(_RopeRep *__r, _CharT *__buffer)
rope< _CharT, _Alloc > * _M_root
reverse_iterator mutable_rbegin()
static void _S_free_string(_CharT *__s, size_t __len, allocator_type __a)
void insert(size_t __p, const _CharT *__i, size_t __n)
value_type _M_buffer[_Buf_sz]
iterator insert(const iterator &__p, const _CharT *__i, const _CharT *__j)
void push_front(_CharT __x)
rope(__move_source< _Self > __src)
static _RopeRep * _S_concat_and_set_balanced(_RopeRep *__left, _RopeRep *__right)
rope< _CharT, _Alloc > * _M_root_rope
bool operator<(const _Rope_const_iterator< _CharT, _Alloc > &__x, const _Rope_const_iterator< _CharT, _Alloc > &__y)
_STLP_PRIV _STLP_alloc_proxy< size_t, _CharT, allocator_type > _M_size
~_Rope_RopeConcatenation()
const _CharT * replace_with_c_str()
_Rope_RopeRep< _CharT, _Alloc > & operator *()
_Rope_const_iterator(const _RopeRep *__root, size_t __pos)
_Rope_char_ptr_proxy(const _Self &__x)
_Rope_RopeRep< _CharT, _Alloc > _RopeRep
_Self & operator-=(ptrdiff_t __n)
void _S_construct_null(_CharT *__p)
_Rope_iterator_base(_RopeRep *__root, size_t __pos)
static _RopeRep * replace(_RopeRep *__old, size_t __pos1, size_t __pos2, _RopeRep *__r)
void apply_to_pieces(size_t __begin, size_t __end, _CharConsumer &__c) const
char_producer< _CharT > * _M_fn
static void _S_ref(_Self *__t)
static void dump(const void *ptr, unsigned len)
_Rope_RopeLeaf< _CharT, _Alloc > _RopeLeaf
const _CharT * c_str() const
void append(const value_type *__s, size_t __len)
_Rope_const_iterator< _CharT, _Alloc > const_iterator
_Rope_const_iterator< _CharT, _Alloc > _Self
_Self & operator=(const _Self &__x)
iterator insert(const iterator &__p, const _Self &__r)
static _CharT _S_empty_c_str[1]
_Rope_char_ptr_proxy< _CharT, _Alloc > _Self
static void _S_ref(_RopeRep *__t)
void operator()(size_t __start_pos, size_t __req_len, _CharT *__buffer)
virtual bool operator()(const _CharT *__buffer, size_t __len)=0
_CharT operator[](size_type __pos) const
_Rope_const_iterator(const _Rope_iterator< _CharT, _Alloc > &__x)
#define _STLP_FORCE_ALLOCATORS(a, y)
#define _ROPE_SWAP_SPECIALIZATION(_CharT, __Alloc)
rope(const iterator &__s, const iterator &__e, const allocator_type &__a=allocator_type())
_Rope_RopeRep(_Tag __t, unsigned char __d, bool __b, size_t _p_size, allocator_type __a)