2 * Copyright 2010 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(msvcp);
34 } basic_string_char_iterator;
38 } basic_string_wchar_iterator;
40 /* size_t_noverify structure */
50 basic_string_char* __thiscall basic_string_char_replace_cstr_len(basic_string_char *this,
51 MSVCP_size_t off, MSVCP_size_t len, const char *str, MSVCP_size_t str_len);
52 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr_len(basic_string_wchar *this,
53 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str, MSVCP_size_t str_len);
55 /* char_traits<char> */
56 /* ?assign@?$char_traits@D@std@@SAXAADABD@Z */
57 /* ?assign@?$char_traits@D@std@@SAXAEADAEBD@Z */
58 void CDECL MSVCP_char_traits_char_assign(char *ch, const char *assign)
63 /* ?eq@?$char_traits@D@std@@SA_NABD0@Z */
64 /* ?eq@?$char_traits@D@std@@SA_NAEBD0@Z */
65 MSVCP_bool CDECL MSVCP_char_traits_char_eq(const char *ch1, const char *ch2)
70 /* ?lt@?$char_traits@D@std@@SA_NABD0@Z */
71 /* ?lt@?$char_traits@D@std@@SA_NAEBD0@Z */
72 MSVCP_bool CDECL MSVCP_char_traits_lt(const char *ch1, const char *ch2)
77 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
78 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
79 int CDECL MSVCP_char_traits_char_compare(
80 const char *s1, const char *s2, MSVCP_size_t count)
82 int ret = memcmp(s1, s2, count);
83 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
86 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
87 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
88 MSVCP_size_t CDECL MSVCP_char_traits_char_length(const char *str)
93 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
94 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
95 static char* MSVCP_char_traits_char__Copy_s(char *dest,
96 MSVCP_size_t size, const char *src, MSVCP_size_t count)
98 if(!dest || !src || size<count) {
101 _invalid_parameter(NULL, NULL, NULL, 0, 0);
105 return memcpy(dest, src, count);
108 /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */
109 /* ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
110 char* CDECL MSVCP_char_traits_char_copy(
111 char *dest, const char *src, MSVCP_size_t count)
113 return MSVCP_char_traits_char__Copy_s(dest, count, src, count);
116 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
117 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
118 const char * CDECL MSVCP_char_traits_char_find(
119 const char *str, MSVCP_size_t range, const char *c)
121 return memchr(str, *c, range);
124 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
125 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
126 static char* MSVCP_char_traits_char__Move_s(char *dest,
127 MSVCP_size_t size, const char *src, MSVCP_size_t count)
129 if(!dest || !src || size<count) {
132 _invalid_parameter(NULL, NULL, NULL, 0, 0);
136 return memmove(dest, src, count);
139 /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */
140 /* ?move@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
141 char* CDECL MSVCP_char_traits_char_move(
142 char *dest, const char *src, MSVCP_size_t count)
144 return MSVCP_char_traits_char__Move_s(dest, count, src, count);
147 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
148 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
149 char* CDECL MSVCP_char_traits_char_assignn(char *str, MSVCP_size_t num, char c)
151 return memset(str, c, num);
154 /* ?to_char_type@?$char_traits@D@std@@SADABH@Z */
155 /* ?to_char_type@?$char_traits@D@std@@SADAEBH@Z */
156 char CDECL MSVCP_char_traits_char_to_char_type(const int *i)
161 /* ?to_int_type@?$char_traits@D@std@@SAHABD@Z */
162 /* ?to_int_type@?$char_traits@D@std@@SAHAEBD@Z */
163 int CDECL MSVCP_char_traits_char_to_int_type(const char *ch)
168 /* ?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z */
169 /* ?eq_int_type@?$char_traits@D@std@@SA_NAEBH0@Z */
170 MSVCP_bool CDECL MSVCP_char_traits_char_eq_int_type(const int *i1, const int *i2)
175 /* ?eof@?$char_traits@D@std@@SAHXZ */
176 int CDECL MSVCP_char_traits_char_eof(void)
181 /* ?not_eof@?$char_traits@D@std@@SAHABH@Z */
182 /* ?not_eof@?$char_traits@D@std@@SAHAEBH@Z */
183 int CDECL MSVCP_char_traits_char_not_eof(int *in)
185 return (*in==EOF ? !EOF : *in);
189 /* char_traits<wchar_t> */
190 /* ?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z */
191 /* ?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z */
192 void CDECL MSVCP_char_traits_wchar_assign(wchar_t *ch,
193 const wchar_t *assign)
198 /* ?eq@?$char_traits@_W@std@@SA_NAB_W0@Z */
199 /* ?eq@?$char_traits@_W@std@@SA_NAEB_W0@Z */
200 MSVCP_bool CDECL MSVCP_char_traits_wchar_eq(wchar_t *ch1, wchar_t *ch2)
205 /* ?lt@?$char_traits@_W@std@@SA_NAB_W0@Z */
206 /* ?lt@?$char_traits@_W@std@@SA_NAEB_W0@Z */
207 MSVCP_bool CDECL MSVCP_char_traits_wchar_lt(const wchar_t *ch1,
213 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
214 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
215 int CDECL MSVCP_char_traits_wchar_compare(const wchar_t *s1,
216 const wchar_t *s2, MSVCP_size_t count)
218 int ret = memcmp(s1, s2, count * sizeof(wchar_t));
219 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
222 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
223 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
224 MSVCP_size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str)
226 return wcslen((WCHAR*)str);
229 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
230 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
231 static wchar_t* MSVCP_char_traits_wchar__Copy_s(wchar_t *dest,
232 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
234 if(!dest || !src || size<count) {
237 _invalid_parameter(NULL, NULL, NULL, 0, 0);
241 return memcpy(dest, src, count * sizeof(wchar_t));
244 /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
245 /* ?copy@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
246 wchar_t* CDECL MSVCP_char_traits_wchar_copy(wchar_t *dest,
247 const wchar_t *src, MSVCP_size_t count)
249 return MSVCP_char_traits_wchar__Copy_s(dest, count, src, count);
252 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
253 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
254 const wchar_t* CDECL MSVCP_char_traits_wchar_find(
255 const wchar_t *str, MSVCP_size_t range, const wchar_t *c)
259 for(i=0; i<range; i++)
266 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
267 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
268 static wchar_t* MSVCP_char_traits_wchar__Move_s(wchar_t *dest,
269 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
271 if(!dest || !src || size<count) {
274 _invalid_parameter(NULL, NULL, NULL, 0, 0);
278 return memmove(dest, src, count * sizeof(WCHAR));
281 /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
282 /* ?move@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
283 wchar_t* CDECL MSVCP_char_traits_wchar_move(wchar_t *dest,
284 const wchar_t *src, MSVCP_size_t count)
286 return MSVCP_char_traits_wchar__Move_s(dest, count, src, count);
289 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
290 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
291 wchar_t* CDECL MSVCP_char_traits_wchar_assignn(wchar_t *str,
292 MSVCP_size_t num, wchar_t c)
302 /* ?to_char_type@?$char_traits@_W@std@@SA_WABG@Z */
303 /* ?to_char_type@?$char_traits@_W@std@@SA_WAEBG@Z */
304 wchar_t CDECL MSVCP_char_traits_wchar_to_char_type(const unsigned short *i)
309 /* ?to_int_type@?$char_traits@_W@std@@SAGAB_W@Z */
310 /* ?to_int_type@?$char_traits@_W@std@@SAGAEB_W@Z */
311 unsigned short CDECL MSVCP_char_traits_wchar_to_int_type(const wchar_t *ch)
316 /* ?eq_int_type@?$char_traits@_W@std@@SA_NABG0@Z */
317 /* ?eq_int_type@?$char_traits@_W@std@@SA_NAEBG0@Z */
318 MSVCP_bool CDECL MSVCP_char_traits_wchar_eq_int_tpe(const unsigned short *i1,
319 const unsigned short *i2)
324 /* ?eof@?$char_traits@_W@std@@SAGXZ */
325 unsigned short CDECL MSVCP_char_traits_wchar_eof(void)
330 /* ?not_eof@?$char_traits@_W@std@@SAGABG@Z */
331 /* ?not_eof@?$char_traits@_W@std@@SAGAEBG@Z */
332 unsigned short CDECL MSVCP_char_traits_wchar_not_eof(const unsigned short *in)
334 return (*in==WEOF ? !WEOF : *in);
338 /* char_traits<unsigned short> */
339 /* ?assign@?$char_traits@G@std@@SAXAAGABG@Z */
340 /* ?assign@?$char_traits@G@std@@SAXAEAGAEBG@Z */
341 void CDECL MSVCP_char_traits_short_assign(unsigned short *ch,
342 const unsigned short *assign)
347 /* ?eq@?$char_traits@G@std@@SA_NABG0@Z */
348 /* ?eq@?$char_traits@G@std@@SA_NAEBG0@Z */
349 MSVCP_bool CDECL MSVCP_char_traits_short_eq(const unsigned short *ch1,
350 const unsigned short *ch2)
355 /* ?lt@?$char_traits@G@std@@SA_NABG0@Z */
356 /* ?lt@?$char_traits@G@std@@SA_NAEBG0@Z */
357 MSVCP_bool CDECL MSVCP_char_traits_short_lt(const unsigned short *ch1,
358 const unsigned short *ch2)
363 /* ?compare@?$char_traits@G@std@@SAHPBG0I@Z */
364 /* ?compare@?$char_traits@G@std@@SAHPEBG0_K@Z */
365 int CDECL MSVCP_char_traits_short_compare(const unsigned short *s1,
366 const unsigned short *s2, MSVCP_size_t count)
370 for(i=0; i<count; i++)
372 return (s1[i] < s2[i] ? -1 : 1);
377 /* ?length@?$char_traits@G@std@@SAIPBG@Z */
378 /* ?length@?$char_traits@G@std@@SA_KPEBG@Z */
379 MSVCP_size_t CDECL MSVCP_char_traits_short_length(const unsigned short *str)
383 for(len=0; str[len]; len++);
388 /* ?_Copy_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
389 /* ?_Copy_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
390 static unsigned short * MSVCP_char_traits_short__Copy_s(unsigned short *dest,
391 MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
394 _invalid_parameter(NULL, NULL, NULL, 0, 0);
398 return memcpy(dest, src, count * sizeof(unsigned short));
401 /* ?copy@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
402 /* ?copy@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
403 unsigned short* CDECL MSVCP_char_traits_short_copy(unsigned short *dest,
404 const unsigned short *src, MSVCP_size_t count)
406 return MSVCP_char_traits_short__Copy_s(dest, count, src, count);
409 /* ?find@?$char_traits@G@std@@SAPBGPBGIABG@Z */
410 /* ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z */
411 const unsigned short* CDECL MSVCP_char_traits_short_find(
412 const unsigned short *str, MSVCP_size_t range, const unsigned short *c)
416 for(i=0; i<range; i++)
423 /* ?_Move_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
424 /* ?_Move_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
425 static unsigned short* MSVCP_char_traits_short__Move_s(unsigned short *dest,
426 MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
429 _invalid_parameter(NULL, NULL, NULL, 0, 0);
433 return memmove(dest, src, count * sizeof(unsigned short));
436 /* ?move@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
437 /* ?move@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
438 unsigned short* CDECL MSVCP_char_traits_short_move(unsigned short *dest,
439 const unsigned short *src, MSVCP_size_t count)
441 return MSVCP_char_traits_short__Move_s(dest, count, src, count);
444 /* ?assign@?$char_traits@G@std@@SAPAGPAGIG@Z */
445 /* ?assign@?$char_traits@G@std@@SAPEAGPEAG_KG@Z */
446 unsigned short* CDECL MSVCP_char_traits_short_assignn(unsigned short *str,
447 MSVCP_size_t num, unsigned short c)
457 /* ?to_char_type@?$char_traits@G@std@@SAGABG@Z */
458 /* ?to_char_type@?$char_traits@G@std@@SAGAEBG@Z */
459 unsigned short CDECL MSVCP_char_traits_short_to_char_type(const unsigned short *i)
464 /* ?to_int_type@?$char_traits@G@std@@SAGABG@Z */
465 /* ?to_int_type@?$char_traits@G@std@@SAGAEBG@Z */
466 unsigned short CDECL MSVCP_char_traits_short_to_int_type(const unsigned short *ch)
471 /* ?eq_int_type@?$char_traits@G@std@@SA_NABG0@Z */
472 /* ?eq_int_type@?$char_traits@G@std@@SA_NAEBG0@Z */
473 MSVCP_bool CDECL MSVCP_char_traits_short_eq_int_type(unsigned short *i1,
479 /* ?eof@?$char_traits@G@std@@SAGXZ */
480 unsigned short CDECL MSVCP_char_traits_short_eof(void)
485 /* ?not_eof@?$char_traits@G@std@@SAGABG@Z */
486 /* ?not_eof@?$char_traits@G@std@@SAGAEBG@Z */
487 unsigned short CDECL MSVCP_char_traits_short_not_eof(const unsigned short *in)
489 return (*in==(unsigned short)-1 ? 0 : *in);
494 static void MSVCP__String_base_Xlen(void)
496 static const char msg[] = "string too long";
499 throw_exception(EXCEPTION_LENGTH_ERROR, msg);
502 /* ?_Xlen@_String_base@std@@QBEXXZ */
503 DEFINE_THISCALL_WRAPPER(_String_base__Xlen, 4)
504 void __thiscall _String_base__Xlen(const void/*_String_base*/ *this)
506 MSVCP__String_base_Xlen();
509 static void MSVCP__String_base_Xran(void)
511 static const char msg[] = "invalid string position";
514 throw_exception(EXCEPTION_OUT_OF_RANGE, msg);
517 /* ?_Xran@_String_base@std@@QBEXXZ */
518 DEFINE_THISCALL_WRAPPER(_String_base__Xran, 4)
519 void __thiscall _String_base__Xran(const void/*_String_base*/ *this)
521 MSVCP__String_base_Xran();
524 /* basic_string<char, char_traits<char>, allocator<char>> */
525 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
526 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
527 const MSVCP_size_t MSVCP_basic_string_char_npos = -1;
529 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ */
530 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAPEADXZ */
531 DEFINE_THISCALL_WRAPPER(basic_string_char_ptr, 4)
532 char* __thiscall basic_string_char_ptr(basic_string_char *this)
534 if(this->res == BUF_SIZE_CHAR-1)
535 return this->data.buf;
536 return this->data.ptr;
539 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ */
540 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEBAPEBDXZ */
541 DEFINE_THISCALL_WRAPPER(basic_string_char_const_ptr, 4)
542 const char* __thiscall basic_string_char_const_ptr(const basic_string_char *this)
544 if(this->res == BUF_SIZE_CHAR-1)
545 return this->data.buf;
546 return this->data.ptr;
549 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z */
550 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K@Z */
551 DEFINE_THISCALL_WRAPPER(basic_string_char_eos, 8)
552 void __thiscall basic_string_char_eos(basic_string_char *this, MSVCP_size_t len)
554 static const char nullbyte = '\0';
557 MSVCP_char_traits_char_assign(basic_string_char_ptr(this)+len, &nullbyte);
560 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z */
561 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z */
562 DEFINE_THISCALL_WRAPPER(basic_string_char_inside, 8)
563 MSVCP_bool __thiscall basic_string_char_inside(
564 basic_string_char *this, const char *ptr)
566 char *cstr = basic_string_char_ptr(this);
568 return (ptr<cstr || ptr>=cstr+this->size) ? FALSE : TRUE;
571 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z */
572 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_N_K@Z */
573 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy, 12)
574 void __thiscall basic_string_char_tidy(basic_string_char *this,
575 MSVCP_bool built, MSVCP_size_t new_size)
577 if(built && BUF_SIZE_CHAR<=this->res) {
578 char *ptr = this->data.ptr;
581 MSVCP_char_traits_char__Copy_s(this->data.buf, BUF_SIZE_CHAR, ptr, new_size);
582 MSVCP_allocator_char_deallocate(this->allocator, ptr, this->res+1);
585 this->res = BUF_SIZE_CHAR-1;
586 basic_string_char_eos(this, new_size);
589 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z */
590 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_N_K_N@Z */
591 DEFINE_THISCALL_WRAPPER(basic_string_char_grow, 12)
592 MSVCP_bool __thiscall basic_string_char_grow(
593 basic_string_char *this, MSVCP_size_t new_size, MSVCP_bool trim)
595 if(this->res < new_size) {
596 MSVCP_size_t new_res = new_size, len = this->size;
601 if(new_res/3 < this->res/2)
602 new_res = this->res + this->res/2;
604 ptr = MSVCP_allocator_char_allocate(this->allocator, new_res+1);
606 ptr = MSVCP_allocator_char_allocate(this->allocator, new_size+1);
610 ERR("Out of memory\n");
611 basic_string_char_tidy(this, TRUE, 0);
615 MSVCP_char_traits_char__Copy_s(ptr, new_size,
616 basic_string_char_ptr(this), this->size);
617 basic_string_char_tidy(this, TRUE, 0);
618 this->data.ptr = ptr;
619 this->res = new_size;
620 basic_string_char_eos(this, len);
621 } else if(trim && new_size < BUF_SIZE_CHAR)
622 basic_string_char_tidy(this, TRUE,
623 new_size<this->size ? new_size : this->size);
624 else if(new_size == 0)
625 basic_string_char_eos(this, 0);
630 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z */
631 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0@Z */
632 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy, 12)
633 void __thiscall basic_string_char__Copy(basic_string_char *this,
634 MSVCP_size_t new_size, MSVCP_size_t copy_len)
636 TRACE("%p %lu %lu\n", this, new_size, copy_len);
638 if(!basic_string_char_grow(this, new_size, FALSE))
640 basic_string_char_eos(this, copy_len);
643 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KAIVconst_iterator@12@0@Z */
644 MSVCP_size_t __cdecl basic_string_char__Pdif(basic_string_char_iterator i1, basic_string_char_iterator i2)
646 TRACE("(%p %p)\n", i1.pos, i2.pos);
647 return !i1.pos ? 0 : i1.pos-i2.pos;
650 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
651 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
652 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator, 8)
653 allocator* __thiscall basic_string_char_get_allocator(const basic_string_char *this, allocator *ret)
659 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
660 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
661 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase, 12)
662 basic_string_char* __thiscall MSVCP_basic_string_char_erase(
663 basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t len)
665 TRACE("%p %lu %lu\n", this, pos, len);
668 MSVCP__String_base_Xran();
670 if(len > this->size-pos)
671 len = this->size-pos;
674 MSVCP_char_traits_char__Move_s(basic_string_char_ptr(this)+pos,
675 this->res-pos, basic_string_char_ptr(this)+pos+len,
677 basic_string_char_eos(this, this->size-len);
683 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@0@Z */
684 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter_range, 16)
685 basic_string_char_iterator* __thiscall basic_string_char_erase_iter_range(basic_string_char *this,
686 basic_string_char_iterator *ret, basic_string_char_iterator beg, basic_string_char_iterator end)
690 ret->pos = basic_string_char_ptr(this);
691 off = basic_string_char__Pdif(beg, *ret);
693 MSVCP_basic_string_char_erase(this, off, basic_string_char__Pdif(end, beg));
695 ret->pos = basic_string_char_ptr(this)+off;
699 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@@Z */
700 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter, 12)
701 basic_string_char_iterator* __thiscall basic_string_char_erase_iter(basic_string_char *this,
702 basic_string_char_iterator *ret, basic_string_char_iterator pos)
706 ret->pos = basic_string_char_ptr(this);
707 off = basic_string_char__Pdif(pos, *ret);
709 MSVCP_basic_string_char_erase(this, off, 1);
711 ret->pos = basic_string_char_ptr(this)+off;
715 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
716 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
717 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr, 16)
718 basic_string_char* __thiscall MSVCP_basic_string_char_assign_substr(
719 basic_string_char *this, const basic_string_char *assign,
720 MSVCP_size_t pos, MSVCP_size_t len)
722 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
724 if(assign->size < pos)
725 MSVCP__String_base_Xran();
727 if(len > assign->size-pos)
728 len = assign->size-pos;
731 MSVCP_basic_string_char_erase(this, pos+len, MSVCP_basic_string_char_npos);
732 MSVCP_basic_string_char_erase(this, 0, pos);
733 } else if(basic_string_char_grow(this, len, FALSE)) {
734 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
735 this->res, basic_string_char_const_ptr(assign)+pos, len);
736 basic_string_char_eos(this, len);
742 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
743 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
744 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
745 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
746 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign, 8)
747 basic_string_char* __thiscall MSVCP_basic_string_char_assign(
748 basic_string_char *this, const basic_string_char *assign)
750 return MSVCP_basic_string_char_assign_substr(this, assign,
751 0, MSVCP_basic_string_char_npos);
754 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
755 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
756 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len, 12)
757 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr_len(
758 basic_string_char *this, const char *str, MSVCP_size_t len)
760 TRACE("%p %s %lu\n", this, debugstr_an(str, len), len);
762 if(basic_string_char_inside(this, str))
763 return MSVCP_basic_string_char_assign_substr(this, this,
764 str-basic_string_char_ptr(this), len);
765 else if(basic_string_char_grow(this, len, FALSE)) {
766 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
767 this->res, str, len);
768 basic_string_char_eos(this, len);
774 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
775 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
776 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch, 8)
777 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ch(
778 basic_string_char *this, char ch)
780 return MSVCP_basic_string_char_assign_cstr_len(this, &ch, 1);
783 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
784 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
785 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
786 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
787 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr, 8)
788 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr(
789 basic_string_char *this, const char *str)
791 return MSVCP_basic_string_char_assign_cstr_len(this, str,
792 MSVCP_char_traits_char_length(str));
795 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
796 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
797 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn, 12)
798 basic_string_char* __thiscall MSVCP_basic_string_char_assignn(
799 basic_string_char *this, MSVCP_size_t count, char ch)
801 TRACE("%p %ld %c\n", this, count, ch);
803 basic_string_char_grow(this, count, FALSE);
804 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this), count, ch);
805 basic_string_char_eos(this, count);
809 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
810 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
811 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr, 12)
812 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ptr_ptr(
813 basic_string_char *this, const char *first, const char *last)
815 return MSVCP_basic_string_char_assign_cstr_len(this, first, last-first);
818 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
819 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_iter, 12)
820 basic_string_char* __thiscall MSVCP_basic_string_char_assign_iter(basic_string_char *this,
821 basic_string_char_iterator beg, basic_string_char_iterator end)
823 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
826 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADIII@Z */
827 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K11@Z */
828 static MSVCP_size_t MSVCP_basic_string_char_Copy_s(const basic_string_char *this,
829 char *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
831 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
834 MSVCP__String_base_Xran();
836 if(count > this->size-off)
837 count = this->size-off;
839 MSVCP_char_traits_char__Copy_s(dest, size,
840 basic_string_char_const_ptr(this)+off, count);
844 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
845 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
846 DEFINE_THISCALL_WRAPPER(basic_string_char_copy, 16)
847 MSVCP_size_t __thiscall basic_string_char_copy(const basic_string_char *this,
848 char *dest, MSVCP_size_t count, MSVCP_size_t off)
850 return MSVCP_basic_string_char_Copy_s(this, dest, count, count, off);
853 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
854 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
855 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
856 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
857 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str, 4)
858 const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char *this)
861 return basic_string_char_const_ptr(this);
864 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
865 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
866 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity, 4)
867 MSVCP_size_t __thiscall MSVCP_basic_string_char_capacity(basic_string_char *this)
873 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
874 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
875 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve, 8)
876 void __thiscall MSVCP_basic_string_char_reserve(basic_string_char *this, MSVCP_size_t size)
880 TRACE("%p %ld\n", this, size);
886 basic_string_char_grow(this, size, FALSE);
887 basic_string_char_eos(this, len);
890 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
891 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
892 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor, 4)
893 basic_string_char* __thiscall MSVCP_basic_string_char_ctor(basic_string_char *this)
897 basic_string_char_tidy(this, FALSE, 0);
901 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
902 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
903 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor, 8)
904 basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(
905 basic_string_char *this, const basic_string_char *copy)
907 TRACE("%p %p\n", this, copy);
909 basic_string_char_tidy(this, FALSE, 0);
910 MSVCP_basic_string_char_assign(this, copy);
914 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
915 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
916 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr, 8)
917 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr(
918 basic_string_char *this, const char *str)
920 TRACE("%p %s\n", this, debugstr_a(str));
922 basic_string_char_tidy(this, FALSE, 0);
923 MSVCP_basic_string_char_assign_cstr(this, str);
927 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
928 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
929 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc, 12)
930 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_alloc(
931 basic_string_char *this, const char *str, const void *alloc)
933 return MSVCP_basic_string_char_ctor_cstr(this, str);
936 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
937 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
938 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len, 12)
939 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len(
940 basic_string_char *this, const char *str, MSVCP_size_t len)
942 TRACE("%p %s %ld\n", this, debugstr_an(str, len), len);
944 basic_string_char_tidy(this, FALSE, 0);
945 MSVCP_basic_string_char_assign_cstr_len(this, str, len);
949 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
950 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
951 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc, 16)
952 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len_alloc(
953 basic_string_char *this, const char *str, MSVCP_size_t len, const void *alloc)
955 return MSVCP_basic_string_char_ctor_cstr_len(this, str, len);
958 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z */
959 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z */
960 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr, 16)
961 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr(
962 basic_string_char *this, const basic_string_char *assign,
963 MSVCP_size_t pos, MSVCP_size_t len)
965 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
967 basic_string_char_tidy(this, FALSE, 0);
968 MSVCP_basic_string_char_assign_substr(this, assign, pos, len);
972 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
973 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
974 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc, 20)
975 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr_alloc(
976 basic_string_char *this, const basic_string_char *assign,
977 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
979 return MSVCP_basic_string_char_ctor_substr(this, assign, pos, len);
982 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
983 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
984 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc, 8)
985 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_alloc(
986 basic_string_char *this, const void *alloc)
988 TRACE("%p %p\n", this, alloc);
990 basic_string_char_tidy(this, FALSE, 0);
994 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z */
995 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z */
996 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch, 12)
997 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch(basic_string_char *this,
998 MSVCP_size_t count, char ch)
1000 TRACE("%p %ld %c\n", this, count, ch);
1002 basic_string_char_tidy(this, FALSE, 0);
1003 MSVCP_basic_string_char_assignn(this, count, ch);
1007 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
1008 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
1009 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc, 16)
1010 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char *this,
1011 MSVCP_size_t count, char ch, const void *alloc)
1013 return MSVCP_basic_string_char_ctor_ch(this, count, ch);
1016 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z */
1017 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z */
1018 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ptr_ptr, 12)
1019 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ptr_ptr(basic_string_char *this,
1020 const char *first, const char *last)
1022 return MSVCP_basic_string_char_ctor_cstr_len(this, first, last-first);
1025 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@Vconst_iterator@01@0@Z */
1026 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter, 12)
1027 basic_string_char* __thiscall basic_string_char_ctor_iter(basic_string_char *this,
1028 basic_string_char_iterator beg, basic_string_char_iterator end)
1030 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
1033 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
1034 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
1035 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4)
1036 void __thiscall MSVCP_basic_string_char_dtor(basic_string_char *this)
1038 TRACE("%p\n", this);
1039 basic_string_char_tidy(this, TRUE, 0);
1042 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1043 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1044 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1045 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1046 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length, 4)
1047 MSVCP_size_t __thiscall MSVCP_basic_string_char_length(const basic_string_char *this)
1049 TRACE("%p\n", this);
1053 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1054 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1055 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size, 4)
1056 MSVCP_size_t __thiscall basic_string_char_max_size(const basic_string_char *this)
1058 TRACE("%p\n", this);
1059 return MSVCP_allocator_char_max_size(this->allocator)-1;
1062 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1063 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1064 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty, 4)
1065 MSVCP_bool __thiscall MSVCP_basic_string_char_empty(basic_string_char *this)
1067 TRACE("%p\n", this);
1068 return this->size == 0;
1071 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1072 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1073 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap, 8)
1074 void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_string_char *str)
1077 char tmp[sizeof(this->data)];
1078 const MSVCP_size_t size = this->size;
1079 const MSVCP_size_t res = this->res;
1081 memcpy(tmp, this->data.buf, sizeof(this->data));
1082 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
1083 memcpy(str->data.buf, tmp, sizeof(this->data));
1085 this->size = str->size;
1086 this->res = str->res;
1093 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1094 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1095 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr, 16)
1096 basic_string_char* __thiscall MSVCP_basic_string_char_substr(basic_string_char *this,
1097 basic_string_char *ret, MSVCP_size_t off, MSVCP_size_t len)
1099 TRACE("%p %lu %lu\n", this, off, len);
1101 MSVCP_basic_string_char_ctor_substr(ret, this, off, len);
1105 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1106 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1107 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr, 16)
1108 basic_string_char* __thiscall MSVCP_basic_string_char_append_substr(basic_string_char *this,
1109 const basic_string_char *append, MSVCP_size_t offset, MSVCP_size_t count)
1111 TRACE("%p %p %lu %lu\n", this, append, offset, count);
1113 if(append->size < offset)
1114 MSVCP__String_base_Xran();
1116 if(count > append->size-offset)
1117 count = append->size-offset;
1119 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1120 MSVCP__String_base_Xlen();
1122 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1123 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1124 this->res-this->size, basic_string_char_const_ptr(append)+offset, count);
1125 basic_string_char_eos(this, this->size+count);
1131 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1132 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1133 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1134 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1135 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append, 8)
1136 basic_string_char* __thiscall MSVCP_basic_string_char_append(
1137 basic_string_char *this, const basic_string_char *append)
1139 return MSVCP_basic_string_char_append_substr(this, append,
1140 0, MSVCP_basic_string_char_npos);
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(MSVCP_basic_string_char_append_cstr_len, 12)
1146 basic_string_char* __thiscall MSVCP_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_an(append, count), count);
1151 if(basic_string_char_inside(this, append))
1152 return MSVCP_basic_string_char_append_substr(this, this,
1153 append-basic_string_char_ptr(this), count);
1155 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1156 MSVCP__String_base_Xlen();
1158 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1159 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1160 this->res-this->size, append, count);
1161 basic_string_char_eos(this, this->size+count);
1167 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1168 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1169 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1170 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1171 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr, 8)
1172 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr(
1173 basic_string_char *this, const char *append)
1175 return MSVCP_basic_string_char_append_cstr_len(this, append,
1176 MSVCP_char_traits_char_length(append));
1179 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1180 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1181 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end, 12)
1182 basic_string_char* __thiscall MSVCP_basic_string_char_append_beg_end(
1183 basic_string_char *this, const char *beg, const char *end)
1185 return MSVCP_basic_string_char_append_cstr_len(this, beg, end-beg);
1188 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
1189 DEFINE_THISCALL_WRAPPER(basic_string_char_append_iter, 12)
1190 basic_string_char* __thiscall basic_string_char_append_iter(basic_string_char *this,
1191 basic_string_char_iterator beg, basic_string_char_iterator end)
1193 return basic_string_char_replace_cstr_len(this, this->size, 0, beg.pos, end.pos-beg.pos);
1196 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1197 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1198 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch, 12)
1199 basic_string_char* __thiscall MSVCP_basic_string_char_append_len_ch(
1200 basic_string_char *this, MSVCP_size_t count, char ch)
1202 TRACE("%p %lu %c\n", this, count, ch);
1204 if(MSVCP_basic_string_char_npos-this->size <= count)
1205 MSVCP__String_base_Xlen();
1207 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1208 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+this->size, count, ch);
1209 basic_string_char_eos(this, this->size+count);
1215 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1216 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1217 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXD@Z */
1218 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXD@Z */
1219 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch, 8)
1220 basic_string_char* __thiscall MSVCP_basic_string_char_append_ch(
1221 basic_string_char *this, char ch)
1223 return MSVCP_basic_string_char_append_len_ch(this, 1, ch);
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@PBD@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@PEBD@Z */
1228 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char *ret,
1229 const basic_string_char *left, const char *right)
1231 TRACE("%p %s\n", left, debugstr_a(right));
1233 MSVCP_basic_string_char_copy_ctor(ret, left);
1234 MSVCP_basic_string_char_append_cstr(ret, right);
1238 /* ??$?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 */
1239 /* ??$?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 */
1240 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char *ret,
1241 const char *left, const basic_string_char *right)
1243 TRACE("%s %p\n", debugstr_a(left), right);
1245 MSVCP_basic_string_char_ctor_cstr(ret, left);
1246 MSVCP_basic_string_char_append(ret, right);
1250 /* ??$?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 */
1251 /* ??$?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 */
1252 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate(basic_string_char *ret,
1253 const basic_string_char *left, const basic_string_char *right)
1255 TRACE("%p %p\n", left, right);
1257 MSVCP_basic_string_char_copy_ctor(ret, left);
1258 MSVCP_basic_string_char_append(ret, right);
1262 /* ??$?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 */
1263 /* ??$?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 */
1264 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char *ret,
1265 const basic_string_char *left, char right)
1267 TRACE("%p %c\n", left, right);
1269 MSVCP_basic_string_char_copy_ctor(ret, left);
1270 MSVCP_basic_string_char_append_ch(ret, right);
1274 /* ??$?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 */
1275 /* ??$?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 */
1276 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char *ret,
1277 char left, const basic_string_char *right)
1279 TRACE("%c %p\n", left, right);
1281 MSVCP_basic_string_char_ctor_cstr_len(ret, &left, 1);
1282 MSVCP_basic_string_char_append(ret, right);
1286 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
1287 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
1288 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20)
1289 int __thiscall MSVCP_basic_string_char_compare_substr_cstr_len(
1290 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1291 const char *str, MSVCP_size_t count)
1295 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_an(str, count), count);
1297 if(this->size < pos)
1298 MSVCP__String_base_Xran();
1300 if(num > this->size-pos)
1301 num = this->size-pos;
1303 ans = MSVCP_char_traits_char_compare(basic_string_char_const_ptr(this)+pos,
1304 str, num>count ? count : num);
1310 else if(num < count)
1315 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
1316 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
1317 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr, 16)
1318 int __thiscall MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char *this,
1319 MSVCP_size_t pos, MSVCP_size_t num, const char *str)
1321 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1322 str, MSVCP_char_traits_char_length(str));
1325 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
1326 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
1327 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr, 8)
1328 int __thiscall MSVCP_basic_string_char_compare_cstr(
1329 const basic_string_char *this, const char *str)
1331 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1332 str, MSVCP_char_traits_char_length(str));
1335 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
1336 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
1337 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr, 24)
1338 int __thiscall MSVCP_basic_string_char_compare_substr_substr(
1339 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1340 const basic_string_char *compare, MSVCP_size_t off, MSVCP_size_t count)
1342 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
1344 if(compare->size < off)
1345 MSVCP__String_base_Xran();
1347 if(count > compare->size-off)
1348 count = compare->size-off;
1350 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1351 basic_string_char_const_ptr(compare)+off, count);
1354 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
1355 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
1356 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr, 16)
1357 int __thiscall MSVCP_basic_string_char_compare_substr(
1358 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1359 const basic_string_char *compare)
1361 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1362 basic_string_char_const_ptr(compare), compare->size);
1365 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
1366 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
1367 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare, 8)
1368 int __thiscall MSVCP_basic_string_char_compare(
1369 const basic_string_char *this, const basic_string_char *compare)
1371 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1372 basic_string_char_const_ptr(compare), compare->size);
1375 /* ??$?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 */
1376 /* ??$?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 */
1377 MSVCP_bool __cdecl MSVCP_basic_string_char_equal(
1378 const basic_string_char *left, const basic_string_char *right)
1380 return MSVCP_basic_string_char_compare(left, right) == 0;
1383 /* ??$?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 */
1384 /* ??$?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 */
1385 MSVCP_bool __cdecl MSVCP_basic_string_char_equal_str_cstr(
1386 const basic_string_char *left, const char *right)
1388 return MSVCP_basic_string_char_compare_cstr(left, right) == 0;
1391 /* ??$?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 */
1392 /* ??$?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 */
1393 MSVCP_bool __cdecl MSVCP_basic_string_char_equal_cstr_str(
1394 const char *left, const basic_string_char *right)
1396 return MSVCP_basic_string_char_compare_cstr(right, left) == 0;
1399 /* ??$?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 */
1400 /* ??$?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 */
1401 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal(
1402 const basic_string_char *left, const basic_string_char *right)
1404 return MSVCP_basic_string_char_compare(left, right) != 0;
1407 /* ??$?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 */
1408 /* ??$?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 */
1409 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal_str_cstr(
1410 const basic_string_char *left, const char *right)
1412 return MSVCP_basic_string_char_compare_cstr(left, right) != 0;
1415 /* ??$?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 */
1416 /* ??$?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 */
1417 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal_cstr_str(
1418 const char *left, const basic_string_char *right)
1420 return MSVCP_basic_string_char_compare_cstr(right, left) != 0;
1423 /* ??$?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 */
1424 /* ??$?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 */
1425 MSVCP_bool __cdecl MSVCP_basic_string_char_lower(
1426 const basic_string_char *left, const basic_string_char *right)
1428 return MSVCP_basic_string_char_compare(left, right) < 0;
1431 /* ??$?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 */
1432 /* ??$?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 */
1433 MSVCP_bool __cdecl MSVCP_basic_string_char_lower_bstr_cstr(
1434 const basic_string_char *left, const char *right)
1436 return MSVCP_basic_string_char_compare_cstr(left, right) < 0;
1439 /* ??$?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 */
1440 /* ??$?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 */
1441 MSVCP_bool __cdecl MSVCP_basic_string_char_lower_cstr_bstr(
1442 const char *left, const basic_string_char *right)
1444 return MSVCP_basic_string_char_compare_cstr(right, left) > 0;
1447 /* ??$?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 */
1448 /* ??$?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 */
1449 MSVCP_bool __cdecl MSVCP_basic_string_char_leq(
1450 const basic_string_char *left, const basic_string_char *right)
1452 return MSVCP_basic_string_char_compare(left, right) <= 0;
1455 /* ??$?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 */
1456 /* ??$?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 */
1457 MSVCP_bool __cdecl MSVCP_basic_string_char_leq_bstr_cstr(
1458 const basic_string_char *left, const char *right)
1460 return MSVCP_basic_string_char_compare_cstr(left, right) <= 0;
1463 /* ??$?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 */
1464 /* ??$?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 */
1465 MSVCP_bool __cdecl MSVCP_basic_string_char_leq_cstr_bstr(
1466 const char *left, const basic_string_char *right)
1468 return MSVCP_basic_string_char_compare_cstr(right, left) >= 0;
1471 /* ??$?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 */
1472 /* ??$?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 */
1473 MSVCP_bool __cdecl MSVCP_basic_string_char_greater(
1474 const basic_string_char *left, const basic_string_char *right)
1476 return MSVCP_basic_string_char_compare(left, right) > 0;
1479 /* ??$?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 */
1480 /* ??$?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 */
1481 MSVCP_bool __cdecl MSVCP_basic_string_char_greater_bstr_cstr(
1482 const basic_string_char *left, const char *right)
1484 return MSVCP_basic_string_char_compare_cstr(left, right) > 0;
1487 /* ??$?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 */
1488 /* ??$?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 */
1489 MSVCP_bool __cdecl MSVCP_basic_string_char_greater_cstr_bstr(
1490 const char *left, const basic_string_char *right)
1492 return MSVCP_basic_string_char_compare_cstr(right, left) < 0;
1495 /* ??$?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 */
1496 /* ??$?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 */
1497 MSVCP_bool __cdecl MSVCP_basic_string_char_geq(
1498 const basic_string_char *left, const basic_string_char *right)
1500 return MSVCP_basic_string_char_compare(left, right) >= 0;
1503 /* ??$?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 */
1504 /* ??$?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 */
1505 MSVCP_bool __cdecl MSVCP_basic_string_char_geq_bstr_cstr(
1506 const basic_string_char *left, const char *right)
1508 return MSVCP_basic_string_char_compare_cstr(left, right) >= 0;
1511 /* ??$?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 */
1512 /* ??$?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 */
1513 MSVCP_bool __cdecl MSVCP_basic_string_char_geq_cstr_bstr(
1514 const char *left, const basic_string_char *right)
1516 return MSVCP_basic_string_char_compare_cstr(right, left) <= 0;
1519 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1520 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1521 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr, 16)
1522 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_substr(
1523 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1525 const char *p, *end;
1527 TRACE("%p %s %lu %lu\n", this, debugstr_an(find, len), pos, len);
1529 if(len==0 && pos<=this->size)
1532 end = basic_string_char_const_ptr(this)+this->size-len+1;
1533 for(p=basic_string_char_const_ptr(this)+pos; p<end; p++) {
1534 p = MSVCP_char_traits_char_find(p, end-p, find);
1538 if(!MSVCP_char_traits_char_compare(p, find, len))
1539 return p-basic_string_char_const_ptr(this);
1542 return MSVCP_basic_string_char_npos;
1545 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1546 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1547 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off, 12)
1548 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_off(
1549 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1551 return MSVCP_basic_string_char_find_cstr_substr(this, find, pos,
1552 MSVCP_char_traits_char_length(find));
1555 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1556 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1557 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off, 12)
1558 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_off(
1559 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1561 return MSVCP_basic_string_char_find_cstr_substr(this,
1562 basic_string_char_const_ptr(find), off, find->size);
1565 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1566 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1567 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch, 12)
1568 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_ch(
1569 const basic_string_char *this, char ch, MSVCP_size_t pos)
1571 return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1);
1574 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1575 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1576 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr, 16)
1577 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_substr(
1578 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1580 const char *p, *end;
1582 TRACE("%p %s %lu %lu\n", this, debugstr_an(find, len), pos, len);
1585 return pos<this->size ? pos : this->size;
1587 if(len > this->size)
1588 return MSVCP_basic_string_char_npos;
1590 if(pos > this->size-len+1)
1591 pos = this->size-len+1;
1592 end = basic_string_char_const_ptr(this);
1593 for(p=end+pos; p>=end; p--) {
1594 if(*p==*find && !MSVCP_char_traits_char_compare(p, find, len))
1595 return p-basic_string_char_const_ptr(this);
1598 return MSVCP_basic_string_char_npos;
1601 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1602 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1603 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off, 12)
1604 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_off(
1605 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1607 return MSVCP_basic_string_char_rfind_cstr_substr(this, find, pos,
1608 MSVCP_char_traits_char_length(find));
1611 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1612 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1613 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off, 12)
1614 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_off(
1615 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1617 return MSVCP_basic_string_char_rfind_cstr_substr(this,
1618 basic_string_char_const_ptr(find), off, find->size);
1621 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1622 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1623 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch, 12)
1624 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_ch(
1625 const basic_string_char *this, char ch, MSVCP_size_t pos)
1627 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch, pos, 1);
1630 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1631 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1632 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr, 16)
1633 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr_substr(
1634 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1636 const char *p, *end;
1638 TRACE("%p %p %lu %lu\n", this, find, off, len);
1640 if(len>0 && off<this->size) {
1641 end = basic_string_char_const_ptr(this)+this->size;
1642 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1643 if(MSVCP_char_traits_char_find(find, len, p))
1644 return p-basic_string_char_const_ptr(this);
1647 return MSVCP_basic_string_char_npos;
1650 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1651 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1652 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of, 12)
1653 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of(
1654 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1656 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1657 basic_string_char_const_ptr(find), off, find->size);
1660 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1661 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1662 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr, 12)
1663 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr(
1664 const basic_string_char *this, const char *find, MSVCP_size_t off)
1666 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1667 this, find, off, MSVCP_char_traits_char_length(find));
1670 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1671 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1672 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch, 12)
1673 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_ch(
1674 const basic_string_char *this, char ch, MSVCP_size_t off)
1676 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch, off, 1);
1679 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1680 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1681 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr, 16)
1682 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1683 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1685 const char *p, *end;
1687 TRACE("%p %p %lu %lu\n", this, find, off, len);
1689 if(off<this->size) {
1690 end = basic_string_char_const_ptr(this)+this->size;
1691 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1692 if(!MSVCP_char_traits_char_find(find, len, p))
1693 return p-basic_string_char_const_ptr(this);
1696 return MSVCP_basic_string_char_npos;
1699 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1700 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1701 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of, 12)
1702 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of(
1703 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1705 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1706 basic_string_char_const_ptr(find), off, find->size);
1709 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1710 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1711 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr, 12)
1712 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr(
1713 const basic_string_char *this, const char *find, MSVCP_size_t off)
1715 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1716 this, find, off, MSVCP_char_traits_char_length(find));
1719 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1720 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1721 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch, 12)
1722 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_ch(
1723 const basic_string_char *this, char ch, MSVCP_size_t off)
1725 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch, off, 1);
1728 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1729 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1730 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr, 16)
1731 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr_substr(
1732 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1734 const char *p, *beg;
1736 TRACE("%p %p %lu %lu\n", this, find, off, len);
1738 if(len>0 && this->size>0) {
1739 if(off >= this->size)
1742 beg = basic_string_char_const_ptr(this);
1743 for(p=beg+off; p>=beg; p--)
1744 if(MSVCP_char_traits_char_find(find, len, p))
1748 return MSVCP_basic_string_char_npos;
1751 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1752 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1753 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of, 12)
1754 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of(
1755 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1757 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1758 basic_string_char_const_ptr(find), off, find->size);
1761 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1762 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1763 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr, 12)
1764 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr(
1765 const basic_string_char *this, const char *find, MSVCP_size_t off)
1767 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1768 this, find, off, MSVCP_char_traits_char_length(find));
1771 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1772 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1773 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch, 12)
1774 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_ch(
1775 const basic_string_char *this, char ch, MSVCP_size_t off)
1777 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch, off, 1);
1780 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1781 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1782 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr, 16)
1783 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1784 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1786 const char *p, *beg;
1788 TRACE("%p %p %lu %lu\n", this, find, off, len);
1790 if(len>0 && this->size>0) {
1791 if(off >= this->size)
1794 beg = basic_string_char_const_ptr(this);
1795 for(p=beg+off; p>=beg; p--)
1796 if(!MSVCP_char_traits_char_find(find, len, p))
1800 return MSVCP_basic_string_char_npos;
1803 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1804 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1805 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of, 12)
1806 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of(
1807 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1809 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1810 basic_string_char_const_ptr(find), off, find->size);
1813 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1814 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1815 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr, 12)
1816 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr(
1817 const basic_string_char *this, const char *find, MSVCP_size_t off)
1819 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1820 this, find, off, MSVCP_char_traits_char_length(find));
1823 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1824 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1825 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch, 12)
1826 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_ch(
1827 const basic_string_char *this, char ch, MSVCP_size_t off)
1829 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch, off, 1);
1832 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1833 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1834 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at, 8)
1835 char* __thiscall MSVCP_basic_string_char_operator_at(
1836 basic_string_char *this, MSVCP_size_t pos)
1838 TRACE("%p %lu\n", this, pos);
1840 assert(this->size >= pos);
1841 return basic_string_char_ptr(this)+pos;
1844 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1845 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1846 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_operator_at, 8)
1847 const char* __thiscall MSVCP_basic_string_char_const_operator_at(
1848 const basic_string_char *this, MSVCP_size_t pos)
1850 TRACE("%p %lu\n", this, pos);
1852 assert(this->size >= pos);
1853 return basic_string_char_const_ptr(this)+pos;
1856 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1857 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1858 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at, 8)
1859 char* __thiscall MSVCP_basic_string_char_at(
1860 basic_string_char *this, MSVCP_size_t pos)
1862 TRACE("%p %lu\n", this, pos);
1864 if(this->size <= pos)
1865 MSVCP__String_base_Xran();
1867 return basic_string_char_ptr(this)+pos;
1870 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1871 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1872 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_at, 8)
1873 const char* __thiscall MSVCP_basic_string_char_const_at(
1874 const basic_string_char *this, MSVCP_size_t pos)
1876 TRACE("%p %lu\n", this, pos);
1878 if(this->size <= pos)
1879 MSVCP__String_base_Xran();
1881 return basic_string_char_const_ptr(this)+pos;
1884 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1885 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1886 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len, 20)
1887 basic_string_char* __thiscall basic_string_char_replace_cstr_len(basic_string_char *this,
1888 MSVCP_size_t off, MSVCP_size_t len, const char *str, MSVCP_size_t str_len)
1890 MSVCP_size_t inside_pos = -1;
1891 char *ptr = basic_string_char_ptr(this);
1893 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
1895 if(this->size < off)
1896 MSVCP__String_base_Xran();
1898 if(len > this->size-off)
1899 len = this->size-off;
1901 if(MSVCP_basic_string_char_npos-str_len <= this->size-len)
1902 MSVCP__String_base_Xlen();
1904 if(basic_string_char_inside(this, str))
1905 inside_pos = str-ptr;
1908 basic_string_char_grow(this, this->size-len+str_len, FALSE);
1909 ptr = basic_string_char_ptr(this);
1912 if(inside_pos == -1) {
1913 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1914 memcpy(ptr+off, str, str_len*sizeof(char));
1915 } else if(len >= str_len) {
1916 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(char));
1917 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1921 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1923 if(inside_pos < off+len) {
1924 size = off+len-inside_pos;
1927 memmove(ptr+off, ptr+inside_pos, size*sizeof(char));
1933 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(char));
1936 basic_string_char_eos(this, this->size-len+str_len);
1940 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
1941 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
1942 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr, 16)
1943 basic_string_char* __thiscall basic_string_char_replace_cstr(basic_string_char *this,
1944 MSVCP_size_t off, MSVCP_size_t len, const char *str)
1946 return basic_string_char_replace_cstr_len(this, off, len, str,
1947 MSVCP_char_traits_char_length(str));
1950 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
1951 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
1952 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr, 24)
1953 basic_string_char* __thiscall basic_string_char_replace_substr(basic_string_char *this, MSVCP_size_t off,
1954 MSVCP_size_t len, const basic_string_char *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
1956 if(str->size < str_off)
1957 MSVCP__String_base_Xran();
1959 if(str_len > str->size-str_off)
1960 str_len = str->size-str_off;
1962 return basic_string_char_replace_cstr_len(this, off, len,
1963 basic_string_char_const_ptr(str)+str_off, str_len);
1966 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
1967 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
1968 DEFINE_THISCALL_WRAPPER(basic_string_char_replace, 16)
1969 basic_string_char* __thiscall basic_string_char_replace(basic_string_char *this,
1970 MSVCP_size_t off, MSVCP_size_t len, const basic_string_char *str)
1972 return basic_string_char_replace_cstr_len(this, off, len,
1973 basic_string_char_const_ptr(str), str->size);
1976 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
1977 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
1978 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch, 20)
1979 basic_string_char* __thiscall basic_string_char_replace_ch(basic_string_char *this,
1980 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, char ch)
1982 char *ptr = basic_string_char_ptr(this);
1984 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
1986 if(this->size < off)
1987 MSVCP__String_base_Xran();
1989 if(len > this->size-off)
1990 len = this->size-off;
1992 if(MSVCP_basic_string_char_npos-count <= this->size-len)
1993 MSVCP__String_base_Xlen();
1996 basic_string_char_grow(this, this->size-len+count, FALSE);
1997 ptr = basic_string_char_ptr(this);
2000 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(char));
2001 MSVCP_char_traits_char_assignn(ptr+off, count, ch);
2002 basic_string_char_eos(this, this->size-len+count);
2007 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
2008 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter, 20)
2009 basic_string_char* __thiscall basic_string_char_replace_iter_iter(basic_string_char *this,
2010 basic_string_char_iterator beg, basic_string_char_iterator end,
2011 basic_string_char_iterator rbeg, basic_string_char_iterator rend)
2013 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
2014 end.pos-beg.pos, rbeg.pos, rend.pos-rbeg.pos);
2017 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
2018 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr, 16)
2019 basic_string_char* __thiscall basic_string_char_replace_iter_bstr(basic_string_char *this,
2020 basic_string_char_iterator beg, basic_string_char_iterator end, basic_string_char *str)
2022 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
2023 end.pos-beg.pos, basic_string_char_ptr(str), str->size);
2026 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ID@Z */
2027 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ch, 20)
2028 basic_string_char* __thiscall basic_string_char_replace_iter_ch(basic_string_char *this,
2029 basic_string_char_iterator beg, basic_string_char_iterator end, MSVCP_size_t count, char ch)
2031 /* TODO: add more efficient implementation */
2032 MSVCP_size_t off = beg.pos-basic_string_char_ptr(this);
2034 basic_string_char_replace_cstr_len(this, off, end.pos-beg.pos, NULL, 0);
2036 basic_string_char_replace_cstr_len(this, off, 0, &ch, 1);
2040 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD1@Z */
2041 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_beg_end, 20)
2042 basic_string_char* __thiscall basic_string_char_replace_iter_beg_end(basic_string_char *this,
2043 basic_string_char_iterator beg, basic_string_char_iterator end, const char *rbeg, const char *rend)
2045 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
2046 end.pos-beg.pos, rbeg, rend-rbeg);
2049 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD@Z */
2050 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr, 16)
2051 basic_string_char* __thiscall basic_string_char_replace_iter_cstr(basic_string_char *this,
2052 basic_string_char_iterator beg, basic_string_char_iterator end, const char *str)
2054 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
2055 end.pos-beg.pos, str, strlen(str));
2058 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBDI@Z */
2059 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len, 20)
2060 basic_string_char* __thiscall basic_string_char_replace_iter_cstr_len(basic_string_char *this,
2061 basic_string_char_iterator beg, basic_string_char_iterator end, const char *str, MSVCP_size_t len)
2063 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
2064 end.pos-beg.pos, str, len);
2067 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
2068 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
2069 DEFINE_THISCALL_WRAPPER(basic_string_char_insert, 12)
2070 basic_string_char* __thiscall basic_string_char_insert(basic_string_char *this,
2071 MSVCP_size_t off, const basic_string_char *str)
2073 return basic_string_char_replace(this, off, 0, str);
2076 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
2077 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
2078 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr, 20)
2079 basic_string_char* __thiscall basic_string_char_insert_substr(
2080 basic_string_char *this, MSVCP_size_t off, const basic_string_char *str,
2081 MSVCP_size_t str_off, MSVCP_size_t str_count)
2083 return basic_string_char_replace_substr(this, off, 0, str, str_off, str_count);
2086 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
2087 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
2088 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr, 12)
2089 basic_string_char* __thiscall basic_string_char_insert_cstr(
2090 basic_string_char *this, MSVCP_size_t off, const char *str)
2092 return basic_string_char_replace_cstr(this, off, 0, str);
2095 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
2096 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
2097 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len, 16)
2098 basic_string_char* __thiscall basic_string_char_insert_cstr_len(basic_string_char *this,
2099 MSVCP_size_t off, const char *str, MSVCP_size_t str_len)
2101 return basic_string_char_replace_cstr_len(this, off, 0, str, str_len);
2104 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
2105 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
2106 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn, 16)
2107 basic_string_char* __thiscall basic_string_char_insert_chn(basic_string_char *this,
2108 MSVCP_size_t off, MSVCP_size_t count, char ch)
2110 return basic_string_char_replace_ch(this, off, 0, count, ch);
2113 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@ID@Z */
2114 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn, 16)
2115 void __thiscall basic_string_char_insert_iter_chn(basic_string_char *this,
2116 basic_string_char_iterator where, MSVCP_size_t count, char ch)
2118 basic_string_char_iterator iter = { basic_string_char_ptr(this) };
2119 MSVCP_size_t off = basic_string_char__Pdif(where, iter);
2121 basic_string_char_insert_chn(this, off, count, ch);
2124 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@D@Z */
2125 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch, 16)
2126 basic_string_char_iterator* __thiscall basic_string_char_insert_iter_ch(basic_string_char *this,
2127 basic_string_char_iterator *ret, basic_string_char_iterator where, char ch)
2131 ret->pos = basic_string_char_ptr(this);
2132 off = basic_string_char__Pdif(where, *ret);
2134 basic_string_char_insert_chn(this, off, 1, ch);
2135 ret->pos = basic_string_char_ptr(this)+off;
2139 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@@Z */
2140 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_null, 12)
2141 basic_string_char_iterator* __thiscall basic_string_char_insert_iter_null(basic_string_char *this,
2142 basic_string_char_iterator *ret, basic_string_char_iterator where)
2144 return basic_string_char_insert_iter_ch(this, ret, where, 0);
2147 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
2148 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
2149 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12)
2150 void __thiscall MSVCP_basic_string_char_resize_ch(
2151 basic_string_char *this, MSVCP_size_t size, char ch)
2153 TRACE("%p %lu %c\n", this, size, ch);
2155 if(size <= this->size)
2156 MSVCP_basic_string_char_erase(this, size, this->size);
2158 MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch);
2161 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
2162 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
2163 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize, 8)
2164 void __thiscall MSVCP_basic_string_char_resize(
2165 basic_string_char *this, MSVCP_size_t size)
2167 MSVCP_basic_string_char_resize_ch(this, size, '\0');
2170 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
2171 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
2172 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear, 4)
2173 void __thiscall MSVCP_basic_string_char_clear(basic_string_char *this)
2175 basic_string_char_eos(this, 0);
2178 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */
2179 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */
2180 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2181 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2182 DEFINE_THISCALL_WRAPPER(basic_string_char_begin, 8)
2183 basic_string_char_iterator* __thiscall basic_string_char_begin(
2184 basic_string_char *this, basic_string_char_iterator *ret)
2186 ret->pos = basic_string_char_ptr(this);
2190 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */
2191 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */
2192 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2193 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2194 DEFINE_THISCALL_WRAPPER(basic_string_char_end, 8)
2195 basic_string_char_iterator* __thiscall basic_string_char_end(
2196 basic_string_char *this, basic_string_char_iterator *ret)
2198 ret->pos = basic_string_char_ptr(this)+this->size;
2202 /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
2203 /* basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short>> */
2204 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */
2205 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2_KB */
2206 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
2207 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
2208 const MSVCP_size_t MSVCP_basic_string_wchar_npos = -1;
2210 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ */
2211 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAPEA_WXZ */
2212 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEPAGXZ */
2213 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAPEAGXZ */
2214 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ptr, 4)
2215 wchar_t* __thiscall basic_string_wchar_ptr(basic_string_wchar *this)
2217 if(this->res == BUF_SIZE_WCHAR-1)
2218 return this->data.buf;
2219 return this->data.ptr;
2222 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IBEPB_WXZ */
2223 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEBAPEB_WXZ */
2224 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IBEPBGXZ */
2225 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEBAPEBGXZ */
2226 DEFINE_THISCALL_WRAPPER(basic_string_wchar_const_ptr, 4)
2227 const wchar_t* __thiscall basic_string_wchar_const_ptr(const basic_string_wchar *this)
2229 if(this->res == BUF_SIZE_WCHAR-1)
2230 return this->data.buf;
2231 return this->data.ptr;
2234 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXI@Z */
2235 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K@Z */
2236 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXI@Z */
2237 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K@Z */
2238 DEFINE_THISCALL_WRAPPER(basic_string_wchar_eos, 8)
2239 void __thiscall basic_string_wchar_eos(basic_string_wchar *this, MSVCP_size_t len)
2241 static const wchar_t nullbyte_w = '\0';
2244 MSVCP_char_traits_wchar_assign(basic_string_wchar_ptr(this)+len, &nullbyte_w);
2247 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NPB_W@Z */
2248 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_NPEB_W@Z */
2249 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z */
2250 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_NPEBG@Z */
2251 DEFINE_THISCALL_WRAPPER(basic_string_wchar_inside, 8)
2252 MSVCP_bool __thiscall basic_string_wchar_inside(
2253 basic_string_wchar *this, const wchar_t *ptr)
2255 wchar_t *cstr = basic_string_wchar_ptr(this);
2257 return (ptr<cstr || ptr>=cstr+this->size) ? FALSE : TRUE;
2260 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEX_NI@Z */
2261 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_N_K@Z */
2262 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEX_NI@Z */
2263 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_N_K@Z */
2264 DEFINE_THISCALL_WRAPPER(basic_string_wchar_tidy, 12)
2265 void __thiscall basic_string_wchar_tidy(basic_string_wchar *this,
2266 MSVCP_bool built, MSVCP_size_t new_size)
2268 if(built && BUF_SIZE_WCHAR<=this->res) {
2269 wchar_t *ptr = this->data.ptr;
2272 MSVCP_char_traits_wchar__Copy_s(this->data.buf, BUF_SIZE_WCHAR, ptr, new_size);
2273 MSVCP_allocator_wchar_deallocate(this->allocator, ptr, this->res+1);
2276 this->res = BUF_SIZE_WCHAR-1;
2277 basic_string_wchar_eos(this, new_size);
2280 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NI_N@Z */
2281 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_N_K_N@Z */
2282 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NI_N@Z */
2283 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_N_K_N@Z */
2284 DEFINE_THISCALL_WRAPPER(basic_string_wchar_grow, 12)
2285 MSVCP_bool __thiscall basic_string_wchar_grow(
2286 basic_string_wchar *this, MSVCP_size_t new_size, MSVCP_bool trim)
2288 if(this->res < new_size) {
2289 MSVCP_size_t new_res = new_size, len = this->size;
2294 if(new_res/3 < this->res/2)
2295 new_res = this->res + this->res/2;
2297 ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_res+1);
2299 ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_size+1);
2303 ERR("Out of memory\n");
2304 basic_string_wchar_tidy(this, TRUE, 0);
2308 MSVCP_char_traits_wchar__Copy_s(ptr, new_size,
2309 basic_string_wchar_ptr(this), this->size);
2310 basic_string_wchar_tidy(this, TRUE, 0);
2311 this->data.ptr = ptr;
2312 this->res = new_size;
2313 basic_string_wchar_eos(this, len);
2314 } else if(trim && new_size < BUF_SIZE_WCHAR)
2315 basic_string_wchar_tidy(this, TRUE,
2316 new_size<this->size ? new_size : this->size);
2317 else if(new_size == 0)
2318 basic_string_wchar_eos(this, 0);
2320 return (new_size>0);
2323 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII@Z */
2324 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0@Z */
2325 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXII@Z */
2326 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0@Z */
2327 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy, 12)
2328 void __thiscall basic_string_wchar__Copy(basic_string_wchar *this,
2329 MSVCP_size_t new_size, MSVCP_size_t copy_len)
2331 TRACE("%p %lu %lu\n", this, new_size, copy_len);
2333 if(!basic_string_wchar_grow(this, new_size, FALSE))
2335 basic_string_wchar_eos(this, copy_len);
2338 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIVconst_iterator@12@0@Z */
2339 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@KAIVconst_iterator@12@0@Z */
2340 MSVCP_size_t __cdecl basic_string_wchar__Pdif(basic_string_wchar_iterator i1, basic_string_wchar_iterator i2)
2342 TRACE("(%p %p)\n", i1.pos, i2.pos);
2343 return !i1.pos ? 0 : i1.pos-i2.pos;
2346 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ */
2347 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ */
2348 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
2349 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
2350 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator, 8)
2351 allocator* __thiscall basic_string_wchar_get_allocator(const basic_string_wchar *this, allocator *ret)
2353 TRACE("%p\n", this);
2357 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z */
2358 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z */
2359 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
2360 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
2361 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase, 12)
2362 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_erase(
2363 basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t len)
2365 TRACE("%p %lu %lu\n", this, pos, len);
2367 if(pos > this->size)
2368 MSVCP__String_base_Xran();
2370 if(len > this->size-pos)
2371 len = this->size-pos;
2374 MSVCP_char_traits_wchar__Move_s(basic_string_wchar_ptr(this)+pos,
2375 this->res-pos, basic_string_wchar_ptr(this)+pos+len,
2376 this->size-pos-len);
2377 basic_string_wchar_eos(this, this->size-len);
2383 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@0@Z */
2384 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@0@Z */
2385 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter_range, 16)
2386 basic_string_wchar_iterator* __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this,
2387 basic_string_wchar_iterator *ret, basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
2391 ret->pos = basic_string_wchar_ptr(this);
2392 off = basic_string_wchar__Pdif(beg, *ret);
2394 MSVCP_basic_string_wchar_erase(this, off, basic_string_wchar__Pdif(end, beg));
2396 ret->pos = basic_string_wchar_ptr(this)+off;
2400 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@@Z */
2401 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z */
2402 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter, 12)
2403 basic_string_wchar_iterator* __thiscall basic_string_wchar_erase_iter(basic_string_wchar *this,
2404 basic_string_wchar_iterator *ret, basic_string_wchar_iterator pos)
2408 ret->pos = basic_string_wchar_ptr(this);
2409 off = basic_string_wchar__Pdif(pos, *ret);
2411 MSVCP_basic_string_wchar_erase(this, off, 1);
2413 ret->pos = basic_string_wchar_ptr(this)+off;
2417 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2418 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2419 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2420 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2421 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr, 16)
2422 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_substr(
2423 basic_string_wchar *this, const basic_string_wchar *assign,
2424 MSVCP_size_t pos, MSVCP_size_t len)
2426 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2428 if(assign->size < pos)
2429 MSVCP__String_base_Xran();
2431 if(len > assign->size-pos)
2432 len = assign->size-pos;
2434 if(this == assign) {
2435 MSVCP_basic_string_wchar_erase(this, pos+len, MSVCP_basic_string_wchar_npos);
2436 MSVCP_basic_string_wchar_erase(this, 0, pos);
2437 } else if(basic_string_wchar_grow(this, len, FALSE)) {
2438 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2439 this->res, basic_string_wchar_const_ptr(assign)+pos, len);
2440 basic_string_wchar_eos(this, len);
2446 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2447 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2448 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2449 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2450 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2451 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2452 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2453 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2454 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign, 8)
2455 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign(
2456 basic_string_wchar *this, const basic_string_wchar *assign)
2458 return MSVCP_basic_string_wchar_assign_substr(this, assign,
2459 0, MSVCP_basic_string_wchar_npos);
2462 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2463 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2464 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2465 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2466 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len, 12)
2467 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr_len(
2468 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2470 TRACE("%p %s %lu\n", this, debugstr_wn(str, len), len);
2472 if(basic_string_wchar_inside(this, str))
2473 return MSVCP_basic_string_wchar_assign_substr(this, this,
2474 str-basic_string_wchar_ptr(this), len);
2475 else if(basic_string_wchar_grow(this, len, FALSE)) {
2476 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2477 this->res, str, len);
2478 basic_string_wchar_eos(this, len);
2484 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2485 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2486 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2487 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2488 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch, 8)
2489 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ch(
2490 basic_string_wchar *this, wchar_t ch)
2492 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch, 1);
2495 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2496 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2497 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2498 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2499 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2500 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2501 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2502 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2503 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr, 8)
2504 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr(
2505 basic_string_wchar *this, const wchar_t *str)
2507 return MSVCP_basic_string_wchar_assign_cstr_len(this, str,
2508 MSVCP_char_traits_wchar_length(str));
2511 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2512 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2513 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2514 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2515 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn, 12)
2516 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assignn(
2517 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2519 TRACE("%p %ld %c\n", this, count, ch);
2521 basic_string_wchar_grow(this, count, FALSE);
2522 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this), count, ch);
2523 basic_string_wchar_eos(this, count);
2527 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2528 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2529 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2530 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2531 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr, 12)
2532 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ptr_ptr(
2533 basic_string_wchar *this, const wchar_t *first, const wchar_t *last)
2535 return MSVCP_basic_string_wchar_assign_cstr_len(this, first, last-first);
2538 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
2539 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
2540 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_iter, 12)
2541 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_iter(basic_string_wchar *this,
2542 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
2544 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
2547 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WIII@Z */
2548 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K11@Z */
2549 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGIII@Z */
2550 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K11@Z */
2551 static MSVCP_size_t MSVCP_basic_string_wchar_Copy_s(const basic_string_wchar *this,
2552 wchar_t *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
2554 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
2556 if(this->size < off)
2557 MSVCP__String_base_Xran();
2559 if(count > this->size-off)
2560 count = this->size-off;
2562 MSVCP_char_traits_wchar__Copy_s(dest, size,
2563 basic_string_wchar_const_ptr(this)+off, count);
2567 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WII@Z */
2568 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K1@Z */
2569 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
2570 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
2571 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy, 16)
2572 MSVCP_size_t __thiscall basic_string_wchar_copy(const basic_string_wchar *this,
2573 wchar_t *dest, MSVCP_size_t count, MSVCP_size_t off)
2575 return MSVCP_basic_string_wchar_Copy_s(this, dest, count, count, off);
2578 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2579 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2580 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2581 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2582 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2583 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2584 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2585 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2586 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str, 4)
2587 const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar *this)
2589 TRACE("%p\n", this);
2590 return basic_string_wchar_const_ptr(this);
2593 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2594 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2595 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2596 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2597 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity, 4)
2598 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_capacity(basic_string_wchar *this)
2600 TRACE("%p\n", this);
2604 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
2605 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
2606 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
2607 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
2608 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve, 8)
2609 void __thiscall MSVCP_basic_string_wchar_reserve(basic_string_wchar *this, MSVCP_size_t size)
2613 TRACE("%p %ld\n", this, size);
2619 basic_string_wchar_grow(this, size, FALSE);
2620 basic_string_wchar_eos(this, len);
2623 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2624 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2625 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2626 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2627 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor, 4)
2628 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor(basic_string_wchar *this)
2630 TRACE("%p\n", this);
2632 basic_string_wchar_tidy(this, FALSE, 0);
2636 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z */
2637 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z */
2638 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2639 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2640 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor, 8)
2641 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_copy_ctor(
2642 basic_string_wchar *this, const basic_string_wchar *copy)
2644 TRACE("%p %p\n", this, copy);
2646 basic_string_wchar_tidy(this, FALSE, 0);
2647 MSVCP_basic_string_wchar_assign(this, copy);
2651 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2652 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2653 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2654 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2655 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr, 8)
2656 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(
2657 basic_string_wchar *this, const wchar_t *str)
2659 TRACE("%p %s\n", this, debugstr_w(str));
2661 basic_string_wchar_tidy(this, FALSE, 0);
2662 MSVCP_basic_string_wchar_assign_cstr(this, str);
2666 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z */
2667 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z */
2668 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2669 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2670 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc, 12)
2671 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_alloc(
2672 basic_string_wchar *this, const wchar_t *str, const void *alloc)
2674 return MSVCP_basic_string_wchar_ctor_cstr(this, str);
2677 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2678 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2679 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2680 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2681 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len, 12)
2682 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len(
2683 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2685 TRACE("%p %s %ld\n", this, debugstr_wn(str, len), len);
2687 basic_string_wchar_tidy(this, FALSE, 0);
2688 MSVCP_basic_string_wchar_assign_cstr_len(this, str, len);
2692 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z */
2693 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z */
2694 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2695 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2696 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc, 16)
2697 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2698 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len, const void *alloc)
2700 return MSVCP_basic_string_wchar_ctor_cstr_len(this, str, len);
2703 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z */
2704 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z */
2705 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@II@Z */
2706 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1@Z */
2707 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr, 16)
2708 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr(
2709 basic_string_wchar *this, const basic_string_wchar *assign,
2710 MSVCP_size_t pos, MSVCP_size_t len)
2712 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2714 basic_string_wchar_tidy(this, FALSE, 0);
2715 MSVCP_basic_string_wchar_assign_substr(this, assign, pos, len);
2719 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z */
2720 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z */
2721 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2722 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2723 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc, 20)
2724 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr_alloc(
2725 basic_string_wchar *this, const basic_string_wchar *assign,
2726 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
2728 return MSVCP_basic_string_wchar_ctor_substr(this, assign, pos, len);
2731 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z */
2732 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z */
2733 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2734 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2735 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc, 8)
2736 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_alloc(
2737 basic_string_wchar *this, const void *alloc)
2739 TRACE("%p %p\n", this, alloc);
2741 basic_string_wchar_tidy(this, FALSE, 0);
2745 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z */
2746 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z */
2747 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IG@Z */
2748 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KG@Z */
2749 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch, 12)
2750 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch(basic_string_wchar *this,
2751 MSVCP_size_t count, wchar_t ch)
2753 TRACE("%p %ld %c\n", this, count, ch);
2755 basic_string_wchar_tidy(this, FALSE, 0);
2756 MSVCP_basic_string_wchar_assignn(this, count, ch);
2760 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z */
2761 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z */
2762 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2763 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2764 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc, 16)
2765 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar *this,
2766 MSVCP_size_t count, wchar_t ch, const void *alloc)
2768 return MSVCP_basic_string_wchar_ctor_ch(this, count, ch);
2771 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z */
2772 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z */
2773 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0@Z */
2774 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0@Z */
2775 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ptr_ptr, 12)
2776 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ptr_ptr(basic_string_wchar *this,
2777 const wchar_t *first, const wchar_t *last)
2779 return MSVCP_basic_string_wchar_ctor_cstr_len(this, first, last-first);
2782 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@Vconst_iterator@01@0@Z */
2783 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@Vconst_iterator@01@0@Z */
2784 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter, 12)
2785 basic_string_wchar* __thiscall basic_string_wchar_ctor_iter(basic_string_wchar *this,
2786 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
2788 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
2791 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2792 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2793 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2794 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2795 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)
2796 void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
2798 TRACE("%p\n", this);
2799 basic_string_wchar_tidy(this, TRUE, 0);
2802 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2803 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2804 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2805 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2806 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2807 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2808 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2809 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2810 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length, 4)
2811 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_length(const basic_string_wchar *this)
2813 TRACE("%p\n", this);
2817 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2818 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2819 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2820 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2821 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size, 4)
2822 MSVCP_size_t __thiscall basic_string_wchar_max_size(const basic_string_wchar *this)
2824 TRACE("%p\n", this);
2825 return MSVCP_allocator_wchar_max_size(this->allocator)-1;
2828 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE_NXZ */
2829 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_NXZ */
2830 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
2831 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
2832 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty, 4)
2833 MSVCP_bool __thiscall MSVCP_basic_string_wchar_empty(basic_string_wchar *this)
2835 TRACE("%p\n", this);
2836 return this->size == 0;
2839 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXAAV12@@Z */
2840 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEAV12@@Z */
2841 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
2842 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
2843 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_swap, 8)
2844 void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_string_wchar *str)
2847 char tmp[sizeof(this->data)];
2848 const MSVCP_size_t size = this->size;
2849 const MSVCP_size_t res = this->res;
2851 memcpy(tmp, this->data.buf, sizeof(this->data));
2852 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
2853 memcpy(str->data.buf, tmp, sizeof(this->data));
2855 this->size = str->size;
2856 this->res = str->res;
2863 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV12@II@Z */
2864 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV12@_K0@Z */
2865 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
2866 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
2867 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_substr, 16)
2868 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_substr(basic_string_wchar *this,
2869 basic_string_wchar *ret, MSVCP_size_t off, MSVCP_size_t len)
2871 TRACE("%p %lu %lu\n", this, off, len);
2873 MSVCP_basic_string_wchar_ctor_substr(ret, this, off, len);
2877 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2878 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2879 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2880 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2881 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr, 16)
2882 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_substr(basic_string_wchar *this,
2883 const basic_string_wchar *append, MSVCP_size_t offset, MSVCP_size_t count)
2885 TRACE("%p %p %lu %lu\n", this, append, offset, count);
2887 if(append->size < offset)
2888 MSVCP__String_base_Xran();
2890 if(count > append->size-offset)
2891 count = append->size-offset;
2893 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2894 MSVCP__String_base_Xlen();
2896 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2897 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2898 this->res-this->size, basic_string_wchar_const_ptr(append)+offset, count);
2899 basic_string_wchar_eos(this, this->size+count);
2905 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2906 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2907 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2908 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2909 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2910 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2911 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2912 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2913 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append, 8)
2914 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append(
2915 basic_string_wchar *this, const basic_string_wchar *append)
2917 return MSVCP_basic_string_wchar_append_substr(this, append,
2918 0, MSVCP_basic_string_wchar_npos);
2921 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2922 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2923 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2924 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2925 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len, 12)
2926 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr_len(
2927 basic_string_wchar *this, const wchar_t *append, MSVCP_size_t count)
2929 TRACE("%p %s %lu\n", this, debugstr_wn(append, count), count);
2931 if(basic_string_wchar_inside(this, append))
2932 return MSVCP_basic_string_wchar_append_substr(this, this,
2933 append-basic_string_wchar_ptr(this), count);
2935 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2936 MSVCP__String_base_Xlen();
2938 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2939 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2940 this->res-this->size, append, count);
2941 basic_string_wchar_eos(this, this->size+count);
2947 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2948 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2949 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2950 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2951 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2952 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2953 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2954 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2955 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr, 8)
2956 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr(
2957 basic_string_wchar *this, const wchar_t *append)
2959 return MSVCP_basic_string_wchar_append_cstr_len(this, append,
2960 MSVCP_char_traits_wchar_length(append));
2963 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2964 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2965 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2966 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2967 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end, 12)
2968 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_beg_end(
2969 basic_string_wchar *this, const wchar_t *beg, const wchar_t *end)
2971 return MSVCP_basic_string_wchar_append_cstr_len(this, beg, end-beg);
2974 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
2975 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
2976 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_iter, 12)
2977 basic_string_wchar* __thiscall basic_string_wchar_append_iter(basic_string_wchar *this,
2978 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
2980 return basic_string_wchar_replace_cstr_len(this, this->size, 0, beg.pos, end.pos-beg.pos);
2983 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2984 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2985 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2986 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2987 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch, 12)
2988 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_len_ch(
2989 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2991 TRACE("%p %lu %c\n", this, count, ch);
2993 if(MSVCP_basic_string_wchar_npos-this->size <= count)
2994 MSVCP__String_base_Xlen();
2996 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2997 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+this->size, count, ch);
2998 basic_string_wchar_eos(this, this->size+count);
3004 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
3005 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
3006 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEX_W@Z */
3007 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_W@Z */
3008 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
3009 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
3010 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXG@Z */
3011 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXG@Z */
3012 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch, 8)
3013 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(
3014 basic_string_wchar *this, wchar_t ch)
3016 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch);
3019 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z */
3020 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@PEB_W@Z */
3021 /* ??$?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 */
3022 /* ??$?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 */
3023 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar *ret,
3024 const basic_string_wchar *left, const wchar_t *right)
3026 TRACE("%p %s\n", left, debugstr_w(right));
3028 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3029 MSVCP_basic_string_wchar_append_cstr(ret, right);
3033 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z */
3034 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_WAEBV10@@Z */
3035 /* ??$?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 */
3036 /* ??$?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 */
3037 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar *ret,
3038 const wchar_t *left, const basic_string_wchar *right)
3040 TRACE("%s %p\n", debugstr_w(left), right);
3042 MSVCP_basic_string_wchar_ctor_cstr(ret, left);
3043 MSVCP_basic_string_wchar_append(ret, right);
3047 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@0@Z */
3048 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@0@Z */
3049 /* ??$?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 */
3050 /* ??$?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 */
3051 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate(basic_string_wchar *ret,
3052 const basic_string_wchar *left, const basic_string_wchar *right)
3054 TRACE("%p %p\n", left, right);
3056 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3057 MSVCP_basic_string_wchar_append(ret, right);
3061 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z */
3062 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@AEBV10@_W@Z */
3063 /* ??$?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 */
3064 /* ??$?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 */
3065 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_ch(
3066 basic_string_wchar *ret, const basic_string_wchar *left, wchar_t right)
3068 TRACE("%p %c\n", left, right);
3070 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3071 MSVCP_basic_string_wchar_append_ch(ret, right);
3075 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z */
3076 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WAEBV10@@Z */
3077 /* ??$?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 */
3078 /* ??$?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 */
3079 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_ch_bstr(
3080 basic_string_wchar* ret, wchar_t left, const basic_string_wchar *right)
3082 TRACE("%c %p\n", left, right);
3084 MSVCP_basic_string_wchar_ctor_cstr_len(ret, &left, 1);
3085 MSVCP_basic_string_wchar_append(ret, right);
3089 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_WI@Z */
3090 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W0@Z */
3091 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
3092 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
3093 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20)
3094 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr_len(
3095 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3096 const wchar_t *str, MSVCP_size_t count)
3100 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_wn(str, count), count);
3102 if(this->size < pos)
3103 MSVCP__String_base_Xran();
3105 if(num > this->size-pos)
3106 num = this->size-pos;
3108 ans = MSVCP_char_traits_wchar_compare(basic_string_wchar_const_ptr(this)+pos,
3109 str, num>count ? count : num);
3115 else if(num < count)
3120 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_W@Z */
3121 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W@Z */
3122 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
3123 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
3124 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr, 16)
3125 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar *this,
3126 MSVCP_size_t pos, MSVCP_size_t num, const wchar_t *str)
3128 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3129 str, MSVCP_char_traits_wchar_length(str));
3132 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHPB_W@Z */
3133 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHPEB_W@Z */
3134 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
3135 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
3136 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr, 8)
3137 int __thiscall MSVCP_basic_string_wchar_compare_cstr(
3138 const basic_string_wchar *this, const wchar_t *str)
3140 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3141 str, MSVCP_char_traits_wchar_length(str));
3144 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@II@Z */
3145 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@00@Z */
3146 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
3147 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
3148 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr, 24)
3149 int __thiscall MSVCP_basic_string_wchar_compare_substr_substr(
3150 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3151 const basic_string_wchar *compare, MSVCP_size_t off, MSVCP_size_t count)
3153 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
3155 if(compare->size < off)
3156 MSVCP__String_base_Xran();
3158 if(count > compare->size-off)
3159 count = compare->size-off;
3161 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3162 basic_string_wchar_const_ptr(compare)+off, count);
3165 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@@Z */
3166 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@@Z */
3167 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
3168 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
3169 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr, 16)
3170 int __thiscall MSVCP_basic_string_wchar_compare_substr(
3171 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3172 const basic_string_wchar *compare)
3174 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3175 basic_string_wchar_const_ptr(compare), compare->size);
3178 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV12@@Z */
3179 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHAEBV12@@Z */
3180 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
3181 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
3182 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare, 8)
3183 int __thiscall MSVCP_basic_string_wchar_compare(
3184 const basic_string_wchar *this, const basic_string_wchar *compare)
3186 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3187 basic_string_wchar_const_ptr(compare), compare->size);
3190 /* ??$?8_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3191 /* ??$?8_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3192 /* ??$?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 */
3193 /* ??$?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 */
3194 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal(
3195 const basic_string_wchar *left, const basic_string_wchar *right)
3197 return MSVCP_basic_string_wchar_compare(left, right) == 0;
3200 /* ??$?8_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3201 /* ??$?8_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */
3202 /* ??$?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 */
3203 /* ??$?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 */
3204 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal_str_cstr(
3205 const basic_string_wchar *left, const wchar_t *right)
3207 return MSVCP_basic_string_wchar_compare_cstr(left, right) == 0;
3210 /* ??$?8_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3211 /* ??$?8_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3212 /* ??$?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 */
3213 /* ??$?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 */
3214 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal_cstr_str(
3215 const wchar_t *left, const basic_string_wchar *right)
3217 return MSVCP_basic_string_wchar_compare_cstr(right, left) == 0;
3220 /* ??$?9_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3221 /* ??$?9_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3222 /* ??$?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 */
3223 /* ??$?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 */
3224 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal(
3225 const basic_string_wchar *left, const basic_string_wchar *right)
3227 return MSVCP_basic_string_wchar_compare(left, right) != 0;
3230 /* ??$?9_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3231 /* ??$?9_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */
3232 /* ??$?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 */
3233 /* ??$?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 */
3234 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal_str_cstr(
3235 const basic_string_wchar *left, const wchar_t *right)
3237 return MSVCP_basic_string_wchar_compare_cstr(left, right) != 0;
3240 /* ??$?9_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3241 /* ??$?9_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3242 /* ??$?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 */
3243 /* ??$?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 */
3244 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal_cstr_str(
3245 const wchar_t *left, const basic_string_wchar *right)
3247 return MSVCP_basic_string_wchar_compare_cstr(right, left) != 0;
3250 /* ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3251 /* ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3252 /* ??$?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 */
3253 /* ??$?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 */
3254 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower(
3255 const basic_string_wchar *left, const basic_string_wchar *right)
3257 return MSVCP_basic_string_wchar_compare(left, right) < 0;
3260 /* ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3261 /* ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */
3262 /* ??$?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 */
3263 /* ??$?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 */
3264 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower_bstr_cstr(
3265 const basic_string_wchar *left, const wchar_t *right)
3267 return MSVCP_basic_string_wchar_compare_cstr(left, right) < 0;
3270 /* ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3271 /* ??$?M_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3272 /* ??$?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 */
3273 /* ??$?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 */
3274 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower_cstr_bstr(
3275 const wchar_t *left, const basic_string_wchar *right)
3277 return MSVCP_basic_string_wchar_compare_cstr(right, left) > 0;
3280 /* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3281 /* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3282 /* ??$?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 */
3283 /* ??$?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 */
3284 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq(
3285 const basic_string_wchar *left, const basic_string_wchar *right)
3287 return MSVCP_basic_string_wchar_compare(left, right) <= 0;
3290 /* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3291 /* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */
3292 /* ??$?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 */
3293 /* ??$?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 */
3294 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_bstr_cstr(
3295 const basic_string_wchar *left, const wchar_t *right)
3297 return MSVCP_basic_string_wchar_compare_cstr(left, right) <= 0;
3300 /* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3301 /* ??$?N_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3302 /* ??$?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 */
3303 /* ??$?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 */
3304 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_cstr_bstr(
3305 const wchar_t *left, const basic_string_wchar *right)
3307 return MSVCP_basic_string_wchar_compare_cstr(right, left) >= 0;
3310 /* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3311 /* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3312 /* ??$?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 */
3313 /* ??$?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 */
3314 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater(
3315 const basic_string_wchar *left, const basic_string_wchar *right)
3317 return MSVCP_basic_string_wchar_compare(left, right) > 0;
3320 /* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3321 /* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */
3322 /* ??$?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 */
3323 /* ??$?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 */
3324 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_bstr_cstr(
3325 const basic_string_wchar *left, const wchar_t *right)
3327 return MSVCP_basic_string_wchar_compare_cstr(left, right) > 0;
3330 /* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3331 /* ??$?O_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3332 /* ??$?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 */
3333 /* ??$?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 */
3334 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_cstr_bstr(
3335 const wchar_t *left, const basic_string_wchar *right)
3337 return MSVCP_basic_string_wchar_compare_cstr(right, left) < 0;
3340 /* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3341 /* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3342 /* ??$?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 */
3343 /* ??$?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 */
3344 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq(
3345 const basic_string_wchar *left, const basic_string_wchar *right)
3347 return MSVCP_basic_string_wchar_compare(left, right) >= 0;
3350 /* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3351 /* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_W@Z */
3352 /* ??$?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 */
3353 /* ??$?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 */
3354 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_bstr_cstr(
3355 const basic_string_wchar *left, const wchar_t *right)
3357 return MSVCP_basic_string_wchar_compare_cstr(left, right) >= 0;
3360 /* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3361 /* ??$?P_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA_NPEB_WAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3362 /* ??$?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 */
3363 /* ??$?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 */
3364 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_cstr_bstr(
3365 const wchar_t *left, const basic_string_wchar *right)
3367 return MSVCP_basic_string_wchar_compare_cstr(right, left) <= 0;
3370 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3371 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3372 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3373 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3374 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr, 16)
3375 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_substr(
3376 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
3378 const wchar_t *p, *end;
3380 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find, len), pos, len);
3382 if(len==0 && pos<=this->size)
3385 end = basic_string_wchar_const_ptr(this)+this->size-len+1;
3386 for(p=basic_string_wchar_const_ptr(this)+pos; p<end; p++) {
3387 p = MSVCP_char_traits_wchar_find(p, end-p, find);
3391 if(!MSVCP_char_traits_wchar_compare(p, find, len))
3392 return p-basic_string_wchar_const_ptr(this);
3395 return MSVCP_basic_string_wchar_npos;
3398 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3399 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3400 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3401 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3402 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off, 12)
3403 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_off(
3404 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
3406 return MSVCP_basic_string_wchar_find_cstr_substr(this, find, pos,
3407 MSVCP_char_traits_wchar_length(find));
3410 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3411 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3412 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3413 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3414 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off, 12)
3415 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_off(
3416 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3418 return MSVCP_basic_string_wchar_find_cstr_substr(this,
3419 basic_string_wchar_const_ptr(find), off, find->size);
3422 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3423 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3424 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3425 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3426 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch, 12)
3427 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_ch(
3428 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
3430 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1);
3433 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3434 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3435 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3436 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3437 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr, 16)
3438 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_substr(
3439 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
3441 const wchar_t *p, *end;
3443 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find, len), pos, len);
3446 return pos<this->size ? pos : this->size;
3448 if(len > this->size)
3449 return MSVCP_basic_string_wchar_npos;
3451 if(pos > this->size-len+1)
3452 pos = this->size-len+1;
3453 end = basic_string_wchar_const_ptr(this);
3454 for(p=end+pos; p>=end; p--) {
3455 if(*p==*find && !MSVCP_char_traits_wchar_compare(p, find, len))
3456 return p-basic_string_wchar_const_ptr(this);
3459 return MSVCP_basic_string_wchar_npos;
3462 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3463 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3464 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3465 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3466 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off, 12)
3467 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_off(
3468 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
3470 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find, pos,
3471 MSVCP_char_traits_wchar_length(find));
3474 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3475 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3476 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3477 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3478 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off, 12)
3479 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_off(
3480 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3482 return MSVCP_basic_string_wchar_rfind_cstr_substr(this,
3483 basic_string_wchar_const_ptr(find), off, find->size);
3486 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3487 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3488 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3489 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3490 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch, 12)
3491 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_ch(
3492 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
3494 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch, pos, 1);
3497 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3498 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3499 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3500 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3501 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr, 16)
3502 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3503 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3505 const wchar_t *p, *end;
3507 TRACE("%p %p %lu %lu\n", this, find, off, len);
3509 if(len>0 && off<this->size) {
3510 end = basic_string_wchar_const_ptr(this)+this->size;
3511 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3512 if(MSVCP_char_traits_wchar_find(find, len, p))
3513 return p-basic_string_wchar_const_ptr(this);
3516 return MSVCP_basic_string_wchar_npos;
3519 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3520 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3521 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3522 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3523 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of, 12)
3524 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of(
3525 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3527 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
3528 basic_string_wchar_const_ptr(find), off, find->size);
3531 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3532 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3533 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3534 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3535 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr, 12)
3536 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr(
3537 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3539 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3540 this, find, off, MSVCP_char_traits_wchar_length(find));
3543 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3544 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3545 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3546 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3547 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch, 12)
3548 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_ch(
3549 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3551 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch, off, 1);
3554 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3555 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3556 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3557 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3558 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr, 16)
3559 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3560 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3562 const wchar_t *p, *end;
3564 TRACE("%p %p %lu %lu\n", this, find, off, len);
3566 if(off<this->size) {
3567 end = basic_string_wchar_const_ptr(this)+this->size;
3568 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3569 if(!MSVCP_char_traits_wchar_find(find, len, p))
3570 return p-basic_string_wchar_const_ptr(this);
3573 return MSVCP_basic_string_wchar_npos;
3576 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3577 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3578 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3579 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3580 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of, 12)
3581 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of(
3582 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3584 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
3585 basic_string_wchar_const_ptr(find), off, find->size);
3588 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3589 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3590 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3591 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3592 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr, 12)
3593 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr(
3594 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3596 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3597 this, find, off, MSVCP_char_traits_wchar_length(find));
3600 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3601 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3602 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3603 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3604 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch, 12)
3605 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_ch(
3606 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3608 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch, off, 1);
3611 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3612 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3613 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3614 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3615 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr, 16)
3616 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3617 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3619 const wchar_t *p, *beg;
3621 TRACE("%p %p %lu %lu\n", this, find, off, len);
3624 if(len>0 && this->size>0) {
3625 if(off >= this->size)
3628 beg = basic_string_wchar_const_ptr(this);
3629 for(p=beg+off; p>=beg; p--)
3630 if(MSVCP_char_traits_wchar_find(find, len, p))
3634 return MSVCP_basic_string_wchar_npos;
3637 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3638 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3639 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3640 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3641 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of, 12)
3642 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of(
3643 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3645 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
3646 basic_string_wchar_const_ptr(find), off, find->size);
3649 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3650 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3651 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3652 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3653 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr, 12)
3654 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr(
3655 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3657 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3658 this, find, off, MSVCP_char_traits_wchar_length(find));
3661 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3662 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3663 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3664 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3665 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch, 12)
3666 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_ch(
3667 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3669 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch, off, 1);
3672 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3673 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3674 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3675 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3676 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr, 16)
3677 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3678 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3680 const wchar_t *p, *beg;
3682 TRACE("%p %p %lu %lu\n", this, find, off, len);
3684 if(len>0 && this->size>0) {
3685 if(off >= this->size)
3688 beg = basic_string_wchar_const_ptr(this);
3689 for(p=beg+off; p>=beg; p--)
3690 if(!MSVCP_char_traits_wchar_find(find, len, p))
3694 return MSVCP_basic_string_wchar_npos;
3697 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3698 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3699 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3700 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3701 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of, 12)
3702 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of(
3703 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3705 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
3706 basic_string_wchar_const_ptr(find), off, find->size);
3709 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3710 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3711 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3712 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3713 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr, 12)
3714 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr(
3715 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3717 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3718 this, find, off, MSVCP_char_traits_wchar_length(find));
3721 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3722 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3723 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3724 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3725 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch, 12)
3726 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_ch(
3727 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3729 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch, off, 1);
3732 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z */
3733 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z */
3734 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
3735 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
3736 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len, 20)
3737 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr_len(basic_string_wchar *this,
3738 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str, MSVCP_size_t str_len)
3740 MSVCP_size_t inside_pos = -1;
3741 wchar_t *ptr = basic_string_wchar_ptr(this);
3743 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
3745 if(this->size < off)
3746 MSVCP__String_base_Xran();
3748 if(len > this->size-off)
3749 len = this->size-off;
3751 if(MSVCP_basic_string_wchar_npos-str_len <= this->size-len)
3752 MSVCP__String_base_Xlen();
3754 if(basic_string_wchar_inside(this, str))
3755 inside_pos = str-ptr;
3758 basic_string_wchar_grow(this, this->size-len+str_len, FALSE);
3759 ptr = basic_string_wchar_ptr(this);
3762 if(inside_pos == -1) {
3763 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3764 memcpy(ptr+off, str, str_len*sizeof(wchar_t));
3765 } else if(len >= str_len) {
3766 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(wchar_t));
3767 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3771 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3773 if(inside_pos < off+len) {
3774 size = off+len-inside_pos;
3777 memmove(ptr+off, ptr+inside_pos, size*sizeof(wchar_t));
3783 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(wchar_t));
3786 basic_string_wchar_eos(this, this->size-len+str_len);
3790 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z */
3791 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z */
3792 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3793 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3794 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr, 16)
3795 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr(basic_string_wchar *this,
3796 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str)
3798 return basic_string_wchar_replace_cstr_len(this, off, len, str,
3799 MSVCP_char_traits_wchar_length(str));
3802 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z */
3803 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3804 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3805 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3806 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr, 24)
3807 basic_string_wchar* __thiscall basic_string_wchar_replace_substr(basic_string_wchar *this, MSVCP_size_t off,
3808 MSVCP_size_t len, const basic_string_wchar *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
3810 if(str->size < str_off)
3811 MSVCP__String_base_Xran();
3813 if(str_len > str->size-str_off)
3814 str_len = str->size-str_off;
3816 return basic_string_wchar_replace_cstr_len(this, off, len,
3817 basic_string_wchar_const_ptr(str)+str_off, str_len);
3820 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z */
3821 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3822 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3823 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3824 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace, 16)
3825 basic_string_wchar* __thiscall basic_string_wchar_replace(basic_string_wchar *this,
3826 MSVCP_size_t off, MSVCP_size_t len, const basic_string_wchar *str)
3828 return basic_string_wchar_replace_cstr_len(this, off, len,
3829 basic_string_wchar_const_ptr(str), str->size);
3832 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z */
3833 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z */
3834 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3835 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3836 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch, 20)
3837 basic_string_wchar* __thiscall basic_string_wchar_replace_ch(basic_string_wchar *this,
3838 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, wchar_t ch)
3840 wchar_t *ptr = basic_string_wchar_ptr(this);
3842 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
3844 if(this->size < off)
3845 MSVCP__String_base_Xran();
3847 if(len > this->size-off)
3848 len = this->size-off;
3850 if(MSVCP_basic_string_wchar_npos-count <= this->size-len)
3851 MSVCP__String_base_Xlen();
3854 basic_string_wchar_grow(this, this->size-len+count, FALSE);
3855 ptr = basic_string_wchar_ptr(this);
3858 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3859 MSVCP_char_traits_wchar_assignn(ptr+off, count, ch);
3860 basic_string_wchar_eos(this, this->size-len+count);
3865 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
3866 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
3867 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter, 20)
3868 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
3869 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
3870 basic_string_wchar_iterator rbeg, basic_string_wchar_iterator rend)
3872 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
3873 end.pos-beg.pos, rbeg.pos, rend.pos-rbeg.pos);
3876 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
3877 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
3878 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr, 16)
3879 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
3880 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, basic_string_wchar *str)
3882 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
3883 end.pos-beg.pos, basic_string_wchar_ptr(str), str->size);
3886 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0IG@Z */
3887 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0I_W@Z */
3888 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ch, 20)
3889 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
3890 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, MSVCP_size_t count, wchar_t ch)
3892 /* TODO: add more efficient implementation */
3893 MSVCP_size_t off = beg.pos-basic_string_wchar_ptr(this);
3895 basic_string_wchar_replace_cstr_len(this, off, end.pos-beg.pos, NULL, 0);
3897 basic_string_wchar_replace_cstr_len(this, off, 0, &ch, 1);
3901 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PB_W1@Z */
3902 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0PEB_W1@Z */
3903 static basic_string_wchar* basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
3904 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
3905 const wchar_t *res_beg, const wchar_t *res_end)
3907 basic_string_wchar_iterator begin = { basic_string_wchar_ptr(this) };
3908 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg, begin),
3909 basic_string_wchar__Pdif(end, beg), res_beg, res_end-res_beg);
3912 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG1@Z */
3913 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W1@Z */
3914 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_beg_end, 20)
3915 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_beg_end(basic_string_wchar *this,
3916 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
3917 const wchar_t *rbeg, const wchar_t *rend)
3919 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
3920 end.pos-beg.pos, rbeg, rend-rbeg);
3923 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG@Z */
3924 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W@Z */
3925 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr, 16)
3926 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
3927 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, const wchar_t *str)
3929 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
3930 end.pos-beg.pos, str, wcslen(str));
3933 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBGI@Z */
3934 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_WI@Z */
3935 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len, 20)
3936 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
3937 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
3938 const wchar_t *str, MSVCP_size_t len)
3940 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
3941 end.pos-beg.pos, str, len);
3944 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@@Z */
3945 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3946 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3947 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3948 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert, 12)
3949 basic_string_wchar* __thiscall basic_string_wchar_insert(basic_string_wchar *this,
3950 MSVCP_size_t off, const basic_string_wchar *str)
3952 return basic_string_wchar_replace(this, off, 0, str);
3955 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@II@Z */
3956 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3957 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3958 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3959 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr, 20)
3960 basic_string_wchar* __thiscall basic_string_wchar_insert_substr(
3961 basic_string_wchar *this, MSVCP_size_t off, const basic_string_wchar *str,
3962 MSVCP_size_t str_off, MSVCP_size_t str_count)
3964 return basic_string_wchar_replace_substr(this, off, 0, str, str_off, str_count);
3967 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_W@Z */
3968 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W@Z */
3969 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3970 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3971 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr, 12)
3972 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr(
3973 basic_string_wchar *this, MSVCP_size_t off, const wchar_t *str)
3975 return basic_string_wchar_replace_cstr(this, off, 0, str);
3978 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_WI@Z */
3979 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W0@Z */
3980 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3981 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3982 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len, 16)
3983 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr_len(basic_string_wchar *this,
3984 MSVCP_size_t off, const wchar_t *str, MSVCP_size_t str_len)
3986 return basic_string_wchar_replace_cstr_len(this, off, 0, str, str_len);
3989 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II_W@Z */
3990 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0_W@Z */
3991 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3992 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3993 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn, 16)
3994 basic_string_wchar* __thiscall basic_string_wchar_insert_chn(basic_string_wchar *this,
3995 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
3997 return basic_string_wchar_replace_ch(this, off, 0, count, ch);
4000 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@I_W@Z */
4001 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@IG@Z */
4002 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn, 16)
4003 void __thiscall basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
4004 basic_string_wchar_iterator where, MSVCP_size_t count, wchar_t ch)
4006 basic_string_wchar_iterator iter = { basic_string_wchar_ptr(this) };
4007 MSVCP_size_t off = basic_string_wchar__Pdif(where, iter);
4009 basic_string_wchar_insert_chn(this, off, count, ch);
4012 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@_W@Z */
4013 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@G@Z */
4014 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch, 16)
4015 basic_string_wchar_iterator* __thiscall basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
4016 basic_string_wchar_iterator *ret, basic_string_wchar_iterator where, wchar_t ch)
4020 ret->pos = basic_string_wchar_ptr(this);
4021 off = basic_string_wchar__Pdif(where, *ret);
4023 basic_string_wchar_insert_chn(this, off, 1, ch);
4024 ret->pos = basic_string_wchar_ptr(this)+off;
4028 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@@Z */
4029 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z */
4030 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_null, 12)
4031 basic_string_wchar_iterator* __thiscall basic_string_wchar_insert_iter_null(basic_string_wchar *this,
4032 basic_string_wchar_iterator *ret, basic_string_wchar_iterator where)
4034 return basic_string_wchar_insert_iter_ch(this, ret, where, 0);
4037 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4038 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4039 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 16)
4040 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
4041 basic_string_wchar_iterator where, basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4043 basic_string_wchar_replace_iter_iter(this, where, where, beg, end);
4046 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@PB_W1@Z */
4047 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@PBG1@Z */
4048 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ptr_ptr, 16)
4049 void __thiscall basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
4050 basic_string_wchar_iterator where, const wchar_t *beg, const wchar_t *end)
4052 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
4055 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
4056 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
4057 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
4058 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
4059 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at, 8)
4060 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at(
4061 basic_string_wchar *this, MSVCP_size_t pos)
4063 TRACE("%p %lu\n", this, pos);
4065 assert(this->size >= pos);
4066 return basic_string_wchar_ptr(this)+pos;
4069 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
4070 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
4071 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
4072 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
4073 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_operator_at, 8)
4074 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_operator_at(
4075 const basic_string_wchar *this, MSVCP_size_t pos)
4077 TRACE("%p %lu\n", this, pos);
4079 assert(this->size >= pos);
4080 return basic_string_wchar_const_ptr(this)+pos;
4083 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
4084 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
4085 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
4086 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
4087 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at, 8)
4088 wchar_t* __thiscall MSVCP_basic_string_wchar_at(
4089 basic_string_wchar *this, MSVCP_size_t pos)
4091 TRACE("%p %lu\n", this, pos);
4093 if(this->size <= pos)
4094 MSVCP__String_base_Xran();
4096 return basic_string_wchar_ptr(this)+pos;
4099 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
4100 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
4101 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
4102 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
4103 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_at, 8)
4104 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at(
4105 const basic_string_wchar *this, MSVCP_size_t pos)
4107 TRACE("%p %lu\n", this, pos);
4109 if(this->size <= pos)
4110 MSVCP__String_base_Xran();
4112 return basic_string_wchar_const_ptr(this)+pos;
4115 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z */
4116 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z */
4117 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
4118 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
4119 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch, 12)
4120 void __thiscall MSVCP_basic_string_wchar_resize_ch(
4121 basic_string_wchar *this, MSVCP_size_t size, wchar_t ch)
4123 TRACE("%p %lu %c\n", this, size, ch);
4125 if(size <= this->size)
4126 MSVCP_basic_string_wchar_erase(this, size, this->size);
4128 MSVCP_basic_string_wchar_append_len_ch(this, size-this->size, ch);
4131 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
4132 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
4133 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
4134 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
4135 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize, 8)
4136 void __thiscall MSVCP_basic_string_wchar_resize(
4137 basic_string_wchar *this, MSVCP_size_t size)
4139 MSVCP_basic_string_wchar_resize_ch(this, size, '\0');
4142 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4143 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4144 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4145 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4146 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear, 4)
4147 void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar *this)
4149 basic_string_wchar_eos(this, 0);
4152 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ */
4153 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AVconst_iterator@12@XZ */
4154 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@XZ */
4155 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AVconst_iterator@12@XZ */
4156 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4157 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4158 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4159 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4160 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin, 8)
4161 basic_string_wchar_iterator* __thiscall basic_string_wchar_begin(
4162 basic_string_wchar *this, basic_string_wchar_iterator *ret)
4164 ret->pos = basic_string_wchar_ptr(this);
4168 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ */
4169 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AVconst_iterator@12@XZ */
4170 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@XZ */
4171 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AVconst_iterator@12@XZ */
4172 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4173 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4174 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4175 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4176 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end, 8)
4177 basic_string_wchar_iterator* __thiscall basic_string_wchar_end(
4178 basic_string_wchar *this, basic_string_wchar_iterator *ret)
4180 ret->pos = basic_string_wchar_ptr(this)+this->size;
4184 /* _String_val class */
4185 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ */
4186 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ */
4187 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ */
4188 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ */
4189 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ */
4190 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ */
4191 DEFINE_THISCALL_WRAPPER(_String_val_ctor, 4)
4192 void* __thiscall _String_val_ctor(void *this)
4194 TRACE("%p\n", this);
4198 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z */
4199 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z */
4200 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z */
4201 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z */
4202 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z */
4203 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z */
4204 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z */
4205 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z */
4206 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z */
4207 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z */
4208 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z */
4209 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z */
4210 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4211 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4212 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z */
4213 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4214 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z */
4215 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4216 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4217 DEFINE_THISCALL_WRAPPER(_String_val_null_ctor, 8)
4218 void* __thiscall _String_val_null_ctor(void *this, const void *misc)
4220 TRACE("%p %p\n", this, misc);