mfplat: Remove duplicated GUID entry from attribute tracing.
[wine/zf.git] / dlls / msvcp90 / string.c
blob2be64a5ff3544b206fc4f3c74c08350df743bcfc
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 <stdarg.h>
21 #include "msvcp90.h"
22 #include "stdio.h"
24 #include "windef.h"
25 #include "winbase.h"
26 #include "wine/debug.h"
27 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
29 #if _MSVCP_VER <= 90
30 #define STRING_ALLOCATOR(this) ((this)->allocator)
31 #elif _MSVCP_VER == 100
32 #define STRING_ALLOCATOR(this) (&(this)->allocator)
33 #else
34 #define STRING_ALLOCATOR(this) NULL
35 #endif
37 /* size_t_noverify structure */
38 typedef struct {
39 size_t val;
40 } size_t_noverify;
42 /* allocator class */
43 typedef struct {
44 char empty_struct;
45 } allocator;
47 /* char_traits<char> */
48 /* ?assign@?$char_traits@D@std@@SAXAADABD@Z */
49 /* ?assign@?$char_traits@D@std@@SAXAEADAEBD@Z */
50 void CDECL MSVCP_char_traits_char_assign(char *ch, const char *assign)
52 *ch = *assign;
55 /* ?eq@?$char_traits@D@std@@SA_NABD0@Z */
56 /* ?eq@?$char_traits@D@std@@SA_NAEBD0@Z */
57 bool CDECL MSVCP_char_traits_char_eq(const char *ch1, const char *ch2)
59 return *ch1 == *ch2;
62 /* ?lt@?$char_traits@D@std@@SA_NABD0@Z */
63 /* ?lt@?$char_traits@D@std@@SA_NAEBD0@Z */
64 bool CDECL MSVCP_char_traits_lt(const char *ch1, const char *ch2)
66 return *ch1 < *ch2;
69 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
70 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
71 int CDECL MSVCP_char_traits_char_compare(
72 const char *s1, const char *s2, size_t count)
74 int ret = memcmp(s1, s2, count);
75 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
78 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
79 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
80 size_t CDECL MSVCP_char_traits_char_length(const char *str)
82 return strlen(str);
85 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
86 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
87 char* CDECL MSVCP_char_traits_char__Copy_s(char *dest,
88 size_t size, const char *src, size_t count)
90 memcpy_s(dest, size, src, count);
91 return dest;
94 /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */
95 /* ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
96 char* CDECL MSVCP_char_traits_char_copy(
97 char *dest, const char *src, size_t count)
99 return MSVCP_char_traits_char__Copy_s(dest, count, src, count);
102 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
103 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
104 const char * CDECL MSVCP_char_traits_char_find(
105 const char *str, size_t range, const char *c)
107 return memchr(str, *c, range);
110 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
111 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
112 char* CDECL MSVCP_char_traits_char__Move_s(char *dest,
113 size_t size, const char *src, size_t count)
115 memmove_s(dest, size, src, count);
116 return dest;
119 /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */
120 /* ?move@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
121 char* CDECL MSVCP_char_traits_char_move(
122 char *dest, const char *src, size_t count)
124 return MSVCP_char_traits_char__Move_s(dest, count, src, count);
127 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
128 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
129 char* CDECL MSVCP_char_traits_char_assignn(char *str, size_t num, char c)
131 return memset(str, c, num);
134 /* ?to_char_type@?$char_traits@D@std@@SADABH@Z */
135 /* ?to_char_type@?$char_traits@D@std@@SADAEBH@Z */
136 char CDECL MSVCP_char_traits_char_to_char_type(const int *i)
138 return (char)*i;
141 /* ?to_int_type@?$char_traits@D@std@@SAHABD@Z */
142 /* ?to_int_type@?$char_traits@D@std@@SAHAEBD@Z */
143 int CDECL MSVCP_char_traits_char_to_int_type(const char *ch)
145 return (unsigned char)*ch;
148 /* ?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z */
149 /* ?eq_int_type@?$char_traits@D@std@@SA_NAEBH0@Z */
150 bool CDECL MSVCP_char_traits_char_eq_int_type(const int *i1, const int *i2)
152 return *i1 == *i2;
155 /* ?eof@?$char_traits@D@std@@SAHXZ */
156 int CDECL MSVCP_char_traits_char_eof(void)
158 return EOF;
161 /* ?not_eof@?$char_traits@D@std@@SAHABH@Z */
162 /* ?not_eof@?$char_traits@D@std@@SAHAEBH@Z */
163 int CDECL MSVCP_char_traits_char_not_eof(int *in)
165 return (*in==EOF ? !EOF : *in);
169 /* char_traits<wchar_t> */
170 /* ?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z */
171 /* ?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z */
172 void CDECL MSVCP_char_traits_wchar_assign(wchar_t *ch,
173 const wchar_t *assign)
175 *ch = *assign;
178 /* ?eq@?$char_traits@_W@std@@SA_NAB_W0@Z */
179 /* ?eq@?$char_traits@_W@std@@SA_NAEB_W0@Z */
180 bool CDECL MSVCP_char_traits_wchar_eq(wchar_t *ch1, wchar_t *ch2)
182 return *ch1 == *ch2;
185 /* ?lt@?$char_traits@_W@std@@SA_NAB_W0@Z */
186 /* ?lt@?$char_traits@_W@std@@SA_NAEB_W0@Z */
187 bool CDECL MSVCP_char_traits_wchar_lt(const wchar_t *ch1,
188 const wchar_t *ch2)
190 return *ch1 < *ch2;
193 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
194 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
195 int CDECL MSVCP_char_traits_wchar_compare(const wchar_t *s1,
196 const wchar_t *s2, size_t count)
198 int ret = memcmp(s1, s2, count * sizeof(wchar_t));
199 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
202 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
203 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
204 size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str)
206 return wcslen((WCHAR*)str);
209 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
210 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
211 wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest,
212 size_t size, const wchar_t *src, size_t count)
214 memcpy_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
215 return dest;
218 /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
219 /* ?copy@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
220 wchar_t* CDECL MSVCP_char_traits_wchar_copy(wchar_t *dest,
221 const wchar_t *src, size_t count)
223 return MSVCP_char_traits_wchar__Copy_s(dest, count, src, count);
226 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
227 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
228 const wchar_t* CDECL MSVCP_char_traits_wchar_find(
229 const wchar_t *str, size_t range, const wchar_t *c)
231 size_t i=0;
233 for(i=0; i<range; i++)
234 if(str[i] == *c)
235 return str+i;
237 return NULL;
240 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
241 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
242 wchar_t* CDECL MSVCP_char_traits_wchar__Move_s(wchar_t *dest,
243 size_t size, const wchar_t *src, size_t count)
245 memmove_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
246 return dest;
249 /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
250 /* ?move@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
251 wchar_t* CDECL MSVCP_char_traits_wchar_move(wchar_t *dest,
252 const wchar_t *src, size_t count)
254 return MSVCP_char_traits_wchar__Move_s(dest, count, src, count);
257 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
258 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
259 wchar_t* CDECL MSVCP_char_traits_wchar_assignn(wchar_t *str,
260 size_t num, wchar_t c)
262 size_t i;
264 for(i=0; i<num; i++)
265 str[i] = c;
267 return str;
270 /* ?to_char_type@?$char_traits@_W@std@@SA_WABG@Z */
271 /* ?to_char_type@?$char_traits@_W@std@@SA_WAEBG@Z */
272 wchar_t CDECL MSVCP_char_traits_wchar_to_char_type(const unsigned short *i)
274 return *i;
277 /* ?to_int_type@?$char_traits@_W@std@@SAGAB_W@Z */
278 /* ?to_int_type@?$char_traits@_W@std@@SAGAEB_W@Z */
279 unsigned short CDECL MSVCP_char_traits_wchar_to_int_type(const wchar_t *ch)
281 return *ch;
284 /* ?eq_int_type@?$char_traits@_W@std@@SA_NABG0@Z */
285 /* ?eq_int_type@?$char_traits@_W@std@@SA_NAEBG0@Z */
286 bool CDECL MSVCP_char_traits_wchar_eq_int_tpe(const unsigned short *i1,
287 const unsigned short *i2)
289 return *i1 == *i2;
292 /* ?eof@?$char_traits@_W@std@@SAGXZ */
293 unsigned short CDECL MSVCP_char_traits_wchar_eof(void)
295 return WEOF;
298 /* ?not_eof@?$char_traits@_W@std@@SAGABG@Z */
299 /* ?not_eof@?$char_traits@_W@std@@SAGAEBG@Z */
300 unsigned short CDECL MSVCP_char_traits_wchar_not_eof(const unsigned short *in)
302 return (*in==WEOF ? !WEOF : *in);
306 /* char_traits<unsigned short> */
307 /* ?assign@?$char_traits@G@std@@SAXAAGABG@Z */
308 /* ?assign@?$char_traits@G@std@@SAXAEAGAEBG@Z */
309 void CDECL MSVCP_char_traits_short_assign(unsigned short *ch,
310 const unsigned short *assign)
312 *ch = *assign;
315 /* ?eq@?$char_traits@G@std@@SA_NABG0@Z */
316 /* ?eq@?$char_traits@G@std@@SA_NAEBG0@Z */
317 bool CDECL MSVCP_char_traits_short_eq(const unsigned short *ch1,
318 const unsigned short *ch2)
320 return *ch1 == *ch2;
323 /* ?lt@?$char_traits@G@std@@SA_NABG0@Z */
324 /* ?lt@?$char_traits@G@std@@SA_NAEBG0@Z */
325 bool CDECL MSVCP_char_traits_short_lt(const unsigned short *ch1,
326 const unsigned short *ch2)
328 return *ch1 < *ch2;
331 /* ?compare@?$char_traits@G@std@@SAHPBG0I@Z */
332 /* ?compare@?$char_traits@G@std@@SAHPEBG0_K@Z */
333 int CDECL MSVCP_char_traits_short_compare(const unsigned short *s1,
334 const unsigned short *s2, size_t count)
336 size_t i;
338 for(i=0; i<count; i++)
339 if(s1[i] != s2[i])
340 return (s1[i] < s2[i] ? -1 : 1);
342 return 0;
345 /* ?length@?$char_traits@G@std@@SAIPBG@Z */
346 /* ?length@?$char_traits@G@std@@SA_KPEBG@Z */
347 size_t CDECL MSVCP_char_traits_short_length(const unsigned short *str)
349 size_t len;
351 for(len=0; str[len]; len++);
353 return len;
356 /* ?_Copy_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
357 /* ?_Copy_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
358 unsigned short * CDECL MSVCP_char_traits_short__Copy_s(unsigned short *dest,
359 size_t size, const unsigned short *src, size_t count)
361 memcpy_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
362 return dest;
365 /* ?copy@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
366 /* ?copy@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
367 unsigned short* CDECL MSVCP_char_traits_short_copy(unsigned short *dest,
368 const unsigned short *src, size_t count)
370 return MSVCP_char_traits_short__Copy_s(dest, count, src, count);
373 /* ?find@?$char_traits@G@std@@SAPBGPBGIABG@Z */
374 /* ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z */
375 const unsigned short* CDECL MSVCP_char_traits_short_find(
376 const unsigned short *str, size_t range, const unsigned short *c)
378 size_t i;
380 for(i=0; i<range; i++)
381 if(str[i] == *c)
382 return str+i;
384 return NULL;
387 /* ?_Move_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
388 /* ?_Move_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
389 unsigned short* CDECL MSVCP_char_traits_short__Move_s(unsigned short *dest,
390 size_t size, const unsigned short *src, size_t count)
392 memmove_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
393 return dest;
396 /* ?move@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
397 /* ?move@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
398 unsigned short* CDECL MSVCP_char_traits_short_move(unsigned short *dest,
399 const unsigned short *src, size_t count)
401 return MSVCP_char_traits_short__Move_s(dest, count, src, count);
404 /* ?assign@?$char_traits@G@std@@SAPAGPAGIG@Z */
405 /* ?assign@?$char_traits@G@std@@SAPEAGPEAG_KG@Z */
406 unsigned short* CDECL MSVCP_char_traits_short_assignn(unsigned short *str,
407 size_t num, unsigned short c)
409 size_t i;
411 for(i=0; i<num; i++)
412 str[i] = c;
414 return str;
417 /* ?to_char_type@?$char_traits@G@std@@SAGABG@Z */
418 /* ?to_char_type@?$char_traits@G@std@@SAGAEBG@Z */
419 unsigned short CDECL MSVCP_char_traits_short_to_char_type(const unsigned short *i)
421 return *i;
424 /* ?to_int_type@?$char_traits@G@std@@SAGABG@Z */
425 /* ?to_int_type@?$char_traits@G@std@@SAGAEBG@Z */
426 unsigned short CDECL MSVCP_char_traits_short_to_int_type(const unsigned short *ch)
428 return *ch;
431 /* ?eq_int_type@?$char_traits@G@std@@SA_NABG0@Z */
432 /* ?eq_int_type@?$char_traits@G@std@@SA_NAEBG0@Z */
433 bool CDECL MSVCP_char_traits_short_eq_int_type(unsigned short *i1,
434 unsigned short *i2)
436 return *i1 == *i2;
439 /* ?eof@?$char_traits@G@std@@SAGXZ */
440 unsigned short CDECL MSVCP_char_traits_short_eof(void)
442 return -1;
445 /* ?not_eof@?$char_traits@G@std@@SAGABG@Z */
446 /* ?not_eof@?$char_traits@G@std@@SAGAEBG@Z */
447 unsigned short CDECL MSVCP_char_traits_short_not_eof(const unsigned short *in)
449 return (*in==(unsigned short)-1 ? 0 : *in);
453 /* _String_base */
454 /* ?_Xlen@_String_base@std@@SAXXZ */
455 void CDECL MSVCP__String_base_Xlen(void)
457 static const char msg[] = "string too long";
459 TRACE("\n");
460 throw_exception(EXCEPTION_LENGTH_ERROR, msg);
463 /* ?_Xlen@_String_base@std@@QBEXXZ */
464 DEFINE_THISCALL_WRAPPER(_String_base__Xlen, 4)
465 void __thiscall _String_base__Xlen(const void/*_String_base*/ *this)
467 MSVCP__String_base_Xlen();
470 /* ?_Xran@_String_base@std@@SAXXZ */
471 void CDECL MSVCP__String_base_Xran(void)
473 static const char msg[] = "invalid string position";
475 TRACE("\n");
476 throw_exception(EXCEPTION_OUT_OF_RANGE, msg);
479 /* ?_Xran@_String_base@std@@QBEXXZ */
480 DEFINE_THISCALL_WRAPPER(_String_base__Xran, 4)
481 void __thiscall _String_base__Xran(const void/*_String_base*/ *this)
483 MSVCP__String_base_Xran();
486 /* ?_Xinvarg@_String_base@std@@SAXXZ */
487 void CDECL MSVCP__String_base_Xinvarg(void)
489 static const char msg[] = "invalid string argument";
491 TRACE("\n");
492 throw_exception(EXCEPTION_INVALID_ARGUMENT, msg);
496 /* basic_string<char, char_traits<char>, allocator<char>> */
497 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
498 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
499 const size_t MSVCP_basic_string_char_npos = -1;
501 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ */
502 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAPEADXZ */
503 DEFINE_THISCALL_WRAPPER(basic_string_char_ptr, 4)
504 char* __thiscall basic_string_char_ptr(basic_string_char *this)
506 if(this->res < BUF_SIZE_CHAR)
507 return this->data.buf;
508 return this->data.ptr;
511 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ */
512 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEBAPEBDXZ */
513 DEFINE_THISCALL_WRAPPER(basic_string_char_const_ptr, 4)
514 const char* __thiscall basic_string_char_const_ptr(const basic_string_char *this)
516 if(this->res < BUF_SIZE_CHAR)
517 return this->data.buf;
518 return this->data.ptr;
521 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z */
522 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K@Z */
523 DEFINE_THISCALL_WRAPPER(basic_string_char_eos, 8)
524 void __thiscall basic_string_char_eos(basic_string_char *this, size_t len)
526 static const char nullbyte = '\0';
528 this->size = len;
529 MSVCP_char_traits_char_assign(basic_string_char_ptr(this)+len, &nullbyte);
532 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z */
533 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z */
534 DEFINE_THISCALL_WRAPPER(basic_string_char_inside, 8)
535 bool __thiscall basic_string_char_inside(
536 basic_string_char *this, const char *ptr)
538 char *cstr = basic_string_char_ptr(this);
540 return ptr>=cstr && ptr<cstr+this->size;
543 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z */
544 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_N_K@Z */
545 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy, 12)
546 void __thiscall basic_string_char_tidy(basic_string_char *this,
547 bool built, size_t new_size)
549 if(built && BUF_SIZE_CHAR<=this->res) {
550 char *ptr = this->data.ptr;
552 if(new_size > 0)
553 MSVCP_char_traits_char__Copy_s(this->data.buf, BUF_SIZE_CHAR, ptr, new_size);
554 MSVCP_allocator_char_deallocate(STRING_ALLOCATOR(this), ptr, this->res+1);
557 this->res = BUF_SIZE_CHAR-1;
558 basic_string_char_eos(this, new_size);
561 /* Exported only from msvcp60/70 */
562 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
563 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
564 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy_built, 8)
565 void __thiscall basic_string_char_tidy_built(basic_string_char *this, bool built)
567 basic_string_char_tidy(this, built, 0);
570 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z */
571 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_N_K_N@Z */
572 DEFINE_THISCALL_WRAPPER(basic_string_char_grow, 12)
573 bool __thiscall basic_string_char_grow(
574 basic_string_char *this, size_t new_size, bool trim)
576 if(this->res < new_size) {
577 size_t new_res = new_size, len = this->size;
578 char *ptr;
580 new_res |= 0xf;
582 if(new_res/3 < this->res/2)
583 new_res = this->res + this->res/2;
585 ptr = MSVCP_allocator_char_allocate(STRING_ALLOCATOR(this), new_res+1);
586 if(!ptr)
587 ptr = MSVCP_allocator_char_allocate(STRING_ALLOCATOR(this), new_size+1);
588 else
589 new_size = new_res;
590 if(!ptr) {
591 ERR("Out of memory\n");
592 basic_string_char_tidy(this, TRUE, 0);
593 return FALSE;
596 MSVCP_char_traits_char__Copy_s(ptr, new_size,
597 basic_string_char_ptr(this), this->size);
598 basic_string_char_tidy(this, TRUE, 0);
599 this->data.ptr = ptr;
600 this->res = new_size;
601 basic_string_char_eos(this, len);
602 } else if(trim && new_size < BUF_SIZE_CHAR)
603 basic_string_char_tidy(this, TRUE,
604 new_size<this->size ? new_size : this->size);
605 else if(new_size == 0)
606 basic_string_char_eos(this, 0);
608 return (new_size>0);
611 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z */
612 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0@Z */
613 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy, 12)
614 void __thiscall basic_string_char__Copy(basic_string_char *this,
615 size_t new_size, size_t copy_len)
617 TRACE("%p %Iu %Iu\n", this, new_size, copy_len);
619 if(!basic_string_char_grow(this, new_size, FALSE))
620 return;
621 basic_string_char_eos(this, copy_len);
624 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
625 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
626 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator, 8)
627 allocator* __thiscall basic_string_char_get_allocator(const basic_string_char *this, allocator *ret)
629 TRACE("%p\n", this);
630 return ret;
633 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
634 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
635 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase, 12)
636 basic_string_char* __thiscall MSVCP_basic_string_char_erase(
637 basic_string_char *this, size_t pos, size_t len)
639 TRACE("%p %Iu %Iu\n", this, pos, len);
641 if(pos > this->size)
642 MSVCP__String_base_Xran();
644 if(len > this->size-pos)
645 len = this->size-pos;
647 if(len) {
648 MSVCP_char_traits_char__Move_s(basic_string_char_ptr(this)+pos,
649 this->res-pos, basic_string_char_ptr(this)+pos+len,
650 this->size-pos-len);
651 basic_string_char_eos(this, this->size-len);
654 return this;
657 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
658 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
659 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr, 16)
660 basic_string_char* __thiscall MSVCP_basic_string_char_assign_substr(
661 basic_string_char *this, const basic_string_char *assign,
662 size_t pos, size_t len)
664 TRACE("%p %p %Iu %Iu\n", this, assign, pos, len);
666 if(assign->size < pos)
667 MSVCP__String_base_Xran();
669 if(len > assign->size-pos)
670 len = assign->size-pos;
672 if(this == assign) {
673 MSVCP_basic_string_char_erase(this, pos+len, MSVCP_basic_string_char_npos);
674 MSVCP_basic_string_char_erase(this, 0, pos);
675 } else if(basic_string_char_grow(this, len, FALSE)) {
676 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
677 this->res, basic_string_char_const_ptr(assign)+pos, len);
678 basic_string_char_eos(this, len);
681 return this;
684 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
685 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
686 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
687 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
688 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign, 8)
689 basic_string_char* __thiscall MSVCP_basic_string_char_assign(
690 basic_string_char *this, const basic_string_char *assign)
692 return MSVCP_basic_string_char_assign_substr(this, assign,
693 0, MSVCP_basic_string_char_npos);
696 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
697 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
698 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len, 12)
699 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr_len(
700 basic_string_char *this, const char *str, size_t len)
702 TRACE("%p %s %Iu\n", this, debugstr_an(str, len), len);
704 if(basic_string_char_inside(this, str))
705 return MSVCP_basic_string_char_assign_substr(this, this,
706 str-basic_string_char_ptr(this), len);
707 else if(basic_string_char_grow(this, len, FALSE)) {
708 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
709 this->res, str, len);
710 basic_string_char_eos(this, len);
713 return this;
716 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
717 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
718 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch, 8)
719 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ch(
720 basic_string_char *this, char ch)
722 return MSVCP_basic_string_char_assign_cstr_len(this, &ch, 1);
725 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
726 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
727 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
728 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
729 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr, 8)
730 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr(
731 basic_string_char *this, const char *str)
733 return MSVCP_basic_string_char_assign_cstr_len(this, str,
734 MSVCP_char_traits_char_length(str));
737 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
738 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
739 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn, 12)
740 basic_string_char* __thiscall MSVCP_basic_string_char_assignn(
741 basic_string_char *this, size_t count, char ch)
743 TRACE("%p %Iu %c\n", this, count, ch);
745 basic_string_char_grow(this, count, FALSE);
746 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this), count, ch);
747 basic_string_char_eos(this, count);
748 return this;
751 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
752 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
753 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr, 12)
754 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ptr_ptr(
755 basic_string_char *this, const char *first, const char *last)
757 return MSVCP_basic_string_char_assign_cstr_len(this, first, last-first);
760 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z */
761 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0D@Z */
762 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Chassign, 16)
763 void __thiscall MSVCP_basic_string_char_Chassign(basic_string_char *this,
764 size_t off, size_t count, char ch)
766 TRACE("%p %Iu %Iu %c\n", this, off, count, ch);
767 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+off, count, ch);
770 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADIII@Z */
771 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K11@Z */
772 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Copy_s, 20)
773 size_t __thiscall MSVCP_basic_string_char_Copy_s(const basic_string_char *this,
774 char *dest, size_t size, size_t count, size_t off)
776 TRACE("%p %p %Iu %Iu %Iu\n", this, dest, size, count, off);
778 if(this->size < off)
779 MSVCP__String_base_Xran();
781 if(count > this->size-off)
782 count = this->size-off;
784 MSVCP_char_traits_char__Copy_s(dest, size,
785 basic_string_char_const_ptr(this)+off, count);
786 return count;
789 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
790 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
791 DEFINE_THISCALL_WRAPPER(basic_string_char_copy, 16)
792 size_t __thiscall basic_string_char_copy(const basic_string_char *this,
793 char *dest, size_t count, size_t off)
795 return MSVCP_basic_string_char_Copy_s(this, dest, count, count, off);
798 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
799 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
800 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
801 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
802 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str, 4)
803 const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char *this)
805 TRACE("%p\n", this);
806 return basic_string_char_const_ptr(this);
809 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
810 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
811 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity, 4)
812 size_t __thiscall MSVCP_basic_string_char_capacity(basic_string_char *this)
814 TRACE("%p\n", this);
815 return this->res;
818 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
819 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
820 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve, 8)
821 void __thiscall MSVCP_basic_string_char_reserve(basic_string_char *this, size_t size)
823 size_t len;
825 TRACE("%p %Iu\n", this, size);
827 len = this->size;
828 if(len > size)
829 return;
831 if(basic_string_char_grow(this, size, TRUE))
832 basic_string_char_eos(this, len);
835 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
836 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
837 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor, 4)
838 basic_string_char* __thiscall MSVCP_basic_string_char_ctor(basic_string_char *this)
840 TRACE("%p\n", this);
842 basic_string_char_tidy(this, FALSE, 0);
843 return this;
846 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
847 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
848 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor, 8)
849 basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(
850 basic_string_char *this, const basic_string_char *copy)
852 TRACE("%p %p\n", this, copy);
854 basic_string_char_tidy(this, FALSE, 0);
855 MSVCP_basic_string_char_assign(this, copy);
856 return this;
859 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
860 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
861 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr, 8)
862 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr(
863 basic_string_char *this, const char *str)
865 TRACE("%p %s\n", this, debugstr_a(str));
867 basic_string_char_tidy(this, FALSE, 0);
868 MSVCP_basic_string_char_assign_cstr(this, str);
869 return this;
872 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
873 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
874 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc, 12)
875 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_alloc(
876 basic_string_char *this, const char *str, const void *alloc)
878 return MSVCP_basic_string_char_ctor_cstr(this, str);
881 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
882 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
883 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len, 12)
884 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len(
885 basic_string_char *this, const char *str, size_t len)
887 TRACE("%p %s %Iu\n", this, debugstr_an(str, len), len);
889 basic_string_char_tidy(this, FALSE, 0);
890 MSVCP_basic_string_char_assign_cstr_len(this, str, len);
891 return this;
894 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
895 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
896 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc, 16)
897 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len_alloc(
898 basic_string_char *this, const char *str, size_t len, const void *alloc)
900 return MSVCP_basic_string_char_ctor_cstr_len(this, str, len);
903 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z */
904 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z */
905 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr, 16)
906 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr(
907 basic_string_char *this, const basic_string_char *assign,
908 size_t pos, size_t len)
910 TRACE("%p %p %Iu %Iu\n", this, assign, pos, len);
912 basic_string_char_tidy(this, FALSE, 0);
913 MSVCP_basic_string_char_assign_substr(this, assign, pos, len);
914 return this;
917 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
918 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
919 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc, 20)
920 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr_alloc(
921 basic_string_char *this, const basic_string_char *assign,
922 size_t pos, size_t len, const void *alloc)
924 return MSVCP_basic_string_char_ctor_substr(this, assign, pos, len);
927 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
928 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
929 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc, 8)
930 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_alloc(
931 basic_string_char *this, const void *alloc)
933 TRACE("%p %p\n", this, alloc);
935 basic_string_char_tidy(this, FALSE, 0);
936 return this;
939 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z */
940 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z */
941 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch, 12)
942 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch(basic_string_char *this,
943 size_t count, char ch)
945 TRACE("%p %Iu %c\n", this, count, ch);
947 basic_string_char_tidy(this, FALSE, 0);
948 MSVCP_basic_string_char_assignn(this, count, ch);
949 return this;
952 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
953 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
954 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc, 16)
955 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char *this,
956 size_t count, char ch, const void *alloc)
958 return MSVCP_basic_string_char_ctor_ch(this, count, ch);
961 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z */
962 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z */
963 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ptr_ptr, 12)
964 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ptr_ptr(basic_string_char *this,
965 const char *first, const char *last)
967 return MSVCP_basic_string_char_ctor_cstr_len(this, first, last-first);
970 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
971 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
972 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4)
973 void* __thiscall MSVCP_basic_string_char_dtor(basic_string_char *this)
975 TRACE("%p\n", this);
976 basic_string_char_tidy(this, TRUE, 0);
977 return NULL; /* FEAR 1 installer expects EAX set to 0 */
980 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
981 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
982 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
983 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
984 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length, 4)
985 size_t __thiscall MSVCP_basic_string_char_length(const basic_string_char *this)
987 TRACE("%p\n", this);
988 return this->size;
991 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
992 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
993 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size, 4)
994 size_t __thiscall basic_string_char_max_size(const basic_string_char *this)
996 TRACE("%p\n", this);
997 return MSVCP_allocator_char_max_size(STRING_ALLOCATOR(this))-1;
1000 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1001 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1002 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty, 4)
1003 bool __thiscall MSVCP_basic_string_char_empty(basic_string_char *this)
1005 TRACE("%p\n", this);
1006 return this->size == 0;
1009 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1010 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1011 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap, 8)
1012 void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_string_char *str)
1014 if(this != str) {
1015 char tmp[sizeof(this->data)];
1016 const size_t size = this->size;
1017 const size_t res = this->res;
1019 memcpy(tmp, this->data.buf, sizeof(this->data));
1020 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
1021 memcpy(str->data.buf, tmp, sizeof(this->data));
1023 this->size = str->size;
1024 this->res = str->res;
1026 str->size = size;
1027 str->res = res;
1031 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1032 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1033 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr, 16)
1034 basic_string_char* __thiscall MSVCP_basic_string_char_substr(basic_string_char *this,
1035 basic_string_char *ret, size_t off, size_t len)
1037 TRACE("%p %Iu %Iu\n", this, off, len);
1039 MSVCP_basic_string_char_ctor_substr(ret, this, off, len);
1040 return ret;
1043 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1044 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1045 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr, 16)
1046 basic_string_char* __thiscall MSVCP_basic_string_char_append_substr(basic_string_char *this,
1047 const basic_string_char *append, size_t offset, size_t count)
1049 TRACE("%p %p %Iu %Iu\n", this, append, offset, count);
1051 if(append->size < offset)
1052 MSVCP__String_base_Xran();
1054 if(count > append->size-offset)
1055 count = append->size-offset;
1057 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1058 MSVCP__String_base_Xlen();
1060 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1061 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1062 this->res-this->size, basic_string_char_const_ptr(append)+offset, count);
1063 basic_string_char_eos(this, this->size+count);
1066 return this;
1069 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1070 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1071 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1072 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1073 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append, 8)
1074 basic_string_char* __thiscall MSVCP_basic_string_char_append(
1075 basic_string_char *this, const basic_string_char *append)
1077 return MSVCP_basic_string_char_append_substr(this, append,
1078 0, MSVCP_basic_string_char_npos);
1081 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1082 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1083 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len, 12)
1084 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr_len(
1085 basic_string_char *this, const char *append, size_t count)
1087 TRACE("%p %s %Iu\n", this, debugstr_an(append, count), count);
1089 if(basic_string_char_inside(this, append))
1090 return MSVCP_basic_string_char_append_substr(this, this,
1091 append-basic_string_char_ptr(this), count);
1093 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1094 MSVCP__String_base_Xlen();
1096 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1097 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1098 this->res-this->size, append, count);
1099 basic_string_char_eos(this, this->size+count);
1102 return this;
1105 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1106 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1107 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1108 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1109 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr, 8)
1110 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr(
1111 basic_string_char *this, const char *append)
1113 return MSVCP_basic_string_char_append_cstr_len(this, append,
1114 MSVCP_char_traits_char_length(append));
1117 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1118 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1119 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end, 12)
1120 basic_string_char* __thiscall MSVCP_basic_string_char_append_beg_end(
1121 basic_string_char *this, const char *beg, const char *end)
1123 return MSVCP_basic_string_char_append_cstr_len(this, beg, end-beg);
1126 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1127 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1128 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch, 12)
1129 basic_string_char* __thiscall MSVCP_basic_string_char_append_len_ch(
1130 basic_string_char *this, size_t count, char ch)
1132 TRACE("%p %Iu %c\n", this, count, ch);
1134 if(MSVCP_basic_string_char_npos-this->size <= count)
1135 MSVCP__String_base_Xlen();
1137 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1138 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+this->size, count, ch);
1139 basic_string_char_eos(this, this->size+count);
1142 return this;
1145 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1146 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1147 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXD@Z */
1148 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXD@Z */
1149 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch, 8)
1150 basic_string_char* __thiscall MSVCP_basic_string_char_append_ch(
1151 basic_string_char *this, char ch)
1153 return MSVCP_basic_string_char_append_len_ch(this, 1, ch);
1156 /* ??$?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 */
1157 /* ??$?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 */
1158 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1159 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1160 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char *ret,
1161 const basic_string_char *left, const char *right)
1163 TRACE("%p %s\n", left, debugstr_a(right));
1165 MSVCP_basic_string_char_copy_ctor(ret, left);
1166 MSVCP_basic_string_char_append_cstr(ret, right);
1167 return ret;
1170 /* ??$?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 */
1171 /* ??$?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 */
1172 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1173 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1174 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char *ret,
1175 const char *left, const basic_string_char *right)
1177 TRACE("%s %p\n", debugstr_a(left), right);
1179 MSVCP_basic_string_char_ctor_cstr(ret, left);
1180 MSVCP_basic_string_char_append(ret, right);
1181 return ret;
1184 /* ??$?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 */
1185 /* ??$?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 */
1186 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1187 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1188 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate(basic_string_char *ret,
1189 const basic_string_char *left, const basic_string_char *right)
1191 TRACE("%p %p\n", left, right);
1193 MSVCP_basic_string_char_copy_ctor(ret, left);
1194 MSVCP_basic_string_char_append(ret, right);
1195 return ret;
1198 /* ??$?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 */
1199 /* ??$?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 */
1200 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1201 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1202 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char *ret,
1203 const basic_string_char *left, char right)
1205 TRACE("%p %c\n", left, right);
1207 MSVCP_basic_string_char_copy_ctor(ret, left);
1208 MSVCP_basic_string_char_append_ch(ret, right);
1209 return ret;
1212 /* ??$?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 */
1213 /* ??$?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 */
1214 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1215 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1216 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char *ret,
1217 char left, const basic_string_char *right)
1219 TRACE("%c %p\n", left, right);
1221 MSVCP_basic_string_char_ctor_cstr_len(ret, &left, 1);
1222 MSVCP_basic_string_char_append(ret, right);
1223 return ret;
1226 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
1227 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
1228 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20)
1229 int __thiscall MSVCP_basic_string_char_compare_substr_cstr_len(
1230 const basic_string_char *this, size_t pos, size_t num,
1231 const char *str, size_t count)
1233 int ans;
1235 TRACE("%p %Iu %Iu %s %Iu\n", this, pos, num, debugstr_an(str, count), count);
1237 if(this->size < pos)
1238 MSVCP__String_base_Xran();
1240 if(num > this->size-pos)
1241 num = this->size-pos;
1243 ans = MSVCP_char_traits_char_compare(basic_string_char_const_ptr(this)+pos,
1244 str, num>count ? count : num);
1245 if(ans)
1246 return ans;
1248 if(num > count)
1249 ans = 1;
1250 else if(num < count)
1251 ans = -1;
1252 return ans;
1255 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
1256 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
1257 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr, 16)
1258 int __thiscall MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char *this,
1259 size_t pos, size_t num, const char *str)
1261 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1262 str, MSVCP_char_traits_char_length(str));
1265 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
1266 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
1267 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr, 8)
1268 int __thiscall MSVCP_basic_string_char_compare_cstr(
1269 const basic_string_char *this, const char *str)
1271 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1272 str, MSVCP_char_traits_char_length(str));
1275 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
1276 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
1277 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr, 24)
1278 int __thiscall MSVCP_basic_string_char_compare_substr_substr(
1279 const basic_string_char *this, size_t pos, size_t num,
1280 const basic_string_char *compare, size_t off, size_t count)
1282 TRACE("%p %Iu %Iu %p %Iu %Iu\n", this, pos, num, compare, off, count);
1284 if(compare->size < off)
1285 MSVCP__String_base_Xran();
1287 if(count > compare->size-off)
1288 count = compare->size-off;
1290 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1291 basic_string_char_const_ptr(compare)+off, count);
1294 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
1295 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
1296 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr, 16)
1297 int __thiscall MSVCP_basic_string_char_compare_substr(
1298 const basic_string_char *this, size_t pos, size_t num,
1299 const basic_string_char *compare)
1301 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1302 basic_string_char_const_ptr(compare), compare->size);
1305 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
1306 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
1307 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare, 8)
1308 int __thiscall MSVCP_basic_string_char_compare(
1309 const basic_string_char *this, const basic_string_char *compare)
1311 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1312 basic_string_char_const_ptr(compare), compare->size);
1315 /* ??$?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 */
1316 /* ??$?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 */
1317 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1318 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1319 bool __cdecl MSVCP_basic_string_char_equal(
1320 const basic_string_char *left, const basic_string_char *right)
1322 return MSVCP_basic_string_char_compare(left, right) == 0;
1325 /* ??$?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 */
1326 /* ??$?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 */
1327 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1328 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1329 bool __cdecl MSVCP_basic_string_char_equal_str_cstr(
1330 const basic_string_char *left, const char *right)
1332 return MSVCP_basic_string_char_compare_cstr(left, right) == 0;
1335 /* ??$?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 */
1336 /* ??$?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 */
1337 /* ??8std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1338 bool __cdecl MSVCP_basic_string_char_equal_cstr_str(
1339 const char *left, const basic_string_char *right)
1341 return MSVCP_basic_string_char_compare_cstr(right, left) == 0;
1344 /* ??$?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 */
1345 /* ??$?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 */
1346 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1347 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1348 bool __cdecl MSVCP_basic_string_char_not_equal(
1349 const basic_string_char *left, const basic_string_char *right)
1351 return MSVCP_basic_string_char_compare(left, right) != 0;
1354 /* ??$?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 */
1355 /* ??$?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 */
1356 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1357 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1358 bool __cdecl MSVCP_basic_string_char_not_equal_str_cstr(
1359 const basic_string_char *left, const char *right)
1361 return MSVCP_basic_string_char_compare_cstr(left, right) != 0;
1364 /* ??$?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 */
1365 /* ??$?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 */
1366 /* ??9std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1367 /* ??9std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1368 bool __cdecl MSVCP_basic_string_char_not_equal_cstr_str(
1369 const char *left, const basic_string_char *right)
1371 return MSVCP_basic_string_char_compare_cstr(right, left) != 0;
1374 /* ??$?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 */
1375 /* ??$?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 */
1376 bool __cdecl MSVCP_basic_string_char_lower(
1377 const basic_string_char *left, const basic_string_char *right)
1379 return MSVCP_basic_string_char_compare(left, right) < 0;
1382 /* ??$?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 */
1383 /* ??$?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 */
1384 bool __cdecl MSVCP_basic_string_char_lower_bstr_cstr(
1385 const basic_string_char *left, const char *right)
1387 return MSVCP_basic_string_char_compare_cstr(left, right) < 0;
1390 /* ??$?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 */
1391 /* ??$?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 */
1392 bool __cdecl MSVCP_basic_string_char_lower_cstr_bstr(
1393 const char *left, const basic_string_char *right)
1395 return MSVCP_basic_string_char_compare_cstr(right, left) > 0;
1398 /* ??$?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 */
1399 /* ??$?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 */
1400 bool __cdecl MSVCP_basic_string_char_leq(
1401 const basic_string_char *left, const basic_string_char *right)
1403 return MSVCP_basic_string_char_compare(left, right) <= 0;
1406 /* ??$?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 */
1407 /* ??$?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 */
1408 bool __cdecl MSVCP_basic_string_char_leq_bstr_cstr(
1409 const basic_string_char *left, const char *right)
1411 return MSVCP_basic_string_char_compare_cstr(left, right) <= 0;
1414 /* ??$?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 */
1415 /* ??$?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 */
1416 bool __cdecl MSVCP_basic_string_char_leq_cstr_bstr(
1417 const char *left, const basic_string_char *right)
1419 return MSVCP_basic_string_char_compare_cstr(right, left) >= 0;
1422 /* ??$?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 */
1423 /* ??$?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 */
1424 bool __cdecl MSVCP_basic_string_char_greater(
1425 const basic_string_char *left, const basic_string_char *right)
1427 return MSVCP_basic_string_char_compare(left, right) > 0;
1430 /* ??$?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 */
1431 /* ??$?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 */
1432 bool __cdecl MSVCP_basic_string_char_greater_bstr_cstr(
1433 const basic_string_char *left, const char *right)
1435 return MSVCP_basic_string_char_compare_cstr(left, right) > 0;
1438 /* ??$?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 */
1439 /* ??$?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 */
1440 bool __cdecl MSVCP_basic_string_char_greater_cstr_bstr(
1441 const char *left, const basic_string_char *right)
1443 return MSVCP_basic_string_char_compare_cstr(right, left) < 0;
1446 /* ??$?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 */
1447 /* ??$?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 */
1448 bool __cdecl MSVCP_basic_string_char_geq(
1449 const basic_string_char *left, const basic_string_char *right)
1451 return MSVCP_basic_string_char_compare(left, right) >= 0;
1454 /* ??$?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 */
1455 /* ??$?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 */
1456 bool __cdecl MSVCP_basic_string_char_geq_bstr_cstr(
1457 const basic_string_char *left, const char *right)
1459 return MSVCP_basic_string_char_compare_cstr(left, right) >= 0;
1462 /* ??$?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 */
1463 /* ??$?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 */
1464 bool __cdecl MSVCP_basic_string_char_geq_cstr_bstr(
1465 const char *left, const basic_string_char *right)
1467 return MSVCP_basic_string_char_compare_cstr(right, left) <= 0;
1470 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1471 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1472 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr, 16)
1473 size_t __thiscall MSVCP_basic_string_char_find_cstr_substr(
1474 const basic_string_char *this, const char *find, size_t pos, size_t len)
1476 const char *p, *end;
1478 TRACE("%p %s %Iu %Iu\n", this, debugstr_an(find, len), pos, len);
1480 if(len==0 && pos<=this->size)
1481 return pos;
1482 if(pos>=this->size || len>this->size)
1483 return MSVCP_basic_string_char_npos;
1485 end = basic_string_char_const_ptr(this)+this->size-len+1;
1486 for(p=basic_string_char_const_ptr(this)+pos; p<end; p++) {
1487 p = MSVCP_char_traits_char_find(p, end-p, find);
1488 if(!p)
1489 break;
1491 if(!MSVCP_char_traits_char_compare(p, find, len))
1492 return p-basic_string_char_const_ptr(this);
1495 return MSVCP_basic_string_char_npos;
1498 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1499 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1500 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off, 12)
1501 size_t __thiscall MSVCP_basic_string_char_find_cstr_off(
1502 const basic_string_char *this, const char *find, size_t pos)
1504 return MSVCP_basic_string_char_find_cstr_substr(this, find, pos,
1505 MSVCP_char_traits_char_length(find));
1508 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1509 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1510 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off, 12)
1511 size_t __thiscall MSVCP_basic_string_char_find_off(
1512 const basic_string_char *this, const basic_string_char *find, size_t off)
1514 return MSVCP_basic_string_char_find_cstr_substr(this,
1515 basic_string_char_const_ptr(find), off, find->size);
1518 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1519 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1520 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch, 12)
1521 size_t __thiscall MSVCP_basic_string_char_find_ch(
1522 const basic_string_char *this, char ch, size_t pos)
1524 return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1);
1527 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1528 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1529 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr, 16)
1530 size_t __thiscall MSVCP_basic_string_char_rfind_cstr_substr(
1531 const basic_string_char *this, const char *find, size_t pos, size_t len)
1533 const char *p, *end;
1535 TRACE("%p %s %Iu %Iu\n", this, debugstr_an(find, len), pos, len);
1537 if(len==0)
1538 return pos<this->size ? pos : this->size;
1540 if(len > this->size)
1541 return MSVCP_basic_string_char_npos;
1543 if(pos > this->size-len)
1544 pos = this->size-len;
1545 end = basic_string_char_const_ptr(this);
1546 for(p=end+pos; p>=end; p--) {
1547 if(*p==*find && !MSVCP_char_traits_char_compare(p, find, len))
1548 return p-basic_string_char_const_ptr(this);
1551 return MSVCP_basic_string_char_npos;
1554 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1555 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1556 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off, 12)
1557 size_t __thiscall MSVCP_basic_string_char_rfind_cstr_off(
1558 const basic_string_char *this, const char *find, size_t pos)
1560 return MSVCP_basic_string_char_rfind_cstr_substr(this, find, pos,
1561 MSVCP_char_traits_char_length(find));
1564 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1565 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1566 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off, 12)
1567 size_t __thiscall MSVCP_basic_string_char_rfind_off(
1568 const basic_string_char *this, const basic_string_char *find, size_t off)
1570 return MSVCP_basic_string_char_rfind_cstr_substr(this,
1571 basic_string_char_const_ptr(find), off, find->size);
1574 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1575 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1576 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch, 12)
1577 size_t __thiscall MSVCP_basic_string_char_rfind_ch(
1578 const basic_string_char *this, char ch, size_t pos)
1580 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch, pos, 1);
1583 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1584 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1585 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr, 16)
1586 size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr_substr(
1587 const basic_string_char *this, const char *find, size_t off, size_t len)
1589 const char *p, *end;
1591 TRACE("%p %p %Iu %Iu\n", this, find, off, len);
1593 if(len>0 && off<this->size) {
1594 end = basic_string_char_const_ptr(this)+this->size;
1595 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1596 if(MSVCP_char_traits_char_find(find, len, p))
1597 return p-basic_string_char_const_ptr(this);
1600 return MSVCP_basic_string_char_npos;
1603 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1604 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1605 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of, 12)
1606 size_t __thiscall MSVCP_basic_string_char_find_first_of(
1607 const basic_string_char *this, const basic_string_char *find, size_t off)
1609 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1610 basic_string_char_const_ptr(find), off, find->size);
1613 /* ??0?$_Yarn@D@std@@QAE@XZ */
1614 /* ??0?$_Yarn@D@std@@QEAA@XZ */
1615 DEFINE_THISCALL_WRAPPER(_Yarn_char_ctor, 4)
1616 _Yarn_char* __thiscall _Yarn_char_ctor(_Yarn_char *this)
1618 TRACE("(%p)\n", this);
1620 this->str = NULL;
1621 this->null_str = '\0';
1622 return this;
1625 /* ?_Tidy@?$_Yarn@D@std@@AAEXXZ */
1626 /* ?_Tidy@?$_Yarn@D@std@@AEAAXXZ */
1627 DEFINE_THISCALL_WRAPPER(_Yarn_char__Tidy, 4)
1628 void __thiscall _Yarn_char__Tidy(_Yarn_char *this)
1630 TRACE("(%p)\n", this);
1632 if(this->str)
1633 MSVCRT_operator_delete(this->str);
1634 this->str = NULL;
1637 /* ??4?$_Yarn@D@std@@QAEAAV01@PBD@Z */
1638 /* ??4?$_Yarn@D@std@@QEAAAEAV01@PEBD@Z */
1639 DEFINE_THISCALL_WRAPPER(_Yarn_char_op_assign_cstr, 8)
1640 _Yarn_char* __thiscall _Yarn_char_op_assign_cstr(_Yarn_char *this, const char *str)
1642 TRACE("(%p %p)\n", this, str);
1644 if(str != this->str) {
1645 _Yarn_char__Tidy(this);
1647 if(str) {
1648 size_t len = strlen(str);
1650 this->str = MSVCRT_operator_new((len+1)*sizeof(char));
1651 if(!this->str) {
1652 ERR("out of memory\n");
1653 return NULL;
1655 memcpy(this->str, str, (len+1)*sizeof(char));
1658 return this;
1661 /* ??0?$_Yarn@D@std@@QAE@PBD@Z */
1662 /* ??0?$_Yarn@D@std@@QEAA@PEBD@Z */
1663 DEFINE_THISCALL_WRAPPER(_Yarn_char_ctor_cstr, 8)
1664 _Yarn_char* __thiscall _Yarn_char_ctor_cstr(_Yarn_char *this, const char *str)
1666 TRACE("(%p %p)\n", this, str);
1668 _Yarn_char_ctor(this);
1669 return _Yarn_char_op_assign_cstr(this, str);
1672 /* ??4?$_Yarn@D@std@@QAEAAV01@ABV01@@Z */
1673 /* ??4?$_Yarn@D@std@@QEAAAEAV01@AEBV01@@Z */
1674 DEFINE_THISCALL_WRAPPER(_Yarn_char_op_assign, 8)
1675 _Yarn_char* __thiscall _Yarn_char_op_assign(_Yarn_char *this, const _Yarn_char *rhs)
1677 TRACE("(%p %p)\n", this, rhs);
1679 return _Yarn_char_op_assign_cstr(this, rhs->str);
1682 /* ??0?$_Yarn@D@std@@QAE@ABV01@@Z */
1683 /* ??0?$_Yarn@D@std@@QEAA@AEBV01@@Z */
1684 DEFINE_THISCALL_WRAPPER(_Yarn_char_copy_ctor, 8)
1685 _Yarn_char* __thiscall _Yarn_char_copy_ctor(_Yarn_char *this, const _Yarn_char *copy)
1687 TRACE("(%p %p)\n", this, copy);
1689 _Yarn_char_ctor(this);
1690 return _Yarn_char_op_assign(this, copy);
1693 /* ??1?$_Yarn@D@std@@QAE@XZ */
1694 /* ??1?$_Yarn@D@std@@QEAA@XZ */
1695 DEFINE_THISCALL_WRAPPER(_Yarn_char_dtor, 4)
1696 void __thiscall _Yarn_char_dtor(_Yarn_char *this)
1698 TRACE("(%p)\n", this);
1699 _Yarn_char__Tidy(this);
1702 /* ?_C_str@?$_Yarn@D@std@@QBEPBDXZ */
1703 /* ?_C_str@?$_Yarn@D@std@@QEBAPEBDXZ */
1704 /* ?c_str@?$_Yarn@D@std@@QBEPBDXZ */
1705 /* ?c_str@?$_Yarn@D@std@@QEBAPEBDXZ */
1706 DEFINE_THISCALL_WRAPPER(_Yarn_char_c_str, 4)
1707 const char* __thiscall _Yarn_char_c_str(const _Yarn_char *this)
1709 TRACE("(%p)\n", this);
1710 return this->str ? this->str : &this->null_str;
1713 /* ?_Empty@?$_Yarn@D@std@@QBE_NXZ */
1714 /* ?_Empty@?$_Yarn@D@std@@QEBA_NXZ */
1715 /* ?empty@?$_Yarn@D@std@@QBE_NXZ */
1716 /* ?empty@?$_Yarn@D@std@@QEBA_NXZ */
1717 DEFINE_THISCALL_WRAPPER(_Yarn_char_empty, 4)
1718 bool __thiscall _Yarn_char_empty(const _Yarn_char *this)
1720 TRACE("(%p)\n", this);
1721 return !this->str;
1724 /* ??0?$_Yarn@_W@std@@QAE@XZ */
1725 /* ??0?$_Yarn@_W@std@@QEAA@XZ */
1726 DEFINE_THISCALL_WRAPPER(_Yarn_wchar_ctor, 4)
1727 _Yarn_wchar* __thiscall _Yarn_wchar_ctor(_Yarn_wchar *this)
1729 TRACE("(%p)\n", this);
1731 this->str = NULL;
1732 this->null_str = '\0';
1733 return this;
1736 /* ?_Tidy@?$_Yarn@_W@std@@AAEXXZ */
1737 /* ?_Tidy@?$_Yarn@_W@std@@AEAAXXZ */
1738 DEFINE_THISCALL_WRAPPER(_Yarn_wchar__Tidy, 4)
1739 void __thiscall _Yarn_wchar__Tidy(_Yarn_wchar *this)
1741 TRACE("(%p)\n", this);
1743 if(this->str)
1744 MSVCRT_operator_delete(this->str);
1745 this->str = NULL;
1748 /* ??1?$_Yarn@_W@std@@QAE@XZ */
1749 /* ??1?$_Yarn@_W@std@@QEAA@XZ */
1750 DEFINE_THISCALL_WRAPPER(_Yarn_wchar_dtor, 4)
1751 void __thiscall _Yarn_wchar_dtor(_Yarn_wchar *this)
1753 TRACE("(%p)\n", this);
1754 _Yarn_wchar__Tidy(this);
1757 /* ??4?$_Yarn@_W@std@@QAEAAV01@PB_W@Z */
1758 /* ??4?$_Yarn@_W@std@@QEAAAEAV01@PEB_W@Z */
1759 DEFINE_THISCALL_WRAPPER(_Yarn_wchar_op_assign_cstr, 8)
1760 _Yarn_wchar* __thiscall _Yarn_wchar_op_assign_cstr(_Yarn_wchar *this, const wchar_t *str)
1762 TRACE("(%p %p)\n", this, str);
1764 if(str != this->str) {
1765 _Yarn_wchar__Tidy(this);
1767 if(str) {
1768 size_t len = wcslen(str);
1770 this->str = MSVCRT_operator_new((len+1)*sizeof(wchar_t));
1771 if(!this->str) {
1772 ERR("out of memory\n");
1773 return NULL;
1775 memcpy(this->str, str, (len+1)*sizeof(wchar_t));
1778 return this;
1781 /* ?_C_str@?$_Yarn@_W@std@@QBEPB_WXZ */
1782 /* ?_C_str@?$_Yarn@_W@std@@QEBAPEB_WXZ */
1783 DEFINE_THISCALL_WRAPPER(_Yarn_wchar__C_str, 4)
1784 const wchar_t* __thiscall _Yarn_wchar__C_str(const _Yarn_wchar *this)
1786 TRACE("(%p)\n", this);
1787 return this->str ? this->str : &this->null_str;
1790 /* ?_Empty@?$_Yarn@_W@std@@QBE_NXZ */
1791 /* ?_Empty@?$_Yarn@_W@std@@QEBA_NXZ */
1792 DEFINE_THISCALL_WRAPPER(_Yarn_wchar__Empty, 4)
1793 bool __thiscall _Yarn_wchar__Empty(const _Yarn_wchar *this)
1795 TRACE("(%p)\n", this);
1796 return !this->str;
1799 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1800 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1801 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr, 12)
1802 size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr(
1803 const basic_string_char *this, const char *find, size_t off)
1805 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1806 this, find, off, MSVCP_char_traits_char_length(find));
1809 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1810 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1811 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch, 12)
1812 size_t __thiscall MSVCP_basic_string_char_find_first_of_ch(
1813 const basic_string_char *this, char ch, size_t off)
1815 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch, off, 1);
1818 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1819 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1820 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr, 16)
1821 size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1822 const basic_string_char *this, const char *find, size_t off, size_t len)
1824 const char *p, *end;
1826 TRACE("%p %p %Iu %Iu\n", this, find, off, len);
1828 if(off<this->size) {
1829 end = basic_string_char_const_ptr(this)+this->size;
1830 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1831 if(!MSVCP_char_traits_char_find(find, len, p))
1832 return p-basic_string_char_const_ptr(this);
1835 return MSVCP_basic_string_char_npos;
1838 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1839 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1840 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of, 12)
1841 size_t __thiscall MSVCP_basic_string_char_find_first_not_of(
1842 const basic_string_char *this, const basic_string_char *find, size_t off)
1844 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1845 basic_string_char_const_ptr(find), off, find->size);
1848 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1849 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1850 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr, 12)
1851 size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr(
1852 const basic_string_char *this, const char *find, size_t off)
1854 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1855 this, find, off, MSVCP_char_traits_char_length(find));
1858 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1859 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1860 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch, 12)
1861 size_t __thiscall MSVCP_basic_string_char_find_first_not_of_ch(
1862 const basic_string_char *this, char ch, size_t off)
1864 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch, off, 1);
1867 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1868 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1869 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr, 16)
1870 size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr_substr(
1871 const basic_string_char *this, const char *find, size_t off, size_t len)
1873 const char *p, *beg;
1875 TRACE("%p %p %Iu %Iu\n", this, find, off, len);
1877 if(len>0 && this->size>0) {
1878 if(off >= this->size)
1879 off = this->size-1;
1881 beg = basic_string_char_const_ptr(this);
1882 for(p=beg+off; p>=beg; p--)
1883 if(MSVCP_char_traits_char_find(find, len, p))
1884 return p-beg;
1887 return MSVCP_basic_string_char_npos;
1890 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1891 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1892 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of, 12)
1893 size_t __thiscall MSVCP_basic_string_char_find_last_of(
1894 const basic_string_char *this, const basic_string_char *find, size_t off)
1896 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1897 basic_string_char_const_ptr(find), off, find->size);
1900 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1901 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1902 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr, 12)
1903 size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr(
1904 const basic_string_char *this, const char *find, size_t off)
1906 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1907 this, find, off, MSVCP_char_traits_char_length(find));
1910 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1911 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1912 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch, 12)
1913 size_t __thiscall MSVCP_basic_string_char_find_last_of_ch(
1914 const basic_string_char *this, char ch, size_t off)
1916 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch, off, 1);
1919 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1920 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1921 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr, 16)
1922 size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1923 const basic_string_char *this, const char *find, size_t off, size_t len)
1925 const char *p, *beg;
1927 TRACE("%p %p %Iu %Iu\n", this, find, off, len);
1929 if(this->size>0) {
1930 if(off >= this->size)
1931 off = this->size-1;
1933 beg = basic_string_char_const_ptr(this);
1934 for(p=beg+off; p>=beg; p--)
1935 if(!MSVCP_char_traits_char_find(find, len, p))
1936 return p-beg;
1939 return MSVCP_basic_string_char_npos;
1942 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1943 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1944 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of, 12)
1945 size_t __thiscall MSVCP_basic_string_char_find_last_not_of(
1946 const basic_string_char *this, const basic_string_char *find, size_t off)
1948 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1949 basic_string_char_const_ptr(find), off, find->size);
1952 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1953 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1954 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr, 12)
1955 size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr(
1956 const basic_string_char *this, const char *find, size_t off)
1958 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1959 this, find, off, MSVCP_char_traits_char_length(find));
1962 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1963 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1964 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch, 12)
1965 size_t __thiscall MSVCP_basic_string_char_find_last_not_of_ch(
1966 const basic_string_char *this, char ch, size_t off)
1968 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch, off, 1);
1971 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1972 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1973 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at, 8)
1974 char* __thiscall MSVCP_basic_string_char_operator_at(
1975 basic_string_char *this, size_t pos)
1977 TRACE("%p %Iu\n", this, pos);
1979 #if _MSVCP_VER >= 80
1980 if (this->size < pos)
1981 _invalid_parameter(NULL, NULL, NULL, 0, 0);
1982 #endif
1984 return basic_string_char_ptr(this)+pos;
1987 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1988 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1989 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_operator_at, 8)
1990 const char* __thiscall MSVCP_basic_string_char_const_operator_at(
1991 const basic_string_char *this, size_t pos)
1993 TRACE("%p %Iu\n", this, pos);
1995 #if _MSVCP_VER >= 80
1996 if (this->size < pos)
1997 _invalid_parameter(NULL, NULL, NULL, 0, 0);
1998 #endif
2000 return basic_string_char_const_ptr(this)+pos;
2003 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z */
2004 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z */
2005 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at_noverify, 8)
2006 char* __thiscall MSVCP_basic_string_char_operator_at_noverify(
2007 basic_string_char *this, size_t_noverify pos)
2009 TRACE("%p %Iu\n", this, pos.val);
2010 return basic_string_char_ptr(this)+pos.val;
2013 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z */
2014 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z */
2015 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_const_at_noverify, 8)
2016 const char* __thiscall MSVCP_basic_string_char_operator_const_at_noverify(
2017 const basic_string_char *this, size_t_noverify pos)
2019 TRACE("%p %Iu\n", this, pos.val);
2020 return basic_string_char_const_ptr(this)+pos.val;
2023 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
2024 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
2025 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at, 8)
2026 char* __thiscall MSVCP_basic_string_char_at(
2027 basic_string_char *this, size_t pos)
2029 TRACE("%p %Iu\n", this, pos);
2031 if(this->size <= pos)
2032 MSVCP__String_base_Xran();
2034 return basic_string_char_ptr(this)+pos;
2037 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
2038 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
2039 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_at, 8)
2040 const char* __thiscall MSVCP_basic_string_char_const_at(
2041 const basic_string_char *this, size_t pos)
2043 TRACE("%p %Iu\n", this, pos);
2045 if(this->size <= pos)
2046 MSVCP__String_base_Xran();
2048 return basic_string_char_const_ptr(this)+pos;
2051 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
2052 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
2053 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len, 20)
2054 basic_string_char* __thiscall basic_string_char_replace_cstr_len(basic_string_char *this,
2055 size_t off, size_t len, const char *str, size_t str_len)
2057 size_t inside_pos = -1;
2058 char *ptr = basic_string_char_ptr(this);
2060 TRACE("%p %Iu %Iu %p %Iu\n", this, off, len, str, str_len);
2062 if(this->size < off)
2063 MSVCP__String_base_Xran();
2065 if(len > this->size-off)
2066 len = this->size-off;
2068 if(MSVCP_basic_string_char_npos-str_len <= this->size-len)
2069 MSVCP__String_base_Xlen();
2071 if(basic_string_char_inside(this, str))
2072 inside_pos = str-ptr;
2074 if(len < str_len) {
2075 basic_string_char_grow(this, this->size-len+str_len, FALSE);
2076 ptr = basic_string_char_ptr(this);
2079 if(inside_pos == -1) {
2080 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
2081 memcpy(ptr+off, str, str_len*sizeof(char));
2082 } else if(len >= str_len) {
2083 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(char));
2084 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
2085 } else {
2086 size_t size;
2088 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
2090 if(inside_pos < off+len) {
2091 size = off+len-inside_pos;
2092 if(size > str_len)
2093 size = str_len;
2094 memmove(ptr+off, ptr+inside_pos, size*sizeof(char));
2095 } else {
2096 size = 0;
2099 if(str_len > size)
2100 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(char));
2103 basic_string_char_eos(this, this->size-len+str_len);
2104 return this;
2107 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
2108 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
2109 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr, 16)
2110 basic_string_char* __thiscall basic_string_char_replace_cstr(basic_string_char *this,
2111 size_t off, size_t len, const char *str)
2113 return basic_string_char_replace_cstr_len(this, off, len, str,
2114 MSVCP_char_traits_char_length(str));
2117 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
2118 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
2119 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr, 24)
2120 basic_string_char* __thiscall basic_string_char_replace_substr(basic_string_char *this, size_t off,
2121 size_t len, const basic_string_char *str, size_t str_off, size_t str_len)
2123 if(str->size < str_off)
2124 MSVCP__String_base_Xran();
2126 if(str_len > str->size-str_off)
2127 str_len = str->size-str_off;
2129 return basic_string_char_replace_cstr_len(this, off, len,
2130 basic_string_char_const_ptr(str)+str_off, str_len);
2133 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
2134 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
2135 DEFINE_THISCALL_WRAPPER(basic_string_char_replace, 16)
2136 basic_string_char* __thiscall basic_string_char_replace(basic_string_char *this,
2137 size_t off, size_t len, const basic_string_char *str)
2139 return basic_string_char_replace_cstr_len(this, off, len,
2140 basic_string_char_const_ptr(str), str->size);
2143 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
2144 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
2145 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch, 20)
2146 basic_string_char* __thiscall basic_string_char_replace_ch(basic_string_char *this,
2147 size_t off, size_t len, size_t count, char ch)
2149 char *ptr = basic_string_char_ptr(this);
2151 TRACE("%p %Iu %Iu %Iu %c\n", this, off, len, count, ch);
2153 if(this->size < off)
2154 MSVCP__String_base_Xran();
2156 if(len > this->size-off)
2157 len = this->size-off;
2159 if(MSVCP_basic_string_char_npos-count <= this->size-len)
2160 MSVCP__String_base_Xlen();
2162 if(len < count) {
2163 basic_string_char_grow(this, this->size-len+count, FALSE);
2164 ptr = basic_string_char_ptr(this);
2167 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(char));
2168 MSVCP_char_traits_char_assignn(ptr+off, count, ch);
2169 basic_string_char_eos(this, this->size-len+count);
2171 return this;
2174 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
2175 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
2176 DEFINE_THISCALL_WRAPPER(basic_string_char_insert, 12)
2177 basic_string_char* __thiscall basic_string_char_insert(basic_string_char *this,
2178 size_t off, const basic_string_char *str)
2180 return basic_string_char_replace(this, off, 0, str);
2183 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
2184 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
2185 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr, 20)
2186 basic_string_char* __thiscall basic_string_char_insert_substr(
2187 basic_string_char *this, size_t off, const basic_string_char *str,
2188 size_t str_off, size_t str_count)
2190 return basic_string_char_replace_substr(this, off, 0, str, str_off, str_count);
2193 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
2194 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
2195 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr, 12)
2196 basic_string_char* __thiscall basic_string_char_insert_cstr(
2197 basic_string_char *this, size_t off, const char *str)
2199 return basic_string_char_replace_cstr(this, off, 0, str);
2202 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
2203 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
2204 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len, 16)
2205 basic_string_char* __thiscall basic_string_char_insert_cstr_len(basic_string_char *this,
2206 size_t off, const char *str, size_t str_len)
2208 return basic_string_char_replace_cstr_len(this, off, 0, str, str_len);
2211 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
2212 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
2213 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn, 16)
2214 basic_string_char* __thiscall basic_string_char_insert_chn(basic_string_char *this,
2215 size_t off, size_t count, char ch)
2217 return basic_string_char_replace_ch(this, off, 0, count, ch);
2220 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
2221 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
2222 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12)
2223 void __thiscall MSVCP_basic_string_char_resize_ch(
2224 basic_string_char *this, size_t size, char ch)
2226 TRACE("%p %Iu %c\n", this, size, ch);
2228 if(size <= this->size)
2229 MSVCP_basic_string_char_erase(this, size, this->size);
2230 else
2231 MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch);
2234 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
2235 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
2236 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize, 8)
2237 void __thiscall MSVCP_basic_string_char_resize(
2238 basic_string_char *this, size_t size)
2240 MSVCP_basic_string_char_resize_ch(this, size, '\0');
2243 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
2244 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
2245 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear, 4)
2246 void __thiscall MSVCP_basic_string_char_clear(basic_string_char *this)
2248 basic_string_char_eos(this, 0);
2251 /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
2252 /* basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short>> */
2253 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */
2254 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2_KB */
2255 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
2256 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
2257 const size_t MSVCP_basic_string_wchar_npos = -1;
2259 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ */
2260 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAPEA_WXZ */
2261 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEPAGXZ */
2262 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAPEAGXZ */
2263 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ptr, 4)
2264 wchar_t* __thiscall basic_string_wchar_ptr(basic_string_wchar *this)
2266 if(this->res < BUF_SIZE_WCHAR)
2267 return this->data.buf;
2268 return this->data.ptr;
2271 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IBEPB_WXZ */
2272 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEBAPEB_WXZ */
2273 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IBEPBGXZ */
2274 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEBAPEBGXZ */
2275 DEFINE_THISCALL_WRAPPER(basic_string_wchar_const_ptr, 4)
2276 const wchar_t* __thiscall basic_string_wchar_const_ptr(const basic_string_wchar *this)
2278 if(this->res < BUF_SIZE_WCHAR)
2279 return this->data.buf;
2280 return this->data.ptr;
2283 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXI@Z */
2284 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K@Z */
2285 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXI@Z */
2286 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K@Z */
2287 DEFINE_THISCALL_WRAPPER(basic_string_wchar_eos, 8)
2288 void __thiscall basic_string_wchar_eos(basic_string_wchar *this, size_t len)
2290 this->size = len;
2291 MSVCP_char_traits_wchar_assign(basic_string_wchar_ptr(this)+len, L"");
2294 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NPB_W@Z */
2295 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_NPEB_W@Z */
2296 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z */
2297 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_NPEBG@Z */
2298 DEFINE_THISCALL_WRAPPER(basic_string_wchar_inside, 8)
2299 bool __thiscall basic_string_wchar_inside(
2300 basic_string_wchar *this, const wchar_t *ptr)
2302 wchar_t *cstr = basic_string_wchar_ptr(this);
2304 return ptr>=cstr && ptr<cstr+this->size;
2307 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEX_NI@Z */
2308 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_N_K@Z */
2309 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEX_NI@Z */
2310 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_N_K@Z */
2311 DEFINE_THISCALL_WRAPPER(basic_string_wchar_tidy, 12)
2312 void __thiscall basic_string_wchar_tidy(basic_string_wchar *this,
2313 bool built, size_t new_size)
2315 if(built && BUF_SIZE_WCHAR<=this->res) {
2316 wchar_t *ptr = this->data.ptr;
2318 if(new_size > 0)
2319 MSVCP_char_traits_wchar__Copy_s(this->data.buf, BUF_SIZE_WCHAR, ptr, new_size);
2320 MSVCP_allocator_wchar_deallocate(STRING_ALLOCATOR(this), ptr, this->res+1);
2323 this->res = BUF_SIZE_WCHAR-1;
2324 basic_string_wchar_eos(this, new_size);
2327 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NI_N@Z */
2328 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_N_K_N@Z */
2329 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NI_N@Z */
2330 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_N_K_N@Z */
2331 DEFINE_THISCALL_WRAPPER(basic_string_wchar_grow, 12)
2332 bool __thiscall basic_string_wchar_grow(
2333 basic_string_wchar *this, size_t new_size, bool trim)
2335 if(this->res < new_size) {
2336 size_t new_res = new_size, len = this->size;
2337 wchar_t *ptr;
2339 new_res |= 0xf;
2341 if(new_res/3 < this->res/2)
2342 new_res = this->res + this->res/2;
2344 ptr = MSVCP_allocator_wchar_allocate(STRING_ALLOCATOR(this), new_res+1);
2345 if(!ptr)
2346 ptr = MSVCP_allocator_wchar_allocate(STRING_ALLOCATOR(this), new_size+1);
2347 else
2348 new_size = new_res;
2349 if(!ptr) {
2350 ERR("Out of memory\n");
2351 basic_string_wchar_tidy(this, TRUE, 0);
2352 return FALSE;
2355 MSVCP_char_traits_wchar__Copy_s(ptr, new_size,
2356 basic_string_wchar_ptr(this), this->size);
2357 basic_string_wchar_tidy(this, TRUE, 0);
2358 this->data.ptr = ptr;
2359 this->res = new_size;
2360 basic_string_wchar_eos(this, len);
2361 } else if(trim && new_size < BUF_SIZE_WCHAR)
2362 basic_string_wchar_tidy(this, TRUE,
2363 new_size<this->size ? new_size : this->size);
2364 else if(new_size == 0)
2365 basic_string_wchar_eos(this, 0);
2367 return (new_size>0);
2370 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII@Z */
2371 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0@Z */
2372 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXII@Z */
2373 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0@Z */
2374 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy, 12)
2375 void __thiscall basic_string_wchar__Copy(basic_string_wchar *this,
2376 size_t new_size, size_t copy_len)
2378 TRACE("%p %Iu %Iu\n", this, new_size, copy_len);
2380 if(!basic_string_wchar_grow(this, new_size, FALSE))
2381 return;
2382 basic_string_wchar_eos(this, copy_len);
2385 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ */
2386 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ */
2387 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
2388 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
2389 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator, 8)
2390 allocator* __thiscall basic_string_wchar_get_allocator(const basic_string_wchar *this, allocator *ret)
2392 TRACE("%p\n", this);
2393 return ret;
2396 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z */
2397 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z */
2398 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
2399 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
2400 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase, 12)
2401 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_erase(
2402 basic_string_wchar *this, size_t pos, size_t len)
2404 TRACE("%p %Iu %Iu\n", this, pos, len);
2406 if(pos > this->size)
2407 MSVCP__String_base_Xran();
2409 if(len > this->size-pos)
2410 len = this->size-pos;
2412 if(len) {
2413 MSVCP_char_traits_wchar__Move_s(basic_string_wchar_ptr(this)+pos,
2414 this->res-pos, basic_string_wchar_ptr(this)+pos+len,
2415 this->size-pos-len);
2416 basic_string_wchar_eos(this, this->size-len);
2419 return this;
2422 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2423 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2424 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2425 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2426 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr, 16)
2427 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_substr(
2428 basic_string_wchar *this, const basic_string_wchar *assign,
2429 size_t pos, size_t len)
2431 TRACE("%p %p %Iu %Iu\n", this, assign, pos, len);
2433 if(assign->size < pos)
2434 MSVCP__String_base_Xran();
2436 if(len > assign->size-pos)
2437 len = assign->size-pos;
2439 if(this == assign) {
2440 MSVCP_basic_string_wchar_erase(this, pos+len, MSVCP_basic_string_wchar_npos);
2441 MSVCP_basic_string_wchar_erase(this, 0, pos);
2442 } else if(basic_string_wchar_grow(this, len, FALSE)) {
2443 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2444 this->res, basic_string_wchar_const_ptr(assign)+pos, len);
2445 basic_string_wchar_eos(this, len);
2448 return this;
2451 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2452 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2453 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2454 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2455 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2456 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2457 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2458 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2459 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign, 8)
2460 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign(
2461 basic_string_wchar *this, const basic_string_wchar *assign)
2463 return MSVCP_basic_string_wchar_assign_substr(this, assign,
2464 0, MSVCP_basic_string_wchar_npos);
2467 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2468 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2469 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2470 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2471 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len, 12)
2472 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr_len(
2473 basic_string_wchar *this, const wchar_t *str, size_t len)
2475 TRACE("%p %s %Iu\n", this, debugstr_wn(str, len), len);
2477 if(basic_string_wchar_inside(this, str))
2478 return MSVCP_basic_string_wchar_assign_substr(this, this,
2479 str-basic_string_wchar_ptr(this), len);
2480 else if(basic_string_wchar_grow(this, len, FALSE)) {
2481 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2482 this->res, str, len);
2483 basic_string_wchar_eos(this, len);
2486 return this;
2489 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2490 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2491 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2492 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2493 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch, 8)
2494 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ch(
2495 basic_string_wchar *this, wchar_t ch)
2497 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch, 1);
2500 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2501 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2502 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2503 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2504 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2505 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2506 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2507 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2508 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr, 8)
2509 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr(
2510 basic_string_wchar *this, const wchar_t *str)
2512 return MSVCP_basic_string_wchar_assign_cstr_len(this, str,
2513 MSVCP_char_traits_wchar_length(str));
2516 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2517 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2518 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2519 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2520 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn, 12)
2521 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assignn(
2522 basic_string_wchar *this, size_t count, wchar_t ch)
2524 TRACE("%p %Iu %c\n", this, count, ch);
2526 basic_string_wchar_grow(this, count, FALSE);
2527 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this), count, ch);
2528 basic_string_wchar_eos(this, count);
2529 return this;
2532 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2533 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2534 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2535 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2536 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr, 12)
2537 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ptr_ptr(
2538 basic_string_wchar *this, const wchar_t *first, const wchar_t *last)
2540 return MSVCP_basic_string_wchar_assign_cstr_len(this, first, last-first);
2543 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII_W@Z */
2544 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0_W@Z */
2545 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXIIG@Z */
2546 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0G@Z */
2547 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Chassign, 16)
2548 void __thiscall MSVCP_basic_string_wchar_Chassign(basic_string_wchar *this,
2549 size_t off, size_t count, wchar_t ch)
2551 TRACE("%p %Iu %Iu %c\n", this, off, count, ch);
2552 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+off, count, ch);
2555 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WIII@Z */
2556 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K11@Z */
2557 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGIII@Z */
2558 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K11@Z */
2559 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Copy_s, 20)
2560 size_t __thiscall MSVCP_basic_string_wchar_Copy_s(const basic_string_wchar *this,
2561 wchar_t *dest, size_t size, size_t count, size_t off)
2563 TRACE("%p %p %Iu %Iu %Iu\n", this, dest, size, count, off);
2565 if(this->size < off)
2566 MSVCP__String_base_Xran();
2568 if(count > this->size-off)
2569 count = this->size-off;
2571 MSVCP_char_traits_wchar__Copy_s(dest, size,
2572 basic_string_wchar_const_ptr(this)+off, count);
2573 return count;
2576 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WII@Z */
2577 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K1@Z */
2578 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
2579 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
2580 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy, 16)
2581 size_t __thiscall basic_string_wchar_copy(const basic_string_wchar *this,
2582 wchar_t *dest, size_t count, size_t off)
2584 return MSVCP_basic_string_wchar_Copy_s(this, dest, count, count, off);
2587 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2588 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2589 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2590 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2591 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2592 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2593 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2594 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2595 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str, 4)
2596 const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar *this)
2598 TRACE("%p\n", this);
2599 return basic_string_wchar_const_ptr(this);
2602 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2603 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2604 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2605 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2606 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity, 4)
2607 size_t __thiscall MSVCP_basic_string_wchar_capacity(basic_string_wchar *this)
2609 TRACE("%p\n", this);
2610 return this->res;
2613 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
2614 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
2615 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
2616 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
2617 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve, 8)
2618 void __thiscall MSVCP_basic_string_wchar_reserve(basic_string_wchar *this, size_t size)
2620 size_t len;
2622 TRACE("%p %Iu\n", this, size);
2624 len = this->size;
2625 if(len > size)
2626 return;
2628 if(basic_string_wchar_grow(this, size, TRUE))
2629 basic_string_wchar_eos(this, len);
2632 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2633 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2634 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2635 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2636 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor, 4)
2637 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor(basic_string_wchar *this)
2639 TRACE("%p\n", this);
2641 basic_string_wchar_tidy(this, FALSE, 0);
2642 return this;
2645 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z */
2646 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z */
2647 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2648 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2649 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor, 8)
2650 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_copy_ctor(
2651 basic_string_wchar *this, const basic_string_wchar *copy)
2653 TRACE("%p %p\n", this, copy);
2655 basic_string_wchar_tidy(this, FALSE, 0);
2656 MSVCP_basic_string_wchar_assign(this, copy);
2657 return this;
2660 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2661 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2662 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2663 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2664 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr, 8)
2665 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(
2666 basic_string_wchar *this, const wchar_t *str)
2668 TRACE("%p %s\n", this, debugstr_w(str));
2670 basic_string_wchar_tidy(this, FALSE, 0);
2671 MSVCP_basic_string_wchar_assign_cstr(this, str);
2672 return this;
2675 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z */
2676 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z */
2677 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2678 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2679 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc, 12)
2680 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_alloc(
2681 basic_string_wchar *this, const wchar_t *str, const void *alloc)
2683 return MSVCP_basic_string_wchar_ctor_cstr(this, str);
2686 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2687 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2688 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2689 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2690 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len, 12)
2691 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len(
2692 basic_string_wchar *this, const wchar_t *str, size_t len)
2694 TRACE("%p %s %Iu\n", this, debugstr_wn(str, len), len);
2696 basic_string_wchar_tidy(this, FALSE, 0);
2697 MSVCP_basic_string_wchar_assign_cstr_len(this, str, len);
2698 return this;
2701 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z */
2702 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z */
2703 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2704 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2705 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc, 16)
2706 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2707 basic_string_wchar *this, const wchar_t *str, size_t len, const void *alloc)
2709 return MSVCP_basic_string_wchar_ctor_cstr_len(this, str, len);
2712 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z */
2713 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z */
2714 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@II@Z */
2715 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1@Z */
2716 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr, 16)
2717 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr(
2718 basic_string_wchar *this, const basic_string_wchar *assign,
2719 size_t pos, size_t len)
2721 TRACE("%p %p %Iu %Iu\n", this, assign, pos, len);
2723 basic_string_wchar_tidy(this, FALSE, 0);
2724 MSVCP_basic_string_wchar_assign_substr(this, assign, pos, len);
2725 return this;
2728 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z */
2729 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z */
2730 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2731 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2732 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc, 20)
2733 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr_alloc(
2734 basic_string_wchar *this, const basic_string_wchar *assign,
2735 size_t pos, size_t len, const void *alloc)
2737 return MSVCP_basic_string_wchar_ctor_substr(this, assign, pos, len);
2740 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z */
2741 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z */
2742 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2743 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2744 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc, 8)
2745 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_alloc(
2746 basic_string_wchar *this, const void *alloc)
2748 TRACE("%p %p\n", this, alloc);
2750 basic_string_wchar_tidy(this, FALSE, 0);
2751 return this;
2754 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z */
2755 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z */
2756 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IG@Z */
2757 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KG@Z */
2758 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch, 12)
2759 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch(basic_string_wchar *this,
2760 size_t count, wchar_t ch)
2762 TRACE("%p %Iu %c\n", this, count, ch);
2764 basic_string_wchar_tidy(this, FALSE, 0);
2765 MSVCP_basic_string_wchar_assignn(this, count, ch);
2766 return this;
2769 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z */
2770 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z */
2771 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2772 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2773 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc, 16)
2774 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar *this,
2775 size_t count, wchar_t ch, const void *alloc)
2777 return MSVCP_basic_string_wchar_ctor_ch(this, count, ch);
2780 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z */
2781 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z */
2782 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0@Z */
2783 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0@Z */
2784 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ptr_ptr, 12)
2785 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ptr_ptr(basic_string_wchar *this,
2786 const wchar_t *first, const wchar_t *last)
2788 return MSVCP_basic_string_wchar_ctor_cstr_len(this, first, last-first);
2791 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2792 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2793 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2794 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2795 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)
2796 void* __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
2798 TRACE("%p\n", this);
2799 basic_string_wchar_tidy(this, TRUE, 0);
2800 return NULL; /* FEAR 1 installer expects EAX set to 0 */
2803 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2804 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2805 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2806 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2807 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2808 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2809 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2810 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2811 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length, 4)
2812 size_t __thiscall MSVCP_basic_string_wchar_length(const basic_string_wchar *this)
2814 TRACE("%p\n", this);
2815 return this->size;
2818 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2819 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2820 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2821 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2822 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size, 4)
2823 size_t __thiscall basic_string_wchar_max_size(const basic_string_wchar *this)
2825 TRACE("%p\n", this);
2826 return MSVCP_allocator_wchar_max_size(STRING_ALLOCATOR(this))-1;
2829 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE_NXZ */
2830 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_NXZ */
2831 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
2832 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
2833 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty, 4)
2834 bool __thiscall MSVCP_basic_string_wchar_empty(basic_string_wchar *this)
2836 TRACE("%p\n", this);
2837 return this->size == 0;
2840 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXAAV12@@Z */
2841 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEAV12@@Z */
2842 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
2843 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
2844 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_swap, 8)
2845 void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_string_wchar *str)
2847 if(this != str) {
2848 char tmp[sizeof(this->data)];
2849 const size_t size = this->size;
2850 const size_t res = this->res;
2852 memcpy(tmp, this->data.buf, sizeof(this->data));
2853 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
2854 memcpy(str->data.buf, tmp, sizeof(this->data));
2856 this->size = str->size;
2857 this->res = str->res;
2859 str->size = size;
2860 str->res = res;
2864 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV12@II@Z */
2865 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV12@_K0@Z */
2866 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
2867 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
2868 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_substr, 16)
2869 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_substr(basic_string_wchar *this,
2870 basic_string_wchar *ret, size_t off, size_t len)
2872 TRACE("%p %Iu %Iu\n", this, off, len);
2874 MSVCP_basic_string_wchar_ctor_substr(ret, this, off, len);
2875 return ret;
2878 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2879 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2880 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2881 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2882 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr, 16)
2883 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_substr(basic_string_wchar *this,
2884 const basic_string_wchar *append, size_t offset, size_t count)
2886 TRACE("%p %p %Iu %Iu\n", this, append, offset, count);
2888 if(append->size < offset)
2889 MSVCP__String_base_Xran();
2891 if(count > append->size-offset)
2892 count = append->size-offset;
2894 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2895 MSVCP__String_base_Xlen();
2897 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2898 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2899 this->res-this->size, basic_string_wchar_const_ptr(append)+offset, count);
2900 basic_string_wchar_eos(this, this->size+count);
2903 return this;
2906 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2907 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2908 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2909 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2910 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2911 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2912 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2913 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2914 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append, 8)
2915 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append(
2916 basic_string_wchar *this, const basic_string_wchar *append)
2918 return MSVCP_basic_string_wchar_append_substr(this, append,
2919 0, MSVCP_basic_string_wchar_npos);
2922 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2923 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2924 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2925 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2926 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len, 12)
2927 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr_len(
2928 basic_string_wchar *this, const wchar_t *append, size_t count)
2930 TRACE("%p %s %Iu\n", this, debugstr_wn(append, count), count);
2932 if(basic_string_wchar_inside(this, append))
2933 return MSVCP_basic_string_wchar_append_substr(this, this,
2934 append-basic_string_wchar_ptr(this), count);
2936 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2937 MSVCP__String_base_Xlen();
2939 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2940 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2941 this->res-this->size, append, count);
2942 basic_string_wchar_eos(this, this->size+count);
2945 return this;
2948 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2949 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2950 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2951 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2952 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2953 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2954 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2955 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2956 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr, 8)
2957 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr(
2958 basic_string_wchar *this, const wchar_t *append)
2960 return MSVCP_basic_string_wchar_append_cstr_len(this, append,
2961 MSVCP_char_traits_wchar_length(append));
2964 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2965 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2966 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2967 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2968 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end, 12)
2969 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_beg_end(
2970 basic_string_wchar *this, const wchar_t *beg, const wchar_t *end)
2972 return MSVCP_basic_string_wchar_append_cstr_len(this, beg, end-beg);
2975 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2976 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2977 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2978 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2979 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch, 12)
2980 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_len_ch(
2981 basic_string_wchar *this, size_t count, wchar_t ch)
2983 TRACE("%p %Iu %c\n", this, count, ch);
2985 if(MSVCP_basic_string_wchar_npos-this->size <= count)
2986 MSVCP__String_base_Xlen();
2988 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2989 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+this->size, count, ch);
2990 basic_string_wchar_eos(this, this->size+count);
2993 return this;
2996 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2997 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2998 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEX_W@Z */
2999 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_W@Z */
3000 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
3001 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
3002 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXG@Z */
3003 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXG@Z */
3004 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch, 8)
3005 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(
3006 basic_string_wchar *this, wchar_t ch)
3008 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch);
3011 /* ??$?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 */
3012 /* ??$?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 */
3013 /* ??$?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 */
3014 /* ??$?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 */
3015 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
3016 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
3017 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z */
3018 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar *ret,
3019 const basic_string_wchar *left, const wchar_t *right)
3021 TRACE("%p %s\n", left, debugstr_w(right));
3023 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3024 MSVCP_basic_string_wchar_append_cstr(ret, right);
3025 return ret;
3028 /* ??$?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 */
3029 /* ??$?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 */
3030 /* ??$?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 */
3031 /* ??$?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 */
3032 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
3033 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
3034 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z */
3035 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar *ret,
3036 const wchar_t *left, const basic_string_wchar *right)
3038 TRACE("%s %p\n", debugstr_w(left), right);
3040 MSVCP_basic_string_wchar_ctor_cstr(ret, left);
3041 MSVCP_basic_string_wchar_append(ret, right);
3042 return ret;
3045 /* ??$?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 */
3046 /* ??$?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 */
3047 /* ??$?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 */
3048 /* ??$?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 */
3049 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
3050 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
3051 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@0@Z */
3052 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate(basic_string_wchar *ret,
3053 const basic_string_wchar *left, const basic_string_wchar *right)
3055 TRACE("%p %p\n", left, right);
3057 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3058 MSVCP_basic_string_wchar_append(ret, right);
3059 return ret;
3062 /* ??$?H_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z */
3063 /* ??$?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 */
3064 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
3065 /* ??$?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 */
3066 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
3067 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
3068 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z */
3069 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_ch(
3070 basic_string_wchar *ret, const basic_string_wchar *left, wchar_t right)
3072 TRACE("%p %c\n", left, right);
3074 MSVCP_basic_string_wchar_copy_ctor(ret, left);
3075 MSVCP_basic_string_wchar_append_ch(ret, right);
3076 return ret;
3079 /* ??$?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 */
3080 /* ??$?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 */
3081 /* ??$?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 */
3082 /* ??$?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 */
3083 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
3084 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
3085 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z */
3086 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_ch_bstr(
3087 basic_string_wchar* ret, wchar_t left, const basic_string_wchar *right)
3089 TRACE("%c %p\n", left, right);
3091 MSVCP_basic_string_wchar_ctor_cstr_len(ret, &left, 1);
3092 MSVCP_basic_string_wchar_append(ret, right);
3093 return ret;
3096 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_WI@Z */
3097 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W0@Z */
3098 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
3099 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
3100 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20)
3101 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr_len(
3102 const basic_string_wchar *this, size_t pos, size_t num,
3103 const wchar_t *str, size_t count)
3105 int ans;
3107 TRACE("%p %Iu %Iu %s %Iu\n", this, pos, num, debugstr_wn(str, count), count);
3109 if(this->size < pos)
3110 MSVCP__String_base_Xran();
3112 if(num > this->size-pos)
3113 num = this->size-pos;
3115 ans = MSVCP_char_traits_wchar_compare(basic_string_wchar_const_ptr(this)+pos,
3116 str, num>count ? count : num);
3117 if(ans)
3118 return ans;
3120 if(num > count)
3121 ans = 1;
3122 else if(num < count)
3123 ans = -1;
3124 return ans;
3127 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_W@Z */
3128 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W@Z */
3129 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
3130 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
3131 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr, 16)
3132 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar *this,
3133 size_t pos, size_t num, const wchar_t *str)
3135 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3136 str, MSVCP_char_traits_wchar_length(str));
3139 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHPB_W@Z */
3140 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHPEB_W@Z */
3141 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
3142 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
3143 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr, 8)
3144 int __thiscall MSVCP_basic_string_wchar_compare_cstr(
3145 const basic_string_wchar *this, const wchar_t *str)
3147 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3148 str, MSVCP_char_traits_wchar_length(str));
3151 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@II@Z */
3152 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@00@Z */
3153 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
3154 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
3155 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr, 24)
3156 int __thiscall MSVCP_basic_string_wchar_compare_substr_substr(
3157 const basic_string_wchar *this, size_t pos, size_t num,
3158 const basic_string_wchar *compare, size_t off, size_t count)
3160 TRACE("%p %Iu %Iu %p %Iu %Iu\n", this, pos, num, compare, off, count);
3162 if(compare->size < off)
3163 MSVCP__String_base_Xran();
3165 if(count > compare->size-off)
3166 count = compare->size-off;
3168 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3169 basic_string_wchar_const_ptr(compare)+off, count);
3172 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@@Z */
3173 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@@Z */
3174 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
3175 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
3176 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr, 16)
3177 int __thiscall MSVCP_basic_string_wchar_compare_substr(
3178 const basic_string_wchar *this, size_t pos, size_t num,
3179 const basic_string_wchar *compare)
3181 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3182 basic_string_wchar_const_ptr(compare), compare->size);
3185 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV12@@Z */
3186 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHAEBV12@@Z */
3187 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
3188 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
3189 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare, 8)
3190 int __thiscall MSVCP_basic_string_wchar_compare(
3191 const basic_string_wchar *this, const basic_string_wchar *compare)
3193 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3194 basic_string_wchar_const_ptr(compare), compare->size);
3197 /* ??$?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 */
3198 /* ??$?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 */
3199 /* ??$?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 */
3200 /* ??$?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 */
3201 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3202 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3203 /* ??8std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3204 bool __cdecl MSVCP_basic_string_wchar_equal(
3205 const basic_string_wchar *left, const basic_string_wchar *right)
3207 return MSVCP_basic_string_wchar_compare(left, right) == 0;
3210 /* ??$?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 */
3211 /* ??$?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 */
3212 /* ??$?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 */
3213 /* ??$?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 */
3214 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
3215 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
3216 /* ??8std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3217 bool __cdecl MSVCP_basic_string_wchar_equal_str_cstr(
3218 const basic_string_wchar *left, const wchar_t *right)
3220 return MSVCP_basic_string_wchar_compare_cstr(left, right) == 0;
3223 /* ??$?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 */
3224 /* ??$?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 */
3225 /* ??$?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 */
3226 /* ??$?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 */
3227 /* ??8std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3228 /* ??8std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3229 bool __cdecl MSVCP_basic_string_wchar_equal_cstr_str(
3230 const wchar_t *left, const basic_string_wchar *right)
3232 return MSVCP_basic_string_wchar_compare_cstr(right, left) == 0;
3235 /* ??$?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 */
3236 /* ??$?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 */
3237 /* ??$?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 */
3238 /* ??$?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 */
3239 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3240 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3241 /* ??9std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3242 bool __cdecl MSVCP_basic_string_wchar_not_equal(
3243 const basic_string_wchar *left, const basic_string_wchar *right)
3245 return MSVCP_basic_string_wchar_compare(left, right) != 0;
3248 /* ??$?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 */
3249 /* ??$?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 */
3250 /* ??$?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 */
3251 /* ??$?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 */
3252 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
3253 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
3254 /* ??9std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3255 bool __cdecl MSVCP_basic_string_wchar_not_equal_str_cstr(
3256 const basic_string_wchar *left, const wchar_t *right)
3258 return MSVCP_basic_string_wchar_compare_cstr(left, right) != 0;
3261 /* ??$?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 */
3262 /* ??$?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 */
3263 /* ??$?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 */
3264 /* ??$?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 */
3265 /* ??9std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3266 /* ??9std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3267 /* ??9std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3268 bool __cdecl MSVCP_basic_string_wchar_not_equal_cstr_str(
3269 const wchar_t *left, const basic_string_wchar *right)
3271 return MSVCP_basic_string_wchar_compare_cstr(right, left) != 0;
3274 /* ??$?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 */
3275 /* ??$?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 */
3276 /* ??$?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 */
3277 /* ??$?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 */
3278 bool __cdecl MSVCP_basic_string_wchar_lower(
3279 const basic_string_wchar *left, const basic_string_wchar *right)
3281 return MSVCP_basic_string_wchar_compare(left, right) < 0;
3284 /* ??$?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 */
3285 /* ??$?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 */
3286 /* ??$?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 */
3287 /* ??$?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 */
3288 bool __cdecl MSVCP_basic_string_wchar_lower_bstr_cstr(
3289 const basic_string_wchar *left, const wchar_t *right)
3291 return MSVCP_basic_string_wchar_compare_cstr(left, right) < 0;
3294 /* ??$?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 */
3295 /* ??$?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 */
3296 /* ??$?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 */
3297 /* ??$?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 */
3298 bool __cdecl MSVCP_basic_string_wchar_lower_cstr_bstr(
3299 const wchar_t *left, const basic_string_wchar *right)
3301 return MSVCP_basic_string_wchar_compare_cstr(right, left) > 0;
3304 /* ??$?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 */
3305 /* ??$?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 */
3306 /* ??$?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 */
3307 /* ??$?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 */
3308 bool __cdecl MSVCP_basic_string_wchar_leq(
3309 const basic_string_wchar *left, const basic_string_wchar *right)
3311 return MSVCP_basic_string_wchar_compare(left, right) <= 0;
3314 /* ??$?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 */
3315 /* ??$?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 */
3316 /* ??$?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 */
3317 /* ??$?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 */
3318 bool __cdecl MSVCP_basic_string_wchar_leq_bstr_cstr(
3319 const basic_string_wchar *left, const wchar_t *right)
3321 return MSVCP_basic_string_wchar_compare_cstr(left, right) <= 0;
3324 /* ??$?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 */
3325 /* ??$?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 */
3326 /* ??$?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 */
3327 /* ??$?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 */
3328 bool __cdecl MSVCP_basic_string_wchar_leq_cstr_bstr(
3329 const wchar_t *left, const basic_string_wchar *right)
3331 return MSVCP_basic_string_wchar_compare_cstr(right, left) >= 0;
3334 /* ??$?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 */
3335 /* ??$?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 */
3336 /* ??$?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 */
3337 /* ??$?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 */
3338 bool __cdecl MSVCP_basic_string_wchar_greater(
3339 const basic_string_wchar *left, const basic_string_wchar *right)
3341 return MSVCP_basic_string_wchar_compare(left, right) > 0;
3344 /* ??$?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 */
3345 /* ??$?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 */
3346 /* ??$?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 */
3347 /* ??$?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 */
3348 bool __cdecl MSVCP_basic_string_wchar_greater_bstr_cstr(
3349 const basic_string_wchar *left, const wchar_t *right)
3351 return MSVCP_basic_string_wchar_compare_cstr(left, right) > 0;
3354 /* ??$?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 */
3355 /* ??$?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 */
3356 /* ??$?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 */
3357 /* ??$?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 */
3358 bool __cdecl MSVCP_basic_string_wchar_greater_cstr_bstr(
3359 const wchar_t *left, const basic_string_wchar *right)
3361 return MSVCP_basic_string_wchar_compare_cstr(right, left) < 0;
3364 /* ??$?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 */
3365 /* ??$?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 */
3366 /* ??$?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 */
3367 /* ??$?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 */
3368 bool __cdecl MSVCP_basic_string_wchar_geq(
3369 const basic_string_wchar *left, const basic_string_wchar *right)
3371 return MSVCP_basic_string_wchar_compare(left, right) >= 0;
3374 /* ??$?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 */
3375 /* ??$?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 */
3376 /* ??$?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 */
3377 /* ??$?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 */
3378 bool __cdecl MSVCP_basic_string_wchar_geq_bstr_cstr(
3379 const basic_string_wchar *left, const wchar_t *right)
3381 return MSVCP_basic_string_wchar_compare_cstr(left, right) >= 0;
3384 /* ??$?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 */
3385 /* ??$?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 */
3386 /* ??$?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 */
3387 /* ??$?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 */
3388 bool __cdecl MSVCP_basic_string_wchar_geq_cstr_bstr(
3389 const wchar_t *left, const basic_string_wchar *right)
3391 return MSVCP_basic_string_wchar_compare_cstr(right, left) <= 0;
3394 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3395 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3396 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3397 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3398 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr, 16)
3399 size_t __thiscall MSVCP_basic_string_wchar_find_cstr_substr(
3400 const basic_string_wchar *this, const wchar_t *find, size_t pos, size_t len)
3402 const wchar_t *p, *end;
3404 TRACE("%p %s %Iu %Iu\n", this, debugstr_wn(find, len), pos, len);
3406 if(len==0 && pos<=this->size)
3407 return pos;
3408 if(pos>=this->size || len>this->size)
3409 return MSVCP_basic_string_wchar_npos;
3411 end = basic_string_wchar_const_ptr(this)+this->size-len+1;
3412 for(p=basic_string_wchar_const_ptr(this)+pos; p<end; p++) {
3413 p = MSVCP_char_traits_wchar_find(p, end-p, find);
3414 if(!p)
3415 break;
3417 if(!MSVCP_char_traits_wchar_compare(p, find, len))
3418 return p-basic_string_wchar_const_ptr(this);
3421 return MSVCP_basic_string_wchar_npos;
3424 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3425 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3426 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3427 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3428 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off, 12)
3429 size_t __thiscall MSVCP_basic_string_wchar_find_cstr_off(
3430 const basic_string_wchar *this, const wchar_t *find, size_t pos)
3432 return MSVCP_basic_string_wchar_find_cstr_substr(this, find, pos,
3433 MSVCP_char_traits_wchar_length(find));
3436 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3437 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3438 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3439 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3440 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off, 12)
3441 size_t __thiscall MSVCP_basic_string_wchar_find_off(
3442 const basic_string_wchar *this, const basic_string_wchar *find, size_t off)
3444 return MSVCP_basic_string_wchar_find_cstr_substr(this,
3445 basic_string_wchar_const_ptr(find), off, find->size);
3448 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3449 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3450 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3451 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3452 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch, 12)
3453 size_t __thiscall MSVCP_basic_string_wchar_find_ch(
3454 const basic_string_wchar *this, wchar_t ch, size_t pos)
3456 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1);
3459 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3460 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3461 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3462 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3463 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr, 16)
3464 size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_substr(
3465 const basic_string_wchar *this, const wchar_t *find, size_t pos, size_t len)
3467 const wchar_t *p, *end;
3469 TRACE("%p %s %Iu %Iu\n", this, debugstr_wn(find, len), pos, len);
3471 if(len==0)
3472 return pos<this->size ? pos : this->size;
3474 if(len > this->size)
3475 return MSVCP_basic_string_wchar_npos;
3477 if(pos > this->size-len)
3478 pos = this->size-len;
3479 end = basic_string_wchar_const_ptr(this);
3480 for(p=end+pos; p>=end; p--) {
3481 if(*p==*find && !MSVCP_char_traits_wchar_compare(p, find, len))
3482 return p-basic_string_wchar_const_ptr(this);
3485 return MSVCP_basic_string_wchar_npos;
3488 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3489 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3490 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3491 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3492 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off, 12)
3493 size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_off(
3494 const basic_string_wchar *this, const wchar_t *find, size_t pos)
3496 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find, pos,
3497 MSVCP_char_traits_wchar_length(find));
3500 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3501 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3502 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3503 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3504 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off, 12)
3505 size_t __thiscall MSVCP_basic_string_wchar_rfind_off(
3506 const basic_string_wchar *this, const basic_string_wchar *find, size_t off)
3508 return MSVCP_basic_string_wchar_rfind_cstr_substr(this,
3509 basic_string_wchar_const_ptr(find), off, find->size);
3512 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3513 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3514 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3515 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3516 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch, 12)
3517 size_t __thiscall MSVCP_basic_string_wchar_rfind_ch(
3518 const basic_string_wchar *this, wchar_t ch, size_t pos)
3520 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch, pos, 1);
3523 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3524 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3525 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3526 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3527 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr, 16)
3528 size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3529 const basic_string_wchar *this, const wchar_t *find, size_t off, size_t len)
3531 const wchar_t *p, *end;
3533 TRACE("%p %p %Iu %Iu\n", this, find, off, len);
3535 if(len>0 && off<this->size) {
3536 end = basic_string_wchar_const_ptr(this)+this->size;
3537 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3538 if(MSVCP_char_traits_wchar_find(find, len, p))
3539 return p-basic_string_wchar_const_ptr(this);
3542 return MSVCP_basic_string_wchar_npos;
3545 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3546 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3547 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3548 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3549 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of, 12)
3550 size_t __thiscall MSVCP_basic_string_wchar_find_first_of(
3551 const basic_string_wchar *this, const basic_string_wchar *find, size_t off)
3553 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
3554 basic_string_wchar_const_ptr(find), off, find->size);
3557 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3558 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3559 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3560 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3561 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr, 12)
3562 size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr(
3563 const basic_string_wchar *this, const wchar_t *find, size_t off)
3565 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3566 this, find, off, MSVCP_char_traits_wchar_length(find));
3569 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3570 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3571 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3572 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3573 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch, 12)
3574 size_t __thiscall MSVCP_basic_string_wchar_find_first_of_ch(
3575 const basic_string_wchar *this, wchar_t ch, size_t off)
3577 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch, off, 1);
3580 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3581 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3582 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3583 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3584 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr, 16)
3585 size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3586 const basic_string_wchar *this, const wchar_t *find, size_t off, size_t len)
3588 const wchar_t *p, *end;
3590 TRACE("%p %p %Iu %Iu\n", this, find, off, len);
3592 if(off<this->size) {
3593 end = basic_string_wchar_const_ptr(this)+this->size;
3594 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3595 if(!MSVCP_char_traits_wchar_find(find, len, p))
3596 return p-basic_string_wchar_const_ptr(this);
3599 return MSVCP_basic_string_wchar_npos;
3602 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3603 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3604 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3605 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3606 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of, 12)
3607 size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of(
3608 const basic_string_wchar *this, const basic_string_wchar *find, size_t off)
3610 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
3611 basic_string_wchar_const_ptr(find), off, find->size);
3614 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3615 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3616 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3617 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3618 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr, 12)
3619 size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr(
3620 const basic_string_wchar *this, const wchar_t *find, size_t off)
3622 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3623 this, find, off, MSVCP_char_traits_wchar_length(find));
3626 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3627 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3628 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3629 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3630 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch, 12)
3631 size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_ch(
3632 const basic_string_wchar *this, wchar_t ch, size_t off)
3634 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch, off, 1);
3637 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3638 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3639 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3640 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3641 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr, 16)
3642 size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3643 const basic_string_wchar *this, const wchar_t *find, size_t off, size_t len)
3645 const wchar_t *p, *beg;
3647 TRACE("%p %p %Iu %Iu\n", this, find, off, len);
3650 if(len>0 && this->size>0) {
3651 if(off >= this->size)
3652 off = this->size-1;
3654 beg = basic_string_wchar_const_ptr(this);
3655 for(p=beg+off; p>=beg; p--)
3656 if(MSVCP_char_traits_wchar_find(find, len, p))
3657 return p-beg;
3660 return MSVCP_basic_string_wchar_npos;
3663 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3664 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3665 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3666 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3667 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of, 12)
3668 size_t __thiscall MSVCP_basic_string_wchar_find_last_of(
3669 const basic_string_wchar *this, const basic_string_wchar *find, size_t off)
3671 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
3672 basic_string_wchar_const_ptr(find), off, find->size);
3675 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3676 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3677 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3678 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3679 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr, 12)
3680 size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr(
3681 const basic_string_wchar *this, const wchar_t *find, size_t off)
3683 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3684 this, find, off, MSVCP_char_traits_wchar_length(find));
3687 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3688 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3689 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3690 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3691 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch, 12)
3692 size_t __thiscall MSVCP_basic_string_wchar_find_last_of_ch(
3693 const basic_string_wchar *this, wchar_t ch, size_t off)
3695 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch, off, 1);
3698 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3699 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3700 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3701 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3702 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr, 16)
3703 size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3704 const basic_string_wchar *this, const wchar_t *find, size_t off, size_t len)
3706 const wchar_t *p, *beg;
3708 TRACE("%p %p %Iu %Iu\n", this, find, off, len);
3710 if(this->size>0) {
3711 if(off >= this->size)
3712 off = this->size-1;
3714 beg = basic_string_wchar_const_ptr(this);
3715 for(p=beg+off; p>=beg; p--)
3716 if(!MSVCP_char_traits_wchar_find(find, len, p))
3717 return p-beg;
3720 return MSVCP_basic_string_wchar_npos;
3723 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3724 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3725 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3726 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3727 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of, 12)
3728 size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of(
3729 const basic_string_wchar *this, const basic_string_wchar *find, size_t off)
3731 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
3732 basic_string_wchar_const_ptr(find), off, find->size);
3735 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3736 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3737 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3738 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3739 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr, 12)
3740 size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr(
3741 const basic_string_wchar *this, const wchar_t *find, size_t off)
3743 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3744 this, find, off, MSVCP_char_traits_wchar_length(find));
3747 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3748 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3749 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3750 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3751 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch, 12)
3752 size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_ch(
3753 const basic_string_wchar *this, wchar_t ch, size_t off)
3755 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch, off, 1);
3758 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z */
3759 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z */
3760 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
3761 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
3762 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len, 20)
3763 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr_len(basic_string_wchar *this,
3764 size_t off, size_t len, const wchar_t *str, size_t str_len)
3766 size_t inside_pos = -1;
3767 wchar_t *ptr = basic_string_wchar_ptr(this);
3769 TRACE("%p %Iu %Iu %p %Iu\n", this, off, len, str, str_len);
3771 if(this->size < off)
3772 MSVCP__String_base_Xran();
3774 if(len > this->size-off)
3775 len = this->size-off;
3777 if(MSVCP_basic_string_wchar_npos-str_len <= this->size-len)
3778 MSVCP__String_base_Xlen();
3780 if(basic_string_wchar_inside(this, str))
3781 inside_pos = str-ptr;
3783 if(len < str_len) {
3784 basic_string_wchar_grow(this, this->size-len+str_len, FALSE);
3785 ptr = basic_string_wchar_ptr(this);
3788 if(inside_pos == -1) {
3789 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3790 memcpy(ptr+off, str, str_len*sizeof(wchar_t));
3791 } else if(len >= str_len) {
3792 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(wchar_t));
3793 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3794 } else {
3795 size_t size;
3797 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3799 if(inside_pos < off+len) {
3800 size = off+len-inside_pos;
3801 if(size > str_len)
3802 size = str_len;
3803 memmove(ptr+off, ptr+inside_pos, size*sizeof(wchar_t));
3804 } else {
3805 size = 0;
3808 if(str_len > size)
3809 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(wchar_t));
3812 basic_string_wchar_eos(this, this->size-len+str_len);
3813 return this;
3816 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z */
3817 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z */
3818 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3819 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3820 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr, 16)
3821 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr(basic_string_wchar *this,
3822 size_t off, size_t len, const wchar_t *str)
3824 return basic_string_wchar_replace_cstr_len(this, off, len, str,
3825 MSVCP_char_traits_wchar_length(str));
3828 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z */
3829 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3830 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3831 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3832 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr, 24)
3833 basic_string_wchar* __thiscall basic_string_wchar_replace_substr(basic_string_wchar *this, size_t off,
3834 size_t len, const basic_string_wchar *str, size_t str_off, size_t str_len)
3836 if(str->size < str_off)
3837 MSVCP__String_base_Xran();
3839 if(str_len > str->size-str_off)
3840 str_len = str->size-str_off;
3842 return basic_string_wchar_replace_cstr_len(this, off, len,
3843 basic_string_wchar_const_ptr(str)+str_off, str_len);
3846 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z */
3847 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3848 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3849 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3850 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace, 16)
3851 basic_string_wchar* __thiscall basic_string_wchar_replace(basic_string_wchar *this,
3852 size_t off, size_t len, const basic_string_wchar *str)
3854 return basic_string_wchar_replace_cstr_len(this, off, len,
3855 basic_string_wchar_const_ptr(str), str->size);
3858 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z */
3859 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z */
3860 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3861 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3862 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch, 20)
3863 basic_string_wchar* __thiscall basic_string_wchar_replace_ch(basic_string_wchar *this,
3864 size_t off, size_t len, size_t count, wchar_t ch)
3866 wchar_t *ptr = basic_string_wchar_ptr(this);
3868 TRACE("%p %Iu %Iu %Iu %c\n", this, off, len, count, ch);
3870 if(this->size < off)
3871 MSVCP__String_base_Xran();
3873 if(len > this->size-off)
3874 len = this->size-off;
3876 if(MSVCP_basic_string_wchar_npos-count <= this->size-len)
3877 MSVCP__String_base_Xlen();
3879 if(len < count) {
3880 basic_string_wchar_grow(this, this->size-len+count, FALSE);
3881 ptr = basic_string_wchar_ptr(this);
3884 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3885 MSVCP_char_traits_wchar_assignn(ptr+off, count, ch);
3886 basic_string_wchar_eos(this, this->size-len+count);
3888 return this;
3891 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@@Z */
3892 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3893 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3894 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3895 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert, 12)
3896 basic_string_wchar* __thiscall basic_string_wchar_insert(basic_string_wchar *this,
3897 size_t off, const basic_string_wchar *str)
3899 return basic_string_wchar_replace(this, off, 0, str);
3902 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@II@Z */
3903 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3904 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3905 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3906 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr, 20)
3907 basic_string_wchar* __thiscall basic_string_wchar_insert_substr(
3908 basic_string_wchar *this, size_t off, const basic_string_wchar *str,
3909 size_t str_off, size_t str_count)
3911 return basic_string_wchar_replace_substr(this, off, 0, str, str_off, str_count);
3914 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_W@Z */
3915 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W@Z */
3916 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3917 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3918 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr, 12)
3919 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr(
3920 basic_string_wchar *this, size_t off, const wchar_t *str)
3922 return basic_string_wchar_replace_cstr(this, off, 0, str);
3925 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_WI@Z */
3926 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W0@Z */
3927 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3928 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3929 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len, 16)
3930 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr_len(basic_string_wchar *this,
3931 size_t off, const wchar_t *str, size_t str_len)
3933 return basic_string_wchar_replace_cstr_len(this, off, 0, str, str_len);
3936 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II_W@Z */
3937 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0_W@Z */
3938 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3939 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3940 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn, 16)
3941 basic_string_wchar* __thiscall basic_string_wchar_insert_chn(basic_string_wchar *this,
3942 size_t off, size_t count, wchar_t ch)
3944 return basic_string_wchar_replace_ch(this, off, 0, count, ch);
3947 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
3948 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
3949 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
3950 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
3951 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at, 8)
3952 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at(
3953 basic_string_wchar *this, size_t pos)
3955 TRACE("%p %Iu\n", this, pos);
3957 #if _MSVCP_VER >= 80
3958 if (this->size < pos)
3959 _invalid_parameter(NULL, NULL, NULL, 0, 0);
3960 #endif
3962 return basic_string_wchar_ptr(this)+pos;
3965 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
3966 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
3967 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
3968 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
3969 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_operator_at, 8)
3970 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_operator_at(
3971 const basic_string_wchar *this, size_t pos)
3973 TRACE("%p %Iu\n", this, pos);
3975 #if _MSVCP_VER >= 80
3976 if (this->size < pos)
3977 _invalid_parameter(NULL, NULL, NULL, 0, 0);
3978 #endif
3980 return basic_string_wchar_const_ptr(this)+pos;
3983 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z */
3984 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z */
3985 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGU_Size_type_nosscl@01@@Z */
3986 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAGU_Size_type_nosscl@01@@Z */
3987 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at_noverify, 8)
3988 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at_noverify(
3989 basic_string_wchar *this, size_t_noverify pos)
3991 TRACE("%p %Iu\n", this, pos.val);
3992 return basic_string_wchar_ptr(this)+pos.val;
3995 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z */
3996 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z */
3997 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGU_Size_type_nosscl@01@@Z */
3998 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBGU_Size_type_nosscl@01@@Z */
3999 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_const_at_noverify, 8)
4000 const wchar_t* __thiscall MSVCP_basic_string_wchar_operator_const_at_noverify(
4001 const basic_string_wchar *this, size_t_noverify pos)
4003 TRACE("%p %Iu\n", this, pos.val);
4004 return basic_string_wchar_const_ptr(this)+pos.val;
4007 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
4008 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
4009 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
4010 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
4011 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at, 8)
4012 wchar_t* __thiscall MSVCP_basic_string_wchar_at(
4013 basic_string_wchar *this, size_t pos)
4015 TRACE("%p %Iu\n", this, pos);
4017 if(this->size <= pos)
4018 MSVCP__String_base_Xran();
4020 return basic_string_wchar_ptr(this)+pos;
4023 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
4024 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
4025 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
4026 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
4027 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_at, 8)
4028 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at(
4029 const basic_string_wchar *this, size_t pos)
4031 TRACE("%p %Iu\n", this, pos);
4033 if(this->size <= pos)
4034 MSVCP__String_base_Xran();
4036 return basic_string_wchar_const_ptr(this)+pos;
4039 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z */
4040 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z */
4041 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
4042 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
4043 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch, 12)
4044 void __thiscall MSVCP_basic_string_wchar_resize_ch(
4045 basic_string_wchar *this, size_t size, wchar_t ch)
4047 TRACE("%p %Iu %c\n", this, size, ch);
4049 if(size <= this->size)
4050 MSVCP_basic_string_wchar_erase(this, size, this->size);
4051 else
4052 MSVCP_basic_string_wchar_append_len_ch(this, size-this->size, ch);
4055 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
4056 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
4057 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
4058 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
4059 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize, 8)
4060 void __thiscall MSVCP_basic_string_wchar_resize(
4061 basic_string_wchar *this, size_t size)
4063 MSVCP_basic_string_wchar_resize_ch(this, size, '\0');
4066 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4067 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4068 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4069 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4070 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear, 4)
4071 void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar *this)
4073 basic_string_wchar_eos(this, 0);
4076 /* _String_val class */
4077 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ */
4078 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ */
4079 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ */
4080 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ */
4081 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ */
4082 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ */
4083 DEFINE_THISCALL_WRAPPER(_String_val_ctor, 4)
4084 void* __thiscall _String_val_ctor(void *this)
4086 TRACE("%p\n", this);
4087 return this;
4090 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z */
4091 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z */
4092 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z */
4093 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z */
4094 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z */
4095 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z */
4096 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z */
4097 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z */
4098 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z */
4099 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z */
4100 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z */
4101 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z */
4102 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4103 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4104 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z */
4105 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4106 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z */
4107 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4108 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4109 DEFINE_THISCALL_WRAPPER(_String_val_null_ctor, 8)
4110 void* __thiscall _String_val_null_ctor(void *this, const void *misc)
4112 TRACE("%p %p\n", this, misc);
4113 return this;
4116 #if _MSVCP_VER < 80 /* old iterator functions */
4118 typedef struct {
4119 const char *pos;
4120 } basic_string_char_iterator;
4122 typedef struct {
4123 const wchar_t *pos;
4124 } basic_string_wchar_iterator;
4126 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KAIVconst_iterator@12@0@Z */
4127 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAIV?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4128 size_t __cdecl basic_string_char__Pdif(basic_string_char_iterator i1, basic_string_char_iterator i2)
4130 TRACE("(%p %p)\n", i1.pos, i2.pos);
4131 return !i1.pos ? 0 : i1.pos-i2.pos;
4134 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@0@Z */
4135 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@0@Z */
4136 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter_range, 16)
4137 basic_string_char_iterator* __thiscall basic_string_char_erase_iter_range(basic_string_char *this,
4138 basic_string_char_iterator *ret, basic_string_char_iterator beg, basic_string_char_iterator end)
4140 size_t off;
4142 ret->pos = basic_string_char_ptr(this);
4143 off = basic_string_char__Pdif(beg, *ret);
4145 MSVCP_basic_string_char_erase(this, off, basic_string_char__Pdif(end, beg));
4147 ret->pos = basic_string_char_ptr(this)+off;
4148 return ret;
4151 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@@Z */
4152 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@@Z */
4153 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter, 12)
4154 basic_string_char_iterator* __thiscall basic_string_char_erase_iter(basic_string_char *this,
4155 basic_string_char_iterator *ret, basic_string_char_iterator pos)
4157 size_t off;
4159 ret->pos = basic_string_char_ptr(this);
4160 off = basic_string_char__Pdif(pos, *ret);
4162 MSVCP_basic_string_char_erase(this, off, 1);
4164 ret->pos = basic_string_char_ptr(this)+off;
4165 return ret;
4168 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4169 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4170 DEFINE_THISCALL_WRAPPER(basic_string_char_assign_iter, 12)
4171 basic_string_char* __thiscall basic_string_char_assign_iter(basic_string_char *this,
4172 basic_string_char_iterator beg, basic_string_char_iterator end)
4174 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
4177 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@Vconst_iterator@01@0@Z */
4178 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_Ptrit@DHPBDABDPADAAD@1@0@Z */
4179 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter, 12)
4180 basic_string_char* __thiscall basic_string_char_ctor_iter(basic_string_char *this,
4181 basic_string_char_iterator beg, basic_string_char_iterator end)
4183 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4186 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4187 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4188 DEFINE_THISCALL_WRAPPER(basic_string_char_append_iter, 12)
4189 basic_string_char* __thiscall basic_string_char_append_iter(basic_string_char *this,
4190 basic_string_char_iterator beg, basic_string_char_iterator end)
4192 return basic_string_char_replace_cstr_len(this, this->size, 0, beg.pos, end.pos-beg.pos);
4195 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4196 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0V?$_Ptrit@DHPBDABDPADAAD@2@1@Z */
4197 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter, 20)
4198 basic_string_char* __thiscall basic_string_char_replace_iter_iter(basic_string_char *this,
4199 basic_string_char_iterator beg, basic_string_char_iterator end,
4200 basic_string_char_iterator rbeg, basic_string_char_iterator rend)
4202 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4203 end.pos-beg.pos, rbeg.pos, rend.pos-rbeg.pos);
4206 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4207 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0ABV12@@Z */
4208 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr, 16)
4209 basic_string_char* __thiscall basic_string_char_replace_iter_bstr(basic_string_char *this,
4210 basic_string_char_iterator beg, basic_string_char_iterator end, const basic_string_char *str)
4212 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4213 end.pos-beg.pos, basic_string_char_const_ptr(str), str->size);
4216 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ID@Z */
4217 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0ID@Z */
4218 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ch, 20)
4219 basic_string_char* __thiscall basic_string_char_replace_iter_ch(basic_string_char *this,
4220 basic_string_char_iterator beg, basic_string_char_iterator end, size_t count, char ch)
4222 /* TODO: add more efficient implementation */
4223 size_t off = beg.pos-basic_string_char_ptr(this);
4225 basic_string_char_replace_cstr_len(this, off, end.pos-beg.pos, NULL, 0);
4226 while(count--)
4227 basic_string_char_replace_cstr_len(this, off, 0, &ch, 1);
4228 return this;
4231 static basic_string_char* basic_string_char_replace_iter_ptr_ptr(basic_string_char *this,
4232 basic_string_char_iterator beg, basic_string_char_iterator end,
4233 const char *res_beg, const char *res_end)
4235 basic_string_char_iterator begin = { basic_string_char_ptr(this) };
4236 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg, begin),
4237 basic_string_char__Pdif(end, beg), res_beg, res_end-res_beg);
4240 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD1@Z */
4241 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBD1@Z */
4242 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_beg_end, 20)
4243 basic_string_char* __thiscall basic_string_char_replace_iter_beg_end(basic_string_char *this,
4244 basic_string_char_iterator beg, basic_string_char_iterator end, const char *rbeg, const char *rend)
4246 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4247 end.pos-beg.pos, rbeg, rend-rbeg);
4250 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD@Z */
4251 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBD@Z */
4252 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr, 16)
4253 basic_string_char* __thiscall basic_string_char_replace_iter_cstr(basic_string_char *this,
4254 basic_string_char_iterator beg, basic_string_char_iterator end, const char *str)
4256 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4257 end.pos-beg.pos, str, strlen(str));
4260 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBDI@Z */
4261 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBDI@Z */
4262 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len, 20)
4263 basic_string_char* __thiscall basic_string_char_replace_iter_cstr_len(basic_string_char *this,
4264 basic_string_char_iterator beg, basic_string_char_iterator end, const char *str, size_t len)
4266 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4267 end.pos-beg.pos, str, len);
4270 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@ID@Z */
4271 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXV?$_Ptrit@DHPADAADPADAAD@2@ID@Z */
4272 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn, 16)
4273 void __thiscall basic_string_char_insert_iter_chn(basic_string_char *this,
4274 basic_string_char_iterator where, size_t count, char ch)
4276 basic_string_char_iterator iter = { basic_string_char_ptr(this) };
4277 size_t off = basic_string_char__Pdif(where, iter);
4279 basic_string_char_insert_chn(this, off, count, ch);
4282 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@D@Z */
4283 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@D@Z */
4284 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch, 16)
4285 basic_string_char_iterator* __thiscall basic_string_char_insert_iter_ch(basic_string_char *this,
4286 basic_string_char_iterator *ret, basic_string_char_iterator where, char ch)
4288 size_t off;
4290 ret->pos = basic_string_char_ptr(this);
4291 off = basic_string_char__Pdif(where, *ret);
4293 basic_string_char_insert_chn(this, off, 1, ch);
4294 ret->pos = basic_string_char_ptr(this)+off;
4295 return ret;
4298 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@@Z */
4299 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@@Z */
4300 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_null, 12)
4301 basic_string_char_iterator* __thiscall basic_string_char_insert_iter_null(basic_string_char *this,
4302 basic_string_char_iterator *ret, basic_string_char_iterator where)
4304 return basic_string_char_insert_iter_ch(this, ret, where, 0);
4307 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@PBD1@Z */
4308 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ptr_ptr, 16)
4309 void __thiscall basic_string_char_insert_iter_ptr_ptr(basic_string_char *this,
4310 basic_string_char_iterator where, const char *beg, const char *end)
4312 basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end);
4315 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@PBD1@Z */
4316 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 16)
4317 void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this,
4318 basic_string_char_iterator where, basic_string_char_iterator beg, basic_string_char_iterator end)
4320 basic_string_char_replace_iter_ptr_ptr(this, where, where, beg.pos, end.pos);
4323 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */
4324 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */
4325 /* ?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 */
4326 /* ?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 */
4327 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@XZ */
4328 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_Ptrit@DHPBDABDPADAAD@2@XZ */
4329 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@DHPADAADPADAAD@std@@@2@XZ */
4330 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@DHPBDABDPADAAD@std@@@2@XZ */
4331 DEFINE_THISCALL_WRAPPER(basic_string_char_begin, 8)
4332 basic_string_char_iterator* __thiscall basic_string_char_begin(
4333 basic_string_char *this, basic_string_char_iterator *ret)
4335 ret->pos = basic_string_char_ptr(this);
4336 return ret;
4339 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */
4340 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */
4341 /* ?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 */
4342 /* ?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 */
4343 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@XZ */
4344 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_Ptrit@DHPBDABDPADAAD@2@XZ */
4345 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@DHPADAADPADAAD@std@@@2@XZ */
4346 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@DHPBDABDPADAAD@std@@@2@XZ */
4347 DEFINE_THISCALL_WRAPPER(basic_string_char_end, 8)
4348 basic_string_char_iterator* __thiscall basic_string_char_end(
4349 basic_string_char *this, basic_string_char_iterator *ret)
4351 ret->pos = basic_string_char_ptr(this)+this->size;
4352 return ret;
4355 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIVconst_iterator@12@0@Z */
4356 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@KAIVconst_iterator@12@0@Z */
4357 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@CAIV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4358 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAIV?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4359 size_t __cdecl basic_string_wchar__Pdif(basic_string_wchar_iterator i1, basic_string_wchar_iterator i2)
4361 TRACE("(%p %p)\n", i1.pos, i2.pos);
4362 return !i1.pos ? 0 : i1.pos-i2.pos;
4365 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@0@Z */
4366 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@0@Z */
4367 /* ?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 */
4368 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@0@Z */
4369 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter_range, 16)
4370 basic_string_wchar_iterator* __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this,
4371 basic_string_wchar_iterator *ret, basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4373 size_t off;
4375 ret->pos = basic_string_wchar_ptr(this);
4376 off = basic_string_wchar__Pdif(beg, *ret);
4378 MSVCP_basic_string_wchar_erase(this, off, basic_string_wchar__Pdif(end, beg));
4380 ret->pos = basic_string_wchar_ptr(this)+off;
4381 return ret;
4384 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@@Z */
4385 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z */
4386 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V32@@Z */
4387 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@@Z */
4388 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter, 12)
4389 basic_string_wchar_iterator* __thiscall basic_string_wchar_erase_iter(basic_string_wchar *this,
4390 basic_string_wchar_iterator *ret, basic_string_wchar_iterator pos)
4392 size_t off;
4394 ret->pos = basic_string_wchar_ptr(this);
4395 off = basic_string_wchar__Pdif(pos, *ret);
4397 MSVCP_basic_string_wchar_erase(this, off, 1);
4399 ret->pos = basic_string_wchar_ptr(this)+off;
4400 return ret;
4403 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4404 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4405 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4406 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4407 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign_iter, 12)
4408 basic_string_wchar* __thiscall basic_string_wchar_assign_iter(basic_string_wchar *this,
4409 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4411 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
4414 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@Vconst_iterator@01@0@Z */
4415 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@Vconst_iterator@01@0@Z */
4416 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@1@0@Z */
4417 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@V?$_Ptrit@GHPBGABGPAGAAG@1@0@Z */
4418 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter, 12)
4419 basic_string_wchar* __thiscall basic_string_wchar_ctor_iter(basic_string_wchar *this,
4420 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4422 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4425 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4426 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4427 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4428 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4429 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_iter, 12)
4430 basic_string_wchar* __thiscall basic_string_wchar_append_iter(basic_string_wchar *this,
4431 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4433 return basic_string_wchar_replace_cstr_len(this, this->size, 0, beg.pos, end.pos-beg.pos);
4436 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4437 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4438 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0V?$_Ptrit@GHPBGABGPAGAAG@2@1@Z */
4439 /* ?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 */
4440 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter, 20)
4441 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
4442 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4443 basic_string_wchar_iterator rbeg, basic_string_wchar_iterator rend)
4445 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4446 end.pos-beg.pos, rbeg.pos, rend.pos-rbeg.pos);
4449 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4450 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4451 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0ABV12@@Z */
4452 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0ABV12@@Z */
4453 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr, 16)
4454 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
4455 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, basic_string_wchar *str)
4457 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4458 end.pos-beg.pos, basic_string_wchar_ptr(str), str->size);
4461 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0IG@Z */
4462 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0I_W@Z */
4463 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0IG@Z */
4464 /* ?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 */
4465 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ch, 20)
4466 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
4467 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, size_t count, wchar_t ch)
4469 /* TODO: add more efficient implementation */
4470 size_t off = beg.pos-basic_string_wchar_ptr(this);
4472 basic_string_wchar_replace_cstr_len(this, off, end.pos-beg.pos, NULL, 0);
4473 while(count--)
4474 basic_string_wchar_replace_cstr_len(this, off, 0, &ch, 1);
4475 return this;
4478 static basic_string_wchar* basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
4479 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4480 const wchar_t *res_beg, const wchar_t *res_end)
4482 basic_string_wchar_iterator begin = { basic_string_wchar_ptr(this) };
4483 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg, begin),
4484 basic_string_wchar__Pdif(end, beg), res_beg, res_end-res_beg);
4487 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG1@Z */
4488 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W1@Z */
4489 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBG1@Z */
4490 /* ?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 */
4491 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_beg_end, 20)
4492 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_beg_end(basic_string_wchar *this,
4493 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4494 const wchar_t *rbeg, const wchar_t *rend)
4496 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4497 end.pos-beg.pos, rbeg, rend-rbeg);
4500 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG@Z */
4501 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W@Z */
4502 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBG@Z */
4503 /* ?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 */
4504 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr, 16)
4505 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
4506 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, const wchar_t *str)
4508 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4509 end.pos-beg.pos, str, wcslen(str));
4512 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBGI@Z */
4513 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_WI@Z */
4514 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBGI@Z */
4515 /* ?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 */
4516 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len, 20)
4517 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
4518 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4519 const wchar_t *str, size_t len)
4521 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4522 end.pos-beg.pos, str, len);
4525 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@I_W@Z */
4526 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@IG@Z */
4527 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@I_W@Z */
4528 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@IG@Z */
4529 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn, 16)
4530 void __thiscall basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
4531 basic_string_wchar_iterator where, size_t count, wchar_t ch)
4533 basic_string_wchar_iterator iter = { basic_string_wchar_ptr(this) };
4534 size_t off = basic_string_wchar__Pdif(where, iter);
4536 basic_string_wchar_insert_chn(this, off, count, ch);
4539 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@_W@Z */
4540 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@G@Z */
4541 /* ?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 */
4542 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@G@Z */
4543 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch, 16)
4544 basic_string_wchar_iterator* __thiscall basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
4545 basic_string_wchar_iterator *ret, basic_string_wchar_iterator where, wchar_t ch)
4547 size_t off;
4549 ret->pos = basic_string_wchar_ptr(this);
4550 off = basic_string_wchar__Pdif(where, *ret);
4552 basic_string_wchar_insert_chn(this, off, 1, ch);
4553 ret->pos = basic_string_wchar_ptr(this)+off;
4554 return ret;
4557 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@@Z */
4558 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z */
4559 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V32@@Z */
4560 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@@Z */
4561 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_null, 12)
4562 basic_string_wchar_iterator* __thiscall basic_string_wchar_insert_iter_null(basic_string_wchar *this,
4563 basic_string_wchar_iterator *ret, basic_string_wchar_iterator where)
4565 return basic_string_wchar_insert_iter_ch(this, ret, where, 0);
4568 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@PB_W1@Z */
4569 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@PBG1@Z */
4570 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@PB_W1@Z */
4571 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@PBG1@Z */
4572 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ptr_ptr, 16)
4573 void __thiscall basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
4574 basic_string_wchar_iterator where, const wchar_t *beg, const wchar_t *end)
4576 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
4579 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4580 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4581 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4582 /* ?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 */
4583 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@V?$_Ptrit@GHPBGABGPAGAAG@2@1@Z */
4584 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 16)
4585 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
4586 basic_string_wchar_iterator where, basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4588 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg.pos, end.pos);
4591 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ */
4592 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AVconst_iterator@12@XZ */
4593 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@XZ */
4594 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AVconst_iterator@12@XZ */
4595 /* ?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 */
4596 /* ?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 */
4597 /* ?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 */
4598 /* ?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 */
4599 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@XZ */
4600 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_Ptrit@GHPBGABGPAGAAG@2@XZ */
4601 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@XZ */
4602 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@XZ */
4603 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@GHPAGAAGPAGAAG@std@@@2@XZ */
4604 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@GHPBGABGPAGAAG@std@@@2@XZ */
4605 /* ?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 */
4606 /* ?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 */
4607 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin, 8)
4608 basic_string_wchar_iterator* __thiscall basic_string_wchar_begin(
4609 basic_string_wchar *this, basic_string_wchar_iterator *ret)
4611 ret->pos = basic_string_wchar_ptr(this);
4612 return ret;
4615 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ */
4616 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AVconst_iterator@12@XZ */
4617 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@XZ */
4618 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AVconst_iterator@12@XZ */
4619 /* ?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 */
4620 /* ?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 */
4621 /* ?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 */
4622 /* ?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 */
4623 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@XZ */
4624 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_Ptrit@GHPBGABGPAGAAG@2@XZ */
4625 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@XZ */
4626 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@XZ */
4627 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@GHPAGAAGPAGAAG@std@@@2@XZ */
4628 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@GHPBGABGPAGAAG@std@@@2@XZ */
4629 /* ?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 */
4630 /* ?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 */
4631 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end, 8)
4632 basic_string_wchar_iterator* __thiscall basic_string_wchar_end(
4633 basic_string_wchar *this, basic_string_wchar_iterator *ret)
4635 ret->pos = basic_string_wchar_ptr(this)+this->size;
4636 return ret;
4639 #else /* _MSVCP_VER >= 80, new iterator functions */
4641 /* _String_iterator<char> and _String_const_iterator<char> class */
4642 typedef struct {
4643 basic_string_char *bstr;
4644 const char *pos;
4645 } String_iterator_char;
4647 typedef struct {
4648 #if _MSVCP_VER == 80
4649 void *cont;
4650 #endif
4651 const basic_string_char *bstr;
4652 const char *pos;
4653 } String_reverse_iterator_char;
4655 typedef struct {
4656 basic_string_wchar *bstr;
4657 const wchar_t *pos;
4658 } String_iterator_wchar;
4660 typedef struct {
4661 #if _MSVCP_VER == 80
4662 void *cont;
4663 #endif
4664 const basic_string_wchar *bstr;
4665 const wchar_t *pos;
4666 } String_reverse_iterator_wchar;
4668 /* ?_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 */
4669 /* ?_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 */
4670 size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, String_iterator_char i2)
4672 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
4674 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
4675 _invalid_parameter(NULL, NULL, NULL, 0, 0);
4676 return 0;
4679 return !i1.pos ? 0 : i1.pos-i2.pos;
4682 /* ?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 */
4683 /* ?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 */
4684 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase_iter_range, 24)
4685 String_iterator_char* __thiscall MSVCP_basic_string_char_erase_iter_range(basic_string_char *this,
4686 String_iterator_char *ret, String_iterator_char beg, String_iterator_char end)
4688 size_t off;
4690 ret->bstr = this;
4691 ret->pos = basic_string_char_ptr(this);
4692 off = MSVCP_basic_string_char_Pdif(beg, *ret);
4694 MSVCP_basic_string_char_erase(this, off, MSVCP_basic_string_char_Pdif(end, beg));
4696 ret->bstr = this;
4697 ret->pos = basic_string_char_ptr(this)+off;
4698 return ret;
4701 /* ?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 */
4702 /* ?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 */
4703 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase_iter, 16)
4704 String_iterator_char* __thiscall MSVCP_basic_string_char_erase_iter(basic_string_char *this,
4705 String_iterator_char *ret, String_iterator_char pos)
4707 size_t off;
4709 ret->bstr = this;
4710 ret->pos = basic_string_char_ptr(this);
4711 off = MSVCP_basic_string_char_Pdif(pos, *ret);
4713 MSVCP_basic_string_char_erase(this, off, 1);
4715 ret->bstr = this;
4716 ret->pos = basic_string_char_ptr(this)+off;
4717 return ret;
4720 /* ?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 */
4721 /* ?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 */
4722 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_iter, 20)
4723 basic_string_char* __thiscall MSVCP_basic_string_char_assign_iter(basic_string_char *this,
4724 String_iterator_char beg, String_iterator_char end)
4726 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
4729 /* ??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 */
4730 /* ??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 */
4731 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_iter, 20)
4732 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_iter(basic_string_char *this,
4733 String_iterator_char beg, String_iterator_char end)
4735 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4738 /* ?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 */
4739 /* ?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 */
4740 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_iter, 20)
4741 basic_string_char* __thiscall MSVCP_basic_string_char_append_iter(
4742 basic_string_char *this, String_iterator_char beg, String_iterator_char end)
4744 return MSVCP_basic_string_char_append_cstr_len(this, beg.pos, end.pos-beg.pos);
4747 /* ?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 */
4748 /* ?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 */
4749 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_iter, 36)
4750 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_iter(basic_string_char *this,
4751 String_iterator_char beg, String_iterator_char end,
4752 String_iterator_char res_beg, String_iterator_char res_end)
4754 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4755 return basic_string_char_replace_cstr_len(this,
4756 MSVCP_basic_string_char_Pdif(beg, begin), MSVCP_basic_string_char_Pdif(end, beg),
4757 res_beg.pos, MSVCP_basic_string_char_Pdif(res_end, res_beg));
4760 /* ?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 */
4761 /* ?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 */
4762 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_bstr, 24)
4763 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_bstr(basic_string_char *this,
4764 String_iterator_char beg, String_iterator_char end, const basic_string_char *str)
4766 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4767 return basic_string_char_replace(this, MSVCP_basic_string_char_Pdif(beg, begin),
4768 MSVCP_basic_string_char_Pdif(end, beg), str);
4771 /* ?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 */
4772 /* ?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 */
4773 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_ch, 28)
4774 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_ch(basic_string_char *this,
4775 String_iterator_char beg, String_iterator_char end, size_t count, char ch)
4777 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4778 return basic_string_char_replace_ch(this, MSVCP_basic_string_char_Pdif(beg, begin),
4779 MSVCP_basic_string_char_Pdif(end, beg), count, ch);
4782 /* ?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 */
4783 /* ?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 */
4784 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_ptr_ptr, 28)
4785 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_ptr_ptr(basic_string_char *this,
4786 String_iterator_char beg, String_iterator_char end,
4787 const char *res_beg, const char *res_end)
4789 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4790 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
4791 MSVCP_basic_string_char_Pdif(end, beg), res_beg, res_end-res_beg);
4794 /* ?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 */
4795 /* ?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 */
4796 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_cstr, 24)
4797 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_cstr(basic_string_char *this,
4798 String_iterator_char beg, String_iterator_char end, const char *str)
4800 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4801 return basic_string_char_replace_cstr(this, MSVCP_basic_string_char_Pdif(beg, begin),
4802 MSVCP_basic_string_char_Pdif(end, beg), str);
4805 /* ?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 */
4806 /* ?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 */
4807 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_cstr_len, 28)
4808 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_cstr_len(basic_string_char *this,
4809 String_iterator_char beg, String_iterator_char end, const char *str, size_t len)
4811 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4812 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
4813 MSVCP_basic_string_char_Pdif(end, beg), str, len);
4816 /* ?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 */
4817 /* ?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 */
4818 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_chn, 20)
4819 void __thiscall MSVCP_basic_string_char_insert_iter_chn(basic_string_char *this,
4820 String_iterator_char where, size_t count, char ch)
4822 String_iterator_char iter = { this, basic_string_char_ptr(this) };
4823 size_t off = MSVCP_basic_string_char_Pdif(where, iter);
4825 basic_string_char_insert_chn(this, off, count, ch);
4828 /* ?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 */
4829 /* ?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 */
4830 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_ch, 20)
4831 String_iterator_char* __thiscall MSVCP_basic_string_char_insert_iter_ch(basic_string_char *this,
4832 String_iterator_char *ret, String_iterator_char where, char ch)
4834 size_t off;
4836 ret->bstr = this;
4837 ret->pos = basic_string_char_ptr(this);
4838 off = MSVCP_basic_string_char_Pdif(where, *ret);
4840 basic_string_char_insert_chn(this, off, 1, ch);
4841 ret->pos = basic_string_char_ptr(this)+off;
4842 return ret;
4845 /* ?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 */
4846 /* ?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 */
4847 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_null, 16)
4848 String_iterator_char* __thiscall MSVCP_basic_string_char_insert_iter_null(basic_string_char *this,
4849 String_iterator_char *ret, String_iterator_char where)
4851 return MSVCP_basic_string_char_insert_iter_ch(this, ret, where, 0);
4854 /* ?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 */
4855 /* ?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 */
4856 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 28)
4857 void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this,
4858 String_iterator_char where, String_iterator_char beg, String_iterator_char end)
4860 MSVCP_basic_string_char_replace_iter_iter(this, where, where, beg, end);
4863 /* ?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 */
4864 /* ?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 */
4865 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_ptr_ptr, 20)
4866 void __thiscall MSVCP_basic_string_char_insert_iter_ptr_ptr(basic_string_char *this,
4867 String_iterator_char where, const char *beg, const char *end)
4869 MSVCP_basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end);
4872 /* ?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 */
4873 /* ?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 */
4874 /* ?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 */
4875 /* ?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 */
4876 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_begin, 8)
4877 String_iterator_char* __thiscall MSVCP_basic_string_char_begin(
4878 basic_string_char *this, String_iterator_char *ret)
4880 TRACE("%p\n", this);
4882 ret->bstr = this;
4883 ret->pos = basic_string_char_const_ptr(this);
4884 return ret;
4887 /* ?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 */
4888 /* ?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 */
4889 /* ?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 */
4890 /* ?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 */
4891 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_end, 8)
4892 String_iterator_char* __thiscall MSVCP_basic_string_char_end(
4893 basic_string_char *this, String_iterator_char *ret)
4895 TRACE("%p\n", this);
4897 ret->bstr = this;
4898 ret->pos = basic_string_char_const_ptr(this)+this->size;
4899 return ret;
4902 /* ?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 */
4903 /* ?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 */
4904 /* ?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 */
4905 /* ?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 */
4906 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rbegin, 8)
4907 String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rbegin(
4908 basic_string_char *this, String_reverse_iterator_char *ret)
4910 TRACE("%p\n", this);
4912 #if _MSVCP_VER == 80
4913 ret->cont = NULL;
4914 #endif
4915 ret->bstr = this;
4916 ret->pos = basic_string_char_const_ptr(this)+this->size;
4917 return ret;
4920 /* ?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 */
4921 /* ?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 */
4922 /* ?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 */
4923 /* ?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 */
4924 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rend, 8)
4925 String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rend(
4926 basic_string_char *this, String_reverse_iterator_char *ret)
4928 TRACE("%p\n", this);
4930 #if _MSVCP_VER == 80
4931 ret->cont = NULL;
4932 #endif
4933 ret->bstr = this;
4934 ret->pos = basic_string_char_const_ptr(this);
4935 return ret;
4938 /* ?_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 */
4939 /* ?_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 */
4940 /* ?_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 */
4941 /* ?_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 */
4942 size_t __cdecl MSVCP_basic_string_wchar_Pdif(String_iterator_wchar i1, String_iterator_wchar i2)
4944 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
4946 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
4947 _invalid_parameter(NULL, NULL, NULL, 0, 0);
4948 return 0;
4951 return !i1.pos ? 0 : i1.pos-i2.pos;
4954 /* ?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 */
4955 /* ?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 */
4956 /* ?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 */
4957 /* ?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 */
4958 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase_iter_range, 24)
4959 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_erase_iter_range(basic_string_wchar *this,
4960 String_iterator_wchar *ret, String_iterator_wchar beg, String_iterator_wchar end)
4962 size_t off;
4964 ret->bstr = this;
4965 ret->pos = basic_string_wchar_ptr(this);
4966 off = MSVCP_basic_string_wchar_Pdif(beg, *ret);
4968 MSVCP_basic_string_wchar_erase(this, off, MSVCP_basic_string_wchar_Pdif(end, beg));
4970 ret->bstr = this;
4971 ret->pos = basic_string_wchar_ptr(this)+off;
4972 return ret;
4975 /* ?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 */
4976 /* ?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 */
4977 /* ?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 */
4978 /* ?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 */
4979 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase_iter, 16)
4980 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_erase_iter(basic_string_wchar *this,
4981 String_iterator_wchar *ret, String_iterator_wchar pos)
4983 size_t off;
4985 ret->bstr = this;
4986 ret->pos = basic_string_wchar_ptr(this);
4987 off = MSVCP_basic_string_wchar_Pdif(pos, *ret);
4989 MSVCP_basic_string_wchar_erase(this, off, 1);
4991 ret->bstr = this;
4992 ret->pos = basic_string_wchar_ptr(this)+off;
4993 return ret;
4996 /* ?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 */
4997 /* ?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 */
4998 /* ?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 */
4999 /* ?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 */
5000 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_iter, 20)
5001 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_iter(basic_string_wchar *this,
5002 String_iterator_wchar beg, String_iterator_wchar end)
5004 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
5007 /* ??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 */
5008 /* ??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 */
5009 /* ??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 */
5010 /* ??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 */
5011 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_iter, 20)
5012 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_iter(basic_string_wchar *this,
5013 String_iterator_wchar beg, String_iterator_wchar end)
5015 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
5018 /* ?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 */
5019 /* ?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 */
5020 /* ?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 */
5021 /* ?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 */
5022 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_iter, 20)
5023 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_iter(
5024 basic_string_wchar *this, String_iterator_wchar beg, String_iterator_wchar end)
5026 return MSVCP_basic_string_wchar_append_cstr_len(this, beg.pos, end.pos-beg.pos);
5029 /* ?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 */
5030 /* ?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 */
5031 /* ?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 */
5032 /* ?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 */
5033 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_iter, 36)
5034 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
5035 String_iterator_wchar beg, String_iterator_wchar end,
5036 String_iterator_wchar res_beg, String_iterator_wchar res_end)
5038 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5039 return basic_string_wchar_replace_cstr_len(this,
5040 MSVCP_basic_string_wchar_Pdif(beg, begin), MSVCP_basic_string_wchar_Pdif(end, beg),
5041 res_beg.pos, MSVCP_basic_string_wchar_Pdif(res_end, res_beg));
5044 /* ?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 */
5045 /* ?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 */
5046 /* ?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 */
5047 /* ?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 */
5048 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_bstr, 24)
5049 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
5050 String_iterator_wchar beg, String_iterator_wchar end, const basic_string_wchar *str)
5052 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5053 return basic_string_wchar_replace(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5054 MSVCP_basic_string_wchar_Pdif(end, beg), str);
5057 /* ?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 */
5058 /* ?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 */
5059 /* ?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 */
5060 /* ?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 */
5061 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_ch, 28)
5062 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
5063 String_iterator_wchar beg, String_iterator_wchar end, size_t count, wchar_t ch)
5065 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5066 return basic_string_wchar_replace_ch(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5067 MSVCP_basic_string_wchar_Pdif(end, beg), count, ch);
5070 /* ?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 */
5071 /* ?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 */
5072 /* ?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 */
5073 /* ?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 */
5074 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_ptr_ptr, 28)
5075 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
5076 String_iterator_wchar beg, String_iterator_wchar end,
5077 const wchar_t *res_beg, const wchar_t *res_end)
5079 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5080 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5081 MSVCP_basic_string_wchar_Pdif(end, beg), res_beg, res_end-res_beg);
5084 /* ?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 */
5085 /* ?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 */
5086 /* ?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 */
5087 /* ?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 */
5088 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_cstr, 24)
5089 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
5090 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str)
5092 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5093 return basic_string_wchar_replace_cstr(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5094 MSVCP_basic_string_wchar_Pdif(end, beg), str);
5097 /* ?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 */
5098 /* ?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 */
5099 /* ?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 */
5100 /* ?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 */
5101 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_cstr_len, 28)
5102 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
5103 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str, size_t len)
5105 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
5106 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
5107 MSVCP_basic_string_wchar_Pdif(end, beg), str, len);
5110 /* ?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 */
5111 /* ?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 */
5112 /* ?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 */
5113 /* ?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 */
5114 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_chn, 20)
5115 void __thiscall MSVCP_basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
5116 String_iterator_wchar where, size_t count, wchar_t ch)
5118 String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) };
5119 size_t off = MSVCP_basic_string_wchar_Pdif(where, iter);
5121 basic_string_wchar_insert_chn(this, off, count, ch);
5124 /* ?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 */
5125 /* ?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 */
5126 /* ?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 */
5127 /* ?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 */
5128 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_ch, 20)
5129 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
5130 String_iterator_wchar *ret, String_iterator_wchar where, wchar_t ch)
5132 size_t off;
5134 ret->bstr = this;
5135 ret->pos = basic_string_wchar_ptr(this);
5136 off = MSVCP_basic_string_wchar_Pdif(where, *ret);
5138 basic_string_wchar_insert_chn(this, off, 1, ch);
5139 ret->pos = basic_string_wchar_ptr(this)+off;
5140 return ret;
5143 /* ?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 */
5144 /* ?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 */
5145 /* ?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 */
5146 /* ?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 */
5147 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_null, 16)
5148 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_insert_iter_null(basic_string_wchar *this,
5149 String_iterator_wchar *ret, String_iterator_wchar where)
5151 return MSVCP_basic_string_wchar_insert_iter_ch(this, ret, where, 0);
5154 /* ?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 */
5155 /* ?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 */
5156 /* ?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 */
5157 /* ?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 */
5158 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 28)
5159 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
5160 String_iterator_wchar where, String_iterator_wchar beg, String_iterator_wchar end)
5162 MSVCP_basic_string_wchar_replace_iter_iter(this, where, where, beg, end);
5165 /* ?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 */
5166 /* ?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 */
5167 /* ?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 */
5168 /* ?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 */
5169 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_ptr_ptr, 20)
5170 void __thiscall MSVCP_basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
5171 String_iterator_wchar where, const wchar_t *beg, const wchar_t *end)
5173 MSVCP_basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
5176 /* ?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 */
5177 /* ?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 */
5178 /* ?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 */
5179 /* ?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 */
5180 /* ?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 */
5181 /* ?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 */
5182 /* ?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 */
5183 /* ?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 */
5184 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_begin, 8)
5185 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_begin(
5186 basic_string_wchar *this, String_iterator_wchar *ret)
5188 TRACE("%p\n", this);
5190 ret->bstr = this;
5191 ret->pos = basic_string_wchar_const_ptr(this);
5192 return ret;
5195 /* ?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 */
5196 /* ?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 */
5197 /* ?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 */
5198 /* ?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 */
5199 /* ?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 */
5200 /* ?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 */
5201 /* ?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 */
5202 /* ?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 */
5203 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_end, 8)
5204 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_end(
5205 basic_string_wchar *this, String_iterator_wchar *ret)
5207 TRACE("%p\n", this);
5209 ret->bstr = this;
5210 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
5211 return ret;
5214 /* ?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 */
5215 /* ?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 */
5216 /* ?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 */
5217 /* ?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 */
5218 /* ?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 */
5219 /* ?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 */
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@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 */
5223 /* ?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 */
5224 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rbegin, 8)
5225 String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rbegin(
5226 basic_string_wchar *this, String_reverse_iterator_wchar *ret)
5228 TRACE("%p\n", this);
5230 #if _MSVCP_VER == 80
5231 ret->cont = NULL;
5232 #endif
5233 ret->bstr = this;
5234 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
5235 return ret;
5238 /* ?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 */
5239 /* ?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 */
5240 /* ?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 */
5241 /* ?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 */
5242 /* ?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 */
5243 /* ?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 */
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@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 */
5247 /* ?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 */
5248 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rend, 8)
5249 String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rend(
5250 basic_string_wchar *this, String_reverse_iterator_wchar *ret)
5252 TRACE("%p\n", this);
5254 #if _MSVCP_VER == 80
5255 ret->cont = NULL;
5256 #endif
5257 ret->bstr = this;
5258 ret->pos = basic_string_wchar_const_ptr(this);
5259 return ret;
5262 #endif /* _MSVCP_VER < 80 */