include: Use the hard-float calling convention for Windows APIs on ARM
[wine.git] / dlls / msvcp90 / string.c
blob317373bf9e59ff45c6eb545422dd8a9dcf1797a0
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 "msvcp90.h"
24 #include "stdio.h"
26 #include "windef.h"
27 #include "winbase.h"
28 #include "wine/debug.h"
29 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
31 #if _MSVCP_VER <= 90
32 #define STRING_ALLOCATOR(this) ((this)->allocator)
33 #elif _MSVCP_VER == 100
34 #define STRING_ALLOCATOR(this) (&(this)->allocator)
35 #else
36 #define STRING_ALLOCATOR(this) NULL
37 #endif
39 /* size_t_noverify structure */
40 typedef struct {
41 MSVCP_size_t val;
42 } size_t_noverify;
44 /* allocator class */
45 typedef struct {
46 char empty_struct;
47 } allocator;
49 /* char_traits<char> */
50 /* ?assign@?$char_traits@D@std@@SAXAADABD@Z */
51 /* ?assign@?$char_traits@D@std@@SAXAEADAEBD@Z */
52 void CDECL MSVCP_char_traits_char_assign(char *ch, const char *assign)
54 *ch = *assign;
57 /* ?eq@?$char_traits@D@std@@SA_NABD0@Z */
58 /* ?eq@?$char_traits@D@std@@SA_NAEBD0@Z */
59 MSVCP_bool CDECL MSVCP_char_traits_char_eq(const char *ch1, const char *ch2)
61 return *ch1 == *ch2;
64 /* ?lt@?$char_traits@D@std@@SA_NABD0@Z */
65 /* ?lt@?$char_traits@D@std@@SA_NAEBD0@Z */
66 MSVCP_bool CDECL MSVCP_char_traits_lt(const char *ch1, const char *ch2)
68 return *ch1 < *ch2;
71 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
72 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
73 int CDECL MSVCP_char_traits_char_compare(
74 const char *s1, const char *s2, MSVCP_size_t count)
76 int ret = memcmp(s1, s2, count);
77 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
80 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
81 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
82 MSVCP_size_t CDECL MSVCP_char_traits_char_length(const char *str)
84 return strlen(str);
87 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
88 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
89 char* CDECL MSVCP_char_traits_char__Copy_s(char *dest,
90 MSVCP_size_t size, const char *src, MSVCP_size_t count)
92 memcpy_s(dest, size, src, count);
93 return dest;
96 /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */
97 /* ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
98 char* CDECL MSVCP_char_traits_char_copy(
99 char *dest, const char *src, MSVCP_size_t count)
101 return MSVCP_char_traits_char__Copy_s(dest, count, src, count);
104 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
105 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
106 const char * CDECL MSVCP_char_traits_char_find(
107 const char *str, MSVCP_size_t range, const char *c)
109 return memchr(str, *c, range);
112 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
113 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
114 char* CDECL MSVCP_char_traits_char__Move_s(char *dest,
115 MSVCP_size_t size, const char *src, MSVCP_size_t count)
117 memmove_s(dest, size, src, count);
118 return dest;
121 /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */
122 /* ?move@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
123 char* CDECL MSVCP_char_traits_char_move(
124 char *dest, const char *src, MSVCP_size_t count)
126 return MSVCP_char_traits_char__Move_s(dest, count, src, count);
129 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
130 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
131 char* CDECL MSVCP_char_traits_char_assignn(char *str, MSVCP_size_t num, char c)
133 return memset(str, c, num);
136 /* ?to_char_type@?$char_traits@D@std@@SADABH@Z */
137 /* ?to_char_type@?$char_traits@D@std@@SADAEBH@Z */
138 char CDECL MSVCP_char_traits_char_to_char_type(const int *i)
140 return (char)*i;
143 /* ?to_int_type@?$char_traits@D@std@@SAHABD@Z */
144 /* ?to_int_type@?$char_traits@D@std@@SAHAEBD@Z */
145 int CDECL MSVCP_char_traits_char_to_int_type(const char *ch)
147 return (unsigned char)*ch;
150 /* ?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z */
151 /* ?eq_int_type@?$char_traits@D@std@@SA_NAEBH0@Z */
152 MSVCP_bool CDECL MSVCP_char_traits_char_eq_int_type(const int *i1, const int *i2)
154 return *i1 == *i2;
157 /* ?eof@?$char_traits@D@std@@SAHXZ */
158 int CDECL MSVCP_char_traits_char_eof(void)
160 return EOF;
163 /* ?not_eof@?$char_traits@D@std@@SAHABH@Z */
164 /* ?not_eof@?$char_traits@D@std@@SAHAEBH@Z */
165 int CDECL MSVCP_char_traits_char_not_eof(int *in)
167 return (*in==EOF ? !EOF : *in);
171 /* char_traits<wchar_t> */
172 /* ?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z */
173 /* ?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z */
174 void CDECL MSVCP_char_traits_wchar_assign(wchar_t *ch,
175 const wchar_t *assign)
177 *ch = *assign;
180 /* ?eq@?$char_traits@_W@std@@SA_NAB_W0@Z */
181 /* ?eq@?$char_traits@_W@std@@SA_NAEB_W0@Z */
182 MSVCP_bool CDECL MSVCP_char_traits_wchar_eq(wchar_t *ch1, wchar_t *ch2)
184 return *ch1 == *ch2;
187 /* ?lt@?$char_traits@_W@std@@SA_NAB_W0@Z */
188 /* ?lt@?$char_traits@_W@std@@SA_NAEB_W0@Z */
189 MSVCP_bool CDECL MSVCP_char_traits_wchar_lt(const wchar_t *ch1,
190 const wchar_t *ch2)
192 return *ch1 < *ch2;
195 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
196 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
197 int CDECL MSVCP_char_traits_wchar_compare(const wchar_t *s1,
198 const wchar_t *s2, MSVCP_size_t count)
200 int ret = memcmp(s1, s2, count * sizeof(wchar_t));
201 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
204 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
205 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
206 MSVCP_size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str)
208 return wcslen((WCHAR*)str);
211 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
212 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
213 wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest,
214 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
216 memcpy_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
217 return dest;
220 /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
221 /* ?copy@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
222 wchar_t* CDECL MSVCP_char_traits_wchar_copy(wchar_t *dest,
223 const wchar_t *src, MSVCP_size_t count)
225 return MSVCP_char_traits_wchar__Copy_s(dest, count, src, count);
228 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
229 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
230 const wchar_t* CDECL MSVCP_char_traits_wchar_find(
231 const wchar_t *str, MSVCP_size_t range, const wchar_t *c)
233 MSVCP_size_t i=0;
235 for(i=0; i<range; i++)
236 if(str[i] == *c)
237 return str+i;
239 return NULL;
242 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
243 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
244 wchar_t* CDECL MSVCP_char_traits_wchar__Move_s(wchar_t *dest,
245 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
247 memmove_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
248 return dest;
251 /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
252 /* ?move@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
253 wchar_t* CDECL MSVCP_char_traits_wchar_move(wchar_t *dest,
254 const wchar_t *src, MSVCP_size_t count)
256 return MSVCP_char_traits_wchar__Move_s(dest, count, src, count);
259 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
260 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
261 wchar_t* CDECL MSVCP_char_traits_wchar_assignn(wchar_t *str,
262 MSVCP_size_t num, wchar_t c)
264 MSVCP_size_t i;
266 for(i=0; i<num; i++)
267 str[i] = c;
269 return str;
272 /* ?to_char_type@?$char_traits@_W@std@@SA_WABG@Z */
273 /* ?to_char_type@?$char_traits@_W@std@@SA_WAEBG@Z */
274 wchar_t CDECL MSVCP_char_traits_wchar_to_char_type(const unsigned short *i)
276 return *i;
279 /* ?to_int_type@?$char_traits@_W@std@@SAGAB_W@Z */
280 /* ?to_int_type@?$char_traits@_W@std@@SAGAEB_W@Z */
281 unsigned short CDECL MSVCP_char_traits_wchar_to_int_type(const wchar_t *ch)
283 return *ch;
286 /* ?eq_int_type@?$char_traits@_W@std@@SA_NABG0@Z */
287 /* ?eq_int_type@?$char_traits@_W@std@@SA_NAEBG0@Z */
288 MSVCP_bool CDECL MSVCP_char_traits_wchar_eq_int_tpe(const unsigned short *i1,
289 const unsigned short *i2)
291 return *i1 == *i2;
294 /* ?eof@?$char_traits@_W@std@@SAGXZ */
295 unsigned short CDECL MSVCP_char_traits_wchar_eof(void)
297 return WEOF;
300 /* ?not_eof@?$char_traits@_W@std@@SAGABG@Z */
301 /* ?not_eof@?$char_traits@_W@std@@SAGAEBG@Z */
302 unsigned short CDECL MSVCP_char_traits_wchar_not_eof(const unsigned short *in)
304 return (*in==WEOF ? !WEOF : *in);
308 /* char_traits<unsigned short> */
309 /* ?assign@?$char_traits@G@std@@SAXAAGABG@Z */
310 /* ?assign@?$char_traits@G@std@@SAXAEAGAEBG@Z */
311 void CDECL MSVCP_char_traits_short_assign(unsigned short *ch,
312 const unsigned short *assign)
314 *ch = *assign;
317 /* ?eq@?$char_traits@G@std@@SA_NABG0@Z */
318 /* ?eq@?$char_traits@G@std@@SA_NAEBG0@Z */
319 MSVCP_bool CDECL MSVCP_char_traits_short_eq(const unsigned short *ch1,
320 const unsigned short *ch2)
322 return *ch1 == *ch2;
325 /* ?lt@?$char_traits@G@std@@SA_NABG0@Z */
326 /* ?lt@?$char_traits@G@std@@SA_NAEBG0@Z */
327 MSVCP_bool CDECL MSVCP_char_traits_short_lt(const unsigned short *ch1,
328 const unsigned short *ch2)
330 return *ch1 < *ch2;
333 /* ?compare@?$char_traits@G@std@@SAHPBG0I@Z */
334 /* ?compare@?$char_traits@G@std@@SAHPEBG0_K@Z */
335 int CDECL MSVCP_char_traits_short_compare(const unsigned short *s1,
336 const unsigned short *s2, MSVCP_size_t count)
338 MSVCP_size_t i;
340 for(i=0; i<count; i++)
341 if(s1[i] != s2[i])
342 return (s1[i] < s2[i] ? -1 : 1);
344 return 0;
347 /* ?length@?$char_traits@G@std@@SAIPBG@Z */
348 /* ?length@?$char_traits@G@std@@SA_KPEBG@Z */
349 MSVCP_size_t CDECL MSVCP_char_traits_short_length(const unsigned short *str)
351 MSVCP_size_t len;
353 for(len=0; str[len]; len++);
355 return len;
358 /* ?_Copy_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
359 /* ?_Copy_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
360 unsigned short * CDECL MSVCP_char_traits_short__Copy_s(unsigned short *dest,
361 MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
363 memcpy_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
364 return dest;
367 /* ?copy@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
368 /* ?copy@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
369 unsigned short* CDECL MSVCP_char_traits_short_copy(unsigned short *dest,
370 const unsigned short *src, MSVCP_size_t count)
372 return MSVCP_char_traits_short__Copy_s(dest, count, src, count);
375 /* ?find@?$char_traits@G@std@@SAPBGPBGIABG@Z */
376 /* ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z */
377 const unsigned short* CDECL MSVCP_char_traits_short_find(
378 const unsigned short *str, MSVCP_size_t range, const unsigned short *c)
380 MSVCP_size_t i;
382 for(i=0; i<range; i++)
383 if(str[i] == *c)
384 return str+i;
386 return NULL;
389 /* ?_Move_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
390 /* ?_Move_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
391 unsigned short* CDECL MSVCP_char_traits_short__Move_s(unsigned short *dest,
392 MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
394 memmove_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
395 return dest;
398 /* ?move@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
399 /* ?move@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
400 unsigned short* CDECL MSVCP_char_traits_short_move(unsigned short *dest,
401 const unsigned short *src, MSVCP_size_t count)
403 return MSVCP_char_traits_short__Move_s(dest, count, src, count);
406 /* ?assign@?$char_traits@G@std@@SAPAGPAGIG@Z */
407 /* ?assign@?$char_traits@G@std@@SAPEAGPEAG_KG@Z */
408 unsigned short* CDECL MSVCP_char_traits_short_assignn(unsigned short *str,
409 MSVCP_size_t num, unsigned short c)
411 MSVCP_size_t i;
413 for(i=0; i<num; i++)
414 str[i] = c;
416 return str;
419 /* ?to_char_type@?$char_traits@G@std@@SAGABG@Z */
420 /* ?to_char_type@?$char_traits@G@std@@SAGAEBG@Z */
421 unsigned short CDECL MSVCP_char_traits_short_to_char_type(const unsigned short *i)
423 return *i;
426 /* ?to_int_type@?$char_traits@G@std@@SAGABG@Z */
427 /* ?to_int_type@?$char_traits@G@std@@SAGAEBG@Z */
428 unsigned short CDECL MSVCP_char_traits_short_to_int_type(const unsigned short *ch)
430 return *ch;
433 /* ?eq_int_type@?$char_traits@G@std@@SA_NABG0@Z */
434 /* ?eq_int_type@?$char_traits@G@std@@SA_NAEBG0@Z */
435 MSVCP_bool CDECL MSVCP_char_traits_short_eq_int_type(unsigned short *i1,
436 unsigned short *i2)
438 return *i1 == *i2;
441 /* ?eof@?$char_traits@G@std@@SAGXZ */
442 unsigned short CDECL MSVCP_char_traits_short_eof(void)
444 return -1;
447 /* ?not_eof@?$char_traits@G@std@@SAGABG@Z */
448 /* ?not_eof@?$char_traits@G@std@@SAGAEBG@Z */
449 unsigned short CDECL MSVCP_char_traits_short_not_eof(const unsigned short *in)
451 return (*in==(unsigned short)-1 ? 0 : *in);
455 /* _String_base */
456 /* ?_Xlen@_String_base@std@@SAXXZ */
457 void CDECL MSVCP__String_base_Xlen(void)
459 static const char msg[] = "string too long";
461 TRACE("\n");
462 throw_exception(EXCEPTION_LENGTH_ERROR, msg);
465 /* ?_Xlen@_String_base@std@@QBEXXZ */
466 DEFINE_THISCALL_WRAPPER(_String_base__Xlen, 4)
467 void __thiscall _String_base__Xlen(const void/*_String_base*/ *this)
469 MSVCP__String_base_Xlen();
472 /* ?_Xran@_String_base@std@@SAXXZ */
473 void CDECL MSVCP__String_base_Xran(void)
475 static const char msg[] = "invalid string position";
477 TRACE("\n");
478 throw_exception(EXCEPTION_OUT_OF_RANGE, msg);
481 /* ?_Xran@_String_base@std@@QBEXXZ */
482 DEFINE_THISCALL_WRAPPER(_String_base__Xran, 4)
483 void __thiscall _String_base__Xran(const void/*_String_base*/ *this)
485 MSVCP__String_base_Xran();
488 /* ?_Xinvarg@_String_base@std@@SAXXZ */
489 void CDECL MSVCP__String_base_Xinvarg(void)
491 static const char msg[] = "invalid string argument";
493 TRACE("\n");
494 throw_exception(EXCEPTION_INVALID_ARGUMENT, msg);
498 /* basic_string<char, char_traits<char>, allocator<char>> */
499 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
500 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
501 const MSVCP_size_t MSVCP_basic_string_char_npos = -1;
503 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ */
504 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAPEADXZ */
505 DEFINE_THISCALL_WRAPPER(basic_string_char_ptr, 4)
506 char* __thiscall basic_string_char_ptr(basic_string_char *this)
508 if(this->res < BUF_SIZE_CHAR)
509 return this->data.buf;
510 return this->data.ptr;
513 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ */
514 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEBAPEBDXZ */
515 DEFINE_THISCALL_WRAPPER(basic_string_char_const_ptr, 4)
516 const char* __thiscall basic_string_char_const_ptr(const basic_string_char *this)
518 if(this->res < BUF_SIZE_CHAR)
519 return this->data.buf;
520 return this->data.ptr;
523 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z */
524 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K@Z */
525 DEFINE_THISCALL_WRAPPER(basic_string_char_eos, 8)
526 void __thiscall basic_string_char_eos(basic_string_char *this, MSVCP_size_t len)
528 static const char nullbyte = '\0';
530 this->size = len;
531 MSVCP_char_traits_char_assign(basic_string_char_ptr(this)+len, &nullbyte);
534 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z */
535 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z */
536 DEFINE_THISCALL_WRAPPER(basic_string_char_inside, 8)
537 MSVCP_bool __thiscall basic_string_char_inside(
538 basic_string_char *this, const char *ptr)
540 char *cstr = basic_string_char_ptr(this);
542 return ptr>=cstr && ptr<cstr+this->size;
545 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z */
546 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_N_K@Z */
547 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy, 12)
548 void __thiscall basic_string_char_tidy(basic_string_char *this,
549 MSVCP_bool built, MSVCP_size_t new_size)
551 if(built && BUF_SIZE_CHAR<=this->res) {
552 char *ptr = this->data.ptr;
554 if(new_size > 0)
555 MSVCP_char_traits_char__Copy_s(this->data.buf, BUF_SIZE_CHAR, ptr, new_size);
556 MSVCP_allocator_char_deallocate(STRING_ALLOCATOR(this), ptr, this->res+1);
559 this->res = BUF_SIZE_CHAR-1;
560 basic_string_char_eos(this, new_size);
563 /* Exported only from msvcp60/70 */
564 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
565 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
566 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy_built, 8)
567 void __thiscall basic_string_char_tidy_built(basic_string_char *this, MSVCP_bool built)
569 basic_string_char_tidy(this, built, 0);
572 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z */
573 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_N_K_N@Z */
574 DEFINE_THISCALL_WRAPPER(basic_string_char_grow, 12)
575 MSVCP_bool __thiscall basic_string_char_grow(
576 basic_string_char *this, MSVCP_size_t new_size, MSVCP_bool trim)
578 if(this->res < new_size) {
579 MSVCP_size_t new_res = new_size, len = this->size;
580 char *ptr;
582 new_res |= 0xf;
584 if(new_res/3 < this->res/2)
585 new_res = this->res + this->res/2;
587 ptr = MSVCP_allocator_char_allocate(STRING_ALLOCATOR(this), new_res+1);
588 if(!ptr)
589 ptr = MSVCP_allocator_char_allocate(STRING_ALLOCATOR(this), new_size+1);
590 else
591 new_size = new_res;
592 if(!ptr) {
593 ERR("Out of memory\n");
594 basic_string_char_tidy(this, TRUE, 0);
595 return FALSE;
598 MSVCP_char_traits_char__Copy_s(ptr, new_size,
599 basic_string_char_ptr(this), this->size);
600 basic_string_char_tidy(this, TRUE, 0);
601 this->data.ptr = ptr;
602 this->res = new_size;
603 basic_string_char_eos(this, len);
604 } else if(trim && new_size < BUF_SIZE_CHAR)
605 basic_string_char_tidy(this, TRUE,
606 new_size<this->size ? new_size : this->size);
607 else if(new_size == 0)
608 basic_string_char_eos(this, 0);
610 return (new_size>0);
613 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z */
614 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0@Z */
615 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy, 12)
616 void __thiscall basic_string_char__Copy(basic_string_char *this,
617 MSVCP_size_t new_size, MSVCP_size_t copy_len)
619 TRACE("%p %lu %lu\n", this, new_size, copy_len);
621 if(!basic_string_char_grow(this, new_size, FALSE))
622 return;
623 basic_string_char_eos(this, copy_len);
626 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
627 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
628 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator, 8)
629 allocator* __thiscall basic_string_char_get_allocator(const basic_string_char *this, allocator *ret)
631 TRACE("%p\n", this);
632 return ret;
635 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
636 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
637 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase, 12)
638 basic_string_char* __thiscall MSVCP_basic_string_char_erase(
639 basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t len)
641 TRACE("%p %lu %lu\n", this, pos, len);
643 if(pos > this->size)
644 MSVCP__String_base_Xran();
646 if(len > this->size-pos)
647 len = this->size-pos;
649 if(len) {
650 MSVCP_char_traits_char__Move_s(basic_string_char_ptr(this)+pos,
651 this->res-pos, basic_string_char_ptr(this)+pos+len,
652 this->size-pos-len);
653 basic_string_char_eos(this, this->size-len);
656 return this;
659 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
660 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
661 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr, 16)
662 basic_string_char* __thiscall MSVCP_basic_string_char_assign_substr(
663 basic_string_char *this, const basic_string_char *assign,
664 MSVCP_size_t pos, MSVCP_size_t len)
666 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
668 if(assign->size < pos)
669 MSVCP__String_base_Xran();
671 if(len > assign->size-pos)
672 len = assign->size-pos;
674 if(this == assign) {
675 MSVCP_basic_string_char_erase(this, pos+len, MSVCP_basic_string_char_npos);
676 MSVCP_basic_string_char_erase(this, 0, pos);
677 } else if(basic_string_char_grow(this, len, FALSE)) {
678 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
679 this->res, basic_string_char_const_ptr(assign)+pos, len);
680 basic_string_char_eos(this, len);
683 return this;
686 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
687 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
688 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
689 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
690 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign, 8)
691 basic_string_char* __thiscall MSVCP_basic_string_char_assign(
692 basic_string_char *this, const basic_string_char *assign)
694 return MSVCP_basic_string_char_assign_substr(this, assign,
695 0, MSVCP_basic_string_char_npos);
698 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
699 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
700 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len, 12)
701 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr_len(
702 basic_string_char *this, const char *str, MSVCP_size_t len)
704 TRACE("%p %s %lu\n", this, debugstr_an(str, len), len);
706 if(basic_string_char_inside(this, str))
707 return MSVCP_basic_string_char_assign_substr(this, this,
708 str-basic_string_char_ptr(this), len);
709 else if(basic_string_char_grow(this, len, FALSE)) {
710 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
711 this->res, str, len);
712 basic_string_char_eos(this, len);
715 return this;
718 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
719 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
720 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch, 8)
721 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ch(
722 basic_string_char *this, char ch)
724 return MSVCP_basic_string_char_assign_cstr_len(this, &ch, 1);
727 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
728 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
729 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
730 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
731 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr, 8)
732 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr(
733 basic_string_char *this, const char *str)
735 return MSVCP_basic_string_char_assign_cstr_len(this, str,
736 MSVCP_char_traits_char_length(str));
739 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
740 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
741 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn, 12)
742 basic_string_char* __thiscall MSVCP_basic_string_char_assignn(
743 basic_string_char *this, MSVCP_size_t count, char ch)
745 TRACE("%p %ld %c\n", this, count, ch);
747 basic_string_char_grow(this, count, FALSE);
748 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this), count, ch);
749 basic_string_char_eos(this, count);
750 return this;
753 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
754 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
755 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr, 12)
756 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ptr_ptr(
757 basic_string_char *this, const char *first, const char *last)
759 return MSVCP_basic_string_char_assign_cstr_len(this, first, last-first);
762 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z */
763 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0D@Z */
764 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Chassign, 16)
765 void __thiscall MSVCP_basic_string_char_Chassign(basic_string_char *this,
766 MSVCP_size_t off, MSVCP_size_t count, char ch)
768 TRACE("%p %lu %lu %c\n", this, off, count, ch);
769 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+off, count, ch);
772 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADIII@Z */
773 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K11@Z */
774 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Copy_s, 20)
775 MSVCP_size_t __thiscall MSVCP_basic_string_char_Copy_s(const basic_string_char *this,
776 char *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
778 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
780 if(this->size < off)
781 MSVCP__String_base_Xran();
783 if(count > this->size-off)
784 count = this->size-off;
786 MSVCP_char_traits_char__Copy_s(dest, size,
787 basic_string_char_const_ptr(this)+off, count);
788 return count;
791 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
792 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
793 DEFINE_THISCALL_WRAPPER(basic_string_char_copy, 16)
794 MSVCP_size_t __thiscall basic_string_char_copy(const basic_string_char *this,
795 char *dest, MSVCP_size_t count, MSVCP_size_t off)
797 return MSVCP_basic_string_char_Copy_s(this, dest, count, count, off);
800 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
801 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
802 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
803 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
804 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str, 4)
805 const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char *this)
807 TRACE("%p\n", this);
808 return basic_string_char_const_ptr(this);
811 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
812 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
813 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity, 4)
814 MSVCP_size_t __thiscall MSVCP_basic_string_char_capacity(basic_string_char *this)
816 TRACE("%p\n", this);
817 return this->res;
820 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
821 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
822 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve, 8)
823 void __thiscall MSVCP_basic_string_char_reserve(basic_string_char *this, MSVCP_size_t size)
825 MSVCP_size_t len;
827 TRACE("%p %ld\n", this, size);
829 len = this->size;
830 if(len > size)
831 return;
833 if(basic_string_char_grow(this, size, TRUE))
834 basic_string_char_eos(this, len);
837 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
838 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
839 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor, 4)
840 basic_string_char* __thiscall MSVCP_basic_string_char_ctor(basic_string_char *this)
842 TRACE("%p\n", this);
844 basic_string_char_tidy(this, FALSE, 0);
845 return this;
848 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
849 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
850 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor, 8)
851 basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(
852 basic_string_char *this, const basic_string_char *copy)
854 TRACE("%p %p\n", this, copy);
856 basic_string_char_tidy(this, FALSE, 0);
857 MSVCP_basic_string_char_assign(this, copy);
858 return this;
861 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
862 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
863 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr, 8)
864 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr(
865 basic_string_char *this, const char *str)
867 TRACE("%p %s\n", this, debugstr_a(str));
869 basic_string_char_tidy(this, FALSE, 0);
870 MSVCP_basic_string_char_assign_cstr(this, str);
871 return this;
874 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
875 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
876 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc, 12)
877 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_alloc(
878 basic_string_char *this, const char *str, const void *alloc)
880 return MSVCP_basic_string_char_ctor_cstr(this, str);
883 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
884 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
885 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len, 12)
886 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len(
887 basic_string_char *this, const char *str, MSVCP_size_t len)
889 TRACE("%p %s %ld\n", this, debugstr_an(str, len), len);
891 basic_string_char_tidy(this, FALSE, 0);
892 MSVCP_basic_string_char_assign_cstr_len(this, str, len);
893 return this;
896 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
897 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
898 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc, 16)
899 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len_alloc(
900 basic_string_char *this, const char *str, MSVCP_size_t len, const void *alloc)
902 return MSVCP_basic_string_char_ctor_cstr_len(this, str, len);
905 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z */
906 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z */
907 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr, 16)
908 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr(
909 basic_string_char *this, const basic_string_char *assign,
910 MSVCP_size_t pos, MSVCP_size_t len)
912 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
914 basic_string_char_tidy(this, FALSE, 0);
915 MSVCP_basic_string_char_assign_substr(this, assign, pos, len);
916 return this;
919 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
920 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
921 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc, 20)
922 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr_alloc(
923 basic_string_char *this, const basic_string_char *assign,
924 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
926 return MSVCP_basic_string_char_ctor_substr(this, assign, pos, len);
929 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
930 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
931 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc, 8)
932 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_alloc(
933 basic_string_char *this, const void *alloc)
935 TRACE("%p %p\n", this, alloc);
937 basic_string_char_tidy(this, FALSE, 0);
938 return this;
941 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z */
942 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z */
943 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch, 12)
944 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch(basic_string_char *this,
945 MSVCP_size_t count, char ch)
947 TRACE("%p %ld %c\n", this, count, ch);
949 basic_string_char_tidy(this, FALSE, 0);
950 MSVCP_basic_string_char_assignn(this, count, ch);
951 return this;
954 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
955 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
956 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc, 16)
957 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char *this,
958 MSVCP_size_t count, char ch, const void *alloc)
960 return MSVCP_basic_string_char_ctor_ch(this, count, ch);
963 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z */
964 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z */
965 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ptr_ptr, 12)
966 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ptr_ptr(basic_string_char *this,
967 const char *first, const char *last)
969 return MSVCP_basic_string_char_ctor_cstr_len(this, first, last-first);
972 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
973 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
974 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4)
975 void* __thiscall MSVCP_basic_string_char_dtor(basic_string_char *this)
977 TRACE("%p\n", this);
978 basic_string_char_tidy(this, TRUE, 0);
979 return NULL; /* FEAR 1 installer expects EAX set to 0 */
982 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
983 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
984 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
985 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
986 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length, 4)
987 MSVCP_size_t __thiscall MSVCP_basic_string_char_length(const basic_string_char *this)
989 TRACE("%p\n", this);
990 return this->size;
993 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
994 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
995 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size, 4)
996 MSVCP_size_t __thiscall basic_string_char_max_size(const basic_string_char *this)
998 TRACE("%p\n", this);
999 return MSVCP_allocator_char_max_size(STRING_ALLOCATOR(this))-1;
1002 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1003 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1004 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty, 4)
1005 MSVCP_bool __thiscall MSVCP_basic_string_char_empty(basic_string_char *this)
1007 TRACE("%p\n", this);
1008 return this->size == 0;
1011 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1012 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1013 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap, 8)
1014 void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_string_char *str)
1016 if(this != str) {
1017 char tmp[sizeof(this->data)];
1018 const MSVCP_size_t size = this->size;
1019 const MSVCP_size_t res = this->res;
1021 memcpy(tmp, this->data.buf, sizeof(this->data));
1022 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
1023 memcpy(str->data.buf, tmp, sizeof(this->data));
1025 this->size = str->size;
1026 this->res = str->res;
1028 str->size = size;
1029 str->res = res;
1033 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1034 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1035 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr, 16)
1036 basic_string_char* __thiscall MSVCP_basic_string_char_substr(basic_string_char *this,
1037 basic_string_char *ret, MSVCP_size_t off, MSVCP_size_t len)
1039 TRACE("%p %lu %lu\n", this, off, len);
1041 MSVCP_basic_string_char_ctor_substr(ret, this, off, len);
1042 return ret;
1045 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1046 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1047 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr, 16)
1048 basic_string_char* __thiscall MSVCP_basic_string_char_append_substr(basic_string_char *this,
1049 const basic_string_char *append, MSVCP_size_t offset, MSVCP_size_t count)
1051 TRACE("%p %p %lu %lu\n", this, append, offset, count);
1053 if(append->size < offset)
1054 MSVCP__String_base_Xran();
1056 if(count > append->size-offset)
1057 count = append->size-offset;
1059 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1060 MSVCP__String_base_Xlen();
1062 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1063 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1064 this->res-this->size, basic_string_char_const_ptr(append)+offset, count);
1065 basic_string_char_eos(this, this->size+count);
1068 return this;
1071 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1072 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1073 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1074 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1075 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append, 8)
1076 basic_string_char* __thiscall MSVCP_basic_string_char_append(
1077 basic_string_char *this, const basic_string_char *append)
1079 return MSVCP_basic_string_char_append_substr(this, append,
1080 0, MSVCP_basic_string_char_npos);
1083 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1084 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1085 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len, 12)
1086 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr_len(
1087 basic_string_char *this, const char *append, MSVCP_size_t count)
1089 TRACE("%p %s %lu\n", this, debugstr_an(append, count), count);
1091 if(basic_string_char_inside(this, append))
1092 return MSVCP_basic_string_char_append_substr(this, this,
1093 append-basic_string_char_ptr(this), count);
1095 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1096 MSVCP__String_base_Xlen();
1098 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1099 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1100 this->res-this->size, append, count);
1101 basic_string_char_eos(this, this->size+count);
1104 return this;
1107 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1108 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1109 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1110 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1111 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr, 8)
1112 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr(
1113 basic_string_char *this, const char *append)
1115 return MSVCP_basic_string_char_append_cstr_len(this, append,
1116 MSVCP_char_traits_char_length(append));
1119 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1120 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1121 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end, 12)
1122 basic_string_char* __thiscall MSVCP_basic_string_char_append_beg_end(
1123 basic_string_char *this, const char *beg, const char *end)
1125 return MSVCP_basic_string_char_append_cstr_len(this, beg, end-beg);
1128 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1129 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1130 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch, 12)
1131 basic_string_char* __thiscall MSVCP_basic_string_char_append_len_ch(
1132 basic_string_char *this, MSVCP_size_t count, char ch)
1134 TRACE("%p %lu %c\n", this, count, ch);
1136 if(MSVCP_basic_string_char_npos-this->size <= count)
1137 MSVCP__String_base_Xlen();
1139 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1140 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+this->size, count, ch);
1141 basic_string_char_eos(this, this->size+count);
1144 return this;
1147 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1148 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1149 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXD@Z */
1150 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXD@Z */
1151 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch, 8)
1152 basic_string_char* __thiscall MSVCP_basic_string_char_append_ch(
1153 basic_string_char *this, char ch)
1155 return MSVCP_basic_string_char_append_len_ch(this, 1, ch);
1158 /* ??$?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 */
1159 /* ??$?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 */
1160 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1161 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1162 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char *ret,
1163 const basic_string_char *left, const char *right)
1165 TRACE("%p %s\n", left, debugstr_a(right));
1167 MSVCP_basic_string_char_copy_ctor(ret, left);
1168 MSVCP_basic_string_char_append_cstr(ret, right);
1169 return ret;
1172 /* ??$?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 */
1173 /* ??$?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 */
1174 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1175 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1176 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char *ret,
1177 const char *left, const basic_string_char *right)
1179 TRACE("%s %p\n", debugstr_a(left), right);
1181 MSVCP_basic_string_char_ctor_cstr(ret, left);
1182 MSVCP_basic_string_char_append(ret, right);
1183 return ret;
1186 /* ??$?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 */
1187 /* ??$?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 */
1188 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1189 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1190 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate(basic_string_char *ret,
1191 const basic_string_char *left, const basic_string_char *right)
1193 TRACE("%p %p\n", left, right);
1195 MSVCP_basic_string_char_copy_ctor(ret, left);
1196 MSVCP_basic_string_char_append(ret, right);
1197 return ret;
1200 /* ??$?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 */
1201 /* ??$?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 */
1202 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1203 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1204 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char *ret,
1205 const basic_string_char *left, char right)
1207 TRACE("%p %c\n", left, right);
1209 MSVCP_basic_string_char_copy_ctor(ret, left);
1210 MSVCP_basic_string_char_append_ch(ret, right);
1211 return ret;
1214 /* ??$?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 */
1215 /* ??$?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 */
1216 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1217 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1218 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char *ret,
1219 char left, const basic_string_char *right)
1221 TRACE("%c %p\n", left, right);
1223 MSVCP_basic_string_char_ctor_cstr_len(ret, &left, 1);
1224 MSVCP_basic_string_char_append(ret, right);
1225 return ret;
1228 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
1229 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
1230 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20)
1231 int __thiscall MSVCP_basic_string_char_compare_substr_cstr_len(
1232 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1233 const char *str, MSVCP_size_t count)
1235 int ans;
1237 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_an(str, count), count);
1239 if(this->size < pos)
1240 MSVCP__String_base_Xran();
1242 if(num > this->size-pos)
1243 num = this->size-pos;
1245 ans = MSVCP_char_traits_char_compare(basic_string_char_const_ptr(this)+pos,
1246 str, num>count ? count : num);
1247 if(ans)
1248 return ans;
1250 if(num > count)
1251 ans = 1;
1252 else if(num < count)
1253 ans = -1;
1254 return ans;
1257 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
1258 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
1259 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr, 16)
1260 int __thiscall MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char *this,
1261 MSVCP_size_t pos, MSVCP_size_t num, const char *str)
1263 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1264 str, MSVCP_char_traits_char_length(str));
1267 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
1268 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
1269 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr, 8)
1270 int __thiscall MSVCP_basic_string_char_compare_cstr(
1271 const basic_string_char *this, const char *str)
1273 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1274 str, MSVCP_char_traits_char_length(str));
1277 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
1278 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
1279 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr, 24)
1280 int __thiscall MSVCP_basic_string_char_compare_substr_substr(
1281 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1282 const basic_string_char *compare, MSVCP_size_t off, MSVCP_size_t count)
1284 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
1286 if(compare->size < off)
1287 MSVCP__String_base_Xran();
1289 if(count > compare->size-off)
1290 count = compare->size-off;
1292 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1293 basic_string_char_const_ptr(compare)+off, count);
1296 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
1297 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
1298 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr, 16)
1299 int __thiscall MSVCP_basic_string_char_compare_substr(
1300 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1301 const basic_string_char *compare)
1303 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1304 basic_string_char_const_ptr(compare), compare->size);
1307 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
1308 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
1309 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare, 8)
1310 int __thiscall MSVCP_basic_string_char_compare(
1311 const basic_string_char *this, const basic_string_char *compare)
1313 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1314 basic_string_char_const_ptr(compare), compare->size);
1317 /* ??$?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 */
1318 /* ??$?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 */
1319 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1320 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1321 MSVCP_bool __cdecl MSVCP_basic_string_char_equal(
1322 const basic_string_char *left, const basic_string_char *right)
1324 return MSVCP_basic_string_char_compare(left, right) == 0;
1327 /* ??$?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 */
1328 /* ??$?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 */
1329 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1330 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1331 MSVCP_bool __cdecl MSVCP_basic_string_char_equal_str_cstr(
1332 const basic_string_char *left, const char *right)
1334 return MSVCP_basic_string_char_compare_cstr(left, right) == 0;
1337 /* ??$?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 */
1338 /* ??$?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 */
1339 /* ??8std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1340 MSVCP_bool __cdecl MSVCP_basic_string_char_equal_cstr_str(
1341 const char *left, const basic_string_char *right)
1343 return MSVCP_basic_string_char_compare_cstr(right, left) == 0;
1346 /* ??$?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 */
1347 /* ??$?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 */
1348 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1349 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1350 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal(
1351 const basic_string_char *left, const basic_string_char *right)
1353 return MSVCP_basic_string_char_compare(left, right) != 0;
1356 /* ??$?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 */
1357 /* ??$?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 */
1358 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1359 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1360 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal_str_cstr(
1361 const basic_string_char *left, const char *right)
1363 return MSVCP_basic_string_char_compare_cstr(left, right) != 0;
1366 /* ??$?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 */
1367 /* ??$?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 */
1368 /* ??9std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1369 /* ??9std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1370 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal_cstr_str(
1371 const char *left, const basic_string_char *right)
1373 return MSVCP_basic_string_char_compare_cstr(right, left) != 0;
1376 /* ??$?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 */
1377 /* ??$?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 */
1378 MSVCP_bool __cdecl MSVCP_basic_string_char_lower(
1379 const basic_string_char *left, const basic_string_char *right)
1381 return MSVCP_basic_string_char_compare(left, right) < 0;
1384 /* ??$?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 */
1385 /* ??$?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 */
1386 MSVCP_bool __cdecl MSVCP_basic_string_char_lower_bstr_cstr(
1387 const basic_string_char *left, const char *right)
1389 return MSVCP_basic_string_char_compare_cstr(left, right) < 0;
1392 /* ??$?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 */
1393 /* ??$?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 */
1394 MSVCP_bool __cdecl MSVCP_basic_string_char_lower_cstr_bstr(
1395 const char *left, const basic_string_char *right)
1397 return MSVCP_basic_string_char_compare_cstr(right, left) > 0;
1400 /* ??$?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 */
1401 /* ??$?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 */
1402 MSVCP_bool __cdecl MSVCP_basic_string_char_leq(
1403 const basic_string_char *left, const basic_string_char *right)
1405 return MSVCP_basic_string_char_compare(left, right) <= 0;
1408 /* ??$?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 */
1409 /* ??$?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 */
1410 MSVCP_bool __cdecl MSVCP_basic_string_char_leq_bstr_cstr(
1411 const basic_string_char *left, const char *right)
1413 return MSVCP_basic_string_char_compare_cstr(left, right) <= 0;
1416 /* ??$?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 */
1417 /* ??$?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 */
1418 MSVCP_bool __cdecl MSVCP_basic_string_char_leq_cstr_bstr(
1419 const char *left, const basic_string_char *right)
1421 return MSVCP_basic_string_char_compare_cstr(right, left) >= 0;
1424 /* ??$?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 */
1425 /* ??$?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 */
1426 MSVCP_bool __cdecl MSVCP_basic_string_char_greater(
1427 const basic_string_char *left, const basic_string_char *right)
1429 return MSVCP_basic_string_char_compare(left, right) > 0;
1432 /* ??$?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 */
1433 /* ??$?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 */
1434 MSVCP_bool __cdecl MSVCP_basic_string_char_greater_bstr_cstr(
1435 const basic_string_char *left, const char *right)
1437 return MSVCP_basic_string_char_compare_cstr(left, right) > 0;
1440 /* ??$?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 */
1441 /* ??$?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 */
1442 MSVCP_bool __cdecl MSVCP_basic_string_char_greater_cstr_bstr(
1443 const char *left, const basic_string_char *right)
1445 return MSVCP_basic_string_char_compare_cstr(right, left) < 0;
1448 /* ??$?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 */
1449 /* ??$?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 */
1450 MSVCP_bool __cdecl MSVCP_basic_string_char_geq(
1451 const basic_string_char *left, const basic_string_char *right)
1453 return MSVCP_basic_string_char_compare(left, right) >= 0;
1456 /* ??$?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 */
1457 /* ??$?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 */
1458 MSVCP_bool __cdecl MSVCP_basic_string_char_geq_bstr_cstr(
1459 const basic_string_char *left, const char *right)
1461 return MSVCP_basic_string_char_compare_cstr(left, right) >= 0;
1464 /* ??$?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 */
1465 /* ??$?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 */
1466 MSVCP_bool __cdecl MSVCP_basic_string_char_geq_cstr_bstr(
1467 const char *left, const basic_string_char *right)
1469 return MSVCP_basic_string_char_compare_cstr(right, left) <= 0;
1472 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1473 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1474 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr, 16)
1475 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_substr(
1476 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1478 const char *p, *end;
1480 TRACE("%p %s %lu %lu\n", this, debugstr_an(find, len), pos, len);
1482 if(len==0 && pos<=this->size)
1483 return pos;
1484 if(pos>=this->size || len>this->size)
1485 return MSVCP_basic_string_char_npos;
1487 end = basic_string_char_const_ptr(this)+this->size-len+1;
1488 for(p=basic_string_char_const_ptr(this)+pos; p<end; p++) {
1489 p = MSVCP_char_traits_char_find(p, end-p, find);
1490 if(!p)
1491 break;
1493 if(!MSVCP_char_traits_char_compare(p, find, len))
1494 return p-basic_string_char_const_ptr(this);
1497 return MSVCP_basic_string_char_npos;
1500 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1501 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1502 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off, 12)
1503 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_off(
1504 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1506 return MSVCP_basic_string_char_find_cstr_substr(this, find, pos,
1507 MSVCP_char_traits_char_length(find));
1510 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1511 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1512 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off, 12)
1513 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_off(
1514 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1516 return MSVCP_basic_string_char_find_cstr_substr(this,
1517 basic_string_char_const_ptr(find), off, find->size);
1520 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1521 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1522 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch, 12)
1523 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_ch(
1524 const basic_string_char *this, char ch, MSVCP_size_t pos)
1526 return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1);
1529 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1530 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1531 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr, 16)
1532 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_substr(
1533 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1535 const char *p, *end;
1537 TRACE("%p %s %lu %lu\n", this, debugstr_an(find, len), pos, len);
1539 if(len==0)
1540 return pos<this->size ? pos : this->size;
1542 if(len > this->size)
1543 return MSVCP_basic_string_char_npos;
1545 if(pos > this->size-len)
1546 pos = this->size-len;
1547 end = basic_string_char_const_ptr(this);
1548 for(p=end+pos; p>=end; p--) {
1549 if(*p==*find && !MSVCP_char_traits_char_compare(p, find, len))
1550 return p-basic_string_char_const_ptr(this);
1553 return MSVCP_basic_string_char_npos;
1556 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1557 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1558 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off, 12)
1559 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_off(
1560 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1562 return MSVCP_basic_string_char_rfind_cstr_substr(this, find, pos,
1563 MSVCP_char_traits_char_length(find));
1566 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1567 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1568 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off, 12)
1569 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_off(
1570 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1572 return MSVCP_basic_string_char_rfind_cstr_substr(this,
1573 basic_string_char_const_ptr(find), off, find->size);
1576 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1577 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1578 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch, 12)
1579 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_ch(
1580 const basic_string_char *this, char ch, MSVCP_size_t pos)
1582 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch, pos, 1);
1585 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1586 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1587 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr, 16)
1588 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr_substr(
1589 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1591 const char *p, *end;
1593 TRACE("%p %p %lu %lu\n", this, find, off, len);
1595 if(len>0 && off<this->size) {
1596 end = basic_string_char_const_ptr(this)+this->size;
1597 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1598 if(MSVCP_char_traits_char_find(find, len, p))
1599 return p-basic_string_char_const_ptr(this);
1602 return MSVCP_basic_string_char_npos;
1605 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1606 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1607 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of, 12)
1608 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of(
1609 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1611 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1612 basic_string_char_const_ptr(find), off, find->size);
1615 /* ??0?$_Yarn@D@std@@QAE@XZ */
1616 /* ??0?$_Yarn@D@std@@QEAA@XZ */
1617 DEFINE_THISCALL_WRAPPER(_Yarn_char_ctor, 4)
1618 _Yarn_char* __thiscall _Yarn_char_ctor(_Yarn_char *this)
1620 TRACE("(%p)\n", this);
1622 this->str = NULL;
1623 this->null_str = '\0';
1624 return this;
1627 /* ?_Tidy@?$_Yarn@D@std@@AAEXXZ */
1628 /* ?_Tidy@?$_Yarn@D@std@@AEAAXXZ */
1629 DEFINE_THISCALL_WRAPPER(_Yarn_char__Tidy, 4)
1630 void __thiscall _Yarn_char__Tidy(_Yarn_char *this)
1632 TRACE("(%p)\n", this);
1634 if(this->str)
1635 MSVCRT_operator_delete(this->str);
1636 this->str = NULL;
1639 /* ??4?$_Yarn@D@std@@QAEAAV01@PBD@Z */
1640 /* ??4?$_Yarn@D@std@@QEAAAEAV01@PEBD@Z */
1641 DEFINE_THISCALL_WRAPPER(_Yarn_char_op_assign_cstr, 8)
1642 _Yarn_char* __thiscall _Yarn_char_op_assign_cstr(_Yarn_char *this, const char *str)
1644 TRACE("(%p %p)\n", this, str);
1646 if(str != this->str) {
1647 _Yarn_char__Tidy(this);
1649 if(str) {
1650 MSVCP_size_t len = strlen(str);
1652 this->str = MSVCRT_operator_new((len+1)*sizeof(char));
1653 if(!this->str) {
1654 ERR("out of memory\n");
1655 return NULL;
1657 memcpy(this->str, str, (len+1)*sizeof(char));
1660 return this;
1663 /* ??0?$_Yarn@D@std@@QAE@PBD@Z */
1664 /* ??0?$_Yarn@D@std@@QEAA@PEBD@Z */
1665 DEFINE_THISCALL_WRAPPER(_Yarn_char_ctor_cstr, 8)
1666 _Yarn_char* __thiscall _Yarn_char_ctor_cstr(_Yarn_char *this, const char *str)
1668 TRACE("(%p %p)\n", this, str);
1670 _Yarn_char_ctor(this);
1671 return _Yarn_char_op_assign_cstr(this, str);
1674 /* ??4?$_Yarn@D@std@@QAEAAV01@ABV01@@Z */
1675 /* ??4?$_Yarn@D@std@@QEAAAEAV01@AEBV01@@Z */
1676 DEFINE_THISCALL_WRAPPER(_Yarn_char_op_assign, 8)
1677 _Yarn_char* __thiscall _Yarn_char_op_assign(_Yarn_char *this, const _Yarn_char *rhs)
1679 TRACE("(%p %p)\n", this, rhs);
1681 return _Yarn_char_op_assign_cstr(this, rhs->str);
1684 /* ??0?$_Yarn@D@std@@QAE@ABV01@@Z */
1685 /* ??0?$_Yarn@D@std@@QEAA@AEBV01@@Z */
1686 DEFINE_THISCALL_WRAPPER(_Yarn_char_copy_ctor, 8)
1687 _Yarn_char* __thiscall _Yarn_char_copy_ctor(_Yarn_char *this, const _Yarn_char *copy)
1689 TRACE("(%p %p)\n", this, copy);
1691 _Yarn_char_ctor(this);
1692 return _Yarn_char_op_assign(this, copy);
1695 /* ??1?$_Yarn@D@std@@QAE@XZ */
1696 /* ??1?$_Yarn@D@std@@QEAA@XZ */
1697 DEFINE_THISCALL_WRAPPER(_Yarn_char_dtor, 4)
1698 void __thiscall _Yarn_char_dtor(_Yarn_char *this)
1700 TRACE("(%p)\n", this);
1701 _Yarn_char__Tidy(this);
1704 /* ?_C_str@?$_Yarn@D@std@@QBEPBDXZ */
1705 /* ?_C_str@?$_Yarn@D@std@@QEBAPEBDXZ */
1706 /* ?c_str@?$_Yarn@D@std@@QBEPBDXZ */
1707 /* ?c_str@?$_Yarn@D@std@@QEBAPEBDXZ */
1708 DEFINE_THISCALL_WRAPPER(_Yarn_char_c_str, 4)
1709 const char* __thiscall _Yarn_char_c_str(const _Yarn_char *this)
1711 TRACE("(%p)\n", this);
1712 return this->str ? this->str : &this->null_str;
1715 /* ?_Empty@?$_Yarn@D@std@@QBE_NXZ */
1716 /* ?_Empty@?$_Yarn@D@std@@QEBA_NXZ */
1717 /* ?empty@?$_Yarn@D@std@@QBE_NXZ */
1718 /* ?empty@?$_Yarn@D@std@@QEBA_NXZ */
1719 DEFINE_THISCALL_WRAPPER(_Yarn_char_empty, 4)
1720 MSVCP_bool __thiscall _Yarn_char_empty(const _Yarn_char *this)
1722 TRACE("(%p)\n", this);
1723 return !this->str;
1726 /* ??0?$_Yarn@_W@std@@QAE@XZ */
1727 /* ??0?$_Yarn@_W@std@@QEAA@XZ */
1728 DEFINE_THISCALL_WRAPPER(_Yarn_wchar_ctor, 4)
1729 _Yarn_wchar* __thiscall _Yarn_wchar_ctor(_Yarn_wchar *this)
1731 TRACE("(%p)\n", this);
1733 this->str = NULL;
1734 this->null_str = '\0';
1735 return this;
1738 /* ?_Tidy@?$_Yarn@_W@std@@AAEXXZ */
1739 /* ?_Tidy@?$_Yarn@_W@std@@AEAAXXZ */
1740 DEFINE_THISCALL_WRAPPER(_Yarn_wchar__Tidy, 4)
1741 void __thiscall _Yarn_wchar__Tidy(_Yarn_wchar *this)
1743 TRACE("(%p)\n", this);
1745 if(this->str)
1746 MSVCRT_operator_delete(this->str);
1747 this->str = NULL;
1750 /* ??1?$_Yarn@_W@std@@QAE@XZ */
1751 /* ??1?$_Yarn@_W@std@@QEAA@XZ */
1752 DEFINE_THISCALL_WRAPPER(_Yarn_wchar_dtor, 4)
1753 void __thiscall _Yarn_wchar_dtor(_Yarn_wchar *this)
1755 TRACE("(%p)\n", this);
1756 _Yarn_wchar__Tidy(this);
1759 /* ??4?$_Yarn@_W@std@@QAEAAV01@PB_W@Z */
1760 /* ??4?$_Yarn@_W@std@@QEAAAEAV01@PEB_W@Z */
1761 DEFINE_THISCALL_WRAPPER(_Yarn_wchar_op_assign_cstr, 8)
1762 _Yarn_wchar* __thiscall _Yarn_wchar_op_assign_cstr(_Yarn_wchar *this, const wchar_t *str)
1764 TRACE("(%p %p)\n", this, str);
1766 if(str != this->str) {
1767 _Yarn_wchar__Tidy(this);
1769 if(str) {
1770 MSVCP_size_t len = wcslen(str);
1772 this->str = MSVCRT_operator_new((len+1)*sizeof(wchar_t));
1773 if(!this->str) {
1774 ERR("out of memory\n");
1775 return NULL;
1777 memcpy(this->str, str, (len+1)*sizeof(wchar_t));
1780 return this;
1783 /* ?_C_str@?$_Yarn@_W@std@@QBEPB_WXZ */
1784 /* ?_C_str@?$_Yarn@_W@std@@QEBAPEB_WXZ */
1785 DEFINE_THISCALL_WRAPPER(_Yarn_wchar__C_str, 4)
1786 const wchar_t* __thiscall _Yarn_wchar__C_str(const _Yarn_wchar *this)
1788 TRACE("(%p)\n", this);
1789 return this->str ? this->str : &this->null_str;
1792 /* ?_Empty@?$_Yarn@_W@std@@QBE_NXZ */
1793 /* ?_Empty@?$_Yarn@_W@std@@QEBA_NXZ */
1794 DEFINE_THISCALL_WRAPPER(_Yarn_wchar__Empty, 4)
1795 MSVCP_bool __thiscall _Yarn_wchar__Empty(const _Yarn_wchar *this)
1797 TRACE("(%p)\n", this);
1798 return !this->str;
1801 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1802 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1803 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr, 12)
1804 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr(
1805 const basic_string_char *this, const char *find, MSVCP_size_t off)
1807 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1808 this, find, off, MSVCP_char_traits_char_length(find));
1811 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1812 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1813 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch, 12)
1814 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_ch(
1815 const basic_string_char *this, char ch, MSVCP_size_t off)
1817 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch, off, 1);
1820 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1821 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1822 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr, 16)
1823 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1824 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1826 const char *p, *end;
1828 TRACE("%p %p %lu %lu\n", this, find, off, len);
1830 if(off<this->size) {
1831 end = basic_string_char_const_ptr(this)+this->size;
1832 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1833 if(!MSVCP_char_traits_char_find(find, len, p))
1834 return p-basic_string_char_const_ptr(this);
1837 return MSVCP_basic_string_char_npos;
1840 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1841 /* ?find_first_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_first_not_of, 12)
1843 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of(
1844 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1846 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1847 basic_string_char_const_ptr(find), off, find->size);
1850 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1851 /* ?find_first_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_first_not_of_cstr, 12)
1853 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr(
1854 const basic_string_char *this, const char *find, MSVCP_size_t off)
1856 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1857 this, find, off, MSVCP_char_traits_char_length(find));
1860 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1861 /* ?find_first_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_first_not_of_ch, 12)
1863 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_ch(
1864 const basic_string_char *this, char ch, MSVCP_size_t off)
1866 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch, off, 1);
1869 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1870 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1871 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr, 16)
1872 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr_substr(
1873 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1875 const char *p, *beg;
1877 TRACE("%p %p %lu %lu\n", this, find, off, len);
1879 if(len>0 && this->size>0) {
1880 if(off >= this->size)
1881 off = this->size-1;
1883 beg = basic_string_char_const_ptr(this);
1884 for(p=beg+off; p>=beg; p--)
1885 if(MSVCP_char_traits_char_find(find, len, p))
1886 return p-beg;
1889 return MSVCP_basic_string_char_npos;
1892 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1893 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1894 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of, 12)
1895 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of(
1896 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1898 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1899 basic_string_char_const_ptr(find), off, find->size);
1902 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1903 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1904 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr, 12)
1905 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr(
1906 const basic_string_char *this, const char *find, MSVCP_size_t off)
1908 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1909 this, find, off, MSVCP_char_traits_char_length(find));
1912 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1913 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1914 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch, 12)
1915 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_ch(
1916 const basic_string_char *this, char ch, MSVCP_size_t off)
1918 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch, off, 1);
1921 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1922 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1923 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr, 16)
1924 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1925 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1927 const char *p, *beg;
1929 TRACE("%p %p %lu %lu\n", this, find, off, len);
1931 if(this->size>0) {
1932 if(off >= this->size)
1933 off = this->size-1;
1935 beg = basic_string_char_const_ptr(this);
1936 for(p=beg+off; p>=beg; p--)
1937 if(!MSVCP_char_traits_char_find(find, len, p))
1938 return p-beg;
1941 return MSVCP_basic_string_char_npos;
1944 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1945 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1946 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of, 12)
1947 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of(
1948 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1950 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1951 basic_string_char_const_ptr(find), off, find->size);
1954 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1955 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1956 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr, 12)
1957 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr(
1958 const basic_string_char *this, const char *find, MSVCP_size_t off)
1960 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1961 this, find, off, MSVCP_char_traits_char_length(find));
1964 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1965 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1966 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch, 12)
1967 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_ch(
1968 const basic_string_char *this, char ch, MSVCP_size_t off)
1970 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch, off, 1);
1973 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1974 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1975 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at, 8)
1976 char* __thiscall MSVCP_basic_string_char_operator_at(
1977 basic_string_char *this, MSVCP_size_t pos)
1979 TRACE("%p %lu\n", this, pos);
1981 #if _MSVCP_VER >= 80
1982 if (this->size < pos)
1983 _invalid_parameter(NULL, NULL, NULL, 0, 0);
1984 #endif
1986 return basic_string_char_ptr(this)+pos;
1989 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1990 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1991 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_operator_at, 8)
1992 const char* __thiscall MSVCP_basic_string_char_const_operator_at(
1993 const basic_string_char *this, MSVCP_size_t pos)
1995 TRACE("%p %lu\n", this, pos);
1997 #if _MSVCP_VER >= 80
1998 if (this->size < pos)
1999 _invalid_parameter(NULL, NULL, NULL, 0, 0);
2000 #endif
2002 return basic_string_char_const_ptr(this)+pos;
2005 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z */
2006 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z */
2007 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at_noverify, 8)
2008 char* __thiscall MSVCP_basic_string_char_operator_at_noverify(
2009 basic_string_char *this, size_t_noverify pos)
2011 TRACE("%p %lu\n", this, pos.val);
2012 return basic_string_char_ptr(this)+pos.val;
2015 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z */
2016 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z */
2017 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_const_at_noverify, 8)
2018 const char* __thiscall MSVCP_basic_string_char_operator_const_at_noverify(
2019 const basic_string_char *this, size_t_noverify pos)
2021 TRACE("%p %lu\n", this, pos.val);
2022 return basic_string_char_const_ptr(this)+pos.val;
2025 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
2026 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
2027 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at, 8)
2028 char* __thiscall MSVCP_basic_string_char_at(
2029 basic_string_char *this, MSVCP_size_t pos)
2031 TRACE("%p %lu\n", this, pos);
2033 if(this->size <= pos)
2034 MSVCP__String_base_Xran();
2036 return basic_string_char_ptr(this)+pos;
2039 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
2040 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
2041 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_at, 8)
2042 const char* __thiscall MSVCP_basic_string_char_const_at(
2043 const basic_string_char *this, MSVCP_size_t pos)
2045 TRACE("%p %lu\n", this, pos);
2047 if(this->size <= pos)
2048 MSVCP__String_base_Xran();
2050 return basic_string_char_const_ptr(this)+pos;
2053 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
2054 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
2055 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len, 20)
2056 basic_string_char* __thiscall basic_string_char_replace_cstr_len(basic_string_char *this,
2057 MSVCP_size_t off, MSVCP_size_t len, const char *str, MSVCP_size_t str_len)
2059 MSVCP_size_t inside_pos = -1;
2060 char *ptr = basic_string_char_ptr(this);
2062 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
2064 if(this->size < off)
2065 MSVCP__String_base_Xran();
2067 if(len > this->size-off)
2068 len = this->size-off;
2070 if(MSVCP_basic_string_char_npos-str_len <= this->size-len)
2071 MSVCP__String_base_Xlen();
2073 if(basic_string_char_inside(this, str))
2074 inside_pos = str-ptr;
2076 if(len < str_len) {
2077 basic_string_char_grow(this, this->size-len+str_len, FALSE);
2078 ptr = basic_string_char_ptr(this);
2081 if(inside_pos == -1) {
2082 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
2083 memcpy(ptr+off, str, str_len*sizeof(char));
2084 } else if(len >= str_len) {
2085 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(char));
2086 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
2087 } else {
2088 MSVCP_size_t size;
2090 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
2092 if(inside_pos < off+len) {
2093 size = off+len-inside_pos;
2094 if(size > str_len)
2095 size = str_len;
2096 memmove(ptr+off, ptr+inside_pos, size*sizeof(char));
2097 } else {
2098 size = 0;
2101 if(str_len > size)
2102 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(char));
2105 basic_string_char_eos(this, this->size-len+str_len);
2106 return this;
2109 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
2110 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
2111 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr, 16)
2112 basic_string_char* __thiscall basic_string_char_replace_cstr(basic_string_char *this,
2113 MSVCP_size_t off, MSVCP_size_t len, const char *str)
2115 return basic_string_char_replace_cstr_len(this, off, len, str,
2116 MSVCP_char_traits_char_length(str));
2119 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
2120 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
2121 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr, 24)
2122 basic_string_char* __thiscall basic_string_char_replace_substr(basic_string_char *this, MSVCP_size_t off,
2123 MSVCP_size_t len, const basic_string_char *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
2125 if(str->size < str_off)
2126 MSVCP__String_base_Xran();
2128 if(str_len > str->size-str_off)
2129 str_len = str->size-str_off;
2131 return basic_string_char_replace_cstr_len(this, off, len,
2132 basic_string_char_const_ptr(str)+str_off, str_len);
2135 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
2136 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
2137 DEFINE_THISCALL_WRAPPER(basic_string_char_replace, 16)
2138 basic_string_char* __thiscall basic_string_char_replace(basic_string_char *this,
2139 MSVCP_size_t off, MSVCP_size_t len, const basic_string_char *str)
2141 return basic_string_char_replace_cstr_len(this, off, len,
2142 basic_string_char_const_ptr(str), str->size);
2145 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
2146 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
2147 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch, 20)
2148 basic_string_char* __thiscall basic_string_char_replace_ch(basic_string_char *this,
2149 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, char ch)
2151 char *ptr = basic_string_char_ptr(this);
2153 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
2155 if(this->size < off)
2156 MSVCP__String_base_Xran();
2158 if(len > this->size-off)
2159 len = this->size-off;
2161 if(MSVCP_basic_string_char_npos-count <= this->size-len)
2162 MSVCP__String_base_Xlen();
2164 if(len < count) {
2165 basic_string_char_grow(this, this->size-len+count, FALSE);
2166 ptr = basic_string_char_ptr(this);
2169 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(char));
2170 MSVCP_char_traits_char_assignn(ptr+off, count, ch);
2171 basic_string_char_eos(this, this->size-len+count);
2173 return this;
2176 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
2177 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
2178 DEFINE_THISCALL_WRAPPER(basic_string_char_insert, 12)
2179 basic_string_char* __thiscall basic_string_char_insert(basic_string_char *this,
2180 MSVCP_size_t off, const basic_string_char *str)
2182 return basic_string_char_replace(this, off, 0, str);
2185 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
2186 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
2187 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr, 20)
2188 basic_string_char* __thiscall basic_string_char_insert_substr(
2189 basic_string_char *this, MSVCP_size_t off, const basic_string_char *str,
2190 MSVCP_size_t str_off, MSVCP_size_t str_count)
2192 return basic_string_char_replace_substr(this, off, 0, str, str_off, str_count);
2195 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
2196 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
2197 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr, 12)
2198 basic_string_char* __thiscall basic_string_char_insert_cstr(
2199 basic_string_char *this, MSVCP_size_t off, const char *str)
2201 return basic_string_char_replace_cstr(this, off, 0, str);
2204 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
2205 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
2206 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len, 16)
2207 basic_string_char* __thiscall basic_string_char_insert_cstr_len(basic_string_char *this,
2208 MSVCP_size_t off, const char *str, MSVCP_size_t str_len)
2210 return basic_string_char_replace_cstr_len(this, off, 0, str, str_len);
2213 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
2214 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
2215 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn, 16)
2216 basic_string_char* __thiscall basic_string_char_insert_chn(basic_string_char *this,
2217 MSVCP_size_t off, MSVCP_size_t count, char ch)
2219 return basic_string_char_replace_ch(this, off, 0, count, ch);
2222 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
2223 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
2224 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12)
2225 void __thiscall MSVCP_basic_string_char_resize_ch(
2226 basic_string_char *this, MSVCP_size_t size, char ch)
2228 TRACE("%p %lu %c\n", this, size, ch);
2230 if(size <= this->size)
2231 MSVCP_basic_string_char_erase(this, size, this->size);
2232 else
2233 MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch);
2236 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
2237 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
2238 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize, 8)
2239 void __thiscall MSVCP_basic_string_char_resize(
2240 basic_string_char *this, MSVCP_size_t size)
2242 MSVCP_basic_string_char_resize_ch(this, size, '\0');
2245 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
2246 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
2247 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear, 4)
2248 void __thiscall MSVCP_basic_string_char_clear(basic_string_char *this)
2250 basic_string_char_eos(this, 0);
2253 /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
2254 /* basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short>> */
2255 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */
2256 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2_KB */
2257 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
2258 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
2259 const MSVCP_size_t MSVCP_basic_string_wchar_npos = -1;
2261 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ */
2262 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAPEA_WXZ */
2263 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEPAGXZ */
2264 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAPEAGXZ */
2265 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ptr, 4)
2266 wchar_t* __thiscall basic_string_wchar_ptr(basic_string_wchar *this)
2268 if(this->res < BUF_SIZE_WCHAR)
2269 return this->data.buf;
2270 return this->data.ptr;
2273 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IBEPB_WXZ */
2274 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEBAPEB_WXZ */
2275 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IBEPBGXZ */
2276 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEBAPEBGXZ */
2277 DEFINE_THISCALL_WRAPPER(basic_string_wchar_const_ptr, 4)
2278 const wchar_t* __thiscall basic_string_wchar_const_ptr(const basic_string_wchar *this)
2280 if(this->res < BUF_SIZE_WCHAR)
2281 return this->data.buf;
2282 return this->data.ptr;
2285 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXI@Z */
2286 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K@Z */
2287 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXI@Z */
2288 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K@Z */
2289 DEFINE_THISCALL_WRAPPER(basic_string_wchar_eos, 8)
2290 void __thiscall basic_string_wchar_eos(basic_string_wchar *this, MSVCP_size_t len)
2292 static const wchar_t nullbyte_w = '\0';
2294 this->size = len;
2295 MSVCP_char_traits_wchar_assign(basic_string_wchar_ptr(this)+len, &nullbyte_w);
2298 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NPB_W@Z */
2299 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_NPEB_W@Z */
2300 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z */
2301 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_NPEBG@Z */
2302 DEFINE_THISCALL_WRAPPER(basic_string_wchar_inside, 8)
2303 MSVCP_bool __thiscall basic_string_wchar_inside(
2304 basic_string_wchar *this, const wchar_t *ptr)
2306 wchar_t *cstr = basic_string_wchar_ptr(this);
2308 return ptr>=cstr && ptr<cstr+this->size;
2311 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEX_NI@Z */
2312 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_N_K@Z */
2313 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEX_NI@Z */
2314 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_N_K@Z */
2315 DEFINE_THISCALL_WRAPPER(basic_string_wchar_tidy, 12)
2316 void __thiscall basic_string_wchar_tidy(basic_string_wchar *this,
2317 MSVCP_bool built, MSVCP_size_t new_size)
2319 if(built && BUF_SIZE_WCHAR<=this->res) {
2320 wchar_t *ptr = this->data.ptr;
2322 if(new_size > 0)
2323 MSVCP_char_traits_wchar__Copy_s(this->data.buf, BUF_SIZE_WCHAR, ptr, new_size);
2324 MSVCP_allocator_wchar_deallocate(STRING_ALLOCATOR(this), ptr, this->res+1);
2327 this->res = BUF_SIZE_WCHAR-1;
2328 basic_string_wchar_eos(this, new_size);
2331 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NI_N@Z */
2332 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_N_K_N@Z */
2333 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NI_N@Z */
2334 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_N_K_N@Z */
2335 DEFINE_THISCALL_WRAPPER(basic_string_wchar_grow, 12)
2336 MSVCP_bool __thiscall basic_string_wchar_grow(
2337 basic_string_wchar *this, MSVCP_size_t new_size, MSVCP_bool trim)
2339 if(this->res < new_size) {
2340 MSVCP_size_t new_res = new_size, len = this->size;
2341 wchar_t *ptr;
2343 new_res |= 0xf;
2345 if(new_res/3 < this->res/2)
2346 new_res = this->res + this->res/2;
2348 ptr = MSVCP_allocator_wchar_allocate(STRING_ALLOCATOR(this), new_res+1);
2349 if(!ptr)
2350 ptr = MSVCP_allocator_wchar_allocate(STRING_ALLOCATOR(this), new_size+1);
2351 else
2352 new_size = new_res;
2353 if(!ptr) {
2354 ERR("Out of memory\n");
2355 basic_string_wchar_tidy(this, TRUE, 0);
2356 return FALSE;
2359 MSVCP_char_traits_wchar__Copy_s(ptr, new_size,
2360 basic_string_wchar_ptr(this), this->size);
2361 basic_string_wchar_tidy(this, TRUE, 0);
2362 this->data.ptr = ptr;
2363 this->res = new_size;
2364 basic_string_wchar_eos(this, len);
2365 } else if(trim && new_size < BUF_SIZE_WCHAR)
2366 basic_string_wchar_tidy(this, TRUE,
2367 new_size<this->size ? new_size : this->size);
2368 else if(new_size == 0)
2369 basic_string_wchar_eos(this, 0);
2371 return (new_size>0);
2374 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII@Z */
2375 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0@Z */
2376 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXII@Z */
2377 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0@Z */
2378 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy, 12)
2379 void __thiscall basic_string_wchar__Copy(basic_string_wchar *this,
2380 MSVCP_size_t new_size, MSVCP_size_t copy_len)
2382 TRACE("%p %lu %lu\n", this, new_size, copy_len);
2384 if(!basic_string_wchar_grow(this, new_size, FALSE))
2385 return;
2386 basic_string_wchar_eos(this, copy_len);
2389 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ */
2390 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ */
2391 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
2392 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
2393 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator, 8)
2394 allocator* __thiscall basic_string_wchar_get_allocator(const basic_string_wchar *this, allocator *ret)
2396 TRACE("%p\n", this);
2397 return ret;
2400 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z */
2401 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z */
2402 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
2403 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
2404 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase, 12)
2405 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_erase(
2406 basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t len)
2408 TRACE("%p %lu %lu\n", this, pos, len);
2410 if(pos > this->size)
2411 MSVCP__String_base_Xran();
2413 if(len > this->size-pos)
2414 len = this->size-pos;
2416 if(len) {
2417 MSVCP_char_traits_wchar__Move_s(basic_string_wchar_ptr(this)+pos,
2418 this->res-pos, basic_string_wchar_ptr(this)+pos+len,
2419 this->size-pos-len);
2420 basic_string_wchar_eos(this, this->size-len);
2423 return this;
2426 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2427 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2428 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2429 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2430 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr, 16)
2431 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_substr(
2432 basic_string_wchar *this, const basic_string_wchar *assign,
2433 MSVCP_size_t pos, MSVCP_size_t len)
2435 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2437 if(assign->size < pos)
2438 MSVCP__String_base_Xran();
2440 if(len > assign->size-pos)
2441 len = assign->size-pos;
2443 if(this == assign) {
2444 MSVCP_basic_string_wchar_erase(this, pos+len, MSVCP_basic_string_wchar_npos);
2445 MSVCP_basic_string_wchar_erase(this, 0, pos);
2446 } else if(basic_string_wchar_grow(this, len, FALSE)) {
2447 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2448 this->res, basic_string_wchar_const_ptr(assign)+pos, len);
2449 basic_string_wchar_eos(this, len);
2452 return this;
2455 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2456 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2457 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2458 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2459 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2460 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2461 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2462 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2463 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign, 8)
2464 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign(
2465 basic_string_wchar *this, const basic_string_wchar *assign)
2467 return MSVCP_basic_string_wchar_assign_substr(this, assign,
2468 0, MSVCP_basic_string_wchar_npos);
2471 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2472 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2473 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2474 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2475 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len, 12)
2476 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr_len(
2477 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2479 TRACE("%p %s %lu\n", this, debugstr_wn(str, len), len);
2481 if(basic_string_wchar_inside(this, str))
2482 return MSVCP_basic_string_wchar_assign_substr(this, this,
2483 str-basic_string_wchar_ptr(this), len);
2484 else if(basic_string_wchar_grow(this, len, FALSE)) {
2485 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2486 this->res, str, len);
2487 basic_string_wchar_eos(this, len);
2490 return this;
2493 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2494 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2495 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2496 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2497 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch, 8)
2498 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ch(
2499 basic_string_wchar *this, wchar_t ch)
2501 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch, 1);
2504 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2505 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2506 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2507 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2508 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2509 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2510 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2511 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2512 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr, 8)
2513 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr(
2514 basic_string_wchar *this, const wchar_t *str)
2516 return MSVCP_basic_string_wchar_assign_cstr_len(this, str,
2517 MSVCP_char_traits_wchar_length(str));
2520 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2521 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2522 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2523 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2524 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn, 12)
2525 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assignn(
2526 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2528 TRACE("%p %ld %c\n", this, count, ch);
2530 basic_string_wchar_grow(this, count, FALSE);
2531 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this), count, ch);
2532 basic_string_wchar_eos(this, count);
2533 return this;
2536 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2537 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2538 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2539 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2540 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr, 12)
2541 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ptr_ptr(
2542 basic_string_wchar *this, const wchar_t *first, const wchar_t *last)
2544 return MSVCP_basic_string_wchar_assign_cstr_len(this, first, last-first);
2547 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII_W@Z */
2548 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0_W@Z */
2549 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXIIG@Z */
2550 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0G@Z */
2551 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Chassign, 16)
2552 void __thiscall MSVCP_basic_string_wchar_Chassign(basic_string_wchar *this,
2553 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
2555 TRACE("%p %lu %lu %c\n", this, off, count, ch);
2556 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+off, count, ch);
2559 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WIII@Z */
2560 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K11@Z */
2561 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGIII@Z */
2562 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K11@Z */
2563 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Copy_s, 20)
2564 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_Copy_s(const basic_string_wchar *this,
2565 wchar_t *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
2567 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
2569 if(this->size < off)
2570 MSVCP__String_base_Xran();
2572 if(count > this->size-off)
2573 count = this->size-off;
2575 MSVCP_char_traits_wchar__Copy_s(dest, size,
2576 basic_string_wchar_const_ptr(this)+off, count);
2577 return count;
2580 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WII@Z */
2581 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K1@Z */
2582 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
2583 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
2584 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy, 16)
2585 MSVCP_size_t __thiscall basic_string_wchar_copy(const basic_string_wchar *this,
2586 wchar_t *dest, MSVCP_size_t count, MSVCP_size_t off)
2588 return MSVCP_basic_string_wchar_Copy_s(this, dest, count, count, off);
2591 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2592 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2593 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2594 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2595 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2596 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2597 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2598 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2599 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str, 4)
2600 const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar *this)
2602 TRACE("%p\n", this);
2603 return basic_string_wchar_const_ptr(this);
2606 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2607 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2608 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2609 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2610 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity, 4)
2611 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_capacity(basic_string_wchar *this)
2613 TRACE("%p\n", this);
2614 return this->res;
2617 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
2618 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
2619 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
2620 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
2621 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve, 8)
2622 void __thiscall MSVCP_basic_string_wchar_reserve(basic_string_wchar *this, MSVCP_size_t size)
2624 MSVCP_size_t len;
2626 TRACE("%p %ld\n", this, size);
2628 len = this->size;
2629 if(len > size)
2630 return;
2632 if(basic_string_wchar_grow(this, size, TRUE))
2633 basic_string_wchar_eos(this, len);
2636 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2637 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2638 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2639 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2640 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor, 4)
2641 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor(basic_string_wchar *this)
2643 TRACE("%p\n", this);
2645 basic_string_wchar_tidy(this, FALSE, 0);
2646 return this;
2649 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z */
2650 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z */
2651 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2652 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2653 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor, 8)
2654 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_copy_ctor(
2655 basic_string_wchar *this, const basic_string_wchar *copy)
2657 TRACE("%p %p\n", this, copy);
2659 basic_string_wchar_tidy(this, FALSE, 0);
2660 MSVCP_basic_string_wchar_assign(this, copy);
2661 return this;
2664 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2665 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2666 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2667 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2668 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr, 8)
2669 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(
2670 basic_string_wchar *this, const wchar_t *str)
2672 TRACE("%p %s\n", this, debugstr_w(str));
2674 basic_string_wchar_tidy(this, FALSE, 0);
2675 MSVCP_basic_string_wchar_assign_cstr(this, str);
2676 return this;
2679 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z */
2680 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z */
2681 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2682 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2683 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc, 12)
2684 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_alloc(
2685 basic_string_wchar *this, const wchar_t *str, const void *alloc)
2687 return MSVCP_basic_string_wchar_ctor_cstr(this, str);
2690 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2691 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2692 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2693 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2694 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len, 12)
2695 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len(
2696 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2698 TRACE("%p %s %ld\n", this, debugstr_wn(str, len), len);
2700 basic_string_wchar_tidy(this, FALSE, 0);
2701 MSVCP_basic_string_wchar_assign_cstr_len(this, str, len);
2702 return this;
2705 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z */
2706 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z */
2707 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2708 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2709 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc, 16)
2710 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2711 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len, const void *alloc)
2713 return MSVCP_basic_string_wchar_ctor_cstr_len(this, str, len);
2716 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z */
2717 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z */
2718 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@II@Z */
2719 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1@Z */
2720 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr, 16)
2721 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr(
2722 basic_string_wchar *this, const basic_string_wchar *assign,
2723 MSVCP_size_t pos, MSVCP_size_t len)
2725 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2727 basic_string_wchar_tidy(this, FALSE, 0);
2728 MSVCP_basic_string_wchar_assign_substr(this, assign, pos, len);
2729 return this;
2732 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z */
2733 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z */
2734 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2735 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2736 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc, 20)
2737 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr_alloc(
2738 basic_string_wchar *this, const basic_string_wchar *assign,
2739 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
2741 return MSVCP_basic_string_wchar_ctor_substr(this, assign, pos, len);
2744 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z */
2745 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z */
2746 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2747 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2748 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc, 8)
2749 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_alloc(
2750 basic_string_wchar *this, const void *alloc)
2752 TRACE("%p %p\n", this, alloc);
2754 basic_string_wchar_tidy(this, FALSE, 0);
2755 return this;
2758 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z */
2759 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z */
2760 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IG@Z */
2761 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KG@Z */
2762 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch, 12)
2763 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch(basic_string_wchar *this,
2764 MSVCP_size_t count, wchar_t ch)
2766 TRACE("%p %ld %c\n", this, count, ch);
2768 basic_string_wchar_tidy(this, FALSE, 0);
2769 MSVCP_basic_string_wchar_assignn(this, count, ch);
2770 return this;
2773 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z */
2774 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z */
2775 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2776 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2777 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc, 16)
2778 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar *this,
2779 MSVCP_size_t count, wchar_t ch, const void *alloc)
2781 return MSVCP_basic_string_wchar_ctor_ch(this, count, ch);
2784 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z */
2785 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z */
2786 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0@Z */
2787 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0@Z */
2788 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ptr_ptr, 12)
2789 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ptr_ptr(basic_string_wchar *this,
2790 const wchar_t *first, const wchar_t *last)
2792 return MSVCP_basic_string_wchar_ctor_cstr_len(this, first, last-first);
2795 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2796 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2797 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2798 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2799 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)
2800 void* __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
2802 TRACE("%p\n", this);
2803 basic_string_wchar_tidy(this, TRUE, 0);
2804 return NULL; /* FEAR 1 installer expects EAX set to 0 */
2807 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2808 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2809 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2810 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2811 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2812 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2813 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2814 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2815 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length, 4)
2816 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_length(const basic_string_wchar *this)
2818 TRACE("%p\n", this);
2819 return this->size;
2822 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2823 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2824 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2825 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2826 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size, 4)
2827 MSVCP_size_t __thiscall basic_string_wchar_max_size(const basic_string_wchar *this)
2829 TRACE("%p\n", this);
2830 return MSVCP_allocator_wchar_max_size(STRING_ALLOCATOR(this))-1;
2833 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE_NXZ */
2834 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_NXZ */
2835 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
2836 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
2837 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty, 4)
2838 MSVCP_bool __thiscall MSVCP_basic_string_wchar_empty(basic_string_wchar *this)
2840 TRACE("%p\n", this);
2841 return this->size == 0;
2844 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXAAV12@@Z */
2845 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEAV12@@Z */
2846 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
2847 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
2848 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_swap, 8)
2849 void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_string_wchar *str)
2851 if(this != str) {
2852 char tmp[sizeof(this->data)];
2853 const MSVCP_size_t size = this->size;
2854 const MSVCP_size_t res = this->res;
2856 memcpy(tmp, this->data.buf, sizeof(this->data));
2857 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
2858 memcpy(str->data.buf, tmp, sizeof(this->data));
2860 this->size = str->size;
2861 this->res = str->res;
2863 str->size = size;
2864 str->res = res;
2868 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV12@II@Z */
2869 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV12@_K0@Z */
2870 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
2871 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
2872 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_substr, 16)
2873 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_substr(basic_string_wchar *this,
2874 basic_string_wchar *ret, MSVCP_size_t off, MSVCP_size_t len)
2876 TRACE("%p %lu %lu\n", this, off, len);
2878 MSVCP_basic_string_wchar_ctor_substr(ret, this, off, len);
2879 return ret;
2882 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2883 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2884 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2885 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2886 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr, 16)
2887 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_substr(basic_string_wchar *this,
2888 const basic_string_wchar *append, MSVCP_size_t offset, MSVCP_size_t count)
2890 TRACE("%p %p %lu %lu\n", this, append, offset, count);
2892 if(append->size < offset)
2893 MSVCP__String_base_Xran();
2895 if(count > append->size-offset)
2896 count = append->size-offset;
2898 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2899 MSVCP__String_base_Xlen();
2901 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2902 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2903 this->res-this->size, basic_string_wchar_const_ptr(append)+offset, count);
2904 basic_string_wchar_eos(this, this->size+count);
2907 return this;
2910 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2911 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2912 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2913 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2914 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2915 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2916 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2917 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2918 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append, 8)
2919 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append(
2920 basic_string_wchar *this, const basic_string_wchar *append)
2922 return MSVCP_basic_string_wchar_append_substr(this, append,
2923 0, MSVCP_basic_string_wchar_npos);
2926 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2927 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2928 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2929 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2930 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len, 12)
2931 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr_len(
2932 basic_string_wchar *this, const wchar_t *append, MSVCP_size_t count)
2934 TRACE("%p %s %lu\n", this, debugstr_wn(append, count), count);
2936 if(basic_string_wchar_inside(this, append))
2937 return MSVCP_basic_string_wchar_append_substr(this, this,
2938 append-basic_string_wchar_ptr(this), count);
2940 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2941 MSVCP__String_base_Xlen();
2943 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2944 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2945 this->res-this->size, append, count);
2946 basic_string_wchar_eos(this, this->size+count);
2949 return this;
2952 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2953 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2954 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2955 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2956 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2957 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2958 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2959 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2960 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr, 8)
2961 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr(
2962 basic_string_wchar *this, const wchar_t *append)
2964 return MSVCP_basic_string_wchar_append_cstr_len(this, append,
2965 MSVCP_char_traits_wchar_length(append));
2968 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2969 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2970 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2971 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2972 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end, 12)
2973 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_beg_end(
2974 basic_string_wchar *this, const wchar_t *beg, const wchar_t *end)
2976 return MSVCP_basic_string_wchar_append_cstr_len(this, beg, end-beg);
2979 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2980 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2981 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2982 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2983 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch, 12)
2984 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_len_ch(
2985 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2987 TRACE("%p %lu %c\n", this, count, ch);
2989 if(MSVCP_basic_string_wchar_npos-this->size <= count)
2990 MSVCP__String_base_Xlen();
2992 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2993 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+this->size, count, ch);
2994 basic_string_wchar_eos(this, this->size+count);
2997 return this;
3000 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
3001 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
3002 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEX_W@Z */
3003 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_W@Z */
3004 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
3005 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
3006 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXG@Z */
3007 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXG@Z */
3008 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch, 8)
3009 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(
3010 basic_string_wchar *this, wchar_t ch)
3012 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch);
3015 /* ??$?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 */
3016 /* ??$?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 */
3017 /* ??$?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 */
3018 /* ??$?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 */
3019 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
3020 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
3021 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z */
3022 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar *ret,
3023 const basic_string_wchar *left, const wchar_t *right)
3025 TRACE("%p %s\n", left, debugstr_w(right));
3027 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3028 MSVCP_basic_string_wchar_append_cstr(ret, right);
3029 return ret;
3032 /* ??$?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 */
3033 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PEB_WAEBV10@@Z */
3034 /* ??$?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 */
3035 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
3036 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
3037 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
3038 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z */
3039 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar *ret,
3040 const wchar_t *left, const basic_string_wchar *right)
3042 TRACE("%s %p\n", debugstr_w(left), right);
3044 MSVCP_basic_string_wchar_ctor_cstr(ret, left);
3045 MSVCP_basic_string_wchar_append(ret, right);
3046 return ret;
3049 /* ??$?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 */
3050 /* ??$?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 */
3051 /* ??$?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 */
3052 /* ??$?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 */
3053 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
3054 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
3055 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@0@Z */
3056 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate(basic_string_wchar *ret,
3057 const basic_string_wchar *left, const basic_string_wchar *right)
3059 TRACE("%p %p\n", left, right);
3061 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3062 MSVCP_basic_string_wchar_append(ret, right);
3063 return ret;
3066 /* ??$?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 */
3067 /* ??$?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 */
3068 /* ??$?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 */
3069 /* ??$?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 */
3070 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
3071 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
3072 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z */
3073 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_ch(
3074 basic_string_wchar *ret, const basic_string_wchar *left, wchar_t right)
3076 TRACE("%p %c\n", left, right);
3078 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3079 MSVCP_basic_string_wchar_append_ch(ret, right);
3080 return ret;
3083 /* ??$?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 */
3084 /* ??$?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 */
3085 /* ??$?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 */
3086 /* ??$?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 */
3087 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
3088 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
3089 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z */
3090 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_ch_bstr(
3091 basic_string_wchar* ret, wchar_t left, const basic_string_wchar *right)
3093 TRACE("%c %p\n", left, right);
3095 MSVCP_basic_string_wchar_ctor_cstr_len(ret, &left, 1);
3096 MSVCP_basic_string_wchar_append(ret, right);
3097 return ret;
3100 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_WI@Z */
3101 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W0@Z */
3102 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
3103 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
3104 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20)
3105 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr_len(
3106 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3107 const wchar_t *str, MSVCP_size_t count)
3109 int ans;
3111 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_wn(str, count), count);
3113 if(this->size < pos)
3114 MSVCP__String_base_Xran();
3116 if(num > this->size-pos)
3117 num = this->size-pos;
3119 ans = MSVCP_char_traits_wchar_compare(basic_string_wchar_const_ptr(this)+pos,
3120 str, num>count ? count : num);
3121 if(ans)
3122 return ans;
3124 if(num > count)
3125 ans = 1;
3126 else if(num < count)
3127 ans = -1;
3128 return ans;
3131 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_W@Z */
3132 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W@Z */
3133 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
3134 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
3135 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr, 16)
3136 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar *this,
3137 MSVCP_size_t pos, MSVCP_size_t num, const wchar_t *str)
3139 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3140 str, MSVCP_char_traits_wchar_length(str));
3143 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHPB_W@Z */
3144 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHPEB_W@Z */
3145 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
3146 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
3147 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr, 8)
3148 int __thiscall MSVCP_basic_string_wchar_compare_cstr(
3149 const basic_string_wchar *this, const wchar_t *str)
3151 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3152 str, MSVCP_char_traits_wchar_length(str));
3155 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@II@Z */
3156 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@00@Z */
3157 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
3158 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
3159 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr, 24)
3160 int __thiscall MSVCP_basic_string_wchar_compare_substr_substr(
3161 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3162 const basic_string_wchar *compare, MSVCP_size_t off, MSVCP_size_t count)
3164 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
3166 if(compare->size < off)
3167 MSVCP__String_base_Xran();
3169 if(count > compare->size-off)
3170 count = compare->size-off;
3172 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3173 basic_string_wchar_const_ptr(compare)+off, count);
3176 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@@Z */
3177 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@@Z */
3178 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
3179 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
3180 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr, 16)
3181 int __thiscall MSVCP_basic_string_wchar_compare_substr(
3182 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3183 const basic_string_wchar *compare)
3185 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3186 basic_string_wchar_const_ptr(compare), compare->size);
3189 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV12@@Z */
3190 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHAEBV12@@Z */
3191 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
3192 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
3193 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare, 8)
3194 int __thiscall MSVCP_basic_string_wchar_compare(
3195 const basic_string_wchar *this, const basic_string_wchar *compare)
3197 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3198 basic_string_wchar_const_ptr(compare), compare->size);
3201 /* ??$?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 */
3202 /* ??$?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 */
3203 /* ??$?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 */
3204 /* ??$?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 */
3205 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3206 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3207 /* ??8std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3208 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal(
3209 const basic_string_wchar *left, const basic_string_wchar *right)
3211 return MSVCP_basic_string_wchar_compare(left, right) == 0;
3214 /* ??$?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 */
3215 /* ??$?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 */
3216 /* ??$?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 */
3217 /* ??$?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 */
3218 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
3219 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
3220 /* ??8std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3221 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal_str_cstr(
3222 const basic_string_wchar *left, const wchar_t *right)
3224 return MSVCP_basic_string_wchar_compare_cstr(left, right) == 0;
3227 /* ??$?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 */
3228 /* ??$?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 */
3229 /* ??$?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 */
3230 /* ??$?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 */
3231 /* ??8std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3232 /* ??8std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3233 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal_cstr_str(
3234 const wchar_t *left, const basic_string_wchar *right)
3236 return MSVCP_basic_string_wchar_compare_cstr(right, left) == 0;
3239 /* ??$?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 */
3240 /* ??$?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 */
3241 /* ??$?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 */
3242 /* ??$?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 */
3243 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3244 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3245 /* ??9std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3246 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal(
3247 const basic_string_wchar *left, const basic_string_wchar *right)
3249 return MSVCP_basic_string_wchar_compare(left, right) != 0;
3252 /* ??$?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 */
3253 /* ??$?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 */
3254 /* ??$?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 */
3255 /* ??$?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 */
3256 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
3257 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
3258 /* ??9std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3259 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal_str_cstr(
3260 const basic_string_wchar *left, const wchar_t *right)
3262 return MSVCP_basic_string_wchar_compare_cstr(left, right) != 0;
3265 /* ??$?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 */
3266 /* ??$?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 */
3267 /* ??$?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 */
3268 /* ??$?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 */
3269 /* ??9std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3270 /* ??9std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3271 /* ??9std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3272 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal_cstr_str(
3273 const wchar_t *left, const basic_string_wchar *right)
3275 return MSVCP_basic_string_wchar_compare_cstr(right, left) != 0;
3278 /* ??$?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 */
3279 /* ??$?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 */
3280 /* ??$?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 */
3281 /* ??$?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 */
3282 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower(
3283 const basic_string_wchar *left, const basic_string_wchar *right)
3285 return MSVCP_basic_string_wchar_compare(left, right) < 0;
3288 /* ??$?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 */
3289 /* ??$?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 */
3290 /* ??$?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 */
3291 /* ??$?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 */
3292 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower_bstr_cstr(
3293 const basic_string_wchar *left, const wchar_t *right)
3295 return MSVCP_basic_string_wchar_compare_cstr(left, right) < 0;
3298 /* ??$?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 */
3299 /* ??$?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 */
3300 /* ??$?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 */
3301 /* ??$?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 */
3302 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower_cstr_bstr(
3303 const wchar_t *left, const basic_string_wchar *right)
3305 return MSVCP_basic_string_wchar_compare_cstr(right, left) > 0;
3308 /* ??$?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 */
3309 /* ??$?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 */
3310 /* ??$?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 */
3311 /* ??$?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 */
3312 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq(
3313 const basic_string_wchar *left, const basic_string_wchar *right)
3315 return MSVCP_basic_string_wchar_compare(left, right) <= 0;
3318 /* ??$?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 */
3319 /* ??$?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 */
3320 /* ??$?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 */
3321 /* ??$?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 */
3322 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_bstr_cstr(
3323 const basic_string_wchar *left, const wchar_t *right)
3325 return MSVCP_basic_string_wchar_compare_cstr(left, right) <= 0;
3328 /* ??$?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 */
3329 /* ??$?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 */
3330 /* ??$?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 */
3331 /* ??$?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 */
3332 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_cstr_bstr(
3333 const wchar_t *left, const basic_string_wchar *right)
3335 return MSVCP_basic_string_wchar_compare_cstr(right, left) >= 0;
3338 /* ??$?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 */
3339 /* ??$?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 */
3340 /* ??$?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 */
3341 /* ??$?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 */
3342 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater(
3343 const basic_string_wchar *left, const basic_string_wchar *right)
3345 return MSVCP_basic_string_wchar_compare(left, right) > 0;
3348 /* ??$?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 */
3349 /* ??$?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 */
3350 /* ??$?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 */
3351 /* ??$?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 */
3352 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_bstr_cstr(
3353 const basic_string_wchar *left, const wchar_t *right)
3355 return MSVCP_basic_string_wchar_compare_cstr(left, right) > 0;
3358 /* ??$?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 */
3359 /* ??$?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 */
3360 /* ??$?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 */
3361 /* ??$?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 */
3362 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_cstr_bstr(
3363 const wchar_t *left, const basic_string_wchar *right)
3365 return MSVCP_basic_string_wchar_compare_cstr(right, left) < 0;
3368 /* ??$?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 */
3369 /* ??$?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 */
3370 /* ??$?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 */
3371 /* ??$?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 */
3372 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq(
3373 const basic_string_wchar *left, const basic_string_wchar *right)
3375 return MSVCP_basic_string_wchar_compare(left, right) >= 0;
3378 /* ??$?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 */
3379 /* ??$?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 */
3380 /* ??$?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 */
3381 /* ??$?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 */
3382 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_bstr_cstr(
3383 const basic_string_wchar *left, const wchar_t *right)
3385 return MSVCP_basic_string_wchar_compare_cstr(left, right) >= 0;
3388 /* ??$?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 */
3389 /* ??$?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 */
3390 /* ??$?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 */
3391 /* ??$?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 */
3392 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_cstr_bstr(
3393 const wchar_t *left, const basic_string_wchar *right)
3395 return MSVCP_basic_string_wchar_compare_cstr(right, left) <= 0;
3398 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3399 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3400 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3401 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3402 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr, 16)
3403 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_substr(
3404 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
3406 const wchar_t *p, *end;
3408 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find, len), pos, len);
3410 if(len==0 && pos<=this->size)
3411 return pos;
3412 if(pos>=this->size || len>this->size)
3413 return MSVCP_basic_string_wchar_npos;
3415 end = basic_string_wchar_const_ptr(this)+this->size-len+1;
3416 for(p=basic_string_wchar_const_ptr(this)+pos; p<end; p++) {
3417 p = MSVCP_char_traits_wchar_find(p, end-p, find);
3418 if(!p)
3419 break;
3421 if(!MSVCP_char_traits_wchar_compare(p, find, len))
3422 return p-basic_string_wchar_const_ptr(this);
3425 return MSVCP_basic_string_wchar_npos;
3428 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3429 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3430 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3431 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3432 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off, 12)
3433 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_off(
3434 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
3436 return MSVCP_basic_string_wchar_find_cstr_substr(this, find, pos,
3437 MSVCP_char_traits_wchar_length(find));
3440 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3441 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3442 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3443 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3444 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off, 12)
3445 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_off(
3446 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3448 return MSVCP_basic_string_wchar_find_cstr_substr(this,
3449 basic_string_wchar_const_ptr(find), off, find->size);
3452 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3453 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3454 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3455 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3456 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch, 12)
3457 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_ch(
3458 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
3460 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1);
3463 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3464 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3465 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3466 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3467 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr, 16)
3468 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_substr(
3469 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
3471 const wchar_t *p, *end;
3473 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find, len), pos, len);
3475 if(len==0)
3476 return pos<this->size ? pos : this->size;
3478 if(len > this->size)
3479 return MSVCP_basic_string_wchar_npos;
3481 if(pos > this->size-len)
3482 pos = this->size-len;
3483 end = basic_string_wchar_const_ptr(this);
3484 for(p=end+pos; p>=end; p--) {
3485 if(*p==*find && !MSVCP_char_traits_wchar_compare(p, find, len))
3486 return p-basic_string_wchar_const_ptr(this);
3489 return MSVCP_basic_string_wchar_npos;
3492 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3493 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3494 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3495 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3496 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off, 12)
3497 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_off(
3498 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
3500 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find, pos,
3501 MSVCP_char_traits_wchar_length(find));
3504 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3505 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3506 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3507 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3508 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off, 12)
3509 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_off(
3510 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3512 return MSVCP_basic_string_wchar_rfind_cstr_substr(this,
3513 basic_string_wchar_const_ptr(find), off, find->size);
3516 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3517 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3518 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3519 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3520 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch, 12)
3521 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_ch(
3522 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
3524 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch, pos, 1);
3527 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3528 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3529 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3530 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3531 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr, 16)
3532 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3533 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3535 const wchar_t *p, *end;
3537 TRACE("%p %p %lu %lu\n", this, find, off, len);
3539 if(len>0 && off<this->size) {
3540 end = basic_string_wchar_const_ptr(this)+this->size;
3541 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3542 if(MSVCP_char_traits_wchar_find(find, len, p))
3543 return p-basic_string_wchar_const_ptr(this);
3546 return MSVCP_basic_string_wchar_npos;
3549 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3550 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3551 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3552 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3553 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of, 12)
3554 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of(
3555 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3557 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
3558 basic_string_wchar_const_ptr(find), off, find->size);
3561 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3562 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3563 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3564 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3565 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr, 12)
3566 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr(
3567 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3569 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3570 this, find, off, MSVCP_char_traits_wchar_length(find));
3573 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3574 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3575 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3576 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3577 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch, 12)
3578 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_ch(
3579 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3581 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch, off, 1);
3584 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3585 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3586 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3587 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3588 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr, 16)
3589 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3590 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3592 const wchar_t *p, *end;
3594 TRACE("%p %p %lu %lu\n", this, find, off, len);
3596 if(off<this->size) {
3597 end = basic_string_wchar_const_ptr(this)+this->size;
3598 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3599 if(!MSVCP_char_traits_wchar_find(find, len, p))
3600 return p-basic_string_wchar_const_ptr(this);
3603 return MSVCP_basic_string_wchar_npos;
3606 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3607 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3608 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3609 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3610 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of, 12)
3611 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of(
3612 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3614 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
3615 basic_string_wchar_const_ptr(find), off, find->size);
3618 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3619 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3620 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3621 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3622 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr, 12)
3623 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr(
3624 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3626 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3627 this, find, off, MSVCP_char_traits_wchar_length(find));
3630 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3631 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3632 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3633 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3634 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch, 12)
3635 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_ch(
3636 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3638 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch, off, 1);
3641 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3642 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3643 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3644 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3645 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr, 16)
3646 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3647 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3649 const wchar_t *p, *beg;
3651 TRACE("%p %p %lu %lu\n", this, find, off, len);
3654 if(len>0 && this->size>0) {
3655 if(off >= this->size)
3656 off = this->size-1;
3658 beg = basic_string_wchar_const_ptr(this);
3659 for(p=beg+off; p>=beg; p--)
3660 if(MSVCP_char_traits_wchar_find(find, len, p))
3661 return p-beg;
3664 return MSVCP_basic_string_wchar_npos;
3667 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3668 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3669 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3670 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3671 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of, 12)
3672 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of(
3673 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3675 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
3676 basic_string_wchar_const_ptr(find), off, find->size);
3679 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3680 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3681 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3682 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3683 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr, 12)
3684 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr(
3685 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3687 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3688 this, find, off, MSVCP_char_traits_wchar_length(find));
3691 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3692 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3693 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3694 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3695 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch, 12)
3696 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_ch(
3697 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3699 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch, off, 1);
3702 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3703 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3704 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3705 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3706 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr, 16)
3707 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3708 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3710 const wchar_t *p, *beg;
3712 TRACE("%p %p %lu %lu\n", this, find, off, len);
3714 if(this->size>0) {
3715 if(off >= this->size)
3716 off = this->size-1;
3718 beg = basic_string_wchar_const_ptr(this);
3719 for(p=beg+off; p>=beg; p--)
3720 if(!MSVCP_char_traits_wchar_find(find, len, p))
3721 return p-beg;
3724 return MSVCP_basic_string_wchar_npos;
3727 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3728 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3729 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3730 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3731 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of, 12)
3732 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of(
3733 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3735 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
3736 basic_string_wchar_const_ptr(find), off, find->size);
3739 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3740 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3741 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3742 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3743 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr, 12)
3744 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr(
3745 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3747 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3748 this, find, off, MSVCP_char_traits_wchar_length(find));
3751 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3752 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3753 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3754 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3755 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch, 12)
3756 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_ch(
3757 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3759 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch, off, 1);
3762 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z */
3763 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z */
3764 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
3765 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
3766 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len, 20)
3767 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr_len(basic_string_wchar *this,
3768 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str, MSVCP_size_t str_len)
3770 MSVCP_size_t inside_pos = -1;
3771 wchar_t *ptr = basic_string_wchar_ptr(this);
3773 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
3775 if(this->size < off)
3776 MSVCP__String_base_Xran();
3778 if(len > this->size-off)
3779 len = this->size-off;
3781 if(MSVCP_basic_string_wchar_npos-str_len <= this->size-len)
3782 MSVCP__String_base_Xlen();
3784 if(basic_string_wchar_inside(this, str))
3785 inside_pos = str-ptr;
3787 if(len < str_len) {
3788 basic_string_wchar_grow(this, this->size-len+str_len, FALSE);
3789 ptr = basic_string_wchar_ptr(this);
3792 if(inside_pos == -1) {
3793 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3794 memcpy(ptr+off, str, str_len*sizeof(wchar_t));
3795 } else if(len >= str_len) {
3796 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(wchar_t));
3797 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3798 } else {
3799 MSVCP_size_t size;
3801 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3803 if(inside_pos < off+len) {
3804 size = off+len-inside_pos;
3805 if(size > str_len)
3806 size = str_len;
3807 memmove(ptr+off, ptr+inside_pos, size*sizeof(wchar_t));
3808 } else {
3809 size = 0;
3812 if(str_len > size)
3813 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(wchar_t));
3816 basic_string_wchar_eos(this, this->size-len+str_len);
3817 return this;
3820 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z */
3821 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z */
3822 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3823 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3824 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr, 16)
3825 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr(basic_string_wchar *this,
3826 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str)
3828 return basic_string_wchar_replace_cstr_len(this, off, len, str,
3829 MSVCP_char_traits_wchar_length(str));
3832 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z */
3833 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3834 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3835 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3836 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr, 24)
3837 basic_string_wchar* __thiscall basic_string_wchar_replace_substr(basic_string_wchar *this, MSVCP_size_t off,
3838 MSVCP_size_t len, const basic_string_wchar *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
3840 if(str->size < str_off)
3841 MSVCP__String_base_Xran();
3843 if(str_len > str->size-str_off)
3844 str_len = str->size-str_off;
3846 return basic_string_wchar_replace_cstr_len(this, off, len,
3847 basic_string_wchar_const_ptr(str)+str_off, str_len);
3850 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z */
3851 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3852 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3853 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3854 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace, 16)
3855 basic_string_wchar* __thiscall basic_string_wchar_replace(basic_string_wchar *this,
3856 MSVCP_size_t off, MSVCP_size_t len, const basic_string_wchar *str)
3858 return basic_string_wchar_replace_cstr_len(this, off, len,
3859 basic_string_wchar_const_ptr(str), str->size);
3862 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z */
3863 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z */
3864 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3865 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3866 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch, 20)
3867 basic_string_wchar* __thiscall basic_string_wchar_replace_ch(basic_string_wchar *this,
3868 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, wchar_t ch)
3870 wchar_t *ptr = basic_string_wchar_ptr(this);
3872 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
3874 if(this->size < off)
3875 MSVCP__String_base_Xran();
3877 if(len > this->size-off)
3878 len = this->size-off;
3880 if(MSVCP_basic_string_wchar_npos-count <= this->size-len)
3881 MSVCP__String_base_Xlen();
3883 if(len < count) {
3884 basic_string_wchar_grow(this, this->size-len+count, FALSE);
3885 ptr = basic_string_wchar_ptr(this);
3888 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3889 MSVCP_char_traits_wchar_assignn(ptr+off, count, ch);
3890 basic_string_wchar_eos(this, this->size-len+count);
3892 return this;
3895 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@@Z */
3896 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3897 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3898 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3899 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert, 12)
3900 basic_string_wchar* __thiscall basic_string_wchar_insert(basic_string_wchar *this,
3901 MSVCP_size_t off, const basic_string_wchar *str)
3903 return basic_string_wchar_replace(this, off, 0, str);
3906 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@II@Z */
3907 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3908 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3909 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3910 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr, 20)
3911 basic_string_wchar* __thiscall basic_string_wchar_insert_substr(
3912 basic_string_wchar *this, MSVCP_size_t off, const basic_string_wchar *str,
3913 MSVCP_size_t str_off, MSVCP_size_t str_count)
3915 return basic_string_wchar_replace_substr(this, off, 0, str, str_off, str_count);
3918 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_W@Z */
3919 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W@Z */
3920 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3921 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3922 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr, 12)
3923 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr(
3924 basic_string_wchar *this, MSVCP_size_t off, const wchar_t *str)
3926 return basic_string_wchar_replace_cstr(this, off, 0, str);
3929 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_WI@Z */
3930 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W0@Z */
3931 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3932 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3933 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len, 16)
3934 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr_len(basic_string_wchar *this,
3935 MSVCP_size_t off, const wchar_t *str, MSVCP_size_t str_len)
3937 return basic_string_wchar_replace_cstr_len(this, off, 0, str, str_len);
3940 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II_W@Z */
3941 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0_W@Z */
3942 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3943 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3944 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn, 16)
3945 basic_string_wchar* __thiscall basic_string_wchar_insert_chn(basic_string_wchar *this,
3946 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
3948 return basic_string_wchar_replace_ch(this, off, 0, count, ch);
3951 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
3952 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
3953 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
3954 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
3955 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at, 8)
3956 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at(
3957 basic_string_wchar *this, MSVCP_size_t pos)
3959 TRACE("%p %lu\n", this, pos);
3961 #if _MSVCP_VER >= 80
3962 if (this->size < pos)
3963 _invalid_parameter(NULL, NULL, NULL, 0, 0);
3964 #endif
3966 return basic_string_wchar_ptr(this)+pos;
3969 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
3970 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
3971 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
3972 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
3973 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_operator_at, 8)
3974 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_operator_at(
3975 const basic_string_wchar *this, MSVCP_size_t pos)
3977 TRACE("%p %lu\n", this, pos);
3979 #if _MSVCP_VER >= 80
3980 if (this->size < pos)
3981 _invalid_parameter(NULL, NULL, NULL, 0, 0);
3982 #endif
3984 return basic_string_wchar_const_ptr(this)+pos;
3987 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z */
3988 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z */
3989 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGU_Size_type_nosscl@01@@Z */
3990 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAGU_Size_type_nosscl@01@@Z */
3991 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at_noverify, 8)
3992 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at_noverify(
3993 basic_string_wchar *this, size_t_noverify pos)
3995 TRACE("%p %lu\n", this, pos.val);
3996 return basic_string_wchar_ptr(this)+pos.val;
3999 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z */
4000 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z */
4001 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGU_Size_type_nosscl@01@@Z */
4002 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBGU_Size_type_nosscl@01@@Z */
4003 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_const_at_noverify, 8)
4004 const wchar_t* __thiscall MSVCP_basic_string_wchar_operator_const_at_noverify(
4005 const basic_string_wchar *this, size_t_noverify pos)
4007 TRACE("%p %lu\n", this, pos.val);
4008 return basic_string_wchar_const_ptr(this)+pos.val;
4011 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
4012 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
4013 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
4014 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
4015 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at, 8)
4016 wchar_t* __thiscall MSVCP_basic_string_wchar_at(
4017 basic_string_wchar *this, MSVCP_size_t pos)
4019 TRACE("%p %lu\n", this, pos);
4021 if(this->size <= pos)
4022 MSVCP__String_base_Xran();
4024 return basic_string_wchar_ptr(this)+pos;
4027 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
4028 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
4029 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
4030 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
4031 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_at, 8)
4032 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at(
4033 const basic_string_wchar *this, MSVCP_size_t pos)
4035 TRACE("%p %lu\n", this, pos);
4037 if(this->size <= pos)
4038 MSVCP__String_base_Xran();
4040 return basic_string_wchar_const_ptr(this)+pos;
4043 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z */
4044 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z */
4045 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
4046 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
4047 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch, 12)
4048 void __thiscall MSVCP_basic_string_wchar_resize_ch(
4049 basic_string_wchar *this, MSVCP_size_t size, wchar_t ch)
4051 TRACE("%p %lu %c\n", this, size, ch);
4053 if(size <= this->size)
4054 MSVCP_basic_string_wchar_erase(this, size, this->size);
4055 else
4056 MSVCP_basic_string_wchar_append_len_ch(this, size-this->size, ch);
4059 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
4060 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
4061 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
4062 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
4063 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize, 8)
4064 void __thiscall MSVCP_basic_string_wchar_resize(
4065 basic_string_wchar *this, MSVCP_size_t size)
4067 MSVCP_basic_string_wchar_resize_ch(this, size, '\0');
4070 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4071 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4072 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4073 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4074 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear, 4)
4075 void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar *this)
4077 basic_string_wchar_eos(this, 0);
4080 /* _String_val class */
4081 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ */
4082 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ */
4083 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ */
4084 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ */
4085 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ */
4086 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ */
4087 DEFINE_THISCALL_WRAPPER(_String_val_ctor, 4)
4088 void* __thiscall _String_val_ctor(void *this)
4090 TRACE("%p\n", this);
4091 return this;
4094 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z */
4095 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z */
4096 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z */
4097 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z */
4098 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z */
4099 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z */
4100 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z */
4101 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z */
4102 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z */
4103 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z */
4104 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z */
4105 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z */
4106 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4107 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4108 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z */
4109 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4110 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z */
4111 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4112 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4113 DEFINE_THISCALL_WRAPPER(_String_val_null_ctor, 8)
4114 void* __thiscall _String_val_null_ctor(void *this, const void *misc)
4116 TRACE("%p %p\n", this, misc);
4117 return this;
4120 #if _MSVCP_VER < 80 /* old iterator functions */
4122 typedef struct {
4123 const char *pos;
4124 } basic_string_char_iterator;
4126 typedef struct {
4127 const wchar_t *pos;
4128 } basic_string_wchar_iterator;
4130 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KAIVconst_iterator@12@0@Z */
4131 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAIV?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4132 MSVCP_size_t __cdecl basic_string_char__Pdif(basic_string_char_iterator i1, basic_string_char_iterator i2)
4134 TRACE("(%p %p)\n", i1.pos, i2.pos);
4135 return !i1.pos ? 0 : i1.pos-i2.pos;
4138 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@0@Z */
4139 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@0@Z */
4140 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter_range, 16)
4141 basic_string_char_iterator* __thiscall basic_string_char_erase_iter_range(basic_string_char *this,
4142 basic_string_char_iterator *ret, basic_string_char_iterator beg, basic_string_char_iterator end)
4144 MSVCP_size_t off;
4146 ret->pos = basic_string_char_ptr(this);
4147 off = basic_string_char__Pdif(beg, *ret);
4149 MSVCP_basic_string_char_erase(this, off, basic_string_char__Pdif(end, beg));
4151 ret->pos = basic_string_char_ptr(this)+off;
4152 return ret;
4155 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@@Z */
4156 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@@Z */
4157 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter, 12)
4158 basic_string_char_iterator* __thiscall basic_string_char_erase_iter(basic_string_char *this,
4159 basic_string_char_iterator *ret, basic_string_char_iterator pos)
4161 MSVCP_size_t off;
4163 ret->pos = basic_string_char_ptr(this);
4164 off = basic_string_char__Pdif(pos, *ret);
4166 MSVCP_basic_string_char_erase(this, off, 1);
4168 ret->pos = basic_string_char_ptr(this)+off;
4169 return ret;
4172 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4173 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4174 DEFINE_THISCALL_WRAPPER(basic_string_char_assign_iter, 12)
4175 basic_string_char* __thiscall basic_string_char_assign_iter(basic_string_char *this,
4176 basic_string_char_iterator beg, basic_string_char_iterator end)
4178 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
4181 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@Vconst_iterator@01@0@Z */
4182 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_Ptrit@DHPBDABDPADAAD@1@0@Z */
4183 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter, 12)
4184 basic_string_char* __thiscall basic_string_char_ctor_iter(basic_string_char *this,
4185 basic_string_char_iterator beg, basic_string_char_iterator end)
4187 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4190 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4191 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4192 DEFINE_THISCALL_WRAPPER(basic_string_char_append_iter, 12)
4193 basic_string_char* __thiscall basic_string_char_append_iter(basic_string_char *this,
4194 basic_string_char_iterator beg, basic_string_char_iterator end)
4196 return basic_string_char_replace_cstr_len(this, this->size, 0, beg.pos, end.pos-beg.pos);
4199 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4200 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0V?$_Ptrit@DHPBDABDPADAAD@2@1@Z */
4201 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter, 20)
4202 basic_string_char* __thiscall basic_string_char_replace_iter_iter(basic_string_char *this,
4203 basic_string_char_iterator beg, basic_string_char_iterator end,
4204 basic_string_char_iterator rbeg, basic_string_char_iterator rend)
4206 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4207 end.pos-beg.pos, rbeg.pos, rend.pos-rbeg.pos);
4210 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4211 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0ABV12@@Z */
4212 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr, 16)
4213 basic_string_char* __thiscall basic_string_char_replace_iter_bstr(basic_string_char *this,
4214 basic_string_char_iterator beg, basic_string_char_iterator end, const basic_string_char *str)
4216 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4217 end.pos-beg.pos, basic_string_char_const_ptr(str), str->size);
4220 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ID@Z */
4221 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0ID@Z */
4222 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ch, 20)
4223 basic_string_char* __thiscall basic_string_char_replace_iter_ch(basic_string_char *this,
4224 basic_string_char_iterator beg, basic_string_char_iterator end, MSVCP_size_t count, char ch)
4226 /* TODO: add more efficient implementation */
4227 MSVCP_size_t off = beg.pos-basic_string_char_ptr(this);
4229 basic_string_char_replace_cstr_len(this, off, end.pos-beg.pos, NULL, 0);
4230 while(count--)
4231 basic_string_char_replace_cstr_len(this, off, 0, &ch, 1);
4232 return this;
4235 static basic_string_char* basic_string_char_replace_iter_ptr_ptr(basic_string_char *this,
4236 basic_string_char_iterator beg, basic_string_char_iterator end,
4237 const char *res_beg, const char *res_end)
4239 basic_string_char_iterator begin = { basic_string_char_ptr(this) };
4240 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg, begin),
4241 basic_string_char__Pdif(end, beg), res_beg, res_end-res_beg);
4244 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD1@Z */
4245 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBD1@Z */
4246 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_beg_end, 20)
4247 basic_string_char* __thiscall basic_string_char_replace_iter_beg_end(basic_string_char *this,
4248 basic_string_char_iterator beg, basic_string_char_iterator end, const char *rbeg, const char *rend)
4250 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4251 end.pos-beg.pos, rbeg, rend-rbeg);
4254 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD@Z */
4255 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBD@Z */
4256 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr, 16)
4257 basic_string_char* __thiscall basic_string_char_replace_iter_cstr(basic_string_char *this,
4258 basic_string_char_iterator beg, basic_string_char_iterator end, const char *str)
4260 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4261 end.pos-beg.pos, str, strlen(str));
4264 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBDI@Z */
4265 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBDI@Z */
4266 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len, 20)
4267 basic_string_char* __thiscall basic_string_char_replace_iter_cstr_len(basic_string_char *this,
4268 basic_string_char_iterator beg, basic_string_char_iterator end, const char *str, MSVCP_size_t len)
4270 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4271 end.pos-beg.pos, str, len);
4274 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@ID@Z */
4275 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXV?$_Ptrit@DHPADAADPADAAD@2@ID@Z */
4276 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn, 16)
4277 void __thiscall basic_string_char_insert_iter_chn(basic_string_char *this,
4278 basic_string_char_iterator where, MSVCP_size_t count, char ch)
4280 basic_string_char_iterator iter = { basic_string_char_ptr(this) };
4281 MSVCP_size_t off = basic_string_char__Pdif(where, iter);
4283 basic_string_char_insert_chn(this, off, count, ch);
4286 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@D@Z */
4287 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@D@Z */
4288 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch, 16)
4289 basic_string_char_iterator* __thiscall basic_string_char_insert_iter_ch(basic_string_char *this,
4290 basic_string_char_iterator *ret, basic_string_char_iterator where, char ch)
4292 MSVCP_size_t off;
4294 ret->pos = basic_string_char_ptr(this);
4295 off = basic_string_char__Pdif(where, *ret);
4297 basic_string_char_insert_chn(this, off, 1, ch);
4298 ret->pos = basic_string_char_ptr(this)+off;
4299 return ret;
4302 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@@Z */
4303 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@@Z */
4304 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_null, 12)
4305 basic_string_char_iterator* __thiscall basic_string_char_insert_iter_null(basic_string_char *this,
4306 basic_string_char_iterator *ret, basic_string_char_iterator where)
4308 return basic_string_char_insert_iter_ch(this, ret, where, 0);
4311 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@PBD1@Z */
4312 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ptr_ptr, 16)
4313 void __thiscall basic_string_char_insert_iter_ptr_ptr(basic_string_char *this,
4314 basic_string_char_iterator where, const char *beg, const char *end)
4316 basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end);
4319 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@PBD1@Z */
4320 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 16)
4321 void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this,
4322 basic_string_char_iterator where, basic_string_char_iterator beg, basic_string_char_iterator end)
4324 basic_string_char_replace_iter_ptr_ptr(this, where, where, beg.pos, end.pos);
4327 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */
4328 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */
4329 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
4330 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
4331 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@XZ */
4332 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_Ptrit@DHPBDABDPADAAD@2@XZ */
4333 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@DHPADAADPADAAD@std@@@2@XZ */
4334 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@DHPBDABDPADAAD@std@@@2@XZ */
4335 DEFINE_THISCALL_WRAPPER(basic_string_char_begin, 8)
4336 basic_string_char_iterator* __thiscall basic_string_char_begin(
4337 basic_string_char *this, basic_string_char_iterator *ret)
4339 ret->pos = basic_string_char_ptr(this);
4340 return ret;
4343 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */
4344 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */
4345 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
4346 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
4347 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@XZ */
4348 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_Ptrit@DHPBDABDPADAAD@2@XZ */
4349 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@DHPADAADPADAAD@std@@@2@XZ */
4350 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@DHPBDABDPADAAD@std@@@2@XZ */
4351 DEFINE_THISCALL_WRAPPER(basic_string_char_end, 8)
4352 basic_string_char_iterator* __thiscall basic_string_char_end(
4353 basic_string_char *this, basic_string_char_iterator *ret)
4355 ret->pos = basic_string_char_ptr(this)+this->size;
4356 return ret;
4359 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIVconst_iterator@12@0@Z */
4360 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@KAIVconst_iterator@12@0@Z */
4361 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@CAIV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4362 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAIV?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4363 MSVCP_size_t __cdecl basic_string_wchar__Pdif(basic_string_wchar_iterator i1, basic_string_wchar_iterator i2)
4365 TRACE("(%p %p)\n", i1.pos, i2.pos);
4366 return !i1.pos ? 0 : i1.pos-i2.pos;
4369 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@0@Z */
4370 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@0@Z */
4371 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V32@0@Z */
4372 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@0@Z */
4373 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter_range, 16)
4374 basic_string_wchar_iterator* __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this,
4375 basic_string_wchar_iterator *ret, basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4377 MSVCP_size_t off;
4379 ret->pos = basic_string_wchar_ptr(this);
4380 off = basic_string_wchar__Pdif(beg, *ret);
4382 MSVCP_basic_string_wchar_erase(this, off, basic_string_wchar__Pdif(end, beg));
4384 ret->pos = basic_string_wchar_ptr(this)+off;
4385 return ret;
4388 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@@Z */
4389 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z */
4390 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V32@@Z */
4391 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@@Z */
4392 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter, 12)
4393 basic_string_wchar_iterator* __thiscall basic_string_wchar_erase_iter(basic_string_wchar *this,
4394 basic_string_wchar_iterator *ret, basic_string_wchar_iterator pos)
4396 MSVCP_size_t off;
4398 ret->pos = basic_string_wchar_ptr(this);
4399 off = basic_string_wchar__Pdif(pos, *ret);
4401 MSVCP_basic_string_wchar_erase(this, off, 1);
4403 ret->pos = basic_string_wchar_ptr(this)+off;
4404 return ret;
4407 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4408 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4409 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4410 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4411 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign_iter, 12)
4412 basic_string_wchar* __thiscall basic_string_wchar_assign_iter(basic_string_wchar *this,
4413 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4415 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
4418 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@Vconst_iterator@01@0@Z */
4419 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@Vconst_iterator@01@0@Z */
4420 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@1@0@Z */
4421 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@V?$_Ptrit@GHPBGABGPAGAAG@1@0@Z */
4422 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter, 12)
4423 basic_string_wchar* __thiscall basic_string_wchar_ctor_iter(basic_string_wchar *this,
4424 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4426 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4429 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4430 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4431 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4432 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4433 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_iter, 12)
4434 basic_string_wchar* __thiscall basic_string_wchar_append_iter(basic_string_wchar *this,
4435 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4437 return basic_string_wchar_replace_cstr_len(this, this->size, 0, beg.pos, end.pos-beg.pos);
4440 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4441 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4442 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0V?$_Ptrit@GHPBGABGPAGAAG@2@1@Z */
4443 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@1@Z */
4444 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter, 20)
4445 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
4446 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4447 basic_string_wchar_iterator rbeg, basic_string_wchar_iterator rend)
4449 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4450 end.pos-beg.pos, rbeg.pos, rend.pos-rbeg.pos);
4453 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4454 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4455 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0ABV12@@Z */
4456 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0ABV12@@Z */
4457 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr, 16)
4458 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
4459 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, basic_string_wchar *str)
4461 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4462 end.pos-beg.pos, basic_string_wchar_ptr(str), str->size);
4465 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0IG@Z */
4466 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0I_W@Z */
4467 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0IG@Z */
4468 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0I_W@Z */
4469 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ch, 20)
4470 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
4471 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, MSVCP_size_t count, wchar_t ch)
4473 /* TODO: add more efficient implementation */
4474 MSVCP_size_t off = beg.pos-basic_string_wchar_ptr(this);
4476 basic_string_wchar_replace_cstr_len(this, off, end.pos-beg.pos, NULL, 0);
4477 while(count--)
4478 basic_string_wchar_replace_cstr_len(this, off, 0, &ch, 1);
4479 return this;
4482 static basic_string_wchar* basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
4483 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4484 const wchar_t *res_beg, const wchar_t *res_end)
4486 basic_string_wchar_iterator begin = { basic_string_wchar_ptr(this) };
4487 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg, begin),
4488 basic_string_wchar__Pdif(end, beg), res_beg, res_end-res_beg);
4491 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG1@Z */
4492 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W1@Z */
4493 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBG1@Z */
4494 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0PB_W1@Z */
4495 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_beg_end, 20)
4496 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_beg_end(basic_string_wchar *this,
4497 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4498 const wchar_t *rbeg, const wchar_t *rend)
4500 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4501 end.pos-beg.pos, rbeg, rend-rbeg);
4504 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG@Z */
4505 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W@Z */
4506 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBG@Z */
4507 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0PB_W@Z */
4508 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr, 16)
4509 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
4510 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, const wchar_t *str)
4512 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4513 end.pos-beg.pos, str, wcslen(str));
4516 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBGI@Z */
4517 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_WI@Z */
4518 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBGI@Z */
4519 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0PB_WI@Z */
4520 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len, 20)
4521 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
4522 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4523 const wchar_t *str, MSVCP_size_t len)
4525 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4526 end.pos-beg.pos, str, len);
4529 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@I_W@Z */
4530 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@IG@Z */
4531 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@I_W@Z */
4532 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@IG@Z */
4533 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn, 16)
4534 void __thiscall basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
4535 basic_string_wchar_iterator where, MSVCP_size_t count, wchar_t ch)
4537 basic_string_wchar_iterator iter = { basic_string_wchar_ptr(this) };
4538 MSVCP_size_t off = basic_string_wchar__Pdif(where, iter);
4540 basic_string_wchar_insert_chn(this, off, count, ch);
4543 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@_W@Z */
4544 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@G@Z */
4545 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V32@_W@Z */
4546 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@G@Z */
4547 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch, 16)
4548 basic_string_wchar_iterator* __thiscall basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
4549 basic_string_wchar_iterator *ret, basic_string_wchar_iterator where, wchar_t ch)
4551 MSVCP_size_t off;
4553 ret->pos = basic_string_wchar_ptr(this);
4554 off = basic_string_wchar__Pdif(where, *ret);
4556 basic_string_wchar_insert_chn(this, off, 1, ch);
4557 ret->pos = basic_string_wchar_ptr(this)+off;
4558 return ret;
4561 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@@Z */
4562 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z */
4563 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V32@@Z */
4564 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@@Z */
4565 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_null, 12)
4566 basic_string_wchar_iterator* __thiscall basic_string_wchar_insert_iter_null(basic_string_wchar *this,
4567 basic_string_wchar_iterator *ret, basic_string_wchar_iterator where)
4569 return basic_string_wchar_insert_iter_ch(this, ret, where, 0);
4572 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@PB_W1@Z */
4573 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@PBG1@Z */
4574 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@PB_W1@Z */
4575 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@PBG1@Z */
4576 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ptr_ptr, 16)
4577 void __thiscall basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
4578 basic_string_wchar_iterator where, const wchar_t *beg, const wchar_t *end)
4580 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
4583 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4584 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4585 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4586 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@1@Z */
4587 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@V?$_Ptrit@GHPBGABGPAGAAG@2@1@Z */
4588 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 16)
4589 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
4590 basic_string_wchar_iterator where, basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4592 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg.pos, end.pos);
4595 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ */
4596 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AVconst_iterator@12@XZ */
4597 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@XZ */
4598 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AVconst_iterator@12@XZ */
4599 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4600 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4601 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4602 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4603 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@XZ */
4604 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_Ptrit@GHPBGABGPAGAAG@2@XZ */
4605 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@XZ */
4606 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@XZ */
4607 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@GHPAGAAGPAGAAG@std@@@2@XZ */
4608 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@GHPBGABGPAGAAG@std@@@2@XZ */
4609 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@std@@@2@XZ */
4610 /* ?rend@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@std@@@2@XZ */
4611 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin, 8)
4612 basic_string_wchar_iterator* __thiscall basic_string_wchar_begin(
4613 basic_string_wchar *this, basic_string_wchar_iterator *ret)
4615 ret->pos = basic_string_wchar_ptr(this);
4616 return ret;
4619 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ */
4620 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AVconst_iterator@12@XZ */
4621 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@XZ */
4622 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AVconst_iterator@12@XZ */
4623 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4624 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
4625 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@Viterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4626 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@Vconst_iterator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@XZ */
4627 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@XZ */
4628 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_Ptrit@GHPBGABGPAGAAG@2@XZ */
4629 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@XZ */
4630 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@XZ */
4631 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@GHPAGAAGPAGAAG@std@@@2@XZ */
4632 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@GHPBGABGPAGAAG@std@@@2@XZ */
4633 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@std@@@2@XZ */
4634 /* ?rbegin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@std@@@2@XZ */
4635 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end, 8)
4636 basic_string_wchar_iterator* __thiscall basic_string_wchar_end(
4637 basic_string_wchar *this, basic_string_wchar_iterator *ret)
4639 ret->pos = basic_string_wchar_ptr(this)+this->size;
4640 return ret;
4643 #else /* _MSVCP_VER >= 80, new iterator functions */
4645 /* _String_iterator<char> and _String_const_iterator<char> class */
4646 typedef struct {
4647 basic_string_char *bstr;
4648 const char *pos;
4649 } String_iterator_char;
4651 typedef struct {
4652 #if _MSVCP_VER == 80
4653 void *cont;
4654 #endif
4655 const basic_string_char *bstr;
4656 const char *pos;
4657 } String_reverse_iterator_char;
4659 typedef struct {
4660 basic_string_wchar *bstr;
4661 const wchar_t *pos;
4662 } String_iterator_wchar;
4664 typedef struct {
4665 #if _MSVCP_VER == 80
4666 void *cont;
4667 #endif
4668 const basic_string_wchar *bstr;
4669 const wchar_t *pos;
4670 } String_reverse_iterator_wchar;
4672 /* ?_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 */
4673 /* ?_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 */
4674 MSVCP_size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, String_iterator_char i2)
4676 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
4678 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
4679 _invalid_parameter(NULL, NULL, NULL, 0, 0);
4680 return 0;
4683 return !i1.pos ? 0 : i1.pos-i2.pos;
4686 /* ?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 */
4687 /* ?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 */
4688 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase_iter_range, 24)
4689 String_iterator_char* __thiscall MSVCP_basic_string_char_erase_iter_range(basic_string_char *this,
4690 String_iterator_char *ret, String_iterator_char beg, String_iterator_char end)
4692 MSVCP_size_t off;
4694 ret->bstr = this;
4695 ret->pos = basic_string_char_ptr(this);
4696 off = MSVCP_basic_string_char_Pdif(beg, *ret);
4698 MSVCP_basic_string_char_erase(this, off, MSVCP_basic_string_char_Pdif(end, beg));
4700 ret->bstr = this;
4701 ret->pos = basic_string_char_ptr(this)+off;
4702 return ret;
4705 /* ?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 */
4706 /* ?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 */
4707 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase_iter, 16)
4708 String_iterator_char* __thiscall MSVCP_basic_string_char_erase_iter(basic_string_char *this,
4709 String_iterator_char *ret, String_iterator_char pos)
4711 MSVCP_size_t off;
4713 ret->bstr = this;
4714 ret->pos = basic_string_char_ptr(this);
4715 off = MSVCP_basic_string_char_Pdif(pos, *ret);
4717 MSVCP_basic_string_char_erase(this, off, 1);
4719 ret->bstr = this;
4720 ret->pos = basic_string_char_ptr(this)+off;
4721 return ret;
4724 /* ?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 */
4725 /* ?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 */
4726 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_iter, 20)
4727 basic_string_char* __thiscall MSVCP_basic_string_char_assign_iter(basic_string_char *this,
4728 String_iterator_char beg, String_iterator_char end)
4730 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
4733 /* ??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 */
4734 /* ??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 */
4735 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_iter, 20)
4736 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_iter(basic_string_char *this,
4737 String_iterator_char beg, String_iterator_char end)
4739 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4742 /* ?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 */
4743 /* ?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 */
4744 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_iter, 20)
4745 basic_string_char* __thiscall MSVCP_basic_string_char_append_iter(
4746 basic_string_char *this, String_iterator_char beg, String_iterator_char end)
4748 return MSVCP_basic_string_char_append_cstr_len(this, beg.pos, end.pos-beg.pos);
4751 /* ?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 */
4752 /* ?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 */
4753 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_iter, 36)
4754 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_iter(basic_string_char *this,
4755 String_iterator_char beg, String_iterator_char end,
4756 String_iterator_char res_beg, String_iterator_char res_end)
4758 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4759 return basic_string_char_replace_cstr_len(this,
4760 MSVCP_basic_string_char_Pdif(beg, begin), MSVCP_basic_string_char_Pdif(end, beg),
4761 res_beg.pos, MSVCP_basic_string_char_Pdif(res_end, res_beg));
4764 /* ?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 */
4765 /* ?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 */
4766 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_bstr, 24)
4767 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_bstr(basic_string_char *this,
4768 String_iterator_char beg, String_iterator_char end, const basic_string_char *str)
4770 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4771 return basic_string_char_replace(this, MSVCP_basic_string_char_Pdif(beg, begin),
4772 MSVCP_basic_string_char_Pdif(end, beg), str);
4775 /* ?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 */
4776 /* ?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 */
4777 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_ch, 28)
4778 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_ch(basic_string_char *this,
4779 String_iterator_char beg, String_iterator_char end, MSVCP_size_t count, char ch)
4781 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4782 return basic_string_char_replace_ch(this, MSVCP_basic_string_char_Pdif(beg, begin),
4783 MSVCP_basic_string_char_Pdif(end, beg), count, ch);
4786 /* ?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 */
4787 /* ?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 */
4788 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_ptr_ptr, 28)
4789 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_ptr_ptr(basic_string_char *this,
4790 String_iterator_char beg, String_iterator_char end,
4791 const char *res_beg, const char *res_end)
4793 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4794 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
4795 MSVCP_basic_string_char_Pdif(end, beg), res_beg, res_end-res_beg);
4798 /* ?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 */
4799 /* ?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 */
4800 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_cstr, 24)
4801 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_cstr(basic_string_char *this,
4802 String_iterator_char beg, String_iterator_char end, const char *str)
4804 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4805 return basic_string_char_replace_cstr(this, MSVCP_basic_string_char_Pdif(beg, begin),
4806 MSVCP_basic_string_char_Pdif(end, beg), str);
4809 /* ?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 */
4810 /* ?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 */
4811 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_cstr_len, 28)
4812 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_cstr_len(basic_string_char *this,
4813 String_iterator_char beg, String_iterator_char end, const char *str, MSVCP_size_t len)
4815 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4816 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
4817 MSVCP_basic_string_char_Pdif(end, beg), str, len);
4820 /* ?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 */
4821 /* ?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 */
4822 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_chn, 20)
4823 void __thiscall MSVCP_basic_string_char_insert_iter_chn(basic_string_char *this,
4824 String_iterator_char where, MSVCP_size_t count, char ch)
4826 String_iterator_char iter = { this, basic_string_char_ptr(this) };
4827 MSVCP_size_t off = MSVCP_basic_string_char_Pdif(where, iter);
4829 basic_string_char_insert_chn(this, off, count, ch);
4832 /* ?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 */
4833 /* ?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 */
4834 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_ch, 20)
4835 String_iterator_char* __thiscall MSVCP_basic_string_char_insert_iter_ch(basic_string_char *this,
4836 String_iterator_char *ret, String_iterator_char where, char ch)
4838 MSVCP_size_t off;
4840 ret->bstr = this;
4841 ret->pos = basic_string_char_ptr(this);
4842 off = MSVCP_basic_string_char_Pdif(where, *ret);
4844 basic_string_char_insert_chn(this, off, 1, ch);
4845 ret->pos = basic_string_char_ptr(this)+off;
4846 return ret;
4849 /* ?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 */
4850 /* ?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 */
4851 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_null, 16)
4852 String_iterator_char* __thiscall MSVCP_basic_string_char_insert_iter_null(basic_string_char *this,
4853 String_iterator_char *ret, String_iterator_char where)
4855 return MSVCP_basic_string_char_insert_iter_ch(this, ret, where, 0);
4858 /* ?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 */
4859 /* ?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 */
4860 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 28)
4861 void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this,
4862 String_iterator_char where, String_iterator_char beg, String_iterator_char end)
4864 MSVCP_basic_string_char_replace_iter_iter(this, where, where, beg, end);
4867 /* ?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 */
4868 /* ?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 */
4869 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_ptr_ptr, 20)
4870 void __thiscall MSVCP_basic_string_char_insert_iter_ptr_ptr(basic_string_char *this,
4871 String_iterator_char where, const char *beg, const char *end)
4873 MSVCP_basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end);
4876 /* ?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 */
4877 /* ?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 */
4878 /* ?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 */
4879 /* ?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 */
4880 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_begin, 8)
4881 String_iterator_char* __thiscall MSVCP_basic_string_char_begin(
4882 basic_string_char *this, String_iterator_char *ret)
4884 TRACE("%p\n", this);
4886 ret->bstr = this;
4887 ret->pos = basic_string_char_const_ptr(this);
4888 return ret;
4891 /* ?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 */
4892 /* ?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 */
4893 /* ?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 */
4894 /* ?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 */
4895 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_end, 8)
4896 String_iterator_char* __thiscall MSVCP_basic_string_char_end(
4897 basic_string_char *this, String_iterator_char *ret)
4899 TRACE("%p\n", this);
4901 ret->bstr = this;
4902 ret->pos = basic_string_char_const_ptr(this)+this->size;
4903 return ret;
4906 /* ?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 */
4907 /* ?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 */
4908 /* ?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 */
4909 /* ?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 */
4910 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rbegin, 8)
4911 String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rbegin(
4912 basic_string_char *this, String_reverse_iterator_char *ret)
4914 TRACE("%p\n", this);
4916 #if _MSVCP_VER == 80
4917 ret->cont = NULL;
4918 #endif
4919 ret->bstr = this;
4920 ret->pos = basic_string_char_const_ptr(this)+this->size;
4921 return ret;
4924 /* ?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 */
4925 /* ?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 */
4926 /* ?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 */
4927 /* ?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 */
4928 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rend, 8)
4929 String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rend(
4930 basic_string_char *this, String_reverse_iterator_char *ret)
4932 TRACE("%p\n", this);
4934 #if _MSVCP_VER == 80
4935 ret->cont = NULL;
4936 #endif
4937 ret->bstr = this;
4938 ret->pos = basic_string_char_const_ptr(this);
4939 return ret;
4942 /* ?_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 */
4943 /* ?_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 */
4944 /* ?_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 */
4945 /* ?_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 */
4946 MSVCP_size_t __cdecl MSVCP_basic_string_wchar_Pdif(String_iterator_wchar i1, String_iterator_wchar i2)
4948 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
4950 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
4951 _invalid_parameter(NULL, NULL, NULL, 0, 0);
4952 return 0;
4955 return !i1.pos ? 0 : i1.pos-i2.pos;
4958 /* ?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 */
4959 /* ?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 */
4960 /* ?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 */
4961 /* ?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 */
4962 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase_iter_range, 24)
4963 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_erase_iter_range(basic_string_wchar *this,
4964 String_iterator_wchar *ret, String_iterator_wchar beg, String_iterator_wchar end)
4966 MSVCP_size_t off;
4968 ret->bstr = this;
4969 ret->pos = basic_string_wchar_ptr(this);
4970 off = MSVCP_basic_string_wchar_Pdif(beg, *ret);
4972 MSVCP_basic_string_wchar_erase(this, off, MSVCP_basic_string_wchar_Pdif(end, beg));
4974 ret->bstr = this;
4975 ret->pos = basic_string_wchar_ptr(this)+off;
4976 return ret;
4979 /* ?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 */
4980 /* ?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 */
4981 /* ?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 */
4982 /* ?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 */
4983 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase_iter, 16)
4984 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_erase_iter(basic_string_wchar *this,
4985 String_iterator_wchar *ret, String_iterator_wchar pos)
4987 MSVCP_size_t off;
4989 ret->bstr = this;
4990 ret->pos = basic_string_wchar_ptr(this);
4991 off = MSVCP_basic_string_wchar_Pdif(pos, *ret);
4993 MSVCP_basic_string_wchar_erase(this, off, 1);
4995 ret->bstr = this;
4996 ret->pos = basic_string_wchar_ptr(this)+off;
4997 return ret;
5000 /* ?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 */
5001 /* ?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 */
5002 /* ?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 */
5003 /* ?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 */
5004 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_iter, 20)
5005 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_iter(basic_string_wchar *this,
5006 String_iterator_wchar beg, String_iterator_wchar end)
5008 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
5011 /* ??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 */
5012 /* ??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 */
5013 /* ??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 */
5014 /* ??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 */
5015 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_iter, 20)
5016 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_iter(basic_string_wchar *this,
5017 String_iterator_wchar beg, String_iterator_wchar end)
5019 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
5022 /* ?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 */
5023 /* ?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 */
5024 /* ?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 */
5025 /* ?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 */
5026 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_iter, 20)
5027 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_iter(
5028 basic_string_wchar *this, String_iterator_wchar beg, String_iterator_wchar end)
5030 return MSVCP_basic_string_wchar_append_cstr_len(this, beg.pos, end.pos-beg.pos);
5033 /* ?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 */
5034 /* ?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 */
5035 /* ?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 */
5036 /* ?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 */
5037 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_iter, 36)
5038 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
5039 String_iterator_wchar beg, String_iterator_wchar end,
5040 String_iterator_wchar res_beg, String_iterator_wchar res_end)
5042 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5043 return basic_string_wchar_replace_cstr_len(this,
5044 MSVCP_basic_string_wchar_Pdif(beg, begin), MSVCP_basic_string_wchar_Pdif(end, beg),
5045 res_beg.pos, MSVCP_basic_string_wchar_Pdif(res_end, res_beg));
5048 /* ?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 */
5049 /* ?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 */
5050 /* ?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 */
5051 /* ?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 */
5052 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_bstr, 24)
5053 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
5054 String_iterator_wchar beg, String_iterator_wchar end, const basic_string_wchar *str)
5056 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5057 return basic_string_wchar_replace(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5058 MSVCP_basic_string_wchar_Pdif(end, beg), str);
5061 /* ?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 */
5062 /* ?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 */
5063 /* ?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 */
5064 /* ?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 */
5065 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_ch, 28)
5066 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
5067 String_iterator_wchar beg, String_iterator_wchar end, MSVCP_size_t count, wchar_t ch)
5069 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5070 return basic_string_wchar_replace_ch(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5071 MSVCP_basic_string_wchar_Pdif(end, beg), count, ch);
5074 /* ?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 */
5075 /* ?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 */
5076 /* ?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 */
5077 /* ?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 */
5078 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_ptr_ptr, 28)
5079 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
5080 String_iterator_wchar beg, String_iterator_wchar end,
5081 const wchar_t *res_beg, const wchar_t *res_end)
5083 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5084 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5085 MSVCP_basic_string_wchar_Pdif(end, beg), res_beg, res_end-res_beg);
5088 /* ?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 */
5089 /* ?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 */
5090 /* ?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 */
5091 /* ?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 */
5092 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_cstr, 24)
5093 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
5094 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str)
5096 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5097 return basic_string_wchar_replace_cstr(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5098 MSVCP_basic_string_wchar_Pdif(end, beg), str);
5101 /* ?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 */
5102 /* ?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 */
5103 /* ?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 */
5104 /* ?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 */
5105 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_cstr_len, 28)
5106 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
5107 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str, MSVCP_size_t len)
5109 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5110 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5111 MSVCP_basic_string_wchar_Pdif(end, beg), str, len);
5114 /* ?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 */
5115 /* ?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 */
5116 /* ?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 */
5117 /* ?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 */
5118 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_chn, 20)
5119 void __thiscall MSVCP_basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
5120 String_iterator_wchar where, MSVCP_size_t count, wchar_t ch)
5122 String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) };
5123 MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(where, iter);
5125 basic_string_wchar_insert_chn(this, off, count, ch);
5128 /* ?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 */
5129 /* ?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 */
5130 /* ?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 */
5131 /* ?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 */
5132 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_ch, 20)
5133 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
5134 String_iterator_wchar *ret, String_iterator_wchar where, wchar_t ch)
5136 MSVCP_size_t off;
5138 ret->bstr = this;
5139 ret->pos = basic_string_wchar_ptr(this);
5140 off = MSVCP_basic_string_wchar_Pdif(where, *ret);
5142 basic_string_wchar_insert_chn(this, off, 1, ch);
5143 ret->pos = basic_string_wchar_ptr(this)+off;
5144 return ret;
5147 /* ?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 */
5148 /* ?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 */
5149 /* ?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 */
5150 /* ?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 */
5151 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_null, 16)
5152 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_insert_iter_null(basic_string_wchar *this,
5153 String_iterator_wchar *ret, String_iterator_wchar where)
5155 return MSVCP_basic_string_wchar_insert_iter_ch(this, ret, where, 0);
5158 /* ?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 */
5159 /* ?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 */
5160 /* ?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 */
5161 /* ?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 */
5162 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 28)
5163 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
5164 String_iterator_wchar where, String_iterator_wchar beg, String_iterator_wchar end)
5166 MSVCP_basic_string_wchar_replace_iter_iter(this, where, where, beg, end);
5169 /* ?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 */
5170 /* ?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 */
5171 /* ?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 */
5172 /* ?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 */
5173 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_ptr_ptr, 20)
5174 void __thiscall MSVCP_basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
5175 String_iterator_wchar where, const wchar_t *beg, const wchar_t *end)
5177 MSVCP_basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
5180 /* ?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 */
5181 /* ?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 */
5182 /* ?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 */
5183 /* ?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 */
5184 /* ?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 */
5185 /* ?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 */
5186 /* ?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 */
5187 /* ?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 */
5188 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_begin, 8)
5189 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_begin(
5190 basic_string_wchar *this, String_iterator_wchar *ret)
5192 TRACE("%p\n", this);
5194 ret->bstr = this;
5195 ret->pos = basic_string_wchar_const_ptr(this);
5196 return ret;
5199 /* ?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 */
5200 /* ?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 */
5201 /* ?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 */
5202 /* ?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 */
5203 /* ?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 */
5204 /* ?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 */
5205 /* ?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 */
5206 /* ?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 */
5207 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_end, 8)
5208 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_end(
5209 basic_string_wchar *this, String_iterator_wchar *ret)
5211 TRACE("%p\n", this);
5213 ret->bstr = this;
5214 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
5215 return ret;
5218 /* ?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 */
5219 /* ?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 */
5220 /* ?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 */
5221 /* ?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 */
5222 /* ?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 */
5223 /* ?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 */
5224 /* ?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 */
5225 /* ?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 */
5226 /* ?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 */
5227 /* ?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 */
5228 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rbegin, 8)
5229 String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rbegin(
5230 basic_string_wchar *this, String_reverse_iterator_wchar *ret)
5232 TRACE("%p\n", this);
5234 #if _MSVCP_VER == 80
5235 ret->cont = NULL;
5236 #endif
5237 ret->bstr = this;
5238 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
5239 return ret;
5242 /* ?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 */
5243 /* ?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 */
5244 /* ?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 */
5245 /* ?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 */
5246 /* ?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 */
5247 /* ?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 */
5248 /* ?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 */
5249 /* ?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 */
5250 /* ?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 */
5251 /* ?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 */
5252 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rend, 8)
5253 String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rend(
5254 basic_string_wchar *this, String_reverse_iterator_wchar *ret)
5256 TRACE("%p\n", this);
5258 #if _MSVCP_VER == 80
5259 ret->cont = NULL;
5260 #endif
5261 ret->bstr = this;
5262 ret->pos = basic_string_wchar_const_ptr(this);
5263 return ret;
5266 #endif /* _MSVCP_VER < 80 */