wined3d: Check for support before calling glDrawElementsInstancedBaseVertex.
[wine.git] / dlls / msvcp80 / string.c
blob83dceac6f56fcc44b40a9197edf5a1884ba8895c
1 /*
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
19 #include "config.h"
21 #include <stdarg.h>
23 #include "msvcp.h"
24 #include "stdio.h"
25 #include "assert.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 /* _String_iterator<char> and _String_const_iterator<char> class */
33 typedef struct {
34 basic_string_char *bstr;
35 const char *pos;
36 } String_iterator_char;
38 typedef struct {
39 void *cont;
40 const basic_string_char *bstr;
41 const char *pos;
42 } basic_string_char_reverse_iter;
44 typedef struct {
45 basic_string_wchar *bstr;
46 const wchar_t *pos;
47 } String_iterator_wchar;
49 typedef struct {
50 void *cont;
51 const basic_string_wchar *bstr;
52 const wchar_t *pos;
53 } basic_string_wchar_reverse_iter;
55 /* size_t_noverify structure */
56 typedef struct {
57 MSVCP_size_t val;
58 } size_t_noverify;
60 /* allocator class */
61 typedef struct {
62 char empty_struct;
63 } allocator;
65 /* char_traits<char> */
66 /* ?assign@?$char_traits@D@std@@SAXAADABD@Z */
67 /* ?assign@?$char_traits@D@std@@SAXAEADAEBD@Z */
68 void CDECL MSVCP_char_traits_char_assign(char *ch, const char *assign)
70 *ch = *assign;
73 /* ?eq@?$char_traits@D@std@@SA_NABD0@Z */
74 /* ?eq@?$char_traits@D@std@@SA_NAEBD0@Z */
75 MSVCP_bool CDECL MSVCP_char_traits_char_eq(const char *ch1, const char *ch2)
77 return *ch1 == *ch2;
80 /* ?lt@?$char_traits@D@std@@SA_NABD0@Z */
81 /* ?lt@?$char_traits@D@std@@SA_NAEBD0@Z */
82 MSVCP_bool CDECL MSVCP_char_traits_lt(const char *ch1, const char *ch2)
84 return *ch1 < *ch2;
87 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
88 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
89 int CDECL MSVCP_char_traits_char_compare(
90 const char *s1, const char *s2, MSVCP_size_t count)
92 int ret = memcmp(s1, s2, count);
93 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
96 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
97 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
98 MSVCP_size_t CDECL MSVCP_char_traits_char_length(const char *str)
100 return strlen(str);
103 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
104 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
105 char* CDECL MSVCP_char_traits_char__Copy_s(char *dest,
106 MSVCP_size_t size, const char *src, MSVCP_size_t count)
108 if(!dest || !src || size<count) {
109 if(dest && size)
110 dest[0] = '\0';
111 _invalid_parameter(NULL, NULL, NULL, 0, 0);
112 return dest;
115 return memcpy(dest, src, count);
118 /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */
119 /* ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
120 char* CDECL MSVCP_char_traits_char_copy(
121 char *dest, const char *src, MSVCP_size_t count)
123 return MSVCP_char_traits_char__Copy_s(dest, count, src, count);
126 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
127 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
128 const char * CDECL MSVCP_char_traits_char_find(
129 const char *str, MSVCP_size_t range, const char *c)
131 return memchr(str, *c, range);
134 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
135 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
136 char* CDECL MSVCP_char_traits_char__Move_s(char *dest,
137 MSVCP_size_t size, const char *src, MSVCP_size_t count)
139 if(!dest || !src || size<count) {
140 if(dest && size)
141 dest[0] = '\0';
142 _invalid_parameter(NULL, NULL, NULL, 0, 0);
143 return dest;
146 return memmove(dest, src, count);
149 /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */
150 /* ?move@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
151 char* CDECL MSVCP_char_traits_char_move(
152 char *dest, const char *src, MSVCP_size_t count)
154 return MSVCP_char_traits_char__Move_s(dest, count, src, count);
157 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
158 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
159 char* CDECL MSVCP_char_traits_char_assignn(char *str, MSVCP_size_t num, char c)
161 return memset(str, c, num);
164 /* ?to_char_type@?$char_traits@D@std@@SADABH@Z */
165 /* ?to_char_type@?$char_traits@D@std@@SADAEBH@Z */
166 char CDECL MSVCP_char_traits_char_to_char_type(const int *i)
168 return (char)*i;
171 /* ?to_int_type@?$char_traits@D@std@@SAHABD@Z */
172 /* ?to_int_type@?$char_traits@D@std@@SAHAEBD@Z */
173 int CDECL MSVCP_char_traits_char_to_int_type(const char *ch)
175 return (int)*ch;
178 /* ?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z */
179 /* ?eq_int_type@?$char_traits@D@std@@SA_NAEBH0@Z */
180 MSVCP_bool CDECL MSVCP_char_traits_char_eq_int_type(const int *i1, const int *i2)
182 return *i1 == *i2;
185 /* ?eof@?$char_traits@D@std@@SAHXZ */
186 int CDECL MSVCP_char_traits_char_eof(void)
188 return EOF;
191 /* ?not_eof@?$char_traits@D@std@@SAHABH@Z */
192 /* ?not_eof@?$char_traits@D@std@@SAHAEBH@Z */
193 int CDECL MSVCP_char_traits_char_not_eof(int *in)
195 return (*in==EOF ? !EOF : *in);
199 /* char_traits<wchar_t> */
200 /* ?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z */
201 /* ?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z */
202 void CDECL MSVCP_char_traits_wchar_assign(wchar_t *ch,
203 const wchar_t *assign)
205 *ch = *assign;
208 /* ?eq@?$char_traits@_W@std@@SA_NAB_W0@Z */
209 /* ?eq@?$char_traits@_W@std@@SA_NAEB_W0@Z */
210 MSVCP_bool CDECL MSVCP_char_traits_wchar_eq(wchar_t *ch1, wchar_t *ch2)
212 return *ch1 == *ch2;
215 /* ?lt@?$char_traits@_W@std@@SA_NAB_W0@Z */
216 /* ?lt@?$char_traits@_W@std@@SA_NAEB_W0@Z */
217 MSVCP_bool CDECL MSVCP_char_traits_wchar_lt(const wchar_t *ch1,
218 const wchar_t *ch2)
220 return *ch1 < *ch2;
223 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
224 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
225 int CDECL MSVCP_char_traits_wchar_compare(const wchar_t *s1,
226 const wchar_t *s2, MSVCP_size_t count)
228 int ret = memcmp(s1, s2, count * sizeof(wchar_t));
229 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
232 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
233 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
234 MSVCP_size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str)
236 return wcslen((WCHAR*)str);
239 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
240 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
241 wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest,
242 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
244 if(!dest || !src || size<count) {
245 if(dest && size)
246 dest[0] = '\0';
247 _invalid_parameter(NULL, NULL, NULL, 0, 0);
248 return dest;
251 return memcpy(dest, src, count * sizeof(wchar_t));
254 /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
255 /* ?copy@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
256 wchar_t* CDECL MSVCP_char_traits_wchar_copy(wchar_t *dest,
257 const wchar_t *src, MSVCP_size_t count)
259 return MSVCP_char_traits_wchar__Copy_s(dest, count, src, count);
262 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
263 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
264 const wchar_t* CDECL MSVCP_char_traits_wchar_find(
265 const wchar_t *str, MSVCP_size_t range, const wchar_t *c)
267 MSVCP_size_t i=0;
269 for(i=0; i<range; i++)
270 if(str[i] == *c)
271 return str+i;
273 return NULL;
276 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
277 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
278 wchar_t* CDECL MSVCP_char_traits_wchar__Move_s(wchar_t *dest,
279 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
281 if(!dest || !src || size<count) {
282 if(dest && size)
283 dest[0] = '\0';
284 _invalid_parameter(NULL, NULL, NULL, 0, 0);
285 return dest;
288 return memmove(dest, src, count * sizeof(WCHAR));
291 /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
292 /* ?move@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
293 wchar_t* CDECL MSVCP_char_traits_wchar_move(wchar_t *dest,
294 const wchar_t *src, MSVCP_size_t count)
296 return MSVCP_char_traits_wchar__Move_s(dest, count, src, count);
299 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
300 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
301 wchar_t* CDECL MSVCP_char_traits_wchar_assignn(wchar_t *str,
302 MSVCP_size_t num, wchar_t c)
304 MSVCP_size_t i;
306 for(i=0; i<num; i++)
307 str[i] = c;
309 return str;
312 /* ?to_char_type@?$char_traits@_W@std@@SA_WABG@Z */
313 /* ?to_char_type@?$char_traits@_W@std@@SA_WAEBG@Z */
314 wchar_t CDECL MSVCP_char_traits_wchar_to_char_type(const unsigned short *i)
316 return *i;
319 /* ?to_int_type@?$char_traits@_W@std@@SAGAB_W@Z */
320 /* ?to_int_type@?$char_traits@_W@std@@SAGAEB_W@Z */
321 unsigned short CDECL MSVCP_char_traits_wchar_to_int_type(const wchar_t *ch)
323 return *ch;
326 /* ?eq_int_type@?$char_traits@_W@std@@SA_NABG0@Z */
327 /* ?eq_int_type@?$char_traits@_W@std@@SA_NAEBG0@Z */
328 MSVCP_bool CDECL MSVCP_char_traits_wchar_eq_int_tpe(const unsigned short *i1,
329 const unsigned short *i2)
331 return *i1 == *i2;
334 /* ?eof@?$char_traits@_W@std@@SAGXZ */
335 unsigned short CDECL MSVCP_char_traits_wchar_eof(void)
337 return WEOF;
340 /* ?not_eof@?$char_traits@_W@std@@SAGABG@Z */
341 /* ?not_eof@?$char_traits@_W@std@@SAGAEBG@Z */
342 unsigned short CDECL MSVCP_char_traits_wchar_not_eof(const unsigned short *in)
344 return (*in==WEOF ? !WEOF : *in);
348 /* char_traits<unsigned short> */
349 /* ?assign@?$char_traits@G@std@@SAXAAGABG@Z */
350 /* ?assign@?$char_traits@G@std@@SAXAEAGAEBG@Z */
351 void CDECL MSVCP_char_traits_short_assign(unsigned short *ch,
352 const unsigned short *assign)
354 *ch = *assign;
357 /* ?eq@?$char_traits@G@std@@SA_NABG0@Z */
358 /* ?eq@?$char_traits@G@std@@SA_NAEBG0@Z */
359 MSVCP_bool CDECL MSVCP_char_traits_short_eq(const unsigned short *ch1,
360 const unsigned short *ch2)
362 return *ch1 == *ch2;
365 /* ?lt@?$char_traits@G@std@@SA_NABG0@Z */
366 /* ?lt@?$char_traits@G@std@@SA_NAEBG0@Z */
367 MSVCP_bool CDECL MSVCP_char_traits_short_lt(const unsigned short *ch1,
368 const unsigned short *ch2)
370 return *ch1 < *ch2;
373 /* ?compare@?$char_traits@G@std@@SAHPBG0I@Z */
374 /* ?compare@?$char_traits@G@std@@SAHPEBG0_K@Z */
375 int CDECL MSVCP_char_traits_short_compare(const unsigned short *s1,
376 const unsigned short *s2, MSVCP_size_t count)
378 MSVCP_size_t i;
380 for(i=0; i<count; i++)
381 if(s1[i] != s2[i])
382 return (s1[i] < s2[i] ? -1 : 1);
384 return 0;
387 /* ?length@?$char_traits@G@std@@SAIPBG@Z */
388 /* ?length@?$char_traits@G@std@@SA_KPEBG@Z */
389 MSVCP_size_t CDECL MSVCP_char_traits_short_length(const unsigned short *str)
391 MSVCP_size_t len;
393 for(len=0; str[len]; len++);
395 return len;
398 /* ?_Copy_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
399 /* ?_Copy_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
400 unsigned short * CDECL MSVCP_char_traits_short__Copy_s(unsigned short *dest,
401 MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
403 if(size<count) {
404 _invalid_parameter(NULL, NULL, NULL, 0, 0);
405 return dest;
408 return memcpy(dest, src, count * sizeof(unsigned short));
411 /* ?copy@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
412 /* ?copy@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
413 unsigned short* CDECL MSVCP_char_traits_short_copy(unsigned short *dest,
414 const unsigned short *src, MSVCP_size_t count)
416 return MSVCP_char_traits_short__Copy_s(dest, count, src, count);
419 /* ?find@?$char_traits@G@std@@SAPBGPBGIABG@Z */
420 /* ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z */
421 const unsigned short* CDECL MSVCP_char_traits_short_find(
422 const unsigned short *str, MSVCP_size_t range, const unsigned short *c)
424 MSVCP_size_t i;
426 for(i=0; i<range; i++)
427 if(str[i] == *c)
428 return str+i;
430 return NULL;
433 /* ?_Move_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
434 /* ?_Move_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
435 unsigned short* CDECL MSVCP_char_traits_short__Move_s(unsigned short *dest,
436 MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
438 if(size<count) {
439 _invalid_parameter(NULL, NULL, NULL, 0, 0);
440 return dest;
443 return memmove(dest, src, count * sizeof(unsigned short));
446 /* ?move@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
447 /* ?move@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
448 unsigned short* CDECL MSVCP_char_traits_short_move(unsigned short *dest,
449 const unsigned short *src, MSVCP_size_t count)
451 return MSVCP_char_traits_short__Move_s(dest, count, src, count);
454 /* ?assign@?$char_traits@G@std@@SAPAGPAGIG@Z */
455 /* ?assign@?$char_traits@G@std@@SAPEAGPEAG_KG@Z */
456 unsigned short* CDECL MSVCP_char_traits_short_assignn(unsigned short *str,
457 MSVCP_size_t num, unsigned short c)
459 MSVCP_size_t i;
461 for(i=0; i<num; i++)
462 str[i] = c;
464 return str;
467 /* ?to_char_type@?$char_traits@G@std@@SAGABG@Z */
468 /* ?to_char_type@?$char_traits@G@std@@SAGAEBG@Z */
469 unsigned short CDECL MSVCP_char_traits_short_to_char_type(const unsigned short *i)
471 return *i;
474 /* ?to_int_type@?$char_traits@G@std@@SAGABG@Z */
475 /* ?to_int_type@?$char_traits@G@std@@SAGAEBG@Z */
476 unsigned short CDECL MSVCP_char_traits_short_to_int_type(const unsigned short *ch)
478 return *ch;
481 /* ?eq_int_type@?$char_traits@G@std@@SA_NABG0@Z */
482 /* ?eq_int_type@?$char_traits@G@std@@SA_NAEBG0@Z */
483 MSVCP_bool CDECL MSVCP_char_traits_short_eq_int_type(unsigned short *i1,
484 unsigned short *i2)
486 return *i1 == *i2;
489 /* ?eof@?$char_traits@G@std@@SAGXZ */
490 unsigned short CDECL MSVCP_char_traits_short_eof(void)
492 return -1;
495 /* ?not_eof@?$char_traits@G@std@@SAGABG@Z */
496 /* ?not_eof@?$char_traits@G@std@@SAGAEBG@Z */
497 unsigned short CDECL MSVCP_char_traits_short_not_eof(const unsigned short *in)
499 return (*in==(unsigned short)-1 ? 0 : *in);
503 /* _String_base */
504 /* ?_Xlen@_String_base@std@@SAXXZ */
505 void CDECL MSVCP__String_base_Xlen(void)
507 static const char msg[] = "string too long";
509 TRACE("\n");
510 throw_exception(EXCEPTION_LENGTH_ERROR, msg);
513 /* ?_Xran@_String_base@std@@SAXXZ */
514 void CDECL MSVCP__String_base_Xran(void)
516 static const char msg[] = "invalid string position";
518 TRACE("\n");
519 throw_exception(EXCEPTION_OUT_OF_RANGE, msg);
522 /* ?_Xinvarg@_String_base@std@@SAXXZ */
523 void CDECL MSVCP__String_base_Xinvarg(void)
525 static const char msg[] = "invalid string argument";
527 TRACE("\n");
528 throw_exception(EXCEPTION_INVALID_ARGUMENT, msg);
532 /* basic_string<char, char_traits<char>, allocator<char>> */
533 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
534 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
535 const MSVCP_size_t MSVCP_basic_string_char_npos = -1;
537 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ */
538 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAPEADXZ */
539 DEFINE_THISCALL_WRAPPER(basic_string_char_ptr, 4)
540 char* __thiscall basic_string_char_ptr(basic_string_char *this)
542 if(this->res < BUF_SIZE_CHAR)
543 return this->data.buf;
544 return this->data.ptr;
547 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ */
548 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEBAPEBDXZ */
549 DEFINE_THISCALL_WRAPPER(basic_string_char_const_ptr, 4)
550 const char* __thiscall basic_string_char_const_ptr(const basic_string_char *this)
552 if(this->res < BUF_SIZE_CHAR)
553 return this->data.buf;
554 return this->data.ptr;
557 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z */
558 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K@Z */
559 DEFINE_THISCALL_WRAPPER(basic_string_char_eos, 8)
560 void __thiscall basic_string_char_eos(basic_string_char *this, MSVCP_size_t len)
562 static const char nullbyte = '\0';
564 this->size = len;
565 MSVCP_char_traits_char_assign(basic_string_char_ptr(this)+len, &nullbyte);
568 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z */
569 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z */
570 DEFINE_THISCALL_WRAPPER(basic_string_char_inside, 8)
571 MSVCP_bool __thiscall basic_string_char_inside(
572 basic_string_char *this, const char *ptr)
574 char *cstr = basic_string_char_ptr(this);
576 return ptr>=cstr && ptr<cstr+this->size;
579 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z */
580 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_N_K@Z */
581 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy, 12)
582 void __thiscall basic_string_char_tidy(basic_string_char *this,
583 MSVCP_bool built, MSVCP_size_t new_size)
585 if(built && BUF_SIZE_CHAR<=this->res) {
586 char *ptr = this->data.ptr;
588 if(new_size > 0)
589 MSVCP_char_traits_char__Copy_s(this->data.buf, BUF_SIZE_CHAR, ptr, new_size);
590 MSVCP_allocator_char_deallocate(this->allocator, ptr, this->res+1);
593 this->res = BUF_SIZE_CHAR-1;
594 basic_string_char_eos(this, new_size);
597 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z */
598 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_N_K_N@Z */
599 DEFINE_THISCALL_WRAPPER(basic_string_char_grow, 12)
600 MSVCP_bool __thiscall basic_string_char_grow(
601 basic_string_char *this, MSVCP_size_t new_size, MSVCP_bool trim)
603 if(this->res < new_size) {
604 MSVCP_size_t new_res = new_size, len = this->size;
605 char *ptr;
607 new_res |= 0xf;
609 if(new_res/3 < this->res/2)
610 new_res = this->res + this->res/2;
612 ptr = MSVCP_allocator_char_allocate(this->allocator, new_res+1);
613 if(!ptr)
614 ptr = MSVCP_allocator_char_allocate(this->allocator, new_size+1);
615 else
616 new_size = new_res;
617 if(!ptr) {
618 ERR("Out of memory\n");
619 basic_string_char_tidy(this, TRUE, 0);
620 return FALSE;
623 MSVCP_char_traits_char__Copy_s(ptr, new_size,
624 basic_string_char_ptr(this), this->size);
625 basic_string_char_tidy(this, TRUE, 0);
626 this->data.ptr = ptr;
627 this->res = new_size;
628 basic_string_char_eos(this, len);
629 } else if(trim && new_size < BUF_SIZE_CHAR)
630 basic_string_char_tidy(this, TRUE,
631 new_size<this->size ? new_size : this->size);
632 else if(new_size == 0)
633 basic_string_char_eos(this, 0);
635 return (new_size>0);
638 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z */
639 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0@Z */
640 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy, 12)
641 void __thiscall basic_string_char__Copy(basic_string_char *this,
642 MSVCP_size_t new_size, MSVCP_size_t copy_len)
644 TRACE("%p %lu %lu\n", this, new_size, copy_len);
646 if(!basic_string_char_grow(this, new_size, FALSE))
647 return;
648 basic_string_char_eos(this, copy_len);
651 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KAIV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
652 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KA_KV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
653 MSVCP_size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, String_iterator_char i2)
655 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
657 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
658 _invalid_parameter(NULL, NULL, NULL, 0, 0);
659 return 0;
662 return !i1.pos ? 0 : i1.pos-i2.pos;
665 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
666 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
667 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator, 8)
668 allocator* __thiscall basic_string_char_get_allocator(const basic_string_char *this, allocator *ret)
670 TRACE("%p\n", this);
671 return ret;
674 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
675 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
676 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase, 12)
677 basic_string_char* __thiscall MSVCP_basic_string_char_erase(
678 basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t len)
680 TRACE("%p %lu %lu\n", this, pos, len);
682 if(pos > this->size)
683 MSVCP__String_base_Xran();
685 if(len > this->size-pos)
686 len = this->size-pos;
688 if(len) {
689 MSVCP_char_traits_char__Move_s(basic_string_char_ptr(this)+pos,
690 this->res-pos, basic_string_char_ptr(this)+pos+len,
691 this->size-pos-len);
692 basic_string_char_eos(this, this->size-len);
695 return this;
698 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
699 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
700 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter_range, 24)
701 String_iterator_char* __thiscall basic_string_char_erase_iter_range(basic_string_char *this,
702 String_iterator_char *ret, String_iterator_char beg, String_iterator_char end)
704 MSVCP_size_t off;
706 ret->bstr = this;
707 ret->pos = basic_string_char_ptr(this);
708 off = MSVCP_basic_string_char_Pdif(beg, *ret);
710 MSVCP_basic_string_char_erase(this, off, MSVCP_basic_string_char_Pdif(end, beg));
712 ret->bstr = this;
713 ret->pos = basic_string_char_ptr(this)+off;
714 return ret;
717 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
718 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
719 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter, 16)
720 String_iterator_char* __thiscall basic_string_char_erase_iter(basic_string_char *this,
721 String_iterator_char *ret, String_iterator_char pos)
723 MSVCP_size_t off;
725 ret->bstr = this;
726 ret->pos = basic_string_char_ptr(this);
727 off = MSVCP_basic_string_char_Pdif(pos, *ret);
729 MSVCP_basic_string_char_erase(this, off, 1);
731 ret->bstr = this;
732 ret->pos = basic_string_char_ptr(this)+off;
733 return ret;
736 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
737 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
738 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr, 16)
739 basic_string_char* __thiscall MSVCP_basic_string_char_assign_substr(
740 basic_string_char *this, const basic_string_char *assign,
741 MSVCP_size_t pos, MSVCP_size_t len)
743 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
745 if(assign->size < pos)
746 MSVCP__String_base_Xran();
748 if(len > assign->size-pos)
749 len = assign->size-pos;
751 if(this == assign) {
752 MSVCP_basic_string_char_erase(this, pos+len, MSVCP_basic_string_char_npos);
753 MSVCP_basic_string_char_erase(this, 0, pos);
754 } else if(basic_string_char_grow(this, len, FALSE)) {
755 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
756 this->res, basic_string_char_const_ptr(assign)+pos, len);
757 basic_string_char_eos(this, len);
760 return this;
763 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
764 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
765 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
766 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
767 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign, 8)
768 basic_string_char* __thiscall MSVCP_basic_string_char_assign(
769 basic_string_char *this, const basic_string_char *assign)
771 return MSVCP_basic_string_char_assign_substr(this, assign,
772 0, MSVCP_basic_string_char_npos);
775 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
776 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
777 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len, 12)
778 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr_len(
779 basic_string_char *this, const char *str, MSVCP_size_t len)
781 TRACE("%p %s %lu\n", this, debugstr_an(str, len), len);
783 if(basic_string_char_inside(this, str))
784 return MSVCP_basic_string_char_assign_substr(this, this,
785 str-basic_string_char_ptr(this), len);
786 else if(basic_string_char_grow(this, len, FALSE)) {
787 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
788 this->res, str, len);
789 basic_string_char_eos(this, len);
792 return this;
795 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
796 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
797 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch, 8)
798 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ch(
799 basic_string_char *this, char ch)
801 return MSVCP_basic_string_char_assign_cstr_len(this, &ch, 1);
804 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
805 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
806 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
807 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
808 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr, 8)
809 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr(
810 basic_string_char *this, const char *str)
812 return MSVCP_basic_string_char_assign_cstr_len(this, str,
813 MSVCP_char_traits_char_length(str));
816 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
817 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
818 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn, 12)
819 basic_string_char* __thiscall MSVCP_basic_string_char_assignn(
820 basic_string_char *this, MSVCP_size_t count, char ch)
822 TRACE("%p %ld %c\n", this, count, ch);
824 basic_string_char_grow(this, count, FALSE);
825 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this), count, ch);
826 basic_string_char_eos(this, count);
827 return this;
830 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
831 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
832 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr, 12)
833 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ptr_ptr(
834 basic_string_char *this, const char *first, const char *last)
836 return MSVCP_basic_string_char_assign_cstr_len(this, first, last-first);
839 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
840 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
841 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_iter, 20)
842 basic_string_char* __thiscall MSVCP_basic_string_char_assign_iter(basic_string_char *this,
843 String_iterator_char beg, String_iterator_char end)
845 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
848 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z */
849 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0D@Z */
850 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Chassign, 16)
851 void __thiscall MSVCP_basic_string_char_Chassign(basic_string_char *this,
852 MSVCP_size_t off, MSVCP_size_t count, char ch)
854 TRACE("%p %lu %lu %c\n", this, off, count, ch);
855 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+off, count, ch);
858 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADIII@Z */
859 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K11@Z */
860 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Copy_s, 20)
861 MSVCP_size_t __thiscall MSVCP_basic_string_char_Copy_s(const basic_string_char *this,
862 char *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
864 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
866 if(this->size < off)
867 MSVCP__String_base_Xran();
869 if(count > this->size-off)
870 count = this->size-off;
872 MSVCP_char_traits_char__Copy_s(dest, size,
873 basic_string_char_const_ptr(this)+off, count);
874 return count;
877 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
878 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
879 DEFINE_THISCALL_WRAPPER(basic_string_char_copy, 16)
880 MSVCP_size_t __thiscall basic_string_char_copy(const basic_string_char *this,
881 char *dest, MSVCP_size_t count, MSVCP_size_t off)
883 return MSVCP_basic_string_char_Copy_s(this, dest, count, count, off);
886 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
887 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
888 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
889 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
890 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str, 4)
891 const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char *this)
893 TRACE("%p\n", this);
894 return basic_string_char_const_ptr(this);
897 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
898 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
899 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity, 4)
900 MSVCP_size_t __thiscall MSVCP_basic_string_char_capacity(basic_string_char *this)
902 TRACE("%p\n", this);
903 return this->res;
906 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
907 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
908 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve, 8)
909 void __thiscall MSVCP_basic_string_char_reserve(basic_string_char *this, MSVCP_size_t size)
911 MSVCP_size_t len;
913 TRACE("%p %ld\n", this, size);
915 len = this->size;
916 if(len > size)
917 return;
919 if(basic_string_char_grow(this, size, TRUE))
920 basic_string_char_eos(this, len);
923 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
924 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
925 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor, 4)
926 basic_string_char* __thiscall MSVCP_basic_string_char_ctor(basic_string_char *this)
928 TRACE("%p\n", this);
930 basic_string_char_tidy(this, FALSE, 0);
931 return this;
934 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
935 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
936 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor, 8)
937 basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(
938 basic_string_char *this, const basic_string_char *copy)
940 TRACE("%p %p\n", this, copy);
942 basic_string_char_tidy(this, FALSE, 0);
943 MSVCP_basic_string_char_assign(this, copy);
944 return this;
947 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
948 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
949 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr, 8)
950 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr(
951 basic_string_char *this, const char *str)
953 TRACE("%p %s\n", this, debugstr_a(str));
955 basic_string_char_tidy(this, FALSE, 0);
956 MSVCP_basic_string_char_assign_cstr(this, str);
957 return this;
960 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
961 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
962 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc, 12)
963 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_alloc(
964 basic_string_char *this, const char *str, const void *alloc)
966 return MSVCP_basic_string_char_ctor_cstr(this, str);
969 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
970 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
971 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len, 12)
972 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len(
973 basic_string_char *this, const char *str, MSVCP_size_t len)
975 TRACE("%p %s %ld\n", this, debugstr_an(str, len), len);
977 basic_string_char_tidy(this, FALSE, 0);
978 MSVCP_basic_string_char_assign_cstr_len(this, str, len);
979 return this;
982 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
983 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
984 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc, 16)
985 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len_alloc(
986 basic_string_char *this, const char *str, MSVCP_size_t len, const void *alloc)
988 return MSVCP_basic_string_char_ctor_cstr_len(this, str, len);
991 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z */
992 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z */
993 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr, 16)
994 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr(
995 basic_string_char *this, const basic_string_char *assign,
996 MSVCP_size_t pos, MSVCP_size_t len)
998 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
1000 basic_string_char_tidy(this, FALSE, 0);
1001 MSVCP_basic_string_char_assign_substr(this, assign, pos, len);
1002 return this;
1005 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
1006 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
1007 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc, 20)
1008 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr_alloc(
1009 basic_string_char *this, const basic_string_char *assign,
1010 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
1012 return MSVCP_basic_string_char_ctor_substr(this, assign, pos, len);
1015 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
1016 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
1017 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc, 8)
1018 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_alloc(
1019 basic_string_char *this, const void *alloc)
1021 TRACE("%p %p\n", this, alloc);
1023 basic_string_char_tidy(this, FALSE, 0);
1024 return this;
1027 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z */
1028 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z */
1029 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch, 12)
1030 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch(basic_string_char *this,
1031 MSVCP_size_t count, char ch)
1033 TRACE("%p %ld %c\n", this, count, ch);
1035 basic_string_char_tidy(this, FALSE, 0);
1036 MSVCP_basic_string_char_assignn(this, count, ch);
1037 return this;
1040 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
1041 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
1042 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc, 16)
1043 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char *this,
1044 MSVCP_size_t count, char ch, const void *alloc)
1046 return MSVCP_basic_string_char_ctor_ch(this, count, ch);
1049 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z */
1050 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z */
1051 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ptr_ptr, 12)
1052 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ptr_ptr(basic_string_char *this,
1053 const char *first, const char *last)
1055 return MSVCP_basic_string_char_ctor_cstr_len(this, first, last-first);
1058 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z */
1059 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z */
1060 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_iter, 20)
1061 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_iter(basic_string_char *this,
1062 String_iterator_char beg, String_iterator_char end)
1064 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
1067 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
1068 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
1069 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4)
1070 void __thiscall MSVCP_basic_string_char_dtor(basic_string_char *this)
1072 TRACE("%p\n", this);
1073 basic_string_char_tidy(this, TRUE, 0);
1076 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1077 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1078 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1079 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1080 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length, 4)
1081 MSVCP_size_t __thiscall MSVCP_basic_string_char_length(const basic_string_char *this)
1083 TRACE("%p\n", this);
1084 return this->size;
1087 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1088 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1089 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size, 4)
1090 MSVCP_size_t __thiscall basic_string_char_max_size(const basic_string_char *this)
1092 TRACE("%p\n", this);
1093 return MSVCP_allocator_char_max_size(this->allocator)-1;
1096 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1097 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1098 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty, 4)
1099 MSVCP_bool __thiscall MSVCP_basic_string_char_empty(basic_string_char *this)
1101 TRACE("%p\n", this);
1102 return this->size == 0;
1105 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1106 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1107 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap, 8)
1108 void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_string_char *str)
1110 if(this != str) {
1111 char tmp[sizeof(this->data)];
1112 const MSVCP_size_t size = this->size;
1113 const MSVCP_size_t res = this->res;
1115 memcpy(tmp, this->data.buf, sizeof(this->data));
1116 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
1117 memcpy(str->data.buf, tmp, sizeof(this->data));
1119 this->size = str->size;
1120 this->res = str->res;
1122 str->size = size;
1123 str->res = res;
1127 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1128 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1129 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr, 16)
1130 basic_string_char* __thiscall MSVCP_basic_string_char_substr(basic_string_char *this,
1131 basic_string_char *ret, MSVCP_size_t off, MSVCP_size_t len)
1133 TRACE("%p %lu %lu\n", this, off, len);
1135 MSVCP_basic_string_char_ctor_substr(ret, this, off, len);
1136 return ret;
1139 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1140 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1141 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr, 16)
1142 basic_string_char* __thiscall MSVCP_basic_string_char_append_substr(basic_string_char *this,
1143 const basic_string_char *append, MSVCP_size_t offset, MSVCP_size_t count)
1145 TRACE("%p %p %lu %lu\n", this, append, offset, count);
1147 if(append->size < offset)
1148 MSVCP__String_base_Xran();
1150 if(count > append->size-offset)
1151 count = append->size-offset;
1153 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1154 MSVCP__String_base_Xlen();
1156 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1157 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1158 this->res-this->size, basic_string_char_const_ptr(append)+offset, count);
1159 basic_string_char_eos(this, this->size+count);
1162 return this;
1165 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1166 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1167 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1168 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1169 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append, 8)
1170 basic_string_char* __thiscall MSVCP_basic_string_char_append(
1171 basic_string_char *this, const basic_string_char *append)
1173 return MSVCP_basic_string_char_append_substr(this, append,
1174 0, MSVCP_basic_string_char_npos);
1177 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1178 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1179 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len, 12)
1180 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr_len(
1181 basic_string_char *this, const char *append, MSVCP_size_t count)
1183 TRACE("%p %s %lu\n", this, debugstr_an(append, count), count);
1185 if(basic_string_char_inside(this, append))
1186 return MSVCP_basic_string_char_append_substr(this, this,
1187 append-basic_string_char_ptr(this), count);
1189 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1190 MSVCP__String_base_Xlen();
1192 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1193 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1194 this->res-this->size, append, count);
1195 basic_string_char_eos(this, this->size+count);
1198 return this;
1201 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1202 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1203 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1204 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1205 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr, 8)
1206 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr(
1207 basic_string_char *this, const char *append)
1209 return MSVCP_basic_string_char_append_cstr_len(this, append,
1210 MSVCP_char_traits_char_length(append));
1213 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1214 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1215 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end, 12)
1216 basic_string_char* __thiscall MSVCP_basic_string_char_append_beg_end(
1217 basic_string_char *this, const char *beg, const char *end)
1219 return MSVCP_basic_string_char_append_cstr_len(this, beg, end-beg);
1222 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
1223 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
1224 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_iter, 20)
1225 basic_string_char* __thiscall MSVCP_basic_string_char_append_iter(
1226 basic_string_char *this, String_iterator_char beg, String_iterator_char end)
1228 return MSVCP_basic_string_char_append_cstr_len(this, beg.pos, end.pos-beg.pos);
1231 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1232 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1233 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch, 12)
1234 basic_string_char* __thiscall MSVCP_basic_string_char_append_len_ch(
1235 basic_string_char *this, MSVCP_size_t count, char ch)
1237 TRACE("%p %lu %c\n", this, count, ch);
1239 if(MSVCP_basic_string_char_npos-this->size <= count)
1240 MSVCP__String_base_Xlen();
1242 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1243 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+this->size, count, ch);
1244 basic_string_char_eos(this, this->size+count);
1247 return this;
1250 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1251 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1252 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXD@Z */
1253 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXD@Z */
1254 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch, 8)
1255 basic_string_char* __thiscall MSVCP_basic_string_char_append_ch(
1256 basic_string_char *this, char ch)
1258 return MSVCP_basic_string_char_append_len_ch(this, 1, ch);
1261 /* ??$?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 */
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@AEBV10@PEBD@Z */
1263 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char *ret,
1264 const basic_string_char *left, const char *right)
1266 TRACE("%p %s\n", left, debugstr_a(right));
1268 MSVCP_basic_string_char_copy_ctor(ret, left);
1269 MSVCP_basic_string_char_append_cstr(ret, right);
1270 return ret;
1273 /* ??$?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 */
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@PEBDAEBV10@@Z */
1275 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char *ret,
1276 const char *left, const basic_string_char *right)
1278 TRACE("%s %p\n", debugstr_a(left), right);
1280 MSVCP_basic_string_char_ctor_cstr(ret, left);
1281 MSVCP_basic_string_char_append(ret, right);
1282 return ret;
1285 /* ??$?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 */
1286 /* ??$?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 */
1287 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate(basic_string_char *ret,
1288 const basic_string_char *left, const basic_string_char *right)
1290 TRACE("%p %p\n", left, right);
1292 MSVCP_basic_string_char_copy_ctor(ret, left);
1293 MSVCP_basic_string_char_append(ret, right);
1294 return ret;
1297 /* ??$?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 */
1298 /* ??$?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 */
1299 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char *ret,
1300 const basic_string_char *left, char right)
1302 TRACE("%p %c\n", left, right);
1304 MSVCP_basic_string_char_copy_ctor(ret, left);
1305 MSVCP_basic_string_char_append_ch(ret, right);
1306 return ret;
1309 /* ??$?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 */
1310 /* ??$?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 */
1311 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char *ret,
1312 char left, const basic_string_char *right)
1314 TRACE("%c %p\n", left, right);
1316 MSVCP_basic_string_char_ctor_cstr_len(ret, &left, 1);
1317 MSVCP_basic_string_char_append(ret, right);
1318 return ret;
1321 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
1322 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
1323 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20)
1324 int __thiscall MSVCP_basic_string_char_compare_substr_cstr_len(
1325 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1326 const char *str, MSVCP_size_t count)
1328 int ans;
1330 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_an(str, count), count);
1332 if(this->size < pos)
1333 MSVCP__String_base_Xran();
1335 if(num > this->size-pos)
1336 num = this->size-pos;
1338 ans = MSVCP_char_traits_char_compare(basic_string_char_const_ptr(this)+pos,
1339 str, num>count ? count : num);
1340 if(ans)
1341 return ans;
1343 if(num > count)
1344 ans = 1;
1345 else if(num < count)
1346 ans = -1;
1347 return ans;
1350 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
1351 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
1352 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr, 16)
1353 int __thiscall MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char *this,
1354 MSVCP_size_t pos, MSVCP_size_t num, const char *str)
1356 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1357 str, MSVCP_char_traits_char_length(str));
1360 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
1361 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
1362 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr, 8)
1363 int __thiscall MSVCP_basic_string_char_compare_cstr(
1364 const basic_string_char *this, const char *str)
1366 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1367 str, MSVCP_char_traits_char_length(str));
1370 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
1371 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
1372 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr, 24)
1373 int __thiscall MSVCP_basic_string_char_compare_substr_substr(
1374 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1375 const basic_string_char *compare, MSVCP_size_t off, MSVCP_size_t count)
1377 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
1379 if(compare->size < off)
1380 MSVCP__String_base_Xran();
1382 if(count > compare->size-off)
1383 count = compare->size-off;
1385 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1386 basic_string_char_const_ptr(compare)+off, count);
1389 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
1390 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
1391 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr, 16)
1392 int __thiscall MSVCP_basic_string_char_compare_substr(
1393 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1394 const basic_string_char *compare)
1396 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1397 basic_string_char_const_ptr(compare), compare->size);
1400 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
1401 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
1402 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare, 8)
1403 int __thiscall MSVCP_basic_string_char_compare(
1404 const basic_string_char *this, const basic_string_char *compare)
1406 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1407 basic_string_char_const_ptr(compare), compare->size);
1410 /* ??$?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 */
1411 /* ??$?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 */
1412 MSVCP_bool __cdecl MSVCP_basic_string_char_equal(
1413 const basic_string_char *left, const basic_string_char *right)
1415 return MSVCP_basic_string_char_compare(left, right) == 0;
1418 /* ??$?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 */
1419 /* ??$?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 */
1420 MSVCP_bool __cdecl MSVCP_basic_string_char_equal_str_cstr(
1421 const basic_string_char *left, const char *right)
1423 return MSVCP_basic_string_char_compare_cstr(left, right) == 0;
1426 /* ??$?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 */
1427 /* ??$?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 */
1428 MSVCP_bool __cdecl MSVCP_basic_string_char_equal_cstr_str(
1429 const char *left, const basic_string_char *right)
1431 return MSVCP_basic_string_char_compare_cstr(right, left) == 0;
1434 /* ??$?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 */
1435 /* ??$?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 */
1436 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal(
1437 const basic_string_char *left, const basic_string_char *right)
1439 return MSVCP_basic_string_char_compare(left, right) != 0;
1442 /* ??$?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 */
1443 /* ??$?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 */
1444 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal_str_cstr(
1445 const basic_string_char *left, const char *right)
1447 return MSVCP_basic_string_char_compare_cstr(left, right) != 0;
1450 /* ??$?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 */
1451 /* ??$?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 */
1452 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal_cstr_str(
1453 const char *left, const basic_string_char *right)
1455 return MSVCP_basic_string_char_compare_cstr(right, left) != 0;
1458 /* ??$?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 */
1459 /* ??$?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 */
1460 MSVCP_bool __cdecl MSVCP_basic_string_char_lower(
1461 const basic_string_char *left, const basic_string_char *right)
1463 return MSVCP_basic_string_char_compare(left, right) < 0;
1466 /* ??$?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 */
1467 /* ??$?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 */
1468 MSVCP_bool __cdecl MSVCP_basic_string_char_lower_bstr_cstr(
1469 const basic_string_char *left, const char *right)
1471 return MSVCP_basic_string_char_compare_cstr(left, right) < 0;
1474 /* ??$?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 */
1475 /* ??$?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 */
1476 MSVCP_bool __cdecl MSVCP_basic_string_char_lower_cstr_bstr(
1477 const char *left, const basic_string_char *right)
1479 return MSVCP_basic_string_char_compare_cstr(right, left) > 0;
1482 /* ??$?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 */
1483 /* ??$?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 */
1484 MSVCP_bool __cdecl MSVCP_basic_string_char_leq(
1485 const basic_string_char *left, const basic_string_char *right)
1487 return MSVCP_basic_string_char_compare(left, right) <= 0;
1490 /* ??$?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 */
1491 /* ??$?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 */
1492 MSVCP_bool __cdecl MSVCP_basic_string_char_leq_bstr_cstr(
1493 const basic_string_char *left, const char *right)
1495 return MSVCP_basic_string_char_compare_cstr(left, right) <= 0;
1498 /* ??$?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 */
1499 /* ??$?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 */
1500 MSVCP_bool __cdecl MSVCP_basic_string_char_leq_cstr_bstr(
1501 const char *left, const basic_string_char *right)
1503 return MSVCP_basic_string_char_compare_cstr(right, left) >= 0;
1506 /* ??$?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 */
1507 /* ??$?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 */
1508 MSVCP_bool __cdecl MSVCP_basic_string_char_greater(
1509 const basic_string_char *left, const basic_string_char *right)
1511 return MSVCP_basic_string_char_compare(left, right) > 0;
1514 /* ??$?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 */
1515 /* ??$?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 */
1516 MSVCP_bool __cdecl MSVCP_basic_string_char_greater_bstr_cstr(
1517 const basic_string_char *left, const char *right)
1519 return MSVCP_basic_string_char_compare_cstr(left, right) > 0;
1522 /* ??$?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 */
1523 /* ??$?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 */
1524 MSVCP_bool __cdecl MSVCP_basic_string_char_greater_cstr_bstr(
1525 const char *left, const basic_string_char *right)
1527 return MSVCP_basic_string_char_compare_cstr(right, left) < 0;
1530 /* ??$?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 */
1531 /* ??$?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 */
1532 MSVCP_bool __cdecl MSVCP_basic_string_char_geq(
1533 const basic_string_char *left, const basic_string_char *right)
1535 return MSVCP_basic_string_char_compare(left, right) >= 0;
1538 /* ??$?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 */
1539 /* ??$?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 */
1540 MSVCP_bool __cdecl MSVCP_basic_string_char_geq_bstr_cstr(
1541 const basic_string_char *left, const char *right)
1543 return MSVCP_basic_string_char_compare_cstr(left, right) >= 0;
1546 /* ??$?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 */
1547 /* ??$?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 */
1548 MSVCP_bool __cdecl MSVCP_basic_string_char_geq_cstr_bstr(
1549 const char *left, const basic_string_char *right)
1551 return MSVCP_basic_string_char_compare_cstr(right, left) <= 0;
1554 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1555 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1556 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr, 16)
1557 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_substr(
1558 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1560 const char *p, *end;
1562 TRACE("%p %s %lu %lu\n", this, debugstr_an(find, len), pos, len);
1564 if(len==0 && pos<=this->size)
1565 return pos;
1566 if(pos>=this->size || len>this->size)
1567 return MSVCP_basic_string_char_npos;
1569 end = basic_string_char_const_ptr(this)+this->size-len+1;
1570 for(p=basic_string_char_const_ptr(this)+pos; p<end; p++) {
1571 p = MSVCP_char_traits_char_find(p, end-p, find);
1572 if(!p)
1573 break;
1575 if(!MSVCP_char_traits_char_compare(p, find, len))
1576 return p-basic_string_char_const_ptr(this);
1579 return MSVCP_basic_string_char_npos;
1582 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1583 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1584 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off, 12)
1585 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_off(
1586 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1588 return MSVCP_basic_string_char_find_cstr_substr(this, find, pos,
1589 MSVCP_char_traits_char_length(find));
1592 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1593 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1594 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off, 12)
1595 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_off(
1596 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1598 return MSVCP_basic_string_char_find_cstr_substr(this,
1599 basic_string_char_const_ptr(find), off, find->size);
1602 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1603 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1604 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch, 12)
1605 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_ch(
1606 const basic_string_char *this, char ch, MSVCP_size_t pos)
1608 return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1);
1611 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1612 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1613 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr, 16)
1614 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_substr(
1615 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1617 const char *p, *end;
1619 TRACE("%p %s %lu %lu\n", this, debugstr_an(find, len), pos, len);
1621 if(len==0)
1622 return pos<this->size ? pos : this->size;
1624 if(len > this->size)
1625 return MSVCP_basic_string_char_npos;
1627 if(pos > this->size-len+1)
1628 pos = this->size-len+1;
1629 end = basic_string_char_const_ptr(this);
1630 for(p=end+pos; p>=end; p--) {
1631 if(*p==*find && !MSVCP_char_traits_char_compare(p, find, len))
1632 return p-basic_string_char_const_ptr(this);
1635 return MSVCP_basic_string_char_npos;
1638 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1639 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1640 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off, 12)
1641 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_off(
1642 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1644 return MSVCP_basic_string_char_rfind_cstr_substr(this, find, pos,
1645 MSVCP_char_traits_char_length(find));
1648 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1649 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1650 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off, 12)
1651 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_off(
1652 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1654 return MSVCP_basic_string_char_rfind_cstr_substr(this,
1655 basic_string_char_const_ptr(find), off, find->size);
1658 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1659 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1660 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch, 12)
1661 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_ch(
1662 const basic_string_char *this, char ch, MSVCP_size_t pos)
1664 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch, pos, 1);
1667 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1668 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1669 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr, 16)
1670 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr_substr(
1671 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1673 const char *p, *end;
1675 TRACE("%p %p %lu %lu\n", this, find, off, len);
1677 if(len>0 && off<this->size) {
1678 end = basic_string_char_const_ptr(this)+this->size;
1679 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1680 if(MSVCP_char_traits_char_find(find, len, p))
1681 return p-basic_string_char_const_ptr(this);
1684 return MSVCP_basic_string_char_npos;
1687 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1688 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1689 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of, 12)
1690 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of(
1691 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1693 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1694 basic_string_char_const_ptr(find), off, find->size);
1697 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1698 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1699 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr, 12)
1700 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr(
1701 const basic_string_char *this, const char *find, MSVCP_size_t off)
1703 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1704 this, find, off, MSVCP_char_traits_char_length(find));
1707 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1708 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1709 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch, 12)
1710 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_ch(
1711 const basic_string_char *this, char ch, MSVCP_size_t off)
1713 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch, off, 1);
1716 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1717 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1718 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr, 16)
1719 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1720 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1722 const char *p, *end;
1724 TRACE("%p %p %lu %lu\n", this, find, off, len);
1726 if(off<this->size) {
1727 end = basic_string_char_const_ptr(this)+this->size;
1728 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1729 if(!MSVCP_char_traits_char_find(find, len, p))
1730 return p-basic_string_char_const_ptr(this);
1733 return MSVCP_basic_string_char_npos;
1736 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1737 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1738 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of, 12)
1739 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of(
1740 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1742 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1743 basic_string_char_const_ptr(find), off, find->size);
1746 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1747 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1748 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr, 12)
1749 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr(
1750 const basic_string_char *this, const char *find, MSVCP_size_t off)
1752 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1753 this, find, off, MSVCP_char_traits_char_length(find));
1756 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1757 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1758 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch, 12)
1759 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_ch(
1760 const basic_string_char *this, char ch, MSVCP_size_t off)
1762 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch, off, 1);
1765 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1766 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1767 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr, 16)
1768 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr_substr(
1769 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1771 const char *p, *beg;
1773 TRACE("%p %p %lu %lu\n", this, find, off, len);
1775 if(len>0 && this->size>0) {
1776 if(off >= this->size)
1777 off = this->size-1;
1779 beg = basic_string_char_const_ptr(this);
1780 for(p=beg+off; p>=beg; p--)
1781 if(MSVCP_char_traits_char_find(find, len, p))
1782 return p-beg;
1785 return MSVCP_basic_string_char_npos;
1788 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1789 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1790 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of, 12)
1791 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of(
1792 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1794 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1795 basic_string_char_const_ptr(find), off, find->size);
1798 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1799 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1800 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr, 12)
1801 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr(
1802 const basic_string_char *this, const char *find, MSVCP_size_t off)
1804 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1805 this, find, off, MSVCP_char_traits_char_length(find));
1808 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1809 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1810 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch, 12)
1811 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_ch(
1812 const basic_string_char *this, char ch, MSVCP_size_t off)
1814 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch, off, 1);
1817 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1818 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1819 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr, 16)
1820 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1821 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1823 const char *p, *beg;
1825 TRACE("%p %p %lu %lu\n", this, find, off, len);
1827 if(len>0 && this->size>0) {
1828 if(off >= this->size)
1829 off = this->size-1;
1831 beg = basic_string_char_const_ptr(this);
1832 for(p=beg+off; p>=beg; p--)
1833 if(!MSVCP_char_traits_char_find(find, len, p))
1834 return p-beg;
1837 return MSVCP_basic_string_char_npos;
1840 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1841 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1842 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of, 12)
1843 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of(
1844 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1846 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1847 basic_string_char_const_ptr(find), off, find->size);
1850 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1851 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1852 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr, 12)
1853 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr(
1854 const basic_string_char *this, const char *find, MSVCP_size_t off)
1856 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1857 this, find, off, MSVCP_char_traits_char_length(find));
1860 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1861 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1862 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch, 12)
1863 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_ch(
1864 const basic_string_char *this, char ch, MSVCP_size_t off)
1866 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch, off, 1);
1869 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1870 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1871 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at, 8)
1872 char* __thiscall MSVCP_basic_string_char_operator_at(
1873 basic_string_char *this, MSVCP_size_t pos)
1875 TRACE("%p %lu\n", this, pos);
1877 assert(this->size >= pos);
1878 return basic_string_char_ptr(this)+pos;
1881 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1882 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1883 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_operator_at, 8)
1884 const char* __thiscall MSVCP_basic_string_char_const_operator_at(
1885 const basic_string_char *this, MSVCP_size_t pos)
1887 TRACE("%p %lu\n", this, pos);
1889 assert(this->size >= pos);
1890 return basic_string_char_const_ptr(this)+pos;
1893 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z */
1894 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z */
1895 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at_noverify, 8)
1896 char* __thiscall MSVCP_basic_string_char_operator_at_noverify(
1897 basic_string_char *this, size_t_noverify pos)
1899 TRACE("%p %lu\n", this, pos.val);
1900 return basic_string_char_ptr(this)+pos.val;
1903 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z */
1904 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z */
1905 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_const_at_noverify, 8)
1906 const char* __thiscall MSVCP_basic_string_char_operator_const_at_noverify(
1907 const basic_string_char *this, size_t_noverify pos)
1909 TRACE("%p %lu\n", this, pos.val);
1910 return basic_string_char_const_ptr(this)+pos.val;
1913 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1914 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1915 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at, 8)
1916 char* __thiscall MSVCP_basic_string_char_at(
1917 basic_string_char *this, MSVCP_size_t pos)
1919 TRACE("%p %lu\n", this, pos);
1921 if(this->size <= pos)
1922 MSVCP__String_base_Xran();
1924 return basic_string_char_ptr(this)+pos;
1927 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1928 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1929 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_at, 8)
1930 const char* __thiscall MSVCP_basic_string_char_const_at(
1931 const basic_string_char *this, MSVCP_size_t pos)
1933 TRACE("%p %lu\n", this, pos);
1935 if(this->size <= pos)
1936 MSVCP__String_base_Xran();
1938 return basic_string_char_const_ptr(this)+pos;
1941 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1942 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1943 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len, 20)
1944 basic_string_char* __thiscall basic_string_char_replace_cstr_len(basic_string_char *this,
1945 MSVCP_size_t off, MSVCP_size_t len, const char *str, MSVCP_size_t str_len)
1947 MSVCP_size_t inside_pos = -1;
1948 char *ptr = basic_string_char_ptr(this);
1950 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
1952 if(this->size < off)
1953 MSVCP__String_base_Xran();
1955 if(len > this->size-off)
1956 len = this->size-off;
1958 if(MSVCP_basic_string_char_npos-str_len <= this->size-len)
1959 MSVCP__String_base_Xlen();
1961 if(basic_string_char_inside(this, str))
1962 inside_pos = str-ptr;
1964 if(len < str_len) {
1965 basic_string_char_grow(this, this->size-len+str_len, FALSE);
1966 ptr = basic_string_char_ptr(this);
1969 if(inside_pos == -1) {
1970 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1971 memcpy(ptr+off, str, str_len*sizeof(char));
1972 } else if(len >= str_len) {
1973 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(char));
1974 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1975 } else {
1976 MSVCP_size_t size;
1978 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1980 if(inside_pos < off+len) {
1981 size = off+len-inside_pos;
1982 if(size > str_len)
1983 size = str_len;
1984 memmove(ptr+off, ptr+inside_pos, size*sizeof(char));
1985 } else {
1986 size = 0;
1989 if(str_len > size)
1990 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(char));
1993 basic_string_char_eos(this, this->size-len+str_len);
1994 return this;
1997 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
1998 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
1999 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr, 16)
2000 basic_string_char* __thiscall basic_string_char_replace_cstr(basic_string_char *this,
2001 MSVCP_size_t off, MSVCP_size_t len, const char *str)
2003 return basic_string_char_replace_cstr_len(this, off, len, str,
2004 MSVCP_char_traits_char_length(str));
2007 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
2008 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
2009 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr, 24)
2010 basic_string_char* __thiscall basic_string_char_replace_substr(basic_string_char *this, MSVCP_size_t off,
2011 MSVCP_size_t len, const basic_string_char *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
2013 if(str->size < str_off)
2014 MSVCP__String_base_Xran();
2016 if(str_len > str->size-str_off)
2017 str_len = str->size-str_off;
2019 return basic_string_char_replace_cstr_len(this, off, len,
2020 basic_string_char_const_ptr(str)+str_off, str_len);
2023 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
2024 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
2025 DEFINE_THISCALL_WRAPPER(basic_string_char_replace, 16)
2026 basic_string_char* __thiscall basic_string_char_replace(basic_string_char *this,
2027 MSVCP_size_t off, MSVCP_size_t len, const basic_string_char *str)
2029 return basic_string_char_replace_cstr_len(this, off, len,
2030 basic_string_char_const_ptr(str), str->size);
2033 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
2034 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
2035 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch, 20)
2036 basic_string_char* __thiscall basic_string_char_replace_ch(basic_string_char *this,
2037 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, char ch)
2039 char *ptr = basic_string_char_ptr(this);
2041 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
2043 if(this->size < off)
2044 MSVCP__String_base_Xran();
2046 if(len > this->size-off)
2047 len = this->size-off;
2049 if(MSVCP_basic_string_char_npos-count <= this->size-len)
2050 MSVCP__String_base_Xlen();
2052 if(len < count) {
2053 basic_string_char_grow(this, this->size-len+count, FALSE);
2054 ptr = basic_string_char_ptr(this);
2057 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(char));
2058 MSVCP_char_traits_char_assignn(ptr+off, count, ch);
2059 basic_string_char_eos(this, this->size-len+count);
2061 return this;
2064 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@000@Z */
2065 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@000@Z */
2066 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter, 36)
2067 basic_string_char* __thiscall basic_string_char_replace_iter_iter(basic_string_char *this,
2068 String_iterator_char beg, String_iterator_char end,
2069 String_iterator_char res_beg, String_iterator_char res_end)
2071 String_iterator_char begin = { this, basic_string_char_ptr(this) };
2072 return basic_string_char_replace_cstr_len(this,
2073 MSVCP_basic_string_char_Pdif(beg, begin), MSVCP_basic_string_char_Pdif(end, beg),
2074 res_beg.pos, MSVCP_basic_string_char_Pdif(res_end, res_beg));
2077 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ABV12@@Z */
2078 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0AEBV12@@Z */
2079 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr, 24)
2080 basic_string_char* __thiscall basic_string_char_replace_iter_bstr(basic_string_char *this,
2081 String_iterator_char beg, String_iterator_char end, const basic_string_char *str)
2083 String_iterator_char begin = { this, basic_string_char_ptr(this) };
2084 return basic_string_char_replace(this, MSVCP_basic_string_char_Pdif(beg, begin),
2085 MSVCP_basic_string_char_Pdif(end, beg), str);
2088 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0ID@Z */
2089 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0_KD@Z */
2090 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ch, 28)
2091 basic_string_char* __thiscall basic_string_char_replace_iter_ch(basic_string_char *this,
2092 String_iterator_char beg, String_iterator_char end, MSVCP_size_t count, char ch)
2094 String_iterator_char begin = { this, basic_string_char_ptr(this) };
2095 return basic_string_char_replace_ch(this, MSVCP_basic_string_char_Pdif(beg, begin),
2096 MSVCP_basic_string_char_Pdif(end, beg), count, ch);
2099 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBD1@Z */
2100 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD1@Z */
2101 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ptr_ptr, 28)
2102 basic_string_char* __thiscall basic_string_char_replace_iter_ptr_ptr(basic_string_char *this,
2103 String_iterator_char beg, String_iterator_char end,
2104 const char *res_beg, const char *res_end)
2106 String_iterator_char begin = { this, basic_string_char_ptr(this) };
2107 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
2108 MSVCP_basic_string_char_Pdif(end, beg), res_beg, res_end-res_beg);
2111 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBD@Z */
2112 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD@Z */
2113 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr, 24)
2114 basic_string_char* __thiscall basic_string_char_replace_iter_cstr(basic_string_char *this,
2115 String_iterator_char beg, String_iterator_char end, const char *str)
2117 String_iterator_char begin = { this, basic_string_char_ptr(this) };
2118 return basic_string_char_replace_cstr(this, MSVCP_basic_string_char_Pdif(beg, begin),
2119 MSVCP_basic_string_char_Pdif(end, beg), str);
2122 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PBDI@Z */
2123 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0PEBD_K@Z */
2124 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len, 28)
2125 basic_string_char* __thiscall basic_string_char_replace_iter_cstr_len(basic_string_char *this,
2126 String_iterator_char beg, String_iterator_char end, const char *str, MSVCP_size_t len)
2128 String_iterator_char begin = { this, basic_string_char_ptr(this) };
2129 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
2130 MSVCP_basic_string_char_Pdif(end, beg), str, len);
2133 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
2134 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
2135 DEFINE_THISCALL_WRAPPER(basic_string_char_insert, 12)
2136 basic_string_char* __thiscall basic_string_char_insert(basic_string_char *this,
2137 MSVCP_size_t off, const basic_string_char *str)
2139 return basic_string_char_replace(this, off, 0, str);
2142 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
2143 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
2144 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr, 20)
2145 basic_string_char* __thiscall basic_string_char_insert_substr(
2146 basic_string_char *this, MSVCP_size_t off, const basic_string_char *str,
2147 MSVCP_size_t str_off, MSVCP_size_t str_count)
2149 return basic_string_char_replace_substr(this, off, 0, str, str_off, str_count);
2152 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
2153 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
2154 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr, 12)
2155 basic_string_char* __thiscall basic_string_char_insert_cstr(
2156 basic_string_char *this, MSVCP_size_t off, const char *str)
2158 return basic_string_char_replace_cstr(this, off, 0, str);
2161 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
2162 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
2163 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len, 16)
2164 basic_string_char* __thiscall basic_string_char_insert_cstr_len(basic_string_char *this,
2165 MSVCP_size_t off, const char *str, MSVCP_size_t str_len)
2167 return basic_string_char_replace_cstr_len(this, off, 0, str, str_len);
2170 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
2171 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
2172 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn, 16)
2173 basic_string_char* __thiscall basic_string_char_insert_chn(basic_string_char *this,
2174 MSVCP_size_t off, MSVCP_size_t count, char ch)
2176 return basic_string_char_replace_ch(this, off, 0, count, ch);
2179 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@ID@Z */
2180 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@_KD@Z */
2181 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn, 20)
2182 void __thiscall basic_string_char_insert_iter_chn(basic_string_char *this,
2183 String_iterator_char where, MSVCP_size_t count, char ch)
2185 String_iterator_char iter = { this, basic_string_char_ptr(this) };
2186 MSVCP_size_t off = MSVCP_basic_string_char_Pdif(where, iter);
2188 basic_string_char_insert_chn(this, off, count, ch);
2191 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@D@Z */
2192 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@D@Z */
2193 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch, 20)
2194 String_iterator_char* __thiscall basic_string_char_insert_iter_ch(basic_string_char *this,
2195 String_iterator_char *ret, String_iterator_char where, char ch)
2197 MSVCP_size_t off;
2199 ret->bstr = this;
2200 ret->pos = basic_string_char_ptr(this);
2201 off = MSVCP_basic_string_char_Pdif(where, *ret);
2203 basic_string_char_insert_chn(this, off, 1, ch);
2204 ret->pos = basic_string_char_ptr(this)+off;
2205 return ret;
2208 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
2209 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
2210 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_null, 16)
2211 String_iterator_char* __thiscall basic_string_char_insert_iter_null(basic_string_char *this,
2212 String_iterator_char *ret, String_iterator_char where)
2214 return basic_string_char_insert_iter_ch(this, ret, where, 0);
2217 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@00@Z */
2218 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@00@Z */
2219 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 28)
2220 void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this,
2221 String_iterator_char where, String_iterator_char beg, String_iterator_char end)
2223 basic_string_char_replace_iter_iter(this, where, where, beg, end);
2226 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD1@Z */
2227 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD1@Z */
2228 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ptr_ptr, 20)
2229 void __thiscall basic_string_char_insert_iter_ptr_ptr(basic_string_char *this,
2230 String_iterator_char where, const char *beg, const char *end)
2232 basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end);
2235 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
2236 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
2237 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12)
2238 void __thiscall MSVCP_basic_string_char_resize_ch(
2239 basic_string_char *this, MSVCP_size_t size, char ch)
2241 TRACE("%p %lu %c\n", this, size, ch);
2243 if(size <= this->size)
2244 MSVCP_basic_string_char_erase(this, size, this->size);
2245 else
2246 MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch);
2249 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
2250 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
2251 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize, 8)
2252 void __thiscall MSVCP_basic_string_char_resize(
2253 basic_string_char *this, MSVCP_size_t size)
2255 MSVCP_basic_string_char_resize_ch(this, size, '\0');
2258 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
2259 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
2260 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear, 4)
2261 void __thiscall MSVCP_basic_string_char_clear(basic_string_char *this)
2263 basic_string_char_eos(this, 0);
2266 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2267 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2268 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2269 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2270 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_begin, 8)
2271 String_iterator_char* __thiscall MSVCP_basic_string_char_begin(
2272 basic_string_char *this, String_iterator_char *ret)
2274 TRACE("%p\n", this);
2276 ret->bstr = this;
2277 ret->pos = basic_string_char_const_ptr(this);
2278 return ret;
2281 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2282 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2283 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2284 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2285 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_end, 8)
2286 String_iterator_char* __thiscall MSVCP_basic_string_char_end(
2287 basic_string_char *this, String_iterator_char *ret)
2289 TRACE("%p\n", this);
2291 ret->bstr = this;
2292 ret->pos = basic_string_char_const_ptr(this)+this->size;
2293 return ret;
2296 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2297 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2298 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2299 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2300 DEFINE_THISCALL_WRAPPER(basic_string_char_rbegin, 8)
2301 basic_string_char_reverse_iter* __thiscall basic_string_char_rbegin(const basic_string_char *this, basic_string_char_reverse_iter *ret)
2303 ret->cont = NULL;
2304 ret->bstr = this;
2305 ret->pos = basic_string_char_const_ptr(this)+this->size;
2306 return ret;
2309 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2310 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2311 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2312 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
2313 DEFINE_THISCALL_WRAPPER(basic_string_char_rend, 8)
2314 basic_string_char_reverse_iter* __thiscall basic_string_char_rend(const basic_string_char *this, basic_string_char_reverse_iter *ret)
2316 ret->cont = NULL;
2317 ret->bstr = this;
2318 ret->pos = basic_string_char_const_ptr(this);
2319 return ret;
2322 /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
2323 /* basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short>> */
2324 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */
2325 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2_KB */
2326 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
2327 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
2328 const MSVCP_size_t MSVCP_basic_string_wchar_npos = -1;
2330 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ */
2331 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAPEA_WXZ */
2332 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEPAGXZ */
2333 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAPEAGXZ */
2334 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ptr, 4)
2335 wchar_t* __thiscall basic_string_wchar_ptr(basic_string_wchar *this)
2337 if(this->res < BUF_SIZE_WCHAR)
2338 return this->data.buf;
2339 return this->data.ptr;
2342 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IBEPB_WXZ */
2343 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEBAPEB_WXZ */
2344 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IBEPBGXZ */
2345 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEBAPEBGXZ */
2346 DEFINE_THISCALL_WRAPPER(basic_string_wchar_const_ptr, 4)
2347 const wchar_t* __thiscall basic_string_wchar_const_ptr(const basic_string_wchar *this)
2349 if(this->res < BUF_SIZE_WCHAR)
2350 return this->data.buf;
2351 return this->data.ptr;
2354 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXI@Z */
2355 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K@Z */
2356 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXI@Z */
2357 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K@Z */
2358 DEFINE_THISCALL_WRAPPER(basic_string_wchar_eos, 8)
2359 void __thiscall basic_string_wchar_eos(basic_string_wchar *this, MSVCP_size_t len)
2361 static const wchar_t nullbyte_w = '\0';
2363 this->size = len;
2364 MSVCP_char_traits_wchar_assign(basic_string_wchar_ptr(this)+len, &nullbyte_w);
2367 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NPB_W@Z */
2368 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_NPEB_W@Z */
2369 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z */
2370 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_NPEBG@Z */
2371 DEFINE_THISCALL_WRAPPER(basic_string_wchar_inside, 8)
2372 MSVCP_bool __thiscall basic_string_wchar_inside(
2373 basic_string_wchar *this, const wchar_t *ptr)
2375 wchar_t *cstr = basic_string_wchar_ptr(this);
2377 return ptr>=cstr && ptr<cstr+this->size;
2380 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEX_NI@Z */
2381 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_N_K@Z */
2382 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEX_NI@Z */
2383 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_N_K@Z */
2384 DEFINE_THISCALL_WRAPPER(basic_string_wchar_tidy, 12)
2385 void __thiscall basic_string_wchar_tidy(basic_string_wchar *this,
2386 MSVCP_bool built, MSVCP_size_t new_size)
2388 if(built && BUF_SIZE_WCHAR<=this->res) {
2389 wchar_t *ptr = this->data.ptr;
2391 if(new_size > 0)
2392 MSVCP_char_traits_wchar__Copy_s(this->data.buf, BUF_SIZE_WCHAR, ptr, new_size);
2393 MSVCP_allocator_wchar_deallocate(this->allocator, ptr, this->res+1);
2396 this->res = BUF_SIZE_WCHAR-1;
2397 basic_string_wchar_eos(this, new_size);
2400 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NI_N@Z */
2401 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_N_K_N@Z */
2402 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NI_N@Z */
2403 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_N_K_N@Z */
2404 DEFINE_THISCALL_WRAPPER(basic_string_wchar_grow, 12)
2405 MSVCP_bool __thiscall basic_string_wchar_grow(
2406 basic_string_wchar *this, MSVCP_size_t new_size, MSVCP_bool trim)
2408 if(this->res < new_size) {
2409 MSVCP_size_t new_res = new_size, len = this->size;
2410 wchar_t *ptr;
2412 new_res |= 0xf;
2414 if(new_res/3 < this->res/2)
2415 new_res = this->res + this->res/2;
2417 ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_res+1);
2418 if(!ptr)
2419 ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_size+1);
2420 else
2421 new_size = new_res;
2422 if(!ptr) {
2423 ERR("Out of memory\n");
2424 basic_string_wchar_tidy(this, TRUE, 0);
2425 return FALSE;
2428 MSVCP_char_traits_wchar__Copy_s(ptr, new_size,
2429 basic_string_wchar_ptr(this), this->size);
2430 basic_string_wchar_tidy(this, TRUE, 0);
2431 this->data.ptr = ptr;
2432 this->res = new_size;
2433 basic_string_wchar_eos(this, len);
2434 } else if(trim && new_size < BUF_SIZE_WCHAR)
2435 basic_string_wchar_tidy(this, TRUE,
2436 new_size<this->size ? new_size : this->size);
2437 else if(new_size == 0)
2438 basic_string_wchar_eos(this, 0);
2440 return (new_size>0);
2443 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII@Z */
2444 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0@Z */
2445 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXII@Z */
2446 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0@Z */
2447 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy, 12)
2448 void __thiscall basic_string_wchar__Copy(basic_string_wchar *this,
2449 MSVCP_size_t new_size, MSVCP_size_t copy_len)
2451 TRACE("%p %lu %lu\n", this, new_size, copy_len);
2453 if(!basic_string_wchar_grow(this, new_size, FALSE))
2454 return;
2455 basic_string_wchar_eos(this, copy_len);
2458 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */
2459 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KA_KV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */
2460 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@KAIV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
2461 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@KA_KV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
2462 MSVCP_size_t __cdecl MSVCP_basic_string_wchar_Pdif(String_iterator_wchar i1, String_iterator_wchar i2)
2464 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
2466 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
2467 _invalid_parameter(NULL, NULL, NULL, 0, 0);
2468 return 0;
2471 return !i1.pos ? 0 : i1.pos-i2.pos;
2474 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ */
2475 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ */
2476 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
2477 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
2478 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator, 8)
2479 allocator* __thiscall basic_string_wchar_get_allocator(const basic_string_wchar *this, allocator *ret)
2481 TRACE("%p\n", this);
2482 return ret;
2485 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z */
2486 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z */
2487 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
2488 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
2489 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase, 12)
2490 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_erase(
2491 basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t len)
2493 TRACE("%p %lu %lu\n", this, pos, len);
2495 if(pos > this->size)
2496 MSVCP__String_base_Xran();
2498 if(len > this->size-pos)
2499 len = this->size-pos;
2501 if(len) {
2502 MSVCP_char_traits_wchar__Move_s(basic_string_wchar_ptr(this)+pos,
2503 this->res-pos, basic_string_wchar_ptr(this)+pos+len,
2504 this->size-pos-len);
2505 basic_string_wchar_eos(this, this->size-len);
2508 return this;
2511 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */
2512 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */
2513 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
2514 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
2515 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter_range, 24)
2516 String_iterator_wchar* __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this,
2517 String_iterator_wchar *ret, String_iterator_wchar beg, String_iterator_wchar end)
2519 MSVCP_size_t off;
2521 ret->bstr = this;
2522 ret->pos = basic_string_wchar_ptr(this);
2523 off = MSVCP_basic_string_wchar_Pdif(beg, *ret);
2525 MSVCP_basic_string_wchar_erase(this, off, MSVCP_basic_string_wchar_Pdif(end, beg));
2527 ret->bstr = this;
2528 ret->pos = basic_string_wchar_ptr(this)+off;
2529 return ret;
2532 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
2533 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
2534 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
2535 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
2536 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter, 16)
2537 String_iterator_wchar* __thiscall basic_string_wchar_erase_iter(basic_string_wchar *this,
2538 String_iterator_wchar *ret, String_iterator_wchar pos)
2540 MSVCP_size_t off;
2542 ret->bstr = this;
2543 ret->pos = basic_string_wchar_ptr(this);
2544 off = MSVCP_basic_string_wchar_Pdif(pos, *ret);
2546 MSVCP_basic_string_wchar_erase(this, off, 1);
2548 ret->bstr = this;
2549 ret->pos = basic_string_wchar_ptr(this)+off;
2550 return ret;
2553 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2554 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2555 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2556 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2557 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr, 16)
2558 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_substr(
2559 basic_string_wchar *this, const basic_string_wchar *assign,
2560 MSVCP_size_t pos, MSVCP_size_t len)
2562 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2564 if(assign->size < pos)
2565 MSVCP__String_base_Xran();
2567 if(len > assign->size-pos)
2568 len = assign->size-pos;
2570 if(this == assign) {
2571 MSVCP_basic_string_wchar_erase(this, pos+len, MSVCP_basic_string_wchar_npos);
2572 MSVCP_basic_string_wchar_erase(this, 0, pos);
2573 } else if(basic_string_wchar_grow(this, len, FALSE)) {
2574 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2575 this->res, basic_string_wchar_const_ptr(assign)+pos, len);
2576 basic_string_wchar_eos(this, len);
2579 return this;
2582 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2583 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2584 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2585 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2586 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2587 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2588 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2589 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2590 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign, 8)
2591 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign(
2592 basic_string_wchar *this, const basic_string_wchar *assign)
2594 return MSVCP_basic_string_wchar_assign_substr(this, assign,
2595 0, MSVCP_basic_string_wchar_npos);
2598 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2599 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2600 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2601 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2602 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len, 12)
2603 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr_len(
2604 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2606 TRACE("%p %s %lu\n", this, debugstr_wn(str, len), len);
2608 if(basic_string_wchar_inside(this, str))
2609 return MSVCP_basic_string_wchar_assign_substr(this, this,
2610 str-basic_string_wchar_ptr(this), len);
2611 else if(basic_string_wchar_grow(this, len, FALSE)) {
2612 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2613 this->res, str, len);
2614 basic_string_wchar_eos(this, len);
2617 return this;
2620 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2621 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2622 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2623 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2624 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch, 8)
2625 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ch(
2626 basic_string_wchar *this, wchar_t ch)
2628 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch, 1);
2631 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2632 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2633 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2634 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2635 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2636 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2637 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2638 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2639 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr, 8)
2640 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr(
2641 basic_string_wchar *this, const wchar_t *str)
2643 return MSVCP_basic_string_wchar_assign_cstr_len(this, str,
2644 MSVCP_char_traits_wchar_length(str));
2647 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2648 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2649 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2650 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2651 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn, 12)
2652 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assignn(
2653 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2655 TRACE("%p %ld %c\n", this, count, ch);
2657 basic_string_wchar_grow(this, count, FALSE);
2658 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this), count, ch);
2659 basic_string_wchar_eos(this, count);
2660 return this;
2663 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2664 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2665 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2666 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2667 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr, 12)
2668 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ptr_ptr(
2669 basic_string_wchar *this, const wchar_t *first, const wchar_t *last)
2671 return MSVCP_basic_string_wchar_assign_cstr_len(this, first, last-first);
2674 /* ?assign@?$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@0@Z */
2675 /* ?assign@?$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@0@Z */
2676 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
2677 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
2678 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_iter, 20)
2679 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_iter(basic_string_wchar *this,
2680 String_iterator_wchar beg, String_iterator_wchar end)
2682 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
2685 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII_W@Z */
2686 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0_W@Z */
2687 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXIIG@Z */
2688 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0G@Z */
2689 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Chassign, 16)
2690 void __thiscall MSVCP_basic_string_wchar_Chassign(basic_string_wchar *this,
2691 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
2693 TRACE("%p %lu %lu %c\n", this, off, count, ch);
2694 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+off, count, ch);
2697 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WIII@Z */
2698 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K11@Z */
2699 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGIII@Z */
2700 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K11@Z */
2701 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Copy_s, 20)
2702 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_Copy_s(const basic_string_wchar *this,
2703 wchar_t *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
2705 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
2707 if(this->size < off)
2708 MSVCP__String_base_Xran();
2710 if(count > this->size-off)
2711 count = this->size-off;
2713 MSVCP_char_traits_wchar__Copy_s(dest, size,
2714 basic_string_wchar_const_ptr(this)+off, count);
2715 return count;
2718 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WII@Z */
2719 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K1@Z */
2720 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
2721 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
2722 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy, 16)
2723 MSVCP_size_t __thiscall basic_string_wchar_copy(const basic_string_wchar *this,
2724 wchar_t *dest, MSVCP_size_t count, MSVCP_size_t off)
2726 return MSVCP_basic_string_wchar_Copy_s(this, dest, count, count, off);
2729 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2730 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2731 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2732 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2733 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2734 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2735 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2736 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2737 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str, 4)
2738 const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar *this)
2740 TRACE("%p\n", this);
2741 return basic_string_wchar_const_ptr(this);
2744 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2745 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2746 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2747 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2748 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity, 4)
2749 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_capacity(basic_string_wchar *this)
2751 TRACE("%p\n", this);
2752 return this->res;
2755 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
2756 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
2757 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
2758 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
2759 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve, 8)
2760 void __thiscall MSVCP_basic_string_wchar_reserve(basic_string_wchar *this, MSVCP_size_t size)
2762 MSVCP_size_t len;
2764 TRACE("%p %ld\n", this, size);
2766 len = this->size;
2767 if(len > size)
2768 return;
2770 if(basic_string_wchar_grow(this, size, TRUE))
2771 basic_string_wchar_eos(this, len);
2774 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2775 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2776 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2777 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2778 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor, 4)
2779 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor(basic_string_wchar *this)
2781 TRACE("%p\n", this);
2783 basic_string_wchar_tidy(this, FALSE, 0);
2784 return this;
2787 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z */
2788 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z */
2789 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2790 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2791 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor, 8)
2792 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_copy_ctor(
2793 basic_string_wchar *this, const basic_string_wchar *copy)
2795 TRACE("%p %p\n", this, copy);
2797 basic_string_wchar_tidy(this, FALSE, 0);
2798 MSVCP_basic_string_wchar_assign(this, copy);
2799 return this;
2802 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2803 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2804 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2805 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2806 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr, 8)
2807 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(
2808 basic_string_wchar *this, const wchar_t *str)
2810 TRACE("%p %s\n", this, debugstr_w(str));
2812 basic_string_wchar_tidy(this, FALSE, 0);
2813 MSVCP_basic_string_wchar_assign_cstr(this, str);
2814 return this;
2817 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z */
2818 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z */
2819 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2820 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2821 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc, 12)
2822 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_alloc(
2823 basic_string_wchar *this, const wchar_t *str, const void *alloc)
2825 return MSVCP_basic_string_wchar_ctor_cstr(this, str);
2828 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2829 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2830 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2831 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2832 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len, 12)
2833 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len(
2834 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2836 TRACE("%p %s %ld\n", this, debugstr_wn(str, len), len);
2838 basic_string_wchar_tidy(this, FALSE, 0);
2839 MSVCP_basic_string_wchar_assign_cstr_len(this, str, len);
2840 return this;
2843 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z */
2844 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z */
2845 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2846 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2847 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc, 16)
2848 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2849 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len, const void *alloc)
2851 return MSVCP_basic_string_wchar_ctor_cstr_len(this, str, len);
2854 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z */
2855 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z */
2856 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@II@Z */
2857 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1@Z */
2858 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr, 16)
2859 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr(
2860 basic_string_wchar *this, const basic_string_wchar *assign,
2861 MSVCP_size_t pos, MSVCP_size_t len)
2863 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2865 basic_string_wchar_tidy(this, FALSE, 0);
2866 MSVCP_basic_string_wchar_assign_substr(this, assign, pos, len);
2867 return this;
2870 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z */
2871 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z */
2872 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2873 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2874 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc, 20)
2875 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr_alloc(
2876 basic_string_wchar *this, const basic_string_wchar *assign,
2877 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
2879 return MSVCP_basic_string_wchar_ctor_substr(this, assign, pos, len);
2882 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z */
2883 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z */
2884 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2885 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2886 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc, 8)
2887 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_alloc(
2888 basic_string_wchar *this, const void *alloc)
2890 TRACE("%p %p\n", this, alloc);
2892 basic_string_wchar_tidy(this, FALSE, 0);
2893 return this;
2896 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z */
2897 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z */
2898 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IG@Z */
2899 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KG@Z */
2900 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch, 12)
2901 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch(basic_string_wchar *this,
2902 MSVCP_size_t count, wchar_t ch)
2904 TRACE("%p %ld %c\n", this, count, ch);
2906 basic_string_wchar_tidy(this, FALSE, 0);
2907 MSVCP_basic_string_wchar_assignn(this, count, ch);
2908 return this;
2911 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z */
2912 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z */
2913 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2914 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2915 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc, 16)
2916 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar *this,
2917 MSVCP_size_t count, wchar_t ch, const void *alloc)
2919 return MSVCP_basic_string_wchar_ctor_ch(this, count, ch);
2922 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z */
2923 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z */
2924 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0@Z */
2925 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0@Z */
2926 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ptr_ptr, 12)
2927 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ptr_ptr(basic_string_wchar *this,
2928 const wchar_t *first, const wchar_t *last)
2930 return MSVCP_basic_string_wchar_ctor_cstr_len(this, first, last-first);
2933 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z */
2934 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0@Z */
2935 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@1@0@Z */
2936 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@1@0@Z */
2937 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_iter, 20)
2938 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_iter(basic_string_wchar *this,
2939 String_iterator_wchar beg, String_iterator_wchar end)
2941 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
2944 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2945 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2946 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2947 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2948 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)
2949 void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
2951 TRACE("%p\n", this);
2952 basic_string_wchar_tidy(this, TRUE, 0);
2955 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2956 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2957 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2958 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2959 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2960 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2961 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2962 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2963 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length, 4)
2964 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_length(const basic_string_wchar *this)
2966 TRACE("%p\n", this);
2967 return this->size;
2970 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2971 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2972 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2973 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2974 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size, 4)
2975 MSVCP_size_t __thiscall basic_string_wchar_max_size(const basic_string_wchar *this)
2977 TRACE("%p\n", this);
2978 return MSVCP_allocator_wchar_max_size(this->allocator)-1;
2981 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE_NXZ */
2982 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_NXZ */
2983 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
2984 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
2985 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty, 4)
2986 MSVCP_bool __thiscall MSVCP_basic_string_wchar_empty(basic_string_wchar *this)
2988 TRACE("%p\n", this);
2989 return this->size == 0;
2992 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXAAV12@@Z */
2993 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEAV12@@Z */
2994 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
2995 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
2996 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_swap, 8)
2997 void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_string_wchar *str)
2999 if(this != str) {
3000 char tmp[sizeof(this->data)];
3001 const MSVCP_size_t size = this->size;
3002 const MSVCP_size_t res = this->res;
3004 memcpy(tmp, this->data.buf, sizeof(this->data));
3005 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
3006 memcpy(str->data.buf, tmp, sizeof(this->data));
3008 this->size = str->size;
3009 this->res = str->res;
3011 str->size = size;
3012 str->res = res;
3016 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV12@II@Z */
3017 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV12@_K0@Z */
3018 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
3019 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
3020 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_substr, 16)
3021 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_substr(basic_string_wchar *this,
3022 basic_string_wchar *ret, MSVCP_size_t off, MSVCP_size_t len)
3024 TRACE("%p %lu %lu\n", this, off, len);
3026 MSVCP_basic_string_wchar_ctor_substr(ret, this, off, len);
3027 return ret;
3030 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
3031 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
3032 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
3033 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
3034 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr, 16)
3035 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_substr(basic_string_wchar *this,
3036 const basic_string_wchar *append, MSVCP_size_t offset, MSVCP_size_t count)
3038 TRACE("%p %p %lu %lu\n", this, append, offset, count);
3040 if(append->size < offset)
3041 MSVCP__String_base_Xran();
3043 if(count > append->size-offset)
3044 count = append->size-offset;
3046 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
3047 MSVCP__String_base_Xlen();
3049 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
3050 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
3051 this->res-this->size, basic_string_wchar_const_ptr(append)+offset, count);
3052 basic_string_wchar_eos(this, this->size+count);
3055 return this;
3058 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
3059 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
3060 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
3061 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
3062 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
3063 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
3064 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
3065 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
3066 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append, 8)
3067 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append(
3068 basic_string_wchar *this, const basic_string_wchar *append)
3070 return MSVCP_basic_string_wchar_append_substr(this, append,
3071 0, MSVCP_basic_string_wchar_npos);
3074 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
3075 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
3076 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
3077 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
3078 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len, 12)
3079 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr_len(
3080 basic_string_wchar *this, const wchar_t *append, MSVCP_size_t count)
3082 TRACE("%p %s %lu\n", this, debugstr_wn(append, count), count);
3084 if(basic_string_wchar_inside(this, append))
3085 return MSVCP_basic_string_wchar_append_substr(this, this,
3086 append-basic_string_wchar_ptr(this), count);
3088 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
3089 MSVCP__String_base_Xlen();
3091 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
3092 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
3093 this->res-this->size, append, count);
3094 basic_string_wchar_eos(this, this->size+count);
3097 return this;
3100 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
3101 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
3102 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
3103 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
3104 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
3105 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
3106 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
3107 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
3108 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr, 8)
3109 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr(
3110 basic_string_wchar *this, const wchar_t *append)
3112 return MSVCP_basic_string_wchar_append_cstr_len(this, append,
3113 MSVCP_char_traits_wchar_length(append));
3116 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
3117 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
3118 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
3119 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
3120 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end, 12)
3121 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_beg_end(
3122 basic_string_wchar *this, const wchar_t *beg, const wchar_t *end)
3124 return MSVCP_basic_string_wchar_append_cstr_len(this, beg, end-beg);
3127 /* ?append@?$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@0@Z */
3128 /* ?append@?$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@0@Z */
3129 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
3130 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
3131 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_iter, 20)
3132 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_iter(
3133 basic_string_wchar *this, String_iterator_wchar beg, String_iterator_wchar end)
3135 return MSVCP_basic_string_wchar_append_cstr_len(this, beg.pos, end.pos-beg.pos);
3138 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
3139 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
3140 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
3141 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
3142 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch, 12)
3143 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_len_ch(
3144 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
3146 TRACE("%p %lu %c\n", this, count, ch);
3148 if(MSVCP_basic_string_wchar_npos-this->size <= count)
3149 MSVCP__String_base_Xlen();
3151 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
3152 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+this->size, count, ch);
3153 basic_string_wchar_eos(this, this->size+count);
3156 return this;
3159 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
3160 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
3161 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEX_W@Z */
3162 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_W@Z */
3163 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
3164 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
3165 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXG@Z */
3166 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXG@Z */
3167 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch, 8)
3168 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(
3169 basic_string_wchar *this, wchar_t ch)
3171 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch);
3174 /* ??$?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 */
3175 /* ??$?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 */
3176 /* ??$?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 */
3177 /* ??$?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 */
3178 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar *ret,
3179 const basic_string_wchar *left, const wchar_t *right)
3181 TRACE("%p %s\n", left, debugstr_w(right));
3183 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3184 MSVCP_basic_string_wchar_append_cstr(ret, right);
3185 return ret;
3188 /* ??$?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 */
3189 /* ??$?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 */
3190 /* ??$?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 */
3191 /* ??$?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 */
3192 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar *ret,
3193 const wchar_t *left, const basic_string_wchar *right)
3195 TRACE("%s %p\n", debugstr_w(left), right);
3197 MSVCP_basic_string_wchar_ctor_cstr(ret, left);
3198 MSVCP_basic_string_wchar_append(ret, right);
3199 return ret;
3202 /* ??$?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 */
3203 /* ??$?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 */
3204 /* ??$?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 */
3205 /* ??$?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 */
3206 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate(basic_string_wchar *ret,
3207 const basic_string_wchar *left, const basic_string_wchar *right)
3209 TRACE("%p %p\n", left, right);
3211 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3212 MSVCP_basic_string_wchar_append(ret, right);
3213 return ret;
3216 /* ??$?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 */
3217 /* ??$?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 */
3218 /* ??$?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 */
3219 /* ??$?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 */
3220 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_ch(
3221 basic_string_wchar *ret, const basic_string_wchar *left, wchar_t right)
3223 TRACE("%p %c\n", left, right);
3225 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3226 MSVCP_basic_string_wchar_append_ch(ret, right);
3227 return ret;
3230 /* ??$?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 */
3231 /* ??$?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 */
3232 /* ??$?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 */
3233 /* ??$?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 */
3234 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_ch_bstr(
3235 basic_string_wchar* ret, wchar_t left, const basic_string_wchar *right)
3237 TRACE("%c %p\n", left, right);
3239 MSVCP_basic_string_wchar_ctor_cstr_len(ret, &left, 1);
3240 MSVCP_basic_string_wchar_append(ret, right);
3241 return ret;
3244 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_WI@Z */
3245 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W0@Z */
3246 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
3247 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
3248 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20)
3249 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr_len(
3250 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3251 const wchar_t *str, MSVCP_size_t count)
3253 int ans;
3255 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_wn(str, count), count);
3257 if(this->size < pos)
3258 MSVCP__String_base_Xran();
3260 if(num > this->size-pos)
3261 num = this->size-pos;
3263 ans = MSVCP_char_traits_wchar_compare(basic_string_wchar_const_ptr(this)+pos,
3264 str, num>count ? count : num);
3265 if(ans)
3266 return ans;
3268 if(num > count)
3269 ans = 1;
3270 else if(num < count)
3271 ans = -1;
3272 return ans;
3275 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_W@Z */
3276 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W@Z */
3277 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
3278 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
3279 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr, 16)
3280 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar *this,
3281 MSVCP_size_t pos, MSVCP_size_t num, const wchar_t *str)
3283 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3284 str, MSVCP_char_traits_wchar_length(str));
3287 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHPB_W@Z */
3288 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHPEB_W@Z */
3289 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
3290 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
3291 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr, 8)
3292 int __thiscall MSVCP_basic_string_wchar_compare_cstr(
3293 const basic_string_wchar *this, const wchar_t *str)
3295 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3296 str, MSVCP_char_traits_wchar_length(str));
3299 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@II@Z */
3300 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@00@Z */
3301 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
3302 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
3303 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr, 24)
3304 int __thiscall MSVCP_basic_string_wchar_compare_substr_substr(
3305 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3306 const basic_string_wchar *compare, MSVCP_size_t off, MSVCP_size_t count)
3308 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
3310 if(compare->size < off)
3311 MSVCP__String_base_Xran();
3313 if(count > compare->size-off)
3314 count = compare->size-off;
3316 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3317 basic_string_wchar_const_ptr(compare)+off, count);
3320 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@@Z */
3321 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@@Z */
3322 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
3323 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
3324 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr, 16)
3325 int __thiscall MSVCP_basic_string_wchar_compare_substr(
3326 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3327 const basic_string_wchar *compare)
3329 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3330 basic_string_wchar_const_ptr(compare), compare->size);
3333 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV12@@Z */
3334 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHAEBV12@@Z */
3335 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
3336 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
3337 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare, 8)
3338 int __thiscall MSVCP_basic_string_wchar_compare(
3339 const basic_string_wchar *this, const basic_string_wchar *compare)
3341 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3342 basic_string_wchar_const_ptr(compare), compare->size);
3345 /* ??$?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 */
3346 /* ??$?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 */
3347 /* ??$?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 */
3348 /* ??$?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 */
3349 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal(
3350 const basic_string_wchar *left, const basic_string_wchar *right)
3352 return MSVCP_basic_string_wchar_compare(left, right) == 0;
3355 /* ??$?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 */
3356 /* ??$?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 */
3357 /* ??$?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 */
3358 /* ??$?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 */
3359 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal_str_cstr(
3360 const basic_string_wchar *left, const wchar_t *right)
3362 return MSVCP_basic_string_wchar_compare_cstr(left, right) == 0;
3365 /* ??$?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 */
3366 /* ??$?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 */
3367 /* ??$?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 */
3368 /* ??$?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 */
3369 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal_cstr_str(
3370 const wchar_t *left, const basic_string_wchar *right)
3372 return MSVCP_basic_string_wchar_compare_cstr(right, left) == 0;
3375 /* ??$?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 */
3376 /* ??$?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 */
3377 /* ??$?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 */
3378 /* ??$?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 */
3379 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal(
3380 const basic_string_wchar *left, const basic_string_wchar *right)
3382 return MSVCP_basic_string_wchar_compare(left, right) != 0;
3385 /* ??$?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 */
3386 /* ??$?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 */
3387 /* ??$?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 */
3388 /* ??$?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 */
3389 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal_str_cstr(
3390 const basic_string_wchar *left, const wchar_t *right)
3392 return MSVCP_basic_string_wchar_compare_cstr(left, right) != 0;
3395 /* ??$?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 */
3396 /* ??$?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 */
3397 /* ??$?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 */
3398 /* ??$?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 */
3399 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal_cstr_str(
3400 const wchar_t *left, const basic_string_wchar *right)
3402 return MSVCP_basic_string_wchar_compare_cstr(right, left) != 0;
3405 /* ??$?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 */
3406 /* ??$?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 */
3407 /* ??$?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 */
3408 /* ??$?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 */
3409 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower(
3410 const basic_string_wchar *left, const basic_string_wchar *right)
3412 return MSVCP_basic_string_wchar_compare(left, right) < 0;
3415 /* ??$?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 */
3416 /* ??$?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 */
3417 /* ??$?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 */
3418 /* ??$?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 */
3419 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower_bstr_cstr(
3420 const basic_string_wchar *left, const wchar_t *right)
3422 return MSVCP_basic_string_wchar_compare_cstr(left, right) < 0;
3425 /* ??$?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 */
3426 /* ??$?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 */
3427 /* ??$?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 */
3428 /* ??$?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 */
3429 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower_cstr_bstr(
3430 const wchar_t *left, const basic_string_wchar *right)
3432 return MSVCP_basic_string_wchar_compare_cstr(right, left) > 0;
3435 /* ??$?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 */
3436 /* ??$?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 */
3437 /* ??$?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 */
3438 /* ??$?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 */
3439 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq(
3440 const basic_string_wchar *left, const basic_string_wchar *right)
3442 return MSVCP_basic_string_wchar_compare(left, right) <= 0;
3445 /* ??$?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 */
3446 /* ??$?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 */
3447 /* ??$?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 */
3448 /* ??$?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 */
3449 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_bstr_cstr(
3450 const basic_string_wchar *left, const wchar_t *right)
3452 return MSVCP_basic_string_wchar_compare_cstr(left, right) <= 0;
3455 /* ??$?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 */
3456 /* ??$?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 */
3457 /* ??$?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 */
3458 /* ??$?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 */
3459 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_cstr_bstr(
3460 const wchar_t *left, const basic_string_wchar *right)
3462 return MSVCP_basic_string_wchar_compare_cstr(right, left) >= 0;
3465 /* ??$?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 */
3466 /* ??$?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 */
3467 /* ??$?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 */
3468 /* ??$?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 */
3469 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater(
3470 const basic_string_wchar *left, const basic_string_wchar *right)
3472 return MSVCP_basic_string_wchar_compare(left, right) > 0;
3475 /* ??$?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 */
3476 /* ??$?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 */
3477 /* ??$?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 */
3478 /* ??$?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 */
3479 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_bstr_cstr(
3480 const basic_string_wchar *left, const wchar_t *right)
3482 return MSVCP_basic_string_wchar_compare_cstr(left, right) > 0;
3485 /* ??$?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 */
3486 /* ??$?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 */
3487 /* ??$?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 */
3488 /* ??$?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 */
3489 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_cstr_bstr(
3490 const wchar_t *left, const basic_string_wchar *right)
3492 return MSVCP_basic_string_wchar_compare_cstr(right, left) < 0;
3495 /* ??$?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 */
3496 /* ??$?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 */
3497 /* ??$?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 */
3498 /* ??$?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 */
3499 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq(
3500 const basic_string_wchar *left, const basic_string_wchar *right)
3502 return MSVCP_basic_string_wchar_compare(left, right) >= 0;
3505 /* ??$?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 */
3506 /* ??$?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 */
3507 /* ??$?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 */
3508 /* ??$?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 */
3509 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_bstr_cstr(
3510 const basic_string_wchar *left, const wchar_t *right)
3512 return MSVCP_basic_string_wchar_compare_cstr(left, right) >= 0;
3515 /* ??$?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 */
3516 /* ??$?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 */
3517 /* ??$?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 */
3518 /* ??$?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 */
3519 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_cstr_bstr(
3520 const wchar_t *left, const basic_string_wchar *right)
3522 return MSVCP_basic_string_wchar_compare_cstr(right, left) <= 0;
3525 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3526 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3527 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3528 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3529 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr, 16)
3530 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_substr(
3531 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
3533 const wchar_t *p, *end;
3535 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find, len), pos, len);
3537 if(len==0 && pos<=this->size)
3538 return pos;
3539 if(pos>=this->size || len>this->size)
3540 return MSVCP_basic_string_wchar_npos;
3542 end = basic_string_wchar_const_ptr(this)+this->size-len+1;
3543 for(p=basic_string_wchar_const_ptr(this)+pos; p<end; p++) {
3544 p = MSVCP_char_traits_wchar_find(p, end-p, find);
3545 if(!p)
3546 break;
3548 if(!MSVCP_char_traits_wchar_compare(p, find, len))
3549 return p-basic_string_wchar_const_ptr(this);
3552 return MSVCP_basic_string_wchar_npos;
3555 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3556 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3557 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3558 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3559 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off, 12)
3560 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_off(
3561 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
3563 return MSVCP_basic_string_wchar_find_cstr_substr(this, find, pos,
3564 MSVCP_char_traits_wchar_length(find));
3567 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3568 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3569 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3570 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3571 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off, 12)
3572 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_off(
3573 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3575 return MSVCP_basic_string_wchar_find_cstr_substr(this,
3576 basic_string_wchar_const_ptr(find), off, find->size);
3579 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3580 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3581 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3582 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3583 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch, 12)
3584 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_ch(
3585 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
3587 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1);
3590 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3591 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3592 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3593 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3594 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr, 16)
3595 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_substr(
3596 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
3598 const wchar_t *p, *end;
3600 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find, len), pos, len);
3602 if(len==0)
3603 return pos<this->size ? pos : this->size;
3605 if(len > this->size)
3606 return MSVCP_basic_string_wchar_npos;
3608 if(pos > this->size-len+1)
3609 pos = this->size-len+1;
3610 end = basic_string_wchar_const_ptr(this);
3611 for(p=end+pos; p>=end; p--) {
3612 if(*p==*find && !MSVCP_char_traits_wchar_compare(p, find, len))
3613 return p-basic_string_wchar_const_ptr(this);
3616 return MSVCP_basic_string_wchar_npos;
3619 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3620 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3621 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3622 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3623 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off, 12)
3624 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_off(
3625 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
3627 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find, pos,
3628 MSVCP_char_traits_wchar_length(find));
3631 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3632 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3633 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3634 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3635 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off, 12)
3636 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_off(
3637 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3639 return MSVCP_basic_string_wchar_rfind_cstr_substr(this,
3640 basic_string_wchar_const_ptr(find), off, find->size);
3643 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3644 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3645 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3646 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3647 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch, 12)
3648 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_ch(
3649 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
3651 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch, pos, 1);
3654 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3655 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3656 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3657 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3658 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr, 16)
3659 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3660 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3662 const wchar_t *p, *end;
3664 TRACE("%p %p %lu %lu\n", this, find, off, len);
3666 if(len>0 && off<this->size) {
3667 end = basic_string_wchar_const_ptr(this)+this->size;
3668 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3669 if(MSVCP_char_traits_wchar_find(find, len, p))
3670 return p-basic_string_wchar_const_ptr(this);
3673 return MSVCP_basic_string_wchar_npos;
3676 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3677 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3678 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3679 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3680 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of, 12)
3681 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of(
3682 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3684 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
3685 basic_string_wchar_const_ptr(find), off, find->size);
3688 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3689 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3690 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3691 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3692 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr, 12)
3693 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr(
3694 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3696 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3697 this, find, off, MSVCP_char_traits_wchar_length(find));
3700 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3701 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3702 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3703 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3704 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch, 12)
3705 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_ch(
3706 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3708 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch, off, 1);
3711 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3712 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3713 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3714 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3715 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr, 16)
3716 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3717 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3719 const wchar_t *p, *end;
3721 TRACE("%p %p %lu %lu\n", this, find, off, len);
3723 if(off<this->size) {
3724 end = basic_string_wchar_const_ptr(this)+this->size;
3725 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3726 if(!MSVCP_char_traits_wchar_find(find, len, p))
3727 return p-basic_string_wchar_const_ptr(this);
3730 return MSVCP_basic_string_wchar_npos;
3733 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3734 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3735 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3736 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3737 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of, 12)
3738 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of(
3739 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3741 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
3742 basic_string_wchar_const_ptr(find), off, find->size);
3745 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3746 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3747 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3748 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3749 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr, 12)
3750 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr(
3751 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3753 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3754 this, find, off, MSVCP_char_traits_wchar_length(find));
3757 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3758 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3759 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3760 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3761 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch, 12)
3762 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_ch(
3763 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3765 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch, off, 1);
3768 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3769 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3770 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3771 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3772 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr, 16)
3773 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3774 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3776 const wchar_t *p, *beg;
3778 TRACE("%p %p %lu %lu\n", this, find, off, len);
3781 if(len>0 && this->size>0) {
3782 if(off >= this->size)
3783 off = this->size-1;
3785 beg = basic_string_wchar_const_ptr(this);
3786 for(p=beg+off; p>=beg; p--)
3787 if(MSVCP_char_traits_wchar_find(find, len, p))
3788 return p-beg;
3791 return MSVCP_basic_string_wchar_npos;
3794 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3795 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3796 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3797 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3798 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of, 12)
3799 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of(
3800 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3802 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
3803 basic_string_wchar_const_ptr(find), off, find->size);
3806 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3807 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3808 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3809 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3810 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr, 12)
3811 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr(
3812 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3814 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3815 this, find, off, MSVCP_char_traits_wchar_length(find));
3818 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3819 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3820 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3821 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3822 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch, 12)
3823 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_ch(
3824 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3826 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch, off, 1);
3829 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3830 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3831 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3832 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3833 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr, 16)
3834 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3835 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3837 const wchar_t *p, *beg;
3839 TRACE("%p %p %lu %lu\n", this, find, off, len);
3841 if(len>0 && this->size>0) {
3842 if(off >= this->size)
3843 off = this->size-1;
3845 beg = basic_string_wchar_const_ptr(this);
3846 for(p=beg+off; p>=beg; p--)
3847 if(!MSVCP_char_traits_wchar_find(find, len, p))
3848 return p-beg;
3851 return MSVCP_basic_string_wchar_npos;
3854 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3855 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3856 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3857 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3858 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of, 12)
3859 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of(
3860 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3862 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
3863 basic_string_wchar_const_ptr(find), off, find->size);
3866 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3867 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3868 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3869 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3870 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr, 12)
3871 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr(
3872 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3874 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3875 this, find, off, MSVCP_char_traits_wchar_length(find));
3878 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3879 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3880 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3881 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3882 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch, 12)
3883 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_ch(
3884 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3886 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch, off, 1);
3889 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z */
3890 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z */
3891 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
3892 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
3893 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len, 20)
3894 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr_len(basic_string_wchar *this,
3895 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str, MSVCP_size_t str_len)
3897 MSVCP_size_t inside_pos = -1;
3898 wchar_t *ptr = basic_string_wchar_ptr(this);
3900 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
3902 if(this->size < off)
3903 MSVCP__String_base_Xran();
3905 if(len > this->size-off)
3906 len = this->size-off;
3908 if(MSVCP_basic_string_wchar_npos-str_len <= this->size-len)
3909 MSVCP__String_base_Xlen();
3911 if(basic_string_wchar_inside(this, str))
3912 inside_pos = str-ptr;
3914 if(len < str_len) {
3915 basic_string_wchar_grow(this, this->size-len+str_len, FALSE);
3916 ptr = basic_string_wchar_ptr(this);
3919 if(inside_pos == -1) {
3920 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3921 memcpy(ptr+off, str, str_len*sizeof(wchar_t));
3922 } else if(len >= str_len) {
3923 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(wchar_t));
3924 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3925 } else {
3926 MSVCP_size_t size;
3928 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3930 if(inside_pos < off+len) {
3931 size = off+len-inside_pos;
3932 if(size > str_len)
3933 size = str_len;
3934 memmove(ptr+off, ptr+inside_pos, size*sizeof(wchar_t));
3935 } else {
3936 size = 0;
3939 if(str_len > size)
3940 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(wchar_t));
3943 basic_string_wchar_eos(this, this->size-len+str_len);
3944 return this;
3947 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z */
3948 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z */
3949 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3950 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3951 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr, 16)
3952 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr(basic_string_wchar *this,
3953 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str)
3955 return basic_string_wchar_replace_cstr_len(this, off, len, str,
3956 MSVCP_char_traits_wchar_length(str));
3959 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z */
3960 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3961 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3962 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3963 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr, 24)
3964 basic_string_wchar* __thiscall basic_string_wchar_replace_substr(basic_string_wchar *this, MSVCP_size_t off,
3965 MSVCP_size_t len, const basic_string_wchar *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
3967 if(str->size < str_off)
3968 MSVCP__String_base_Xran();
3970 if(str_len > str->size-str_off)
3971 str_len = str->size-str_off;
3973 return basic_string_wchar_replace_cstr_len(this, off, len,
3974 basic_string_wchar_const_ptr(str)+str_off, str_len);
3977 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z */
3978 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3979 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3980 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3981 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace, 16)
3982 basic_string_wchar* __thiscall basic_string_wchar_replace(basic_string_wchar *this,
3983 MSVCP_size_t off, MSVCP_size_t len, const basic_string_wchar *str)
3985 return basic_string_wchar_replace_cstr_len(this, off, len,
3986 basic_string_wchar_const_ptr(str), str->size);
3989 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z */
3990 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z */
3991 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3992 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3993 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch, 20)
3994 basic_string_wchar* __thiscall basic_string_wchar_replace_ch(basic_string_wchar *this,
3995 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, wchar_t ch)
3997 wchar_t *ptr = basic_string_wchar_ptr(this);
3999 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
4001 if(this->size < off)
4002 MSVCP__String_base_Xran();
4004 if(len > this->size-off)
4005 len = this->size-off;
4007 if(MSVCP_basic_string_wchar_npos-count <= this->size-len)
4008 MSVCP__String_base_Xlen();
4010 if(len < count) {
4011 basic_string_wchar_grow(this, this->size-len+count, FALSE);
4012 ptr = basic_string_wchar_ptr(this);
4015 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
4016 MSVCP_char_traits_wchar_assignn(ptr+off, count, ch);
4017 basic_string_wchar_eos(this, this->size-len+count);
4019 return this;
4022 /* ?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@000@Z */
4023 /* ?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@000@Z */
4024 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@000@Z */
4025 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@000@Z */
4026 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter, 36)
4027 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
4028 String_iterator_wchar beg, String_iterator_wchar end,
4029 String_iterator_wchar res_beg, String_iterator_wchar res_end)
4031 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4032 return basic_string_wchar_replace_cstr_len(this,
4033 MSVCP_basic_string_wchar_Pdif(beg, begin), MSVCP_basic_string_wchar_Pdif(end, beg),
4034 res_beg.pos, MSVCP_basic_string_wchar_Pdif(res_end, res_beg));
4037 /* ?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@0ABV12@@Z */
4038 /* ?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@0AEBV12@@Z */
4039 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0ABV12@@Z */
4040 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0AEBV12@@Z */
4041 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr, 24)
4042 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
4043 String_iterator_wchar beg, String_iterator_wchar end, const basic_string_wchar *str)
4045 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4046 return basic_string_wchar_replace(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4047 MSVCP_basic_string_wchar_Pdif(end, beg), str);
4050 /* ?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@0I_W@Z */
4051 /* ?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@0_K_W@Z */
4052 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0IG@Z */
4053 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0_KG@Z */
4054 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ch, 28)
4055 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
4056 String_iterator_wchar beg, String_iterator_wchar end, MSVCP_size_t count, wchar_t ch)
4058 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4059 return basic_string_wchar_replace_ch(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4060 MSVCP_basic_string_wchar_Pdif(end, beg), count, ch);
4063 /* ?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 */
4064 /* ?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 */
4065 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0PBG1@Z */
4066 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0PEBG1@Z */
4067 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ptr_ptr, 28)
4068 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
4069 String_iterator_wchar beg, String_iterator_wchar end,
4070 const wchar_t *res_beg, const wchar_t *res_end)
4072 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4073 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4074 MSVCP_basic_string_wchar_Pdif(end, beg), res_beg, res_end-res_beg);
4077 /* ?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_W@Z */
4078 /* ?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_W@Z */
4079 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0PBG@Z */
4080 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0PEBG@Z */
4081 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr, 24)
4082 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
4083 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str)
4085 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4086 return basic_string_wchar_replace_cstr(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4087 MSVCP_basic_string_wchar_Pdif(end, beg), str);
4090 /* ?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_WI@Z */
4091 /* ?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_W_K@Z */
4092 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0PBGI@Z */
4093 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0PEBG_K@Z */
4094 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len, 28)
4095 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
4096 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str, MSVCP_size_t len)
4098 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4099 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4100 MSVCP_basic_string_wchar_Pdif(end, beg), str, len);
4103 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@@Z */
4104 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
4105 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
4106 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
4107 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert, 12)
4108 basic_string_wchar* __thiscall basic_string_wchar_insert(basic_string_wchar *this,
4109 MSVCP_size_t off, const basic_string_wchar *str)
4111 return basic_string_wchar_replace(this, off, 0, str);
4114 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@II@Z */
4115 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
4116 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
4117 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
4118 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr, 20)
4119 basic_string_wchar* __thiscall basic_string_wchar_insert_substr(
4120 basic_string_wchar *this, MSVCP_size_t off, const basic_string_wchar *str,
4121 MSVCP_size_t str_off, MSVCP_size_t str_count)
4123 return basic_string_wchar_replace_substr(this, off, 0, str, str_off, str_count);
4126 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_W@Z */
4127 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W@Z */
4128 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
4129 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
4130 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr, 12)
4131 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr(
4132 basic_string_wchar *this, MSVCP_size_t off, const wchar_t *str)
4134 return basic_string_wchar_replace_cstr(this, off, 0, str);
4137 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_WI@Z */
4138 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W0@Z */
4139 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
4140 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
4141 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len, 16)
4142 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr_len(basic_string_wchar *this,
4143 MSVCP_size_t off, const wchar_t *str, MSVCP_size_t str_len)
4145 return basic_string_wchar_replace_cstr_len(this, off, 0, str, str_len);
4148 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II_W@Z */
4149 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0_W@Z */
4150 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
4151 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
4152 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn, 16)
4153 basic_string_wchar* __thiscall basic_string_wchar_insert_chn(basic_string_wchar *this,
4154 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
4156 return basic_string_wchar_replace_ch(this, off, 0, count, ch);
4159 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@I_W@Z */
4160 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@_K_W@Z */
4161 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@IG@Z */
4162 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@_KG@Z */
4163 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn, 20)
4164 void __thiscall basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
4165 String_iterator_wchar where, MSVCP_size_t count, wchar_t ch)
4167 String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) };
4168 MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(where, iter);
4170 basic_string_wchar_insert_chn(this, off, count, ch);
4173 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@_W@Z */
4174 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@_W@Z */
4175 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@G@Z */
4176 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@G@Z */
4177 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch, 20)
4178 String_iterator_wchar* __thiscall basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
4179 String_iterator_wchar *ret, String_iterator_wchar where, wchar_t ch)
4181 MSVCP_size_t off;
4183 ret->bstr = this;
4184 ret->pos = basic_string_wchar_ptr(this);
4185 off = MSVCP_basic_string_wchar_Pdif(where, *ret);
4187 basic_string_wchar_insert_chn(this, off, 1, ch);
4188 ret->pos = basic_string_wchar_ptr(this)+off;
4189 return ret;
4192 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
4193 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
4194 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
4195 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
4196 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_null, 16)
4197 String_iterator_wchar* __thiscall basic_string_wchar_insert_iter_null(basic_string_wchar *this,
4198 String_iterator_wchar *ret, String_iterator_wchar where)
4200 return basic_string_wchar_insert_iter_ch(this, ret, where, 0);
4203 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@00@Z */
4204 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@00@Z */
4205 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@00@Z */
4206 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@00@Z */
4207 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 28)
4208 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
4209 String_iterator_wchar where, String_iterator_wchar beg, String_iterator_wchar end)
4211 basic_string_wchar_replace_iter_iter(this, where, where, beg, end);
4214 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PB_W1@Z */
4215 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W1@Z */
4216 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG1@Z */
4217 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG1@Z */
4218 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ptr_ptr, 20)
4219 void __thiscall basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
4220 String_iterator_wchar where, const wchar_t *beg, const wchar_t *end)
4222 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
4225 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
4226 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
4227 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
4228 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
4229 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at, 8)
4230 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at(
4231 basic_string_wchar *this, MSVCP_size_t pos)
4233 TRACE("%p %lu\n", this, pos);
4235 assert(this->size >= pos);
4236 return basic_string_wchar_ptr(this)+pos;
4239 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
4240 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
4241 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
4242 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
4243 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_operator_at, 8)
4244 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_operator_at(
4245 const basic_string_wchar *this, MSVCP_size_t pos)
4247 TRACE("%p %lu\n", this, pos);
4249 assert(this->size >= pos);
4250 return basic_string_wchar_const_ptr(this)+pos;
4253 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z */
4254 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z */
4255 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGU_Size_type_nosscl@01@@Z */
4256 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAGU_Size_type_nosscl@01@@Z */
4257 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at_noverify, 8)
4258 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at_noverify(
4259 basic_string_wchar *this, size_t_noverify pos)
4261 TRACE("%p %lu\n", this, pos.val);
4262 return basic_string_wchar_ptr(this)+pos.val;
4265 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z */
4266 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z */
4267 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGU_Size_type_nosscl@01@@Z */
4268 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBGU_Size_type_nosscl@01@@Z */
4269 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_const_at_noverify, 8)
4270 const wchar_t* __thiscall MSVCP_basic_string_wchar_operator_const_at_noverify(
4271 const basic_string_wchar *this, size_t_noverify pos)
4273 TRACE("%p %lu\n", this, pos.val);
4274 return basic_string_wchar_const_ptr(this)+pos.val;
4277 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
4278 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
4279 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
4280 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
4281 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at, 8)
4282 wchar_t* __thiscall MSVCP_basic_string_wchar_at(
4283 basic_string_wchar *this, MSVCP_size_t pos)
4285 TRACE("%p %lu\n", this, pos);
4287 if(this->size <= pos)
4288 MSVCP__String_base_Xran();
4290 return basic_string_wchar_ptr(this)+pos;
4293 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
4294 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
4295 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
4296 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
4297 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_at, 8)
4298 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at(
4299 const basic_string_wchar *this, MSVCP_size_t pos)
4301 TRACE("%p %lu\n", this, pos);
4303 if(this->size <= pos)
4304 MSVCP__String_base_Xran();
4306 return basic_string_wchar_const_ptr(this)+pos;
4309 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z */
4310 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z */
4311 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
4312 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
4313 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch, 12)
4314 void __thiscall MSVCP_basic_string_wchar_resize_ch(
4315 basic_string_wchar *this, MSVCP_size_t size, wchar_t ch)
4317 TRACE("%p %lu %c\n", this, size, ch);
4319 if(size <= this->size)
4320 MSVCP_basic_string_wchar_erase(this, size, this->size);
4321 else
4322 MSVCP_basic_string_wchar_append_len_ch(this, size-this->size, ch);
4325 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
4326 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
4327 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
4328 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
4329 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize, 8)
4330 void __thiscall MSVCP_basic_string_wchar_resize(
4331 basic_string_wchar *this, MSVCP_size_t size)
4333 MSVCP_basic_string_wchar_resize_ch(this, size, '\0');
4336 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4337 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4338 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4339 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4340 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear, 4)
4341 void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar *this)
4343 basic_string_wchar_eos(this, 0);
4346 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4347 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4348 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4349 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4350 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4351 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4352 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4353 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4354 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_begin, 8)
4355 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_begin(
4356 basic_string_wchar *this, String_iterator_wchar *ret)
4358 TRACE("%p\n", this);
4360 ret->bstr = this;
4361 ret->pos = basic_string_wchar_const_ptr(this);
4362 return ret;
4365 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4366 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4367 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4368 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
4369 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4370 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4371 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4372 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
4373 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_end, 8)
4374 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_end(
4375 basic_string_wchar *this, String_iterator_wchar *ret)
4377 TRACE("%p\n", this);
4379 ret->bstr = this;
4380 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
4381 return ret;
4384 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4385 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4386 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4387 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4388 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4389 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4390 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4391 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4392 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rbegin, 8)
4393 basic_string_wchar_reverse_iter* __thiscall basic_string_wchar_rbegin(const basic_string_wchar *this, basic_string_wchar_reverse_iter *ret)
4395 ret->cont = NULL;
4396 ret->bstr = this;
4397 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
4398 return ret;
4401 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4402 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4403 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4404 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4405 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4406 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4407 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4408 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4409 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rend, 8)
4410 basic_string_wchar_reverse_iter* __thiscall basic_string_wchar_rend(const basic_string_wchar *this, basic_string_wchar_reverse_iter *ret)
4412 ret->cont = NULL;
4413 ret->bstr = this;
4414 ret->pos = basic_string_wchar_const_ptr(this);
4415 return ret;
4418 /* _String_val class */
4419 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ */
4420 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ */
4421 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ */
4422 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ */
4423 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ */
4424 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ */
4425 DEFINE_THISCALL_WRAPPER(_String_val_ctor, 4)
4426 void* __thiscall _String_val_ctor(void *this)
4428 TRACE("%p\n", this);
4429 return this;
4432 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z */
4433 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z */
4434 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z */
4435 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z */
4436 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z */
4437 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z */
4438 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z */
4439 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z */
4440 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z */
4441 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z */
4442 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z */
4443 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z */
4444 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4445 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4446 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z */
4447 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4448 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z */
4449 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4450 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4451 DEFINE_THISCALL_WRAPPER(_String_val_null_ctor, 8)
4452 void* __thiscall _String_val_null_ctor(void *this, const void *misc)
4454 TRACE("%p %p\n", this, misc);
4455 return this;