2 * Copyright 2012 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp90
);
34 /* _String_iterator<char> and _String_const_iterator<char> class */
37 } String_reverse_iterator_char
;
41 } String_reverse_iterator_wchar
;
48 /* ?_Xran@std@@YAXXZ */
49 void __cdecl
_Xran(void)
51 static const char msg
[] = "invalid string position";
54 throw_exception(EXCEPTION_OUT_OF_RANGE
, msg
);
57 /* ?_Xlen@std@@YAXXZ */
58 void __cdecl
_Xlen(void)
60 static const char msg
[] = "string too long";
63 throw_exception(EXCEPTION_LENGTH_ERROR
, msg
);
66 static char* char_traits_char__Move_s(char *dest
,
67 MSVCP_size_t size
, const char *src
, MSVCP_size_t count
)
69 if(!dest
|| !src
|| size
<count
) {
72 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
76 return memmove(dest
, src
, count
);
79 static char* char_traits_char__Copy_s(char *dest
,
80 MSVCP_size_t size
, const char *src
, MSVCP_size_t count
)
82 if(!dest
|| !src
|| size
<count
) {
85 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
89 return memcpy(dest
, src
, count
);
92 static MSVCP_size_t
char_traits_char_length(const char *str
)
97 static char* char_traits_char_assignn(char *str
, MSVCP_size_t num
, char c
)
99 return memset(str
, c
, num
);
102 static int char_traits_char_compare(const char *s1
,
103 const char *s2
, MSVCP_size_t count
)
105 int ret
= memcmp(s1
, s2
, count
);
106 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
109 static const char* char_traits_char_find(const char *str
,
110 MSVCP_size_t range
, const char *c
)
112 return memchr(str
, *c
, range
);
115 static MSVCP_bool
basic_string_char_inside(
116 basic_string_char
*this, const char *ptr
)
118 return (ptr
<this->ptr
|| ptr
>=this->ptr
+this->size
) ? FALSE
: TRUE
;
121 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
122 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
123 const MSVCP_size_t basic_string_char_npos
= -1;
125 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ@4DB */
126 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ@4DB */
127 const char basic_string_char_nullbyte
= '\0';
129 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ */
130 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ */
131 const char* __cdecl
basic_string_char__Nullstr(void)
133 return &basic_string_char_nullbyte
;
136 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEAAEPBD@Z */
137 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAAEAEPEBD@Z */
138 DEFINE_THISCALL_WRAPPER(basic_string_char__Refcnt
, 8)
139 unsigned char* __thiscall
basic_string_char__Refcnt(basic_string_char
*this, const char *ptr
)
141 TRACE("(%p %p)\n", this, ptr
);
142 return (unsigned char*)ptr
-1;
145 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
146 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
147 DEFINE_THISCALL_WRAPPER(basic_string_char__Eos
, 8)
148 void __thiscall
basic_string_char__Eos(basic_string_char
*this, MSVCP_size_t len
)
154 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
155 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
156 DEFINE_THISCALL_WRAPPER(basic_string_char__Tidy
, 8)
157 void __thiscall
basic_string_char__Tidy(basic_string_char
*this, MSVCP_bool built
)
159 TRACE("(%p %d)\n", this, built
);
161 if(!this->ptr
|| !built
);
162 else if(!this->ptr
[-1] || (unsigned char)this->ptr
[-1]==FROZEN
)
163 MSVCP_allocator_char_deallocate(NULL
, this->ptr
, this->res
+2);
167 memset(this, 0, sizeof(*this));
170 MSVCP_bool __thiscall
basic_string_char__Grow(basic_string_char
*, MSVCP_size_t
, MSVCP_bool
);
172 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
173 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
174 DEFINE_THISCALL_WRAPPER(basic_string_char__Split
, 4)
175 void __thiscall
basic_string_char__Split(basic_string_char
*this)
180 TRACE("(%p)\n", this);
182 if(!this->ptr
|| !this->ptr
[-1] || (unsigned char)this->ptr
[-1]==FROZEN
)
187 basic_string_char__Tidy(this, TRUE
);
188 if(basic_string_char__Grow(this, len
, FALSE
)) {
189 char_traits_char__Copy_s(this->ptr
, this->res
, ptr
, len
);
190 basic_string_char__Eos(this, len
);
194 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAE_NI_N@Z */
195 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAA_N_K_N@Z */
196 DEFINE_THISCALL_WRAPPER(basic_string_char__Grow
, 12)
197 MSVCP_bool __thiscall
basic_string_char__Grow(basic_string_char
*this, MSVCP_size_t new_size
, MSVCP_bool trim
)
199 /* Fixme: grow string using one reallocation, don't ignore trim flag */
200 basic_string_char__Split(this);
202 if(this->res
< new_size
) {
203 MSVCP_size_t new_res
= new_size
, len
= this->size
;
208 if(new_res
/3 < this->res
/2)
209 new_res
= this->res
+ this->res
/2;
211 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_res
+1);
213 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_size
+1);
217 ERR("Out of memory\n");
218 basic_string_char__Tidy(this, TRUE
);
223 char_traits_char__Copy_s(ptr
, new_size
, this->ptr
, this->size
);
224 basic_string_char__Tidy(this, TRUE
);
226 this->res
= new_size
;
227 basic_string_char__Eos(this, len
);
228 } else if(new_size
== 0)
229 basic_string_char__Eos(this, 0);
234 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
235 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
236 DEFINE_THISCALL_WRAPPER(basic_string_char__Freeze
, 4)
237 void __thiscall
basic_string_char__Freeze(basic_string_char
*this)
239 TRACE("(%p)\n", this);
240 basic_string_char__Split(this);
242 this->ptr
[-1] = FROZEN
;
245 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
246 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
247 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy
, 8)
248 void __thiscall
basic_string_char__Copy(basic_string_char
*this, MSVCP_size_t copy_len
)
250 TRACE("%p %lu\n", this, copy_len
);
252 if(!basic_string_char__Grow(this, copy_len
, FALSE
))
254 basic_string_char__Eos(this, copy_len
);
257 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAIPBD0@Z */
258 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CA_KPEBD0@Z */
259 MSVCP_size_t __cdecl
basic_string_char__Pdif(const char *i1
, const char *i2
)
261 TRACE("(%p %p)\n", i1
, i2
);
262 return !i1
? 0 : i1
-i2
;
265 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPADPADI@Z */
266 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEADPEAD_K@Z */
267 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDPBDI@Z */
268 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDPEBD_K@Z */
269 char* __cdecl
basic_string_char__Psum(char *iter
, MSVCP_size_t add
)
271 TRACE("(%p %lu)", iter
, add
);
272 return iter
? iter
+add
: iter
;
275 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
276 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
277 DEFINE_THISCALL_WRAPPER(basic_string_char_erase
, 12)
278 basic_string_char
* __thiscall
basic_string_char_erase(
279 basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t len
)
281 TRACE("%p %lu %lu\n", this, pos
, len
);
286 if(len
> this->size
-pos
)
287 len
= this->size
-pos
;
290 basic_string_char__Split(this);
291 char_traits_char__Move_s(this->ptr
+pos
, this->res
-pos
,
292 this->ptr
+pos
+len
, this->size
-pos
-len
);
293 basic_string_char__Eos(this, this->size
-len
);
299 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD0@Z */
300 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD0@Z */
301 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter
, 12)
302 char* __thiscall
basic_string_char_erase_iter(basic_string_char
*this, char *beg
, char *end
)
304 MSVCP_size_t pos
= basic_string_char__Pdif(beg
, this->ptr
);
305 basic_string_char_erase(this, pos
, basic_string_char__Pdif(end
, beg
));
306 return basic_string_char__Psum(this->ptr
, pos
);
309 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD@Z */
310 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD@Z */
311 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_beg
, 8)
312 char* __thiscall
basic_string_char_erase_beg(basic_string_char
*this, char *beg
)
314 MSVCP_size_t pos
= beg
-this->ptr
;
315 basic_string_char_erase(this, pos
, 1);
316 return this->ptr
+pos
;
319 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
320 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
321 DEFINE_THISCALL_WRAPPER(basic_string_char_assign_substr
, 16)
322 basic_string_char
* __thiscall
basic_string_char_assign_substr(
323 basic_string_char
*this, const basic_string_char
*assign
,
324 MSVCP_size_t pos
, MSVCP_size_t len
)
326 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
328 if(assign
->size
< pos
)
331 if(len
> assign
->size
-pos
)
332 len
= assign
->size
-pos
;
335 basic_string_char_erase(this, pos
+len
, basic_string_char_npos
);
336 basic_string_char_erase(this, 0, pos
);
337 } else if(basic_string_char__Grow(this, len
, FALSE
)) {
338 char_traits_char__Copy_s(this->ptr
, this->res
,
339 assign
->ptr
+pos
, len
);
340 basic_string_char__Eos(this, len
);
346 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
347 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
348 DEFINE_THISCALL_WRAPPER(basic_string_char_assign_cstr_len
, 12)
349 basic_string_char
* __thiscall
basic_string_char_assign_cstr_len(
350 basic_string_char
*this, const char *str
, MSVCP_size_t len
)
352 TRACE("%p %s %lu\n", this, debugstr_a(str
), len
);
354 if(basic_string_char_inside(this, str
))
355 return basic_string_char_assign_substr(this, this, str
-this->ptr
, len
);
356 else if(basic_string_char__Grow(this, len
, FALSE
)) {
357 char_traits_char__Copy_s(this->ptr
, this->res
, str
, len
);
358 basic_string_char__Eos(this, len
);
364 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
365 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
366 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
367 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
368 DEFINE_THISCALL_WRAPPER(basic_string_char_assign
, 8)
369 basic_string_char
* __thiscall
basic_string_char_assign(
370 basic_string_char
*this, const basic_string_char
*assign
)
372 return basic_string_char_assign_substr(this, assign
,
373 0, basic_string_char_npos
);
376 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
377 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
378 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
379 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
380 DEFINE_THISCALL_WRAPPER(basic_string_char_assign_cstr
, 8)
381 basic_string_char
* __thiscall
basic_string_char_assign_cstr(
382 basic_string_char
*this, const char *str
)
384 return basic_string_char_assign_cstr_len(this, str
,
385 char_traits_char_length(str
));
388 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
389 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
390 DEFINE_THISCALL_WRAPPER(basic_string_char_assign_ch
, 8)
391 basic_string_char
* __thiscall
basic_string_char_assign_ch(
392 basic_string_char
*this, char ch
)
394 return basic_string_char_assign_cstr_len(this, &ch
, 1);
397 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
398 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
399 DEFINE_THISCALL_WRAPPER(basic_string_char_assignn
, 12)
400 basic_string_char
* __thiscall
basic_string_char_assignn(
401 basic_string_char
*this, MSVCP_size_t count
, char ch
)
403 TRACE("%p %ld %c\n", this, count
, ch
);
405 basic_string_char__Grow(this, count
, FALSE
);
406 char_traits_char_assignn(this->ptr
, count
, ch
);
407 basic_string_char__Eos(this, count
);
411 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
412 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
413 DEFINE_THISCALL_WRAPPER(basic_string_char_assign_ptr_ptr
, 12)
414 basic_string_char
* __thiscall
basic_string_char_assign_ptr_ptr(
415 basic_string_char
*this, const char *first
, const char *last
)
417 return basic_string_char_assign_cstr_len(this, first
, last
-first
);
420 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
421 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
422 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_cstr_len_alloc
, 16)
423 basic_string_char
* __thiscall
basic_string_char_ctor_cstr_len_alloc(
424 basic_string_char
*this, const char *str
, MSVCP_size_t len
, const void *alloc
)
426 TRACE("%p %s %ld\n", this, debugstr_a(str
), len
);
428 basic_string_char__Tidy(this, FALSE
);
429 basic_string_char_assign_cstr_len(this, str
, len
);
433 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
434 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
435 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_substr_alloc
, 20)
436 basic_string_char
* __thiscall
basic_string_char_ctor_substr_alloc(
437 basic_string_char
*this, const basic_string_char
*assign
,
438 MSVCP_size_t pos
, MSVCP_size_t len
, const void *alloc
)
440 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
442 basic_string_char__Tidy(this, FALSE
);
443 basic_string_char_assign_substr(this, assign
, pos
, len
);
447 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
448 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
449 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_cstr_alloc
, 12)
450 basic_string_char
* __thiscall
basic_string_char_ctor_cstr_alloc(
451 basic_string_char
*this, const char *str
, const void *alloc
)
453 TRACE("%p %s\n", this, debugstr_a(str
));
455 basic_string_char__Tidy(this, FALSE
);
456 basic_string_char_assign_cstr(this, str
);
460 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr(
461 basic_string_char
*this, const char *str
)
463 return basic_string_char_ctor_cstr_alloc(this, str
, NULL
);
466 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
467 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
468 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_ch_alloc
, 16)
469 basic_string_char
* __thiscall
basic_string_char_ctor_ch_alloc(basic_string_char
*this,
470 MSVCP_size_t count
, char ch
, const void *alloc
)
472 TRACE("%p %ld %c\n", this, count
, ch
);
474 basic_string_char__Tidy(this, FALSE
);
475 basic_string_char_assignn(this, count
, ch
);
479 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0ABV?$allocator@D@1@@Z */
480 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0AEBV?$allocator@D@1@@Z */
481 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter
, 16)
482 basic_string_char
* __thiscall
basic_string_char_ctor_iter(basic_string_char
*this,
483 const char *first
, const char *last
, allocator
*alloc
)
485 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
487 basic_string_char__Tidy(this, FALSE
);
488 basic_string_char_assign_cstr_len(this, first
, basic_string_char__Pdif(last
, first
));
492 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
493 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
494 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor
, 4)
495 basic_string_char
* __thiscall
basic_string_char_ctor(basic_string_char
*this)
499 basic_string_char__Tidy(this, FALSE
);
503 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
504 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
505 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_alloc
, 8)
506 basic_string_char
* __thiscall
basic_string_char_ctor_alloc(
507 basic_string_char
*this, const void *alloc
)
509 TRACE("%p %p\n", this, alloc
);
511 basic_string_char__Tidy(this, FALSE
);
515 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
516 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
517 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor
, 8)
518 basic_string_char
* __thiscall
MSVCP_basic_string_char_copy_ctor(
519 basic_string_char
*this, const basic_string_char
*copy
)
521 TRACE("%p %p\n", this, copy
);
523 basic_string_char__Tidy(this, FALSE
);
524 basic_string_char_assign(this, copy
);
528 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
529 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
530 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor
, 4)
531 void __thiscall
MSVCP_basic_string_char_dtor(basic_string_char
*this)
534 basic_string_char__Tidy(this, TRUE
);
537 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
538 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
539 DEFINE_THISCALL_WRAPPER(basic_string_char_compare_substr_cstr_len
, 20)
540 int __thiscall
basic_string_char_compare_substr_cstr_len(
541 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
542 const char *str
, MSVCP_size_t count
)
546 TRACE("%p %lu %lu %s %lu\n", this, pos
, num
, debugstr_a(str
), count
);
551 if(pos
+num
> this->size
)
552 num
= this->size
-pos
;
554 ans
= char_traits_char_compare(this->ptr
+pos
,
555 str
, num
>count
? count
: num
);
566 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
567 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
568 DEFINE_THISCALL_WRAPPER(basic_string_char_compare_cstr
, 8)
569 int __thiscall
basic_string_char_compare_cstr(
570 const basic_string_char
*this, const char *str
)
572 return basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
573 str
, char_traits_char_length(str
));
576 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
577 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
578 DEFINE_THISCALL_WRAPPER(basic_string_char_compare_substr_substr
, 24)
579 int __thiscall
basic_string_char_compare_substr_substr(
580 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
581 const basic_string_char
*compare
, MSVCP_size_t off
, MSVCP_size_t count
)
583 TRACE("%p %lu %lu %p %lu %lu\n", this, pos
, num
, compare
, off
, count
);
585 if(compare
->size
< off
)
588 if(off
+count
> compare
->size
)
589 count
= compare
->size
-off
;
591 return basic_string_char_compare_substr_cstr_len(this, pos
, num
,
592 compare
->ptr
+off
, count
);
595 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
596 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
597 DEFINE_THISCALL_WRAPPER(basic_string_char_compare_substr
, 16)
598 int __thiscall
basic_string_char_compare_substr(
599 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
600 const basic_string_char
*compare
)
602 return basic_string_char_compare_substr_cstr_len(this, pos
, num
,
603 compare
->ptr
, compare
->size
);
606 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
607 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
608 DEFINE_THISCALL_WRAPPER(basic_string_char_compare
, 8)
609 int __thiscall
basic_string_char_compare(
610 const basic_string_char
*this, const basic_string_char
*compare
)
612 return basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
613 compare
->ptr
, compare
->size
);
616 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
617 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
618 DEFINE_THISCALL_WRAPPER(basic_string_char_compare_substr_cstr
, 16)
619 int __thiscall
basic_string_char_compare_substr_cstr(const basic_string_char
*this,
620 MSVCP_size_t pos
, MSVCP_size_t num
, const char *str
)
622 return basic_string_char_compare_substr_cstr_len(this, pos
, num
,
623 str
, char_traits_char_length(str
));
626 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
627 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
628 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
629 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
630 MSVCP_bool __cdecl
basic_string_char_equal(
631 const basic_string_char
*left
, const basic_string_char
*right
)
633 return basic_string_char_compare(left
, right
) == 0;
636 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
637 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
638 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
639 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
640 MSVCP_bool __cdecl
basic_string_char_equal_str_cstr(
641 const basic_string_char
*left
, const char *right
)
643 return basic_string_char_compare_cstr(left
, right
) == 0;
646 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
647 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
648 /* ??8std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
649 /* ??8std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
650 MSVCP_bool __cdecl
basic_string_char_equal_cstr_str(
651 const char *left
, const basic_string_char
*right
)
653 return basic_string_char_compare_cstr(right
, left
) == 0;
656 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
657 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
658 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
659 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
660 MSVCP_bool __cdecl
basic_string_char_not_equal(
661 const basic_string_char
*left
, const basic_string_char
*right
)
663 return basic_string_char_compare(left
, right
) != 0;
666 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
667 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
668 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
669 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
670 MSVCP_bool __cdecl
basic_string_char_not_equal_str_cstr(
671 const basic_string_char
*left
, const char *right
)
673 return basic_string_char_compare_cstr(left
, right
) != 0;
676 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
677 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
678 /* ??9std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
679 /* ??9std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
680 MSVCP_bool __cdecl
basic_string_char_not_equal_cstr_str(
681 const char *left
, const basic_string_char
*right
)
683 return basic_string_char_compare_cstr(right
, left
) != 0;
686 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
687 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
688 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
689 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
690 MSVCP_bool __cdecl
basic_string_char_lower(
691 const basic_string_char
*left
, const basic_string_char
*right
)
693 return basic_string_char_compare(left
, right
) < 0;
696 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
697 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
698 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
699 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
700 MSVCP_bool __cdecl
basic_string_char_lower_bstr_cstr(
701 const basic_string_char
*left
, const char *right
)
703 return basic_string_char_compare_cstr(left
, right
) < 0;
706 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
707 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
708 /* ??Mstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
709 /* ??Mstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
710 MSVCP_bool __cdecl
basic_string_char_lower_cstr_bstr(
711 const char *left
, const basic_string_char
*right
)
713 return basic_string_char_compare_cstr(right
, left
) > 0;
716 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
717 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
718 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
719 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
720 MSVCP_bool __cdecl
basic_string_char_leq(
721 const basic_string_char
*left
, const basic_string_char
*right
)
723 return basic_string_char_compare(left
, right
) <= 0;
726 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
727 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
728 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
729 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
730 MSVCP_bool __cdecl
basic_string_char_leq_bstr_cstr(
731 const basic_string_char
*left
, const char *right
)
733 return basic_string_char_compare_cstr(left
, right
) <= 0;
736 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
737 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
738 /* ??Nstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
739 /* ??Nstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
740 MSVCP_bool __cdecl
basic_string_char_leq_cstr_bstr(
741 const char *left
, const basic_string_char
*right
)
743 return basic_string_char_compare_cstr(right
, left
) >= 0;
746 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
747 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
748 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
749 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
750 MSVCP_bool __cdecl
basic_string_char_greater(
751 const basic_string_char
*left
, const basic_string_char
*right
)
753 return basic_string_char_compare(left
, right
) > 0;
756 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
757 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
758 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
759 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
760 MSVCP_bool __cdecl
basic_string_char_greater_bstr_cstr(
761 const basic_string_char
*left
, const char *right
)
763 return basic_string_char_compare_cstr(left
, right
) > 0;
766 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
767 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
768 /* ??Ostd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
769 /* ??Ostd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
770 MSVCP_bool __cdecl
basic_string_char_greater_cstr_bstr(
771 const char *left
, const basic_string_char
*right
)
773 return basic_string_char_compare_cstr(right
, left
) < 0;
776 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
777 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
778 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
779 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
780 MSVCP_bool __cdecl
basic_string_char_geq(
781 const basic_string_char
*left
, const basic_string_char
*right
)
783 return basic_string_char_compare(left
, right
) >= 0;
786 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
787 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
788 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
789 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
790 MSVCP_bool __cdecl
basic_string_char_geq_bstr_cstr(
791 const basic_string_char
*left
, const char *right
)
793 return basic_string_char_compare_cstr(left
, right
) >= 0;
796 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
797 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
798 /* ??Pstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
799 /* ??Pstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
800 MSVCP_bool __cdecl
basic_string_char_geq_cstr_bstr(
801 const char *left
, const basic_string_char
*right
)
803 return basic_string_char_compare_cstr(right
, left
) <= 0;
806 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
807 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
808 DEFINE_THISCALL_WRAPPER(basic_string_char_find_cstr_substr
, 16)
809 MSVCP_size_t __thiscall
basic_string_char_find_cstr_substr(
810 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
814 TRACE("%p %s %lu %lu\n", this, debugstr_a(find
), pos
, len
);
816 if(len
==0 && pos
<=this->size
)
819 end
= this->ptr
+this->size
-len
+1;
820 for(p
=this->ptr
+pos
; p
<end
; p
++) {
821 p
= char_traits_char_find(p
, end
-p
, find
);
825 if(!char_traits_char_compare(p
, find
, len
))
829 return basic_string_char_npos
;
832 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
833 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
834 DEFINE_THISCALL_WRAPPER(basic_string_char_find_off
, 12)
835 MSVCP_size_t __thiscall
basic_string_char_find_off(
836 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
838 return basic_string_char_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
841 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
842 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
843 DEFINE_THISCALL_WRAPPER(basic_string_char_find_ch
, 12)
844 MSVCP_size_t __thiscall
basic_string_char_find_ch(
845 const basic_string_char
*this, char ch
, MSVCP_size_t pos
)
847 return basic_string_char_find_cstr_substr(this, &ch
, pos
, 1);
850 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
851 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
852 DEFINE_THISCALL_WRAPPER(basic_string_char_find_cstr_off
, 12)
853 MSVCP_size_t __thiscall
basic_string_char_find_cstr_off(
854 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
)
856 return basic_string_char_find_cstr_substr(this, find
, pos
,
857 char_traits_char_length(find
));
860 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
861 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
862 DEFINE_THISCALL_WRAPPER(basic_string_char_rfind_cstr_substr
, 16)
863 MSVCP_size_t __thiscall
basic_string_char_rfind_cstr_substr(
864 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
868 TRACE("%p %s %lu %lu\n", this, debugstr_a(find
), pos
, len
);
871 return pos
<this->size
? pos
: this->size
;
874 return basic_string_char_npos
;
876 if(pos
> this->size
-len
+1)
877 pos
= this->size
-len
+1;
879 for(p
=end
+pos
-1; p
>=end
; p
--) {
880 if(*p
==*find
&& !char_traits_char_compare(p
, find
, len
))
884 return basic_string_char_npos
;
887 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
888 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
889 DEFINE_THISCALL_WRAPPER(basic_string_char_rfind_off
, 12)
890 MSVCP_size_t __thiscall
basic_string_char_rfind_off(
891 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
893 return basic_string_char_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
896 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
897 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
898 DEFINE_THISCALL_WRAPPER(basic_string_char_rfind_ch
, 12)
899 MSVCP_size_t __thiscall
basic_string_char_rfind_ch(
900 const basic_string_char
*this, char ch
, MSVCP_size_t pos
)
902 return basic_string_char_find_cstr_substr(this, &ch
, pos
, 1);
905 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
906 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
907 DEFINE_THISCALL_WRAPPER(basic_string_char_rfind_cstr_off
, 12)
908 MSVCP_size_t __thiscall
basic_string_char_rfind_cstr_off(
909 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
)
911 return basic_string_char_rfind_cstr_substr(this, find
, pos
,
912 char_traits_char_length(find
));
915 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
916 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
917 DEFINE_THISCALL_WRAPPER(basic_string_char_find_first_not_of_cstr_substr
, 16)
918 MSVCP_size_t __thiscall
basic_string_char_find_first_not_of_cstr_substr(
919 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
923 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
926 end
= this->ptr
+this->size
;
927 for(p
=this->ptr
+off
; p
<end
; p
++)
928 if(!char_traits_char_find(find
, len
, p
))
932 return basic_string_char_npos
;
935 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
936 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
937 DEFINE_THISCALL_WRAPPER(basic_string_char_find_first_not_of
, 12)
938 MSVCP_size_t __thiscall
basic_string_char_find_first_not_of(
939 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
941 return basic_string_char_find_first_not_of_cstr_substr(this,
942 find
->ptr
, off
, find
->size
);
945 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
946 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
947 DEFINE_THISCALL_WRAPPER(basic_string_char_find_first_not_of_ch
, 12)
948 MSVCP_size_t __thiscall
basic_string_char_find_first_not_of_ch(
949 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
951 return basic_string_char_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
954 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
955 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
956 DEFINE_THISCALL_WRAPPER(basic_string_char_find_first_not_of_cstr
, 12)
957 MSVCP_size_t __thiscall
basic_string_char_find_first_not_of_cstr(
958 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
960 return basic_string_char_find_first_not_of_cstr_substr(
961 this, find
, off
, char_traits_char_length(find
));
964 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
965 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
966 DEFINE_THISCALL_WRAPPER(basic_string_char_find_first_of_cstr_substr
, 16)
967 MSVCP_size_t __thiscall
basic_string_char_find_first_of_cstr_substr(
968 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
972 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
974 if(len
>0 && off
<this->size
) {
975 end
= this->ptr
+this->size
;
976 for(p
=this->ptr
+off
; p
<end
; p
++)
977 if(char_traits_char_find(find
, len
, p
))
981 return basic_string_char_npos
;
984 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
985 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
986 DEFINE_THISCALL_WRAPPER(basic_string_char_find_first_of
, 12)
987 MSVCP_size_t __thiscall
basic_string_char_find_first_of(
988 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
990 return basic_string_char_find_first_of_cstr_substr(this,
991 find
->ptr
, off
, find
->size
);
994 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
995 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
996 DEFINE_THISCALL_WRAPPER(basic_string_char_find_first_of_ch
, 12)
997 MSVCP_size_t __thiscall
basic_string_char_find_first_of_ch(
998 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1000 return basic_string_char_find_first_of_cstr_substr(this, &ch
, off
, 1);
1003 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1004 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1005 DEFINE_THISCALL_WRAPPER(basic_string_char_find_first_of_cstr
, 12)
1006 MSVCP_size_t __thiscall
basic_string_char_find_first_of_cstr(
1007 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1009 return basic_string_char_find_first_of_cstr_substr(
1010 this, find
, off
, char_traits_char_length(find
));
1013 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1014 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1015 DEFINE_THISCALL_WRAPPER(basic_string_char_find_last_not_of_cstr_substr
, 16)
1016 MSVCP_size_t __thiscall
basic_string_char_find_last_not_of_cstr_substr(
1017 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
1019 const char *p
, *beg
;
1021 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
1023 if(len
>0 && this->size
>0) {
1024 if(off
>= this->size
)
1028 for(p
=beg
+off
; p
>=beg
; p
--)
1029 if(!char_traits_char_find(find
, len
, p
))
1033 return basic_string_char_npos
;
1036 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1037 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1038 DEFINE_THISCALL_WRAPPER(basic_string_char_find_last_not_of
, 12)
1039 MSVCP_size_t __thiscall
basic_string_char_find_last_not_of(
1040 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1042 return basic_string_char_find_last_not_of_cstr_substr(this,
1043 find
->ptr
, off
, find
->size
);
1046 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1047 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1048 DEFINE_THISCALL_WRAPPER(basic_string_char_find_last_not_of_ch
, 12)
1049 MSVCP_size_t __thiscall
basic_string_char_find_last_not_of_ch(
1050 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1052 return basic_string_char_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
1055 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1056 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1057 DEFINE_THISCALL_WRAPPER(basic_string_char_find_last_not_of_cstr
, 12)
1058 MSVCP_size_t __thiscall
basic_string_char_find_last_not_of_cstr(
1059 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1061 return basic_string_char_find_last_not_of_cstr_substr(
1062 this, find
, off
, char_traits_char_length(find
));
1065 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1066 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1067 DEFINE_THISCALL_WRAPPER(basic_string_char_find_last_of_cstr_substr
, 16)
1068 MSVCP_size_t __thiscall
basic_string_char_find_last_of_cstr_substr(
1069 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
1071 const char *p
, *beg
;
1073 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
1075 if(len
>0 && this->size
>0) {
1076 if(off
>= this->size
)
1080 for(p
=beg
+off
; p
>=beg
; p
--)
1081 if(char_traits_char_find(find
, len
, p
))
1085 return basic_string_char_npos
;
1088 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1089 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1090 DEFINE_THISCALL_WRAPPER(basic_string_char_find_last_of
, 12)
1091 MSVCP_size_t __thiscall
basic_string_char_find_last_of(
1092 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1094 return basic_string_char_find_last_of_cstr_substr(this,
1095 find
->ptr
, off
, find
->size
);
1098 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1099 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1100 DEFINE_THISCALL_WRAPPER(basic_string_char_find_last_of_ch
, 12)
1101 MSVCP_size_t __thiscall
basic_string_char_find_last_of_ch(
1102 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1104 return basic_string_char_find_last_of_cstr_substr(this, &ch
, off
, 1);
1107 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1108 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1109 DEFINE_THISCALL_WRAPPER(basic_string_char_find_last_of_cstr
, 12)
1110 MSVCP_size_t __thiscall
basic_string_char_find_last_of_cstr(
1111 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1113 return basic_string_char_find_last_of_cstr_substr(
1114 this, find
, off
, char_traits_char_length(find
));
1117 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1118 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1119 DEFINE_THISCALL_WRAPPER(basic_string_char_append_substr
, 16)
1120 basic_string_char
* __thiscall
basic_string_char_append_substr(basic_string_char
*this,
1121 const basic_string_char
*append
, MSVCP_size_t offset
, MSVCP_size_t count
)
1123 TRACE("%p %p %lu %lu\n", this, append
, offset
, count
);
1125 if(append
->size
< offset
)
1128 if(count
> append
->size
-offset
)
1129 count
= append
->size
-offset
;
1131 if(basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1134 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1135 char_traits_char__Copy_s(this->ptr
+this->size
,
1136 this->res
-this->size
, append
->ptr
+offset
, count
);
1137 basic_string_char__Eos(this, this->size
+count
);
1143 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1144 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1145 DEFINE_THISCALL_WRAPPER(basic_string_char_append_cstr_len
, 12)
1146 basic_string_char
* __thiscall
basic_string_char_append_cstr_len(
1147 basic_string_char
*this, const char *append
, MSVCP_size_t count
)
1149 TRACE("%p %s %lu\n", this, debugstr_a(append
), count
);
1151 if(basic_string_char_inside(this, append
))
1152 return basic_string_char_append_substr(this, this, append
-this->ptr
, count
);
1154 if(basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1157 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1158 char_traits_char__Copy_s(this->ptr
+this->size
,
1159 this->res
-this->size
, append
, count
);
1160 basic_string_char__Eos(this, this->size
+count
);
1166 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1167 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1168 DEFINE_THISCALL_WRAPPER(basic_string_char_append_len_ch
, 12)
1169 basic_string_char
* __thiscall
basic_string_char_append_len_ch(
1170 basic_string_char
*this, MSVCP_size_t count
, char ch
)
1172 TRACE("%p %lu %c\n", this, count
, ch
);
1174 if(basic_string_char_npos
-this->size
<= count
)
1177 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1178 char_traits_char_assignn(this->ptr
+this->size
, count
, ch
);
1179 basic_string_char__Eos(this, this->size
+count
);
1185 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1186 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1187 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1188 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1189 DEFINE_THISCALL_WRAPPER(basic_string_char_append
, 8)
1190 basic_string_char
* __thiscall
basic_string_char_append(
1191 basic_string_char
*this, const basic_string_char
*append
)
1193 return basic_string_char_append_substr(this, append
,
1194 0, basic_string_char_npos
);
1197 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1198 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1199 DEFINE_THISCALL_WRAPPER(basic_string_char_append_ch
, 8)
1200 basic_string_char
* __thiscall
basic_string_char_append_ch(
1201 basic_string_char
*this, char ch
)
1203 return basic_string_char_append_len_ch(this, 1, ch
);
1206 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1207 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1208 DEFINE_THISCALL_WRAPPER(basic_string_char_append_beg_end
, 12)
1209 basic_string_char
* __thiscall
basic_string_char_append_beg_end(
1210 basic_string_char
*this, const char *beg
, const char *end
)
1212 return basic_string_char_append_cstr_len(this, beg
, end
-beg
);
1215 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1216 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1217 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1218 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1219 DEFINE_THISCALL_WRAPPER(basic_string_char_append_cstr
, 8)
1220 basic_string_char
* __thiscall
basic_string_char_append_cstr(
1221 basic_string_char
*this, const char *append
)
1223 return basic_string_char_append_cstr_len(this, append
,
1224 char_traits_char_length(append
));
1226 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1227 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1228 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1229 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1230 basic_string_char
* __cdecl
basic_string_char_concatenate(basic_string_char
*ret
,
1231 const basic_string_char
*left
, const basic_string_char
*right
)
1233 TRACE("%p %p\n", left
, right
);
1235 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1236 basic_string_char_append(ret
, right
);
1240 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1241 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1242 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1243 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1244 basic_string_char
* __cdecl
basic_string_char_concatenate_bstr_ch(basic_string_char
*ret
,
1245 const basic_string_char
*left
, char right
)
1247 TRACE("%p %c\n", left
, right
);
1249 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1250 basic_string_char_append_ch(ret
, right
);
1254 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1255 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1256 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1257 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1258 basic_string_char
* __cdecl
basic_string_char_concatenate_bstr_cstr(basic_string_char
*ret
,
1259 const basic_string_char
*left
, const char *right
)
1261 TRACE("%p %s\n", left
, debugstr_a(right
));
1263 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1264 basic_string_char_append_cstr(ret
, right
);
1268 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1269 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1270 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1271 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1272 basic_string_char
* __cdecl
basic_string_char_concatenate_ch_bstr(basic_string_char
*ret
,
1273 char left
, const basic_string_char
*right
)
1275 TRACE("%c %p\n", left
, right
);
1277 basic_string_char_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
1278 basic_string_char_append(ret
, right
);
1282 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1283 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1284 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1285 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1286 basic_string_char
* __cdecl
basic_string_char_concatenate_cstr_bstr(basic_string_char
*ret
,
1287 const char *left
, const basic_string_char
*right
)
1289 TRACE("%s %p\n", debugstr_a(left
), right
);
1291 basic_string_char_ctor_cstr_alloc(ret
, left
, NULL
);
1292 basic_string_char_append(ret
, right
);
1296 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1297 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1298 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1299 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1300 DEFINE_THISCALL_WRAPPER(basic_string_char_operator_at
, 8)
1301 char* __thiscall
basic_string_char_operator_at(
1302 basic_string_char
*this, MSVCP_size_t pos
)
1304 TRACE("%p %lu\n", this, pos
);
1306 assert(this->size
>= pos
);
1307 return this->ptr
+pos
;
1310 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1311 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1312 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1313 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1314 DEFINE_THISCALL_WRAPPER(basic_string_char_at
, 8)
1315 char* __thiscall
basic_string_char_at(
1316 basic_string_char
*this, MSVCP_size_t pos
)
1318 TRACE("%p %lu\n", this, pos
);
1320 if(this->size
<= pos
)
1323 return this->ptr
+pos
;
1326 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1327 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1328 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len
, 20)
1329 basic_string_char
* __thiscall
basic_string_char_replace_cstr_len(basic_string_char
*this,
1330 MSVCP_size_t off
, MSVCP_size_t len
, const char *str
, MSVCP_size_t str_len
)
1332 MSVCP_size_t inside_pos
= -1;
1333 char *ptr
= this->ptr
;
1335 TRACE("%p %ld %ld %p %ld\n", this, off
, len
, str
, str_len
);
1337 if(this->size
< off
)
1340 if(off
+len
> this->size
)
1341 len
= this->size
-off
;
1343 if(basic_string_char_npos
-str_len
<= this->size
-len
)
1346 if(basic_string_char_inside(this, str
))
1347 inside_pos
= str
-ptr
;
1349 if(this->size
-len
+str_len
)
1350 basic_string_char__Grow(this, this->size
-len
+str_len
, FALSE
);
1353 if(inside_pos
== -1) {
1354 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1355 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
1356 } else if(len
>= str_len
) {
1357 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
1358 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1362 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1364 if(inside_pos
< off
+len
) {
1365 size
= off
+len
-inside_pos
;
1368 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
1374 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
1377 basic_string_char__Eos(this, this->size
-len
+str_len
);
1381 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
1382 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
1383 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr
, 24)
1384 basic_string_char
* __thiscall
basic_string_char_replace_substr(basic_string_char
*this, MSVCP_size_t off
,
1385 MSVCP_size_t len
, const basic_string_char
*str
, MSVCP_size_t str_off
, MSVCP_size_t str_len
)
1387 if(str
->size
< str_off
)
1390 if(str_off
+str_len
> str
->size
)
1391 str_len
= str
->size
-str_off
;
1393 return basic_string_char_replace_cstr_len(this, off
, len
,
1394 str
->ptr
+str_off
, str_len
);
1397 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
1398 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
1399 DEFINE_THISCALL_WRAPPER(basic_string_char_replace
, 16)
1400 basic_string_char
* __thiscall
basic_string_char_replace(basic_string_char
*this,
1401 MSVCP_size_t off
, MSVCP_size_t len
, const basic_string_char
*str
)
1403 return basic_string_char_replace_cstr_len(this, off
, len
,
1404 str
->ptr
, str
->size
);
1407 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
1408 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
1409 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch
, 20)
1410 basic_string_char
* __thiscall
basic_string_char_replace_ch(basic_string_char
*this,
1411 MSVCP_size_t off
, MSVCP_size_t len
, MSVCP_size_t count
, char ch
)
1413 char *ptr
= this->ptr
;
1415 TRACE("%p %ld %ld %ld %c\n", this, off
, len
, count
, ch
);
1417 if(this->size
< off
)
1420 if(off
+len
> this->size
)
1421 len
= this->size
-off
;
1423 if(basic_string_char_npos
-count
<= this->size
-len
)
1426 if(this->size
-len
+count
)
1427 basic_string_char__Grow(this, this->size
-len
+count
, FALSE
);
1430 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1431 char_traits_char_assignn(ptr
+off
, count
, ch
);
1432 basic_string_char__Eos(this, this->size
-len
+count
);
1437 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
1438 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
1439 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr
, 16)
1440 basic_string_char
* __thiscall
basic_string_char_replace_cstr(basic_string_char
*this,
1441 MSVCP_size_t off
, MSVCP_size_t len
, const char *str
)
1443 return basic_string_char_replace_cstr_len(this, off
, len
, str
,
1444 char_traits_char_length(str
));
1447 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ABV12@@Z */
1448 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0AEBV12@@Z */
1449 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr
, 16)
1450 basic_string_char
* __thiscall
basic_string_char_replace_iter_bstr(basic_string_char
*this,
1451 char *beg
, char *end
, const basic_string_char
*str
)
1453 return basic_string_char_replace(this, basic_string_char__Pdif(beg
, this->ptr
),
1454 basic_string_char__Pdif(end
, beg
), str
);
1457 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ID@Z */
1458 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0_KD@Z */
1459 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_chn
, 20)
1460 basic_string_char
* __thiscall
basic_string_char_replace_iter_chn(basic_string_char
*this,
1461 char *beg
, char *end
, MSVCP_size_t count
, char ch
)
1463 return basic_string_char_replace_ch(this, basic_string_char__Pdif(beg
, this->ptr
),
1464 basic_string_char__Pdif(end
, beg
), count
, ch
);
1467 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD1@Z */
1468 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD1@Z */
1469 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter
, 20)
1470 basic_string_char
* __thiscall
basic_string_char_replace_iter_iter(basic_string_char
*this,
1471 char *beg1
, char *end1
, const char *beg2
, const char *end2
)
1473 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg1
, this->ptr
),
1474 basic_string_char__Pdif(end1
, beg1
), beg2
, basic_string_char__Pdif(end2
, beg2
));
1477 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD@Z */
1478 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD@Z */
1479 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr
, 16)
1480 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr(basic_string_char
*this,
1481 char *beg
, char *end
, const char *str
)
1483 return basic_string_char_replace_cstr(this, basic_string_char__Pdif(beg
, this->ptr
),
1484 basic_string_char__Pdif(end
, beg
), str
);
1487 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBDI@Z */
1488 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD_K@Z */
1489 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len
, 20)
1490 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr_len(basic_string_char
*this,
1491 char *beg
, char *end
, const char *str
, MSVCP_size_t len
)
1493 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg
, this->ptr
),
1494 basic_string_char__Pdif(end
, beg
), str
, len
);
1497 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
1498 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
1499 DEFINE_THISCALL_WRAPPER(basic_string_char_insert
, 12)
1500 basic_string_char
* __thiscall
basic_string_char_insert(basic_string_char
*this,
1501 MSVCP_size_t off
, const basic_string_char
*str
)
1503 return basic_string_char_replace(this, off
, 0, str
);
1506 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
1507 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
1508 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr
, 20)
1509 basic_string_char
* __thiscall
basic_string_char_insert_substr(
1510 basic_string_char
*this, MSVCP_size_t off
, const basic_string_char
*str
,
1511 MSVCP_size_t str_off
, MSVCP_size_t str_count
)
1513 return basic_string_char_replace_substr(this, off
, 0, str
, str_off
, str_count
);
1516 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
1517 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
1518 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr
, 12)
1519 basic_string_char
* __thiscall
basic_string_char_insert_cstr(
1520 basic_string_char
*this, MSVCP_size_t off
, const char *str
)
1522 return basic_string_char_replace_cstr(this, off
, 0, str
);
1525 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
1526 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
1527 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len
, 16)
1528 basic_string_char
* __thiscall
basic_string_char_insert_cstr_len(basic_string_char
*this,
1529 MSVCP_size_t off
, const char *str
, MSVCP_size_t str_len
)
1531 return basic_string_char_replace_cstr_len(this, off
, 0, str
, str_len
);
1534 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
1535 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
1536 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn
, 16)
1537 basic_string_char
* __thiscall
basic_string_char_insert_chn(basic_string_char
*this,
1538 MSVCP_size_t off
, MSVCP_size_t count
, char ch
)
1540 return basic_string_char_replace_ch(this, off
, 0, count
, ch
);
1543 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPADD@Z */
1544 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEADD@Z */
1545 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch
, 12)
1546 char* __thiscall
basic_string_char_insert_iter_ch(basic_string_char
*this, char *pos
, char ch
)
1548 MSVCP_size_t off
= basic_string_char__Pdif(pos
, this->ptr
);
1549 basic_string_char_insert_chn(this, off
, 1, ch
);
1550 return basic_string_char__Psum(this->ptr
, off
);
1553 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADID@Z */
1554 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEAD_KD@Z */
1555 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn
, 16)
1556 void __thiscall
basic_string_char_insert_iter_chn(basic_string_char
*this,
1557 char *pos
, MSVCP_size_t n
, char ch
)
1559 basic_string_char_insert_chn(this, basic_string_char__Pdif(pos
, this->ptr
), n
, ch
);
1562 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADPBD1@Z */
1563 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEADPEBD1@Z */
1564 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter
, 16)
1565 void __thiscall
basic_string_char_insert_iter(basic_string_char
*this,
1566 char *pos
, const char *beg
, const char *end
)
1568 basic_string_char_insert_cstr_len(this, basic_string_char__Pdif(pos
, this->ptr
),
1569 beg
, basic_string_char__Pdif(end
, beg
));
1572 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
1573 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
1574 DEFINE_THISCALL_WRAPPER(basic_string_char_resize_ch
, 12)
1575 void __thiscall
basic_string_char_resize_ch(
1576 basic_string_char
*this, MSVCP_size_t size
, char ch
)
1578 TRACE("%p %lu %c\n", this, size
, ch
);
1580 if(size
<= this->size
)
1581 basic_string_char_erase(this, size
, this->size
);
1583 basic_string_char_append_len_ch(this, size
-this->size
, ch
);
1586 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1587 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1588 DEFINE_THISCALL_WRAPPER(basic_string_char_resize
, 8)
1589 void __thiscall
basic_string_char_resize(
1590 basic_string_char
*this, MSVCP_size_t size
)
1592 basic_string_char_resize_ch(this, size
, '\0');
1595 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
1596 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
1597 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1598 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1599 DEFINE_THISCALL_WRAPPER(basic_string_char_begin
, 4)
1600 char* __thiscall
basic_string_char_begin(basic_string_char
*this)
1602 TRACE("(%p)\n", this);
1603 basic_string_char__Freeze(this);
1607 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
1608 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
1609 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1610 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1611 DEFINE_THISCALL_WRAPPER(basic_string_char_end
, 4)
1612 char* __thiscall
basic_string_char_end(basic_string_char
*this)
1614 TRACE("(%p)\n", this);
1615 basic_string_char__Freeze(this);
1616 return this->ptr
+this->size
;
1619 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
1620 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
1621 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
1622 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
1623 DEFINE_THISCALL_WRAPPER(basic_string_char_rbegin
, 8)
1624 String_reverse_iterator_char
* __thiscall
basic_string_char_rbegin(
1625 basic_string_char
*this, String_reverse_iterator_char
*ret
)
1627 TRACE("(%p %p)\n", this, ret
);
1628 ret
->ptr
= basic_string_char_end(this);
1632 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
1633 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
1634 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
1635 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
1636 DEFINE_THISCALL_WRAPPER(basic_string_char_rend
, 8)
1637 String_reverse_iterator_char
* __thiscall
basic_string_char_rend(
1638 basic_string_char
*this, String_reverse_iterator_char
*ret
)
1640 TRACE("(%p %p)\n", this, ret
);
1641 ret
->ptr
= basic_string_char_begin(this);
1645 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1646 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1647 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1648 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1649 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str
, 4)
1650 const char* __thiscall
MSVCP_basic_string_char_c_str(const basic_string_char
*this)
1652 TRACE("%p\n", this);
1656 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1657 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1658 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1659 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1660 DEFINE_THISCALL_WRAPPER(basic_string_char_length
, 4)
1661 MSVCP_size_t __thiscall
basic_string_char_length(basic_string_char
*this)
1663 TRACE("%p\n", this);
1667 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1668 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1669 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size
, 4)
1670 MSVCP_size_t __thiscall
basic_string_char_max_size(const basic_string_char
*this)
1672 TRACE("%p\n", this);
1673 return MSVCP_allocator_char_max_size(NULL
)-1;
1676 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1677 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1678 DEFINE_THISCALL_WRAPPER(basic_string_char_capacity
, 4)
1679 MSVCP_size_t __thiscall
basic_string_char_capacity(basic_string_char
*this)
1681 TRACE("%p\n", this);
1685 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1686 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1687 DEFINE_THISCALL_WRAPPER(basic_string_char_reserve
, 8)
1688 void __thiscall
basic_string_char_reserve(basic_string_char
*this, MSVCP_size_t size
)
1692 TRACE("%p %ld\n", this, size
);
1698 basic_string_char__Grow(this, size
, FALSE
);
1699 basic_string_char__Eos(this, len
);
1702 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1703 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1704 DEFINE_THISCALL_WRAPPER(basic_string_char_empty
, 4)
1705 MSVCP_bool __thiscall
basic_string_char_empty(basic_string_char
*this)
1707 TRACE("%p\n", this);
1708 return this->size
== 0;
1711 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1712 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1713 DEFINE_THISCALL_WRAPPER(basic_string_char_swap
, 8)
1714 void __thiscall
basic_string_char_swap(basic_string_char
*this, basic_string_char
*str
)
1716 basic_string_char tmp
;
1717 TRACE("%p %p\n", this, str
);
1724 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1725 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1726 DEFINE_THISCALL_WRAPPER(basic_string_char_substr
, 16)
1727 basic_string_char
* __thiscall
basic_string_char_substr(basic_string_char
*this,
1728 basic_string_char
*ret
, MSVCP_size_t off
, MSVCP_size_t len
)
1730 TRACE("%p %lu %lu\n", this, off
, len
);
1732 basic_string_char_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
1736 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
1737 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
1738 DEFINE_THISCALL_WRAPPER(basic_string_char_copy
, 16)
1739 MSVCP_size_t __thiscall
basic_string_char_copy(const basic_string_char
*this,
1740 char *dest
, MSVCP_size_t count
, MSVCP_size_t off
)
1742 TRACE("%p %p %lu %lu\n", this, dest
, count
, off
);
1744 if(off
> this->size
)
1746 if(count
> this->size
-off
)
1747 count
= this->size
-off
;
1748 char_traits_char__Copy_s(dest
, count
, this->ptr
+off
, count
);
1752 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
1753 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
1754 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator
, 8)
1755 allocator
* __thiscall
basic_string_char_get_allocator(const basic_string_char
*this, allocator
*ret
)
1757 TRACE("%p\n", this);
1761 static wchar_t* char_traits_wchar__Move_s(wchar_t *dest
,
1762 MSVCP_size_t size
, const wchar_t *src
, MSVCP_size_t count
)
1764 if(!dest
|| !src
|| size
<count
) {
1767 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
1771 return memmove(dest
, src
, count
);
1774 static wchar_t* char_traits_wchar__Copy_s(wchar_t *dest
,
1775 MSVCP_size_t size
, const wchar_t *src
, MSVCP_size_t count
)
1777 if(!dest
|| !src
|| size
<count
) {
1780 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
1784 return memcpy(dest
, src
, count
);
1787 static MSVCP_size_t
char_traits_wchar_length(const wchar_t *str
)
1789 return wcslen((WCHAR
*)str
);
1792 static wchar_t* char_traits_wchar_assignn(wchar_t *str
, MSVCP_size_t num
, wchar_t c
)
1794 return memset(str
, c
, num
);
1797 static int char_traits_wchar_compare(const wchar_t *s1
,
1798 const wchar_t *s2
, MSVCP_size_t count
)
1800 int ret
= memcmp(s1
, s2
, count
);
1801 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
1804 static const wchar_t* char_traits_wchar_find(const wchar_t *str
,
1805 MSVCP_size_t range
, const wchar_t *c
)
1807 return memchr(str
, *c
, range
);
1810 static MSVCP_bool
basic_string_wchar_inside(
1811 basic_string_wchar
*this, const wchar_t *ptr
)
1813 return (ptr
<this->ptr
|| ptr
>=this->ptr
+this->size
) ? FALSE
: TRUE
;
1816 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
1817 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
1818 const MSVCP_size_t basic_string_wchar_npos
= -1;
1820 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ@4GB */
1821 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ@4GB */
1822 const wchar_t basic_string_wchar_nullbyte
= '\0';
1824 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ */
1825 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ */
1826 const wchar_t* __cdecl
basic_string_wchar__Nullstr(void)
1828 return &basic_string_wchar_nullbyte
;
1831 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEAAEPBG@Z */
1832 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAAEAEPEBG@Z */
1833 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Refcnt
, 8)
1834 unsigned short* __thiscall
basic_string_wchar__Refcnt(basic_string_wchar
*this, const wchar_t *ptr
)
1836 TRACE("(%p %p)\n", this, ptr
);
1837 return (unsigned short*)ptr
-1;
1840 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1841 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1842 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Eos
, 8)
1843 void __thiscall
basic_string_wchar__Eos(basic_string_wchar
*this, MSVCP_size_t len
)
1849 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEX_N@Z */
1850 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_N@Z */
1851 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Tidy
, 8)
1852 void __thiscall
basic_string_wchar__Tidy(basic_string_wchar
*this, MSVCP_bool built
)
1854 TRACE("(%p %d)\n", this, built
);
1856 if(!this->ptr
|| !built
);
1857 else if(!this->ptr
[-1] || (unsigned short)this->ptr
[-1]==FROZEN
)
1858 MSVCP_allocator_wchar_deallocate(NULL
, this->ptr
, this->res
+2);
1862 memset(this, 0, sizeof(*this));
1865 MSVCP_bool __thiscall
basic_string_wchar__Grow(basic_string_wchar
*, MSVCP_size_t
, MSVCP_bool
);
1867 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1868 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1869 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Split
, 4)
1870 void __thiscall
basic_string_wchar__Split(basic_string_wchar
*this)
1875 TRACE("(%p)\n", this);
1877 if(!this->ptr
|| !this->ptr
[-1] || (unsigned short)this->ptr
[-1]==FROZEN
)
1882 basic_string_wchar__Tidy(this, TRUE
);
1883 if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1884 char_traits_wchar__Copy_s(this->ptr
, this->res
, ptr
, len
);
1885 basic_string_wchar__Eos(this, len
);
1889 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAE_NI_N@Z */
1890 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAA_N_K_N@Z */
1891 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Grow
, 12)
1892 MSVCP_bool __thiscall
basic_string_wchar__Grow(basic_string_wchar
*this, MSVCP_size_t new_size
, MSVCP_bool trim
)
1894 /* Fixme: grow string using one reallocation, don't ignore trim flag */
1895 basic_string_wchar__Split(this);
1897 if(this->res
< new_size
) {
1898 MSVCP_size_t new_res
= new_size
, len
= this->size
;
1903 if(new_res
/3 < this->res
/2)
1904 new_res
= this->res
+ this->res
/2;
1906 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_res
+1);
1908 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_size
+1);
1912 ERR("Out of memory\n");
1913 basic_string_wchar__Tidy(this, TRUE
);
1918 char_traits_wchar__Copy_s(ptr
, new_size
, this->ptr
, this->size
);
1919 basic_string_wchar__Tidy(this, TRUE
);
1921 this->res
= new_size
;
1922 basic_string_wchar__Eos(this, len
);
1923 } else if(new_size
== 0)
1924 basic_string_wchar__Eos(this, 0);
1926 return (new_size
>0);
1929 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1930 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1931 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Freeze
, 4)
1932 void __thiscall
basic_string_wchar__Freeze(basic_string_wchar
*this)
1934 TRACE("(%p)\n", this);
1935 basic_string_wchar__Split(this);
1937 this->ptr
[-1] = FROZEN
;
1940 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1941 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1942 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy
, 8)
1943 void __thiscall
basic_string_wchar__Copy(basic_string_wchar
*this, MSVCP_size_t copy_len
)
1945 TRACE("%p %lu\n", this, copy_len
);
1947 if(!basic_string_wchar__Grow(this, copy_len
, FALSE
))
1949 basic_string_wchar__Eos(this, copy_len
);
1952 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAIPBG0@Z */
1953 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CA_KPEBG0@Z */
1954 MSVCP_size_t __cdecl
basic_string_wchar__Pdif(const wchar_t *i1
, const wchar_t *i2
)
1956 TRACE("(%p %p)\n", i1
, i2
);
1957 return !i1
? 0 : i1
-i2
;
1960 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPAGPAGI@Z */
1961 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEAGPEAG_K@Z */
1962 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGPBGI@Z */
1963 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGPEBG_K@Z */
1964 wchar_t* __cdecl
basic_string_wchar__Psum(wchar_t *iter
, MSVCP_size_t add
)
1966 TRACE("(%p %lu)", iter
, add
);
1967 return iter
? iter
+add
: iter
;
1970 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
1971 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
1972 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase
, 12)
1973 basic_string_wchar
* __thiscall
basic_string_wchar_erase(
1974 basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t len
)
1976 TRACE("%p %lu %lu\n", this, pos
, len
);
1978 if(pos
> this->size
)
1981 if(len
> this->size
-pos
)
1982 len
= this->size
-pos
;
1985 basic_string_wchar__Split(this);
1986 char_traits_wchar__Move_s(this->ptr
+pos
, this->res
-pos
,
1987 this->ptr
+pos
+len
, this->size
-pos
-len
);
1988 basic_string_wchar__Eos(this, this->size
-len
);
1994 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG0@Z */
1995 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG0@Z */
1996 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter
, 12)
1997 wchar_t* __thiscall
basic_string_wchar_erase_iter(basic_string_wchar
*this, wchar_t *beg
, wchar_t *end
)
1999 MSVCP_size_t pos
= basic_string_wchar__Pdif(beg
, this->ptr
);
2000 basic_string_wchar_erase(this, pos
, basic_string_wchar__Pdif(end
, beg
));
2001 return basic_string_wchar__Psum(this->ptr
, pos
);
2004 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG@Z */
2005 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG@Z */
2006 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_beg
, 8)
2007 wchar_t* __thiscall
basic_string_wchar_erase_beg(basic_string_wchar
*this, wchar_t *beg
)
2009 MSVCP_size_t pos
= beg
-this->ptr
;
2010 basic_string_wchar_erase(this, pos
, 1);
2011 return this->ptr
+pos
;
2014 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2015 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2016 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign_substr
, 16)
2017 basic_string_wchar
* __thiscall
basic_string_wchar_assign_substr(
2018 basic_string_wchar
*this, const basic_string_wchar
*assign
,
2019 MSVCP_size_t pos
, MSVCP_size_t len
)
2021 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
2023 if(assign
->size
< pos
)
2026 if(len
> assign
->size
-pos
)
2027 len
= assign
->size
-pos
;
2029 if(this == assign
) {
2030 basic_string_wchar_erase(this, pos
+len
, basic_string_wchar_npos
);
2031 basic_string_wchar_erase(this, 0, pos
);
2032 } else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
2033 char_traits_wchar__Copy_s(this->ptr
, this->res
,
2034 assign
->ptr
+pos
, len
);
2035 basic_string_wchar__Eos(this, len
);
2041 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2042 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2043 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign_cstr_len
, 12)
2044 basic_string_wchar
* __thiscall
basic_string_wchar_assign_cstr_len(
2045 basic_string_wchar
*this, const wchar_t *str
, MSVCP_size_t len
)
2047 TRACE("%p %s %lu\n", this, debugstr_w(str
), len
);
2049 if(basic_string_wchar_inside(this, str
))
2050 return basic_string_wchar_assign_substr(this, this, str
-this->ptr
, len
);
2051 else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
2052 char_traits_wchar__Copy_s(this->ptr
, this->res
, str
, len
);
2053 basic_string_wchar__Eos(this, len
);
2059 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2060 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2061 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2062 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2063 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign
, 8)
2064 basic_string_wchar
* __thiscall
basic_string_wchar_assign(
2065 basic_string_wchar
*this, const basic_string_wchar
*assign
)
2067 return basic_string_wchar_assign_substr(this, assign
,
2068 0, basic_string_wchar_npos
);
2071 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2072 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2073 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2074 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2075 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign_cstr
, 8)
2076 basic_string_wchar
* __thiscall
basic_string_wchar_assign_cstr(
2077 basic_string_wchar
*this, const wchar_t *str
)
2079 return basic_string_wchar_assign_cstr_len(this, str
,
2080 char_traits_wchar_length(str
));
2083 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2084 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2085 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign_ch
, 8)
2086 basic_string_wchar
* __thiscall
basic_string_wchar_assign_ch(
2087 basic_string_wchar
*this, wchar_t ch
)
2089 return basic_string_wchar_assign_cstr_len(this, &ch
, 1);
2092 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2093 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2094 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assignn
, 12)
2095 basic_string_wchar
* __thiscall
basic_string_wchar_assignn(
2096 basic_string_wchar
*this, MSVCP_size_t count
, wchar_t ch
)
2098 TRACE("%p %ld %c\n", this, count
, ch
);
2100 basic_string_wchar__Grow(this, count
, FALSE
);
2101 char_traits_wchar_assignn(this->ptr
, count
, ch
);
2102 basic_string_wchar__Eos(this, count
);
2106 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2107 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2108 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign_ptr_ptr
, 12)
2109 basic_string_wchar
* __thiscall
basic_string_wchar_assign_ptr_ptr(
2110 basic_string_wchar
*this, const wchar_t *first
, const wchar_t *last
)
2112 return basic_string_wchar_assign_cstr_len(this, first
, last
-first
);
2115 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2116 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2117 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_cstr_len_alloc
, 16)
2118 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_cstr_len_alloc(
2119 basic_string_wchar
*this, const wchar_t *str
, MSVCP_size_t len
, const void *alloc
)
2121 TRACE("%p %s %ld\n", this, debugstr_w(str
), len
);
2123 basic_string_wchar__Tidy(this, FALSE
);
2124 basic_string_wchar_assign_cstr_len(this, str
, len
);
2128 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2129 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2130 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_substr_alloc
, 20)
2131 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_substr_alloc(
2132 basic_string_wchar
*this, const basic_string_wchar
*assign
,
2133 MSVCP_size_t pos
, MSVCP_size_t len
, const void *alloc
)
2135 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
2137 basic_string_wchar__Tidy(this, FALSE
);
2138 basic_string_wchar_assign_substr(this, assign
, pos
, len
);
2142 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2143 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2144 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_cstr_alloc
, 12)
2145 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_cstr_alloc(
2146 basic_string_wchar
*this, const wchar_t *str
, const void *alloc
)
2148 TRACE("%p %s\n", this, debugstr_w(str
));
2150 basic_string_wchar__Tidy(this, FALSE
);
2151 basic_string_wchar_assign_cstr(this, str
);
2155 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr(
2156 basic_string_wchar
*this, const wchar_t *str
)
2158 return basic_string_wchar_ctor_cstr_alloc(this, str
, NULL
);
2161 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2162 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2163 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_ch_alloc
, 16)
2164 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_ch_alloc(basic_string_wchar
*this,
2165 MSVCP_size_t count
, wchar_t ch
, const void *alloc
)
2167 TRACE("%p %ld %c\n", this, count
, ch
);
2169 basic_string_wchar__Tidy(this, FALSE
);
2170 basic_string_wchar_assignn(this, count
, ch
);
2174 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0ABV?$allocator@G@1@@Z */
2175 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0AEBV?$allocator@G@1@@Z */
2176 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter
, 16)
2177 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_iter(basic_string_wchar
*this,
2178 const wchar_t *first
, const wchar_t *last
, allocator
*alloc
)
2180 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
2182 basic_string_wchar__Tidy(this, FALSE
);
2183 basic_string_wchar_assign_cstr_len(this, first
, basic_string_wchar__Pdif(last
, first
));
2187 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
2188 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
2189 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor
, 4)
2190 basic_string_wchar
* __thiscall
basic_string_wchar_ctor(basic_string_wchar
*this)
2192 TRACE("%p\n", this);
2194 basic_string_wchar__Tidy(this, FALSE
);
2198 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2199 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2200 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_alloc
, 8)
2201 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_alloc(
2202 basic_string_wchar
*this, const void *alloc
)
2204 TRACE("%p %p\n", this, alloc
);
2206 basic_string_wchar__Tidy(this, FALSE
);
2210 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2211 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2212 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor
, 8)
2213 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_copy_ctor(
2214 basic_string_wchar
*this, const basic_string_wchar
*copy
)
2216 TRACE("%p %p\n", this, copy
);
2218 basic_string_wchar__Tidy(this, FALSE
);
2219 basic_string_wchar_assign(this, copy
);
2223 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2224 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2225 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor
, 4)
2226 void __thiscall
MSVCP_basic_string_wchar_dtor(basic_string_wchar
*this)
2228 TRACE("%p\n", this);
2229 basic_string_wchar__Tidy(this, TRUE
);
2232 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
2233 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
2234 DEFINE_THISCALL_WRAPPER(basic_string_wchar_compare_substr_cstr_len
, 20)
2235 int __thiscall
basic_string_wchar_compare_substr_cstr_len(
2236 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2237 const wchar_t *str
, MSVCP_size_t count
)
2241 TRACE("%p %lu %lu %s %lu\n", this, pos
, num
, debugstr_w(str
), count
);
2243 if(this->size
< pos
)
2246 if(pos
+num
> this->size
)
2247 num
= this->size
-pos
;
2249 ans
= char_traits_wchar_compare(this->ptr
+pos
,
2250 str
, num
>count
? count
: num
);
2256 else if(num
< count
)
2261 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
2262 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
2263 DEFINE_THISCALL_WRAPPER(basic_string_wchar_compare_cstr
, 8)
2264 int __thiscall
basic_string_wchar_compare_cstr(
2265 const basic_string_wchar
*this, const wchar_t *str
)
2267 return basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2268 str
, char_traits_wchar_length(str
));
2271 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
2272 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
2273 DEFINE_THISCALL_WRAPPER(basic_string_wchar_compare_substr_substr
, 24)
2274 int __thiscall
basic_string_wchar_compare_substr_substr(
2275 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2276 const basic_string_wchar
*compare
, MSVCP_size_t off
, MSVCP_size_t count
)
2278 TRACE("%p %lu %lu %p %lu %lu\n", this, pos
, num
, compare
, off
, count
);
2280 if(compare
->size
< off
)
2283 if(off
+count
> compare
->size
)
2284 count
= compare
->size
-off
;
2286 return basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2287 compare
->ptr
+off
, count
);
2290 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
2291 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
2292 DEFINE_THISCALL_WRAPPER(basic_string_wchar_compare_substr
, 16)
2293 int __thiscall
basic_string_wchar_compare_substr(
2294 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2295 const basic_string_wchar
*compare
)
2297 return basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2298 compare
->ptr
, compare
->size
);
2301 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
2302 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
2303 DEFINE_THISCALL_WRAPPER(basic_string_wchar_compare
, 8)
2304 int __thiscall
basic_string_wchar_compare(
2305 const basic_string_wchar
*this, const basic_string_wchar
*compare
)
2307 return basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2308 compare
->ptr
, compare
->size
);
2311 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
2312 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
2313 DEFINE_THISCALL_WRAPPER(basic_string_wchar_compare_substr_cstr
, 16)
2314 int __thiscall
basic_string_wchar_compare_substr_cstr(const basic_string_wchar
*this,
2315 MSVCP_size_t pos
, MSVCP_size_t num
, const wchar_t *str
)
2317 return basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2318 str
, char_traits_wchar_length(str
));
2321 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2322 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2323 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2324 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2325 MSVCP_bool __cdecl
basic_string_wchar_equal(
2326 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2328 return basic_string_wchar_compare(left
, right
) == 0;
2331 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2332 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2333 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2334 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2335 MSVCP_bool __cdecl
basic_string_wchar_equal_str_cstr(
2336 const basic_string_wchar
*left
, const wchar_t *right
)
2338 return basic_string_wchar_compare_cstr(left
, right
) == 0;
2341 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2342 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2343 /* ??8std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2344 /* ??8std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2345 MSVCP_bool __cdecl
basic_string_wchar_equal_cstr_str(
2346 const wchar_t *left
, const basic_string_wchar
*right
)
2348 return basic_string_wchar_compare_cstr(right
, left
) == 0;
2351 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2352 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2353 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2354 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2355 MSVCP_bool __cdecl
basic_string_wchar_not_equal(
2356 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2358 return basic_string_wchar_compare(left
, right
) != 0;
2361 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2362 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2363 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2364 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2365 MSVCP_bool __cdecl
basic_string_wchar_not_equal_str_cstr(
2366 const basic_string_wchar
*left
, const wchar_t *right
)
2368 return basic_string_wchar_compare_cstr(left
, right
) != 0;
2371 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2372 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2373 /* ??9std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2374 /* ??9std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2375 MSVCP_bool __cdecl
basic_string_wchar_not_equal_cstr_str(
2376 const wchar_t *left
, const basic_string_wchar
*right
)
2378 return basic_string_wchar_compare_cstr(right
, left
) != 0;
2381 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2382 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2383 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2384 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2385 MSVCP_bool __cdecl
basic_string_wchar_lower(
2386 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2388 return basic_string_wchar_compare(left
, right
) < 0;
2391 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2392 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2393 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2394 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2395 MSVCP_bool __cdecl
basic_string_wchar_lower_bstr_cstr(
2396 const basic_string_wchar
*left
, const wchar_t *right
)
2398 return basic_string_wchar_compare_cstr(left
, right
) < 0;
2401 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2402 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2403 /* ??Mstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2404 /* ??Mstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2405 MSVCP_bool __cdecl
basic_string_wchar_lower_cstr_bstr(
2406 const wchar_t *left
, const basic_string_wchar
*right
)
2408 return basic_string_wchar_compare_cstr(right
, left
) > 0;
2411 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2412 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2413 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2414 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2415 MSVCP_bool __cdecl
basic_string_wchar_leq(
2416 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2418 return basic_string_wchar_compare(left
, right
) <= 0;
2421 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2422 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2423 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2424 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2425 MSVCP_bool __cdecl
basic_string_wchar_leq_bstr_cstr(
2426 const basic_string_wchar
*left
, const wchar_t *right
)
2428 return basic_string_wchar_compare_cstr(left
, right
) <= 0;
2431 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2432 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2433 /* ??Nstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2434 /* ??Nstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2435 MSVCP_bool __cdecl
basic_string_wchar_leq_cstr_bstr(
2436 const wchar_t *left
, const basic_string_wchar
*right
)
2438 return basic_string_wchar_compare_cstr(right
, left
) >= 0;
2441 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2442 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2443 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2444 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2445 MSVCP_bool __cdecl
basic_string_wchar_greater(
2446 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2448 return basic_string_wchar_compare(left
, right
) > 0;
2451 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2452 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2453 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2454 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2455 MSVCP_bool __cdecl
basic_string_wchar_greater_bstr_cstr(
2456 const basic_string_wchar
*left
, const wchar_t *right
)
2458 return basic_string_wchar_compare_cstr(left
, right
) > 0;
2461 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2462 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2463 /* ??Ostd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2464 /* ??Ostd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2465 MSVCP_bool __cdecl
basic_string_wchar_greater_cstr_bstr(
2466 const wchar_t *left
, const basic_string_wchar
*right
)
2468 return basic_string_wchar_compare_cstr(right
, left
) < 0;
2471 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2472 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2473 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2474 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2475 MSVCP_bool __cdecl
basic_string_wchar_geq(
2476 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2478 return basic_string_wchar_compare(left
, right
) >= 0;
2481 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2482 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2483 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2484 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2485 MSVCP_bool __cdecl
basic_string_wchar_geq_bstr_cstr(
2486 const basic_string_wchar
*left
, const wchar_t *right
)
2488 return basic_string_wchar_compare_cstr(left
, right
) >= 0;
2491 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2492 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2493 /* ??Pstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2494 /* ??Pstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2495 MSVCP_bool __cdecl
basic_string_wchar_geq_cstr_bstr(
2496 const wchar_t *left
, const basic_string_wchar
*right
)
2498 return basic_string_wchar_compare_cstr(right
, left
) <= 0;
2501 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2502 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2503 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_cstr_substr
, 16)
2504 MSVCP_size_t __thiscall
basic_string_wchar_find_cstr_substr(
2505 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
2507 const wchar_t *p
, *end
;
2509 TRACE("%p %s %lu %lu\n", this, debugstr_w(find
), pos
, len
);
2511 if(len
==0 && pos
<=this->size
)
2514 end
= this->ptr
+this->size
-len
+1;
2515 for(p
=this->ptr
+pos
; p
<end
; p
++) {
2516 p
= char_traits_wchar_find(p
, end
-p
, find
);
2520 if(!char_traits_wchar_compare(p
, find
, len
))
2524 return basic_string_wchar_npos
;
2527 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2528 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2529 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_off
, 12)
2530 MSVCP_size_t __thiscall
basic_string_wchar_find_off(
2531 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2533 return basic_string_wchar_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
2536 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2537 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2538 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_ch
, 12)
2539 MSVCP_size_t __thiscall
basic_string_wchar_find_ch(
2540 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t pos
)
2542 return basic_string_wchar_find_cstr_substr(this, &ch
, pos
, 1);
2545 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2546 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2547 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_cstr_off
, 12)
2548 MSVCP_size_t __thiscall
basic_string_wchar_find_cstr_off(
2549 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
)
2551 return basic_string_wchar_find_cstr_substr(this, find
, pos
,
2552 char_traits_wchar_length(find
));
2555 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2556 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2557 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rfind_cstr_substr
, 16)
2558 MSVCP_size_t __thiscall
basic_string_wchar_rfind_cstr_substr(
2559 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
2561 const wchar_t *p
, *end
;
2563 TRACE("%p %s %lu %lu\n", this, debugstr_w(find
), pos
, len
);
2566 return pos
<this->size
? pos
: this->size
;
2568 if(len
> this->size
)
2569 return basic_string_wchar_npos
;
2571 if(pos
> this->size
-len
+1)
2572 pos
= this->size
-len
+1;
2574 for(p
=end
+pos
-1; p
>=end
; p
--) {
2575 if(*p
==*find
&& !char_traits_wchar_compare(p
, find
, len
))
2579 return basic_string_wchar_npos
;
2582 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2583 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2584 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rfind_off
, 12)
2585 MSVCP_size_t __thiscall
basic_string_wchar_rfind_off(
2586 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2588 return basic_string_wchar_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
2591 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2592 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2593 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rfind_ch
, 12)
2594 MSVCP_size_t __thiscall
basic_string_wchar_rfind_ch(
2595 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t pos
)
2597 return basic_string_wchar_find_cstr_substr(this, &ch
, pos
, 1);
2600 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2601 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2602 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rfind_cstr_off
, 12)
2603 MSVCP_size_t __thiscall
basic_string_wchar_rfind_cstr_off(
2604 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
)
2606 return basic_string_wchar_rfind_cstr_substr(this, find
, pos
,
2607 char_traits_wchar_length(find
));
2610 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2611 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2612 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_first_not_of_cstr_substr
, 16)
2613 MSVCP_size_t __thiscall
basic_string_wchar_find_first_not_of_cstr_substr(
2614 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2616 const wchar_t *p
, *end
;
2618 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2620 if(off
<this->size
) {
2621 end
= this->ptr
+this->size
;
2622 for(p
=this->ptr
+off
; p
<end
; p
++)
2623 if(!char_traits_wchar_find(find
, len
, p
))
2627 return basic_string_wchar_npos
;
2630 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2631 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2632 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_first_not_of
, 12)
2633 MSVCP_size_t __thiscall
basic_string_wchar_find_first_not_of(
2634 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2636 return basic_string_wchar_find_first_not_of_cstr_substr(this,
2637 find
->ptr
, off
, find
->size
);
2640 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2641 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2642 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_first_not_of_ch
, 12)
2643 MSVCP_size_t __thiscall
basic_string_wchar_find_first_not_of_ch(
2644 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2646 return basic_string_wchar_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
2649 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2650 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2651 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_first_not_of_cstr
, 12)
2652 MSVCP_size_t __thiscall
basic_string_wchar_find_first_not_of_cstr(
2653 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2655 return basic_string_wchar_find_first_not_of_cstr_substr(
2656 this, find
, off
, char_traits_wchar_length(find
));
2659 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2660 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2661 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_first_of_cstr_substr
, 16)
2662 MSVCP_size_t __thiscall
basic_string_wchar_find_first_of_cstr_substr(
2663 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2665 const wchar_t *p
, *end
;
2667 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2669 if(len
>0 && off
<this->size
) {
2670 end
= this->ptr
+this->size
;
2671 for(p
=this->ptr
+off
; p
<end
; p
++)
2672 if(char_traits_wchar_find(find
, len
, p
))
2676 return basic_string_wchar_npos
;
2679 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2680 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2681 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_first_of
, 12)
2682 MSVCP_size_t __thiscall
basic_string_wchar_find_first_of(
2683 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2685 return basic_string_wchar_find_first_of_cstr_substr(this,
2686 find
->ptr
, off
, find
->size
);
2689 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2690 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2691 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_first_of_ch
, 12)
2692 MSVCP_size_t __thiscall
basic_string_wchar_find_first_of_ch(
2693 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2695 return basic_string_wchar_find_first_of_cstr_substr(this, &ch
, off
, 1);
2698 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2699 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2700 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_first_of_cstr
, 12)
2701 MSVCP_size_t __thiscall
basic_string_wchar_find_first_of_cstr(
2702 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2704 return basic_string_wchar_find_first_of_cstr_substr(
2705 this, find
, off
, char_traits_wchar_length(find
));
2708 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2709 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2710 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_last_not_of_cstr_substr
, 16)
2711 MSVCP_size_t __thiscall
basic_string_wchar_find_last_not_of_cstr_substr(
2712 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2714 const wchar_t *p
, *beg
;
2716 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2718 if(len
>0 && this->size
>0) {
2719 if(off
>= this->size
)
2723 for(p
=beg
+off
; p
>=beg
; p
--)
2724 if(!char_traits_wchar_find(find
, len
, p
))
2728 return basic_string_wchar_npos
;
2731 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2732 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2733 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_last_not_of
, 12)
2734 MSVCP_size_t __thiscall
basic_string_wchar_find_last_not_of(
2735 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2737 return basic_string_wchar_find_last_not_of_cstr_substr(this,
2738 find
->ptr
, off
, find
->size
);
2741 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2742 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2743 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_last_not_of_ch
, 12)
2744 MSVCP_size_t __thiscall
basic_string_wchar_find_last_not_of_ch(
2745 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2747 return basic_string_wchar_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
2750 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2751 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2752 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_last_not_of_cstr
, 12)
2753 MSVCP_size_t __thiscall
basic_string_wchar_find_last_not_of_cstr(
2754 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2756 return basic_string_wchar_find_last_not_of_cstr_substr(
2757 this, find
, off
, char_traits_wchar_length(find
));
2760 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2761 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2762 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_last_of_cstr_substr
, 16)
2763 MSVCP_size_t __thiscall
basic_string_wchar_find_last_of_cstr_substr(
2764 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2766 const wchar_t *p
, *beg
;
2768 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2770 if(len
>0 && this->size
>0) {
2771 if(off
>= this->size
)
2775 for(p
=beg
+off
; p
>=beg
; p
--)
2776 if(char_traits_wchar_find(find
, len
, p
))
2780 return basic_string_wchar_npos
;
2783 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2784 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2785 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_last_of
, 12)
2786 MSVCP_size_t __thiscall
basic_string_wchar_find_last_of(
2787 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2789 return basic_string_wchar_find_last_of_cstr_substr(this,
2790 find
->ptr
, off
, find
->size
);
2793 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2794 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2795 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_last_of_ch
, 12)
2796 MSVCP_size_t __thiscall
basic_string_wchar_find_last_of_ch(
2797 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2799 return basic_string_wchar_find_last_of_cstr_substr(this, &ch
, off
, 1);
2802 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2803 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2804 DEFINE_THISCALL_WRAPPER(basic_string_wchar_find_last_of_cstr
, 12)
2805 MSVCP_size_t __thiscall
basic_string_wchar_find_last_of_cstr(
2806 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2808 return basic_string_wchar_find_last_of_cstr_substr(
2809 this, find
, off
, char_traits_wchar_length(find
));
2812 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2813 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2814 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_substr
, 16)
2815 basic_string_wchar
* __thiscall
basic_string_wchar_append_substr(basic_string_wchar
*this,
2816 const basic_string_wchar
*append
, MSVCP_size_t offset
, MSVCP_size_t count
)
2818 TRACE("%p %p %lu %lu\n", this, append
, offset
, count
);
2820 if(append
->size
< offset
)
2823 if(count
> append
->size
-offset
)
2824 count
= append
->size
-offset
;
2826 if(basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2829 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2830 char_traits_wchar__Copy_s(this->ptr
+this->size
,
2831 this->res
-this->size
, append
->ptr
+offset
, count
);
2832 basic_string_wchar__Eos(this, this->size
+count
);
2838 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2839 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2840 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_cstr_len
, 12)
2841 basic_string_wchar
* __thiscall
basic_string_wchar_append_cstr_len(
2842 basic_string_wchar
*this, const wchar_t *append
, MSVCP_size_t count
)
2844 TRACE("%p %s %lu\n", this, debugstr_w(append
), count
);
2846 if(basic_string_wchar_inside(this, append
))
2847 return basic_string_wchar_append_substr(this, this, append
-this->ptr
, count
);
2849 if(basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2852 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2853 char_traits_wchar__Copy_s(this->ptr
+this->size
,
2854 this->res
-this->size
, append
, count
);
2855 basic_string_wchar__Eos(this, this->size
+count
);
2861 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2862 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2863 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_len_ch
, 12)
2864 basic_string_wchar
* __thiscall
basic_string_wchar_append_len_ch(
2865 basic_string_wchar
*this, MSVCP_size_t count
, wchar_t ch
)
2867 TRACE("%p %lu %c\n", this, count
, ch
);
2869 if(basic_string_wchar_npos
-this->size
<= count
)
2872 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2873 char_traits_wchar_assignn(this->ptr
+this->size
, count
, ch
);
2874 basic_string_wchar__Eos(this, this->size
+count
);
2880 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2881 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2882 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2883 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2884 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append
, 8)
2885 basic_string_wchar
* __thiscall
basic_string_wchar_append(
2886 basic_string_wchar
*this, const basic_string_wchar
*append
)
2888 return basic_string_wchar_append_substr(this, append
,
2889 0, basic_string_wchar_npos
);
2892 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2893 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2894 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_ch
, 8)
2895 basic_string_wchar
* __thiscall
basic_string_wchar_append_ch(
2896 basic_string_wchar
*this, wchar_t ch
)
2898 return basic_string_wchar_append_len_ch(this, 1, ch
);
2901 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2902 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2903 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_beg_end
, 12)
2904 basic_string_wchar
* __thiscall
basic_string_wchar_append_beg_end(
2905 basic_string_wchar
*this, const wchar_t *beg
, const wchar_t *end
)
2907 return basic_string_wchar_append_cstr_len(this, beg
, end
-beg
);
2910 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2911 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2912 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2913 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2914 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_cstr
, 8)
2915 basic_string_wchar
* __thiscall
basic_string_wchar_append_cstr(
2916 basic_string_wchar
*this, const wchar_t *append
)
2918 return basic_string_wchar_append_cstr_len(this, append
,
2919 char_traits_wchar_length(append
));
2921 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
2922 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
2923 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
2924 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
2925 basic_string_wchar
* __cdecl
basic_string_wchar_concatenate(basic_string_wchar
*ret
,
2926 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2928 TRACE("%p %p\n", left
, right
);
2930 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2931 basic_string_wchar_append(ret
, right
);
2935 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
2936 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
2937 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
2938 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
2939 basic_string_wchar
* __cdecl
basic_string_wchar_concatenate_bstr_ch(basic_string_wchar
*ret
,
2940 const basic_string_wchar
*left
, wchar_t right
)
2942 TRACE("%p %c\n", left
, right
);
2944 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2945 basic_string_wchar_append_ch(ret
, right
);
2949 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
2950 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
2951 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
2952 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
2953 basic_string_wchar
* __cdecl
basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar
*ret
,
2954 const basic_string_wchar
*left
, const wchar_t *right
)
2956 TRACE("%p %s\n", left
, debugstr_w(right
));
2958 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2959 basic_string_wchar_append_cstr(ret
, right
);
2963 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
2964 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
2965 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
2966 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
2967 basic_string_wchar
* __cdecl
basic_string_wchar_concatenate_ch_bstr(basic_string_wchar
*ret
,
2968 wchar_t left
, const basic_string_wchar
*right
)
2970 TRACE("%c %p\n", left
, right
);
2972 basic_string_wchar_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
2973 basic_string_wchar_append(ret
, right
);
2977 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
2978 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2979 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
2980 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2981 basic_string_wchar
* __cdecl
basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar
*ret
,
2982 const wchar_t *left
, const basic_string_wchar
*right
)
2984 TRACE("%s %p\n", debugstr_w(left
), right
);
2986 basic_string_wchar_ctor_cstr_alloc(ret
, left
, NULL
);
2987 basic_string_wchar_append(ret
, right
);
2991 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2992 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2993 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2994 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2995 DEFINE_THISCALL_WRAPPER(basic_string_wchar_operator_at
, 8)
2996 wchar_t* __thiscall
basic_string_wchar_operator_at(
2997 basic_string_wchar
*this, MSVCP_size_t pos
)
2999 TRACE("%p %lu\n", this, pos
);
3001 assert(this->size
>= pos
);
3002 return this->ptr
+pos
;
3005 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
3006 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
3007 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
3008 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
3009 DEFINE_THISCALL_WRAPPER(basic_string_wchar_at
, 8)
3010 wchar_t* __thiscall
basic_string_wchar_at(
3011 basic_string_wchar
*this, MSVCP_size_t pos
)
3013 TRACE("%p %lu\n", this, pos
);
3015 if(this->size
<= pos
)
3018 return this->ptr
+pos
;
3021 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
3022 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
3023 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len
, 20)
3024 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr_len(basic_string_wchar
*this,
3025 MSVCP_size_t off
, MSVCP_size_t len
, const wchar_t *str
, MSVCP_size_t str_len
)
3027 MSVCP_size_t inside_pos
= -1;
3028 wchar_t *ptr
= this->ptr
;
3030 TRACE("%p %ld %ld %p %ld\n", this, off
, len
, str
, str_len
);
3032 if(this->size
< off
)
3035 if(off
+len
> this->size
)
3036 len
= this->size
-off
;
3038 if(basic_string_wchar_npos
-str_len
<= this->size
-len
)
3041 if(basic_string_wchar_inside(this, str
))
3042 inside_pos
= str
-ptr
;
3044 if(this->size
-len
+str_len
)
3045 basic_string_wchar__Grow(this, this->size
-len
+str_len
, FALSE
);
3048 if(inside_pos
== -1) {
3049 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3050 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
3051 } else if(len
>= str_len
) {
3052 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
3053 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3057 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3059 if(inside_pos
< off
+len
) {
3060 size
= off
+len
-inside_pos
;
3063 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
3069 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
3072 basic_string_wchar__Eos(this, this->size
-len
+str_len
);
3076 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3077 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3078 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr
, 24)
3079 basic_string_wchar
* __thiscall
basic_string_wchar_replace_substr(basic_string_wchar
*this, MSVCP_size_t off
,
3080 MSVCP_size_t len
, const basic_string_wchar
*str
, MSVCP_size_t str_off
, MSVCP_size_t str_len
)
3082 if(str
->size
< str_off
)
3085 if(str_off
+str_len
> str
->size
)
3086 str_len
= str
->size
-str_off
;
3088 return basic_string_wchar_replace_cstr_len(this, off
, len
,
3089 str
->ptr
+str_off
, str_len
);
3092 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3093 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3094 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace
, 16)
3095 basic_string_wchar
* __thiscall
basic_string_wchar_replace(basic_string_wchar
*this,
3096 MSVCP_size_t off
, MSVCP_size_t len
, const basic_string_wchar
*str
)
3098 return basic_string_wchar_replace_cstr_len(this, off
, len
,
3099 str
->ptr
, str
->size
);
3102 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3103 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3104 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch
, 20)
3105 basic_string_wchar
* __thiscall
basic_string_wchar_replace_ch(basic_string_wchar
*this,
3106 MSVCP_size_t off
, MSVCP_size_t len
, MSVCP_size_t count
, wchar_t ch
)
3108 wchar_t *ptr
= this->ptr
;
3110 TRACE("%p %ld %ld %ld %c\n", this, off
, len
, count
, ch
);
3112 if(this->size
< off
)
3115 if(off
+len
> this->size
)
3116 len
= this->size
-off
;
3118 if(basic_string_wchar_npos
-count
<= this->size
-len
)
3121 if(this->size
-len
+count
)
3122 basic_string_wchar__Grow(this, this->size
-len
+count
, FALSE
);
3125 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3126 char_traits_wchar_assignn(ptr
+off
, count
, ch
);
3127 basic_string_wchar__Eos(this, this->size
-len
+count
);
3132 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3133 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3134 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr
, 16)
3135 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr(basic_string_wchar
*this,
3136 MSVCP_size_t off
, MSVCP_size_t len
, const wchar_t *str
)
3138 return basic_string_wchar_replace_cstr_len(this, off
, len
, str
,
3139 char_traits_wchar_length(str
));
3142 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0ABV12@@Z */
3143 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0AEBV12@@Z */
3144 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr
, 16)
3145 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_bstr(basic_string_wchar
*this,
3146 wchar_t *beg
, wchar_t *end
, const basic_string_wchar
*str
)
3148 return basic_string_wchar_replace(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3149 basic_string_wchar__Pdif(end
, beg
), str
);
3152 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0IG@Z */
3153 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0_KG@Z */
3154 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_chn
, 20)
3155 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_chn(basic_string_wchar
*this,
3156 wchar_t *beg
, wchar_t *end
, MSVCP_size_t count
, wchar_t ch
)
3158 return basic_string_wchar_replace_ch(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3159 basic_string_wchar__Pdif(end
, beg
), count
, ch
);
3162 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG1@Z */
3163 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG1@Z */
3164 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter
, 20)
3165 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_iter(basic_string_wchar
*this,
3166 wchar_t *beg1
, wchar_t *end1
, const wchar_t *beg2
, const wchar_t *end2
)
3168 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg1
, this->ptr
),
3169 basic_string_wchar__Pdif(end1
, beg1
), beg2
, basic_string_wchar__Pdif(end2
, beg2
));
3172 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG@Z */
3173 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG@Z */
3174 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr
, 16)
3175 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr(basic_string_wchar
*this,
3176 wchar_t *beg
, wchar_t *end
, const wchar_t *str
)
3178 return basic_string_wchar_replace_cstr(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3179 basic_string_wchar__Pdif(end
, beg
), str
);
3182 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBGI@Z */
3183 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG_K@Z */
3184 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len
, 20)
3185 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr_len(basic_string_wchar
*this,
3186 wchar_t *beg
, wchar_t *end
, const wchar_t *str
, MSVCP_size_t len
)
3188 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3189 basic_string_wchar__Pdif(end
, beg
), str
, len
);
3192 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3193 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3194 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert
, 12)
3195 basic_string_wchar
* __thiscall
basic_string_wchar_insert(basic_string_wchar
*this,
3196 MSVCP_size_t off
, const basic_string_wchar
*str
)
3198 return basic_string_wchar_replace(this, off
, 0, str
);
3201 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3202 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3203 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr
, 20)
3204 basic_string_wchar
* __thiscall
basic_string_wchar_insert_substr(
3205 basic_string_wchar
*this, MSVCP_size_t off
, const basic_string_wchar
*str
,
3206 MSVCP_size_t str_off
, MSVCP_size_t str_count
)
3208 return basic_string_wchar_replace_substr(this, off
, 0, str
, str_off
, str_count
);
3211 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3212 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3213 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr
, 12)
3214 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr(
3215 basic_string_wchar
*this, MSVCP_size_t off
, const wchar_t *str
)
3217 return basic_string_wchar_replace_cstr(this, off
, 0, str
);
3220 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3221 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3222 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len
, 16)
3223 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr_len(basic_string_wchar
*this,
3224 MSVCP_size_t off
, const wchar_t *str
, MSVCP_size_t str_len
)
3226 return basic_string_wchar_replace_cstr_len(this, off
, 0, str
, str_len
);
3229 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3230 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3231 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn
, 16)
3232 basic_string_wchar
* __thiscall
basic_string_wchar_insert_chn(basic_string_wchar
*this,
3233 MSVCP_size_t off
, MSVCP_size_t count
, wchar_t ch
)
3235 return basic_string_wchar_replace_ch(this, off
, 0, count
, ch
);
3238 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAGG@Z */
3239 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAGG@Z */
3240 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch
, 12)
3241 wchar_t* __thiscall
basic_string_wchar_insert_iter_ch(basic_string_wchar
*this, wchar_t *pos
, wchar_t ch
)
3243 MSVCP_size_t off
= basic_string_wchar__Pdif(pos
, this->ptr
);
3244 basic_string_wchar_insert_chn(this, off
, 1, ch
);
3245 return basic_string_wchar__Psum(this->ptr
, off
);
3248 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGIG@Z */
3249 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAG_KG@Z */
3250 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn
, 16)
3251 void __thiscall
basic_string_wchar_insert_iter_chn(basic_string_wchar
*this,
3252 wchar_t *pos
, MSVCP_size_t n
, wchar_t ch
)
3254 basic_string_wchar_insert_chn(this, basic_string_wchar__Pdif(pos
, this->ptr
), n
, ch
);
3257 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGPBG1@Z */
3258 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAGPEBG1@Z */
3259 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter
, 16)
3260 void __thiscall
basic_string_wchar_insert_iter(basic_string_wchar
*this,
3261 wchar_t *pos
, const wchar_t *beg
, const wchar_t *end
)
3263 basic_string_wchar_insert_cstr_len(this, basic_string_wchar__Pdif(pos
, this->ptr
),
3264 beg
, basic_string_wchar__Pdif(end
, beg
));
3267 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
3268 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
3269 DEFINE_THISCALL_WRAPPER(basic_string_wchar_resize_ch
, 12)
3270 void __thiscall
basic_string_wchar_resize_ch(
3271 basic_string_wchar
*this, MSVCP_size_t size
, wchar_t ch
)
3273 TRACE("%p %lu %c\n", this, size
, ch
);
3275 if(size
<= this->size
)
3276 basic_string_wchar_erase(this, size
, this->size
);
3278 basic_string_wchar_append_len_ch(this, size
-this->size
, ch
);
3281 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3282 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3283 DEFINE_THISCALL_WRAPPER(basic_string_wchar_resize
, 8)
3284 void __thiscall
basic_string_wchar_resize(
3285 basic_string_wchar
*this, MSVCP_size_t size
)
3287 basic_string_wchar_resize_ch(this, size
, '\0');
3290 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3291 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3292 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3293 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3294 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin
, 4)
3295 wchar_t* __thiscall
basic_string_wchar_begin(basic_string_wchar
*this)
3297 TRACE("(%p)\n", this);
3298 basic_string_wchar__Freeze(this);
3302 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3303 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3304 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3305 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3306 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end
, 4)
3307 wchar_t* __thiscall
basic_string_wchar_end(basic_string_wchar
*this)
3309 TRACE("(%p)\n", this);
3310 basic_string_wchar__Freeze(this);
3311 return this->ptr
+this->size
;
3314 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3315 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3316 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3317 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3318 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rbegin
, 8)
3319 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rbegin(
3320 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3322 TRACE("(%p %p)\n", this, ret
);
3323 ret
->ptr
= basic_string_wchar_end(this);
3327 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3328 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3329 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3330 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3331 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rend
, 8)
3332 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rend(
3333 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3335 TRACE("(%p %p)\n", this, ret
);
3336 ret
->ptr
= basic_string_wchar_begin(this);
3340 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3341 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3342 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3343 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3344 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str
, 4)
3345 const wchar_t* __thiscall
MSVCP_basic_string_wchar_c_str(const basic_string_wchar
*this)
3347 TRACE("%p\n", this);
3351 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3352 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3353 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3354 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3355 DEFINE_THISCALL_WRAPPER(basic_string_wchar_length
, 4)
3356 MSVCP_size_t __thiscall
basic_string_wchar_length(basic_string_wchar
*this)
3358 TRACE("%p\n", this);
3362 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3363 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3364 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size
, 4)
3365 MSVCP_size_t __thiscall
basic_string_wchar_max_size(const basic_string_wchar
*this)
3367 TRACE("%p\n", this);
3368 return MSVCP_allocator_wchar_max_size(NULL
)-1;
3371 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3372 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3373 DEFINE_THISCALL_WRAPPER(basic_string_wchar_capacity
, 4)
3374 MSVCP_size_t __thiscall
basic_string_wchar_capacity(basic_string_wchar
*this)
3376 TRACE("%p\n", this);
3380 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3381 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3382 DEFINE_THISCALL_WRAPPER(basic_string_wchar_reserve
, 8)
3383 void __thiscall
basic_string_wchar_reserve(basic_string_wchar
*this, MSVCP_size_t size
)
3387 TRACE("%p %ld\n", this, size
);
3393 basic_string_wchar__Grow(this, size
, FALSE
);
3394 basic_string_wchar__Eos(this, len
);
3397 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
3398 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
3399 DEFINE_THISCALL_WRAPPER(basic_string_wchar_empty
, 4)
3400 MSVCP_bool __thiscall
basic_string_wchar_empty(basic_string_wchar
*this)
3402 TRACE("%p\n", this);
3403 return this->size
== 0;
3406 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
3407 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
3408 DEFINE_THISCALL_WRAPPER(basic_string_wchar_swap
, 8)
3409 void __thiscall
basic_string_wchar_swap(basic_string_wchar
*this, basic_string_wchar
*str
)
3411 basic_string_wchar tmp
;
3412 TRACE("%p %p\n", this, str
);
3419 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
3420 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
3421 DEFINE_THISCALL_WRAPPER(basic_string_wchar_substr
, 16)
3422 basic_string_wchar
* __thiscall
basic_string_wchar_substr(basic_string_wchar
*this,
3423 basic_string_wchar
*ret
, MSVCP_size_t off
, MSVCP_size_t len
)
3425 TRACE("%p %lu %lu\n", this, off
, len
);
3427 basic_string_wchar_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
3431 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
3432 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
3433 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy
, 16)
3434 MSVCP_size_t __thiscall
basic_string_wchar_copy(const basic_string_wchar
*this,
3435 wchar_t *dest
, MSVCP_size_t count
, MSVCP_size_t off
)
3437 TRACE("%p %p %lu %lu\n", this, dest
, count
, off
);
3439 if(off
> this->size
)
3441 if(count
> this->size
-off
)
3442 count
= this->size
-off
;
3443 char_traits_wchar__Copy_s(dest
, count
, this->ptr
+off
, count
);
3447 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
3448 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
3449 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator
, 8)
3450 allocator
* __thiscall
basic_string_wchar_get_allocator(const basic_string_wchar
*this, allocator
*ret
)
3452 TRACE("%p\n", this);