d2d1: Implement d2d_d3d_render_target_GetTransform().
[wine.git] / dlls / msvcp90 / string.c
blobce0561365337d4721062a9f994ee44d47762778f
1 /*
2 * Copyright 2010 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
23 #include "msvcp90.h"
24 #include "stdio.h"
25 #include "assert.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 /* size_t_noverify structure */
33 typedef struct {
34 MSVCP_size_t val;
35 } size_t_noverify;
37 /* allocator class */
38 typedef struct {
39 char empty_struct;
40 } allocator;
42 /* char_traits<char> */
43 /* ?assign@?$char_traits@D@std@@SAXAADABD@Z */
44 /* ?assign@?$char_traits@D@std@@SAXAEADAEBD@Z */
45 void CDECL MSVCP_char_traits_char_assign(char *ch, const char *assign)
47 *ch = *assign;
50 /* ?eq@?$char_traits@D@std@@SA_NABD0@Z */
51 /* ?eq@?$char_traits@D@std@@SA_NAEBD0@Z */
52 MSVCP_bool CDECL MSVCP_char_traits_char_eq(const char *ch1, const char *ch2)
54 return *ch1 == *ch2;
57 /* ?lt@?$char_traits@D@std@@SA_NABD0@Z */
58 /* ?lt@?$char_traits@D@std@@SA_NAEBD0@Z */
59 MSVCP_bool CDECL MSVCP_char_traits_lt(const char *ch1, const char *ch2)
61 return *ch1 < *ch2;
64 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
65 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
66 int CDECL MSVCP_char_traits_char_compare(
67 const char *s1, const char *s2, MSVCP_size_t count)
69 int ret = memcmp(s1, s2, count);
70 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
73 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
74 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
75 MSVCP_size_t CDECL MSVCP_char_traits_char_length(const char *str)
77 return strlen(str);
80 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
81 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
82 char* CDECL MSVCP_char_traits_char__Copy_s(char *dest,
83 MSVCP_size_t size, const char *src, MSVCP_size_t count)
85 memcpy_s(dest, size, src, count);
86 return dest;
89 /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */
90 /* ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
91 char* CDECL MSVCP_char_traits_char_copy(
92 char *dest, const char *src, MSVCP_size_t count)
94 return MSVCP_char_traits_char__Copy_s(dest, count, src, count);
97 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
98 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
99 const char * CDECL MSVCP_char_traits_char_find(
100 const char *str, MSVCP_size_t range, const char *c)
102 return memchr(str, *c, range);
105 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
106 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
107 char* CDECL MSVCP_char_traits_char__Move_s(char *dest,
108 MSVCP_size_t size, const char *src, MSVCP_size_t count)
110 memmove_s(dest, size, src, count);
111 return dest;
114 /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */
115 /* ?move@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
116 char* CDECL MSVCP_char_traits_char_move(
117 char *dest, const char *src, MSVCP_size_t count)
119 return MSVCP_char_traits_char__Move_s(dest, count, src, count);
122 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
123 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
124 char* CDECL MSVCP_char_traits_char_assignn(char *str, MSVCP_size_t num, char c)
126 return memset(str, c, num);
129 /* ?to_char_type@?$char_traits@D@std@@SADABH@Z */
130 /* ?to_char_type@?$char_traits@D@std@@SADAEBH@Z */
131 char CDECL MSVCP_char_traits_char_to_char_type(const int *i)
133 return (char)*i;
136 /* ?to_int_type@?$char_traits@D@std@@SAHABD@Z */
137 /* ?to_int_type@?$char_traits@D@std@@SAHAEBD@Z */
138 int CDECL MSVCP_char_traits_char_to_int_type(const char *ch)
140 return (unsigned char)*ch;
143 /* ?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z */
144 /* ?eq_int_type@?$char_traits@D@std@@SA_NAEBH0@Z */
145 MSVCP_bool CDECL MSVCP_char_traits_char_eq_int_type(const int *i1, const int *i2)
147 return *i1 == *i2;
150 /* ?eof@?$char_traits@D@std@@SAHXZ */
151 int CDECL MSVCP_char_traits_char_eof(void)
153 return EOF;
156 /* ?not_eof@?$char_traits@D@std@@SAHABH@Z */
157 /* ?not_eof@?$char_traits@D@std@@SAHAEBH@Z */
158 int CDECL MSVCP_char_traits_char_not_eof(int *in)
160 return (*in==EOF ? !EOF : *in);
164 /* char_traits<wchar_t> */
165 /* ?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z */
166 /* ?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z */
167 void CDECL MSVCP_char_traits_wchar_assign(wchar_t *ch,
168 const wchar_t *assign)
170 *ch = *assign;
173 /* ?eq@?$char_traits@_W@std@@SA_NAB_W0@Z */
174 /* ?eq@?$char_traits@_W@std@@SA_NAEB_W0@Z */
175 MSVCP_bool CDECL MSVCP_char_traits_wchar_eq(wchar_t *ch1, wchar_t *ch2)
177 return *ch1 == *ch2;
180 /* ?lt@?$char_traits@_W@std@@SA_NAB_W0@Z */
181 /* ?lt@?$char_traits@_W@std@@SA_NAEB_W0@Z */
182 MSVCP_bool CDECL MSVCP_char_traits_wchar_lt(const wchar_t *ch1,
183 const wchar_t *ch2)
185 return *ch1 < *ch2;
188 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
189 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
190 int CDECL MSVCP_char_traits_wchar_compare(const wchar_t *s1,
191 const wchar_t *s2, MSVCP_size_t count)
193 int ret = memcmp(s1, s2, count * sizeof(wchar_t));
194 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
197 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
198 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
199 MSVCP_size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str)
201 return wcslen((WCHAR*)str);
204 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
205 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
206 wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest,
207 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
209 memcpy_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
210 return dest;
213 /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
214 /* ?copy@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
215 wchar_t* CDECL MSVCP_char_traits_wchar_copy(wchar_t *dest,
216 const wchar_t *src, MSVCP_size_t count)
218 return MSVCP_char_traits_wchar__Copy_s(dest, count, src, count);
221 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
222 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
223 const wchar_t* CDECL MSVCP_char_traits_wchar_find(
224 const wchar_t *str, MSVCP_size_t range, const wchar_t *c)
226 MSVCP_size_t i=0;
228 for(i=0; i<range; i++)
229 if(str[i] == *c)
230 return str+i;
232 return NULL;
235 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
236 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
237 wchar_t* CDECL MSVCP_char_traits_wchar__Move_s(wchar_t *dest,
238 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
240 memmove_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
241 return dest;
244 /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
245 /* ?move@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
246 wchar_t* CDECL MSVCP_char_traits_wchar_move(wchar_t *dest,
247 const wchar_t *src, MSVCP_size_t count)
249 return MSVCP_char_traits_wchar__Move_s(dest, count, src, count);
252 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
253 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
254 wchar_t* CDECL MSVCP_char_traits_wchar_assignn(wchar_t *str,
255 MSVCP_size_t num, wchar_t c)
257 MSVCP_size_t i;
259 for(i=0; i<num; i++)
260 str[i] = c;
262 return str;
265 /* ?to_char_type@?$char_traits@_W@std@@SA_WABG@Z */
266 /* ?to_char_type@?$char_traits@_W@std@@SA_WAEBG@Z */
267 wchar_t CDECL MSVCP_char_traits_wchar_to_char_type(const unsigned short *i)
269 return *i;
272 /* ?to_int_type@?$char_traits@_W@std@@SAGAB_W@Z */
273 /* ?to_int_type@?$char_traits@_W@std@@SAGAEB_W@Z */
274 unsigned short CDECL MSVCP_char_traits_wchar_to_int_type(const wchar_t *ch)
276 return *ch;
279 /* ?eq_int_type@?$char_traits@_W@std@@SA_NABG0@Z */
280 /* ?eq_int_type@?$char_traits@_W@std@@SA_NAEBG0@Z */
281 MSVCP_bool CDECL MSVCP_char_traits_wchar_eq_int_tpe(const unsigned short *i1,
282 const unsigned short *i2)
284 return *i1 == *i2;
287 /* ?eof@?$char_traits@_W@std@@SAGXZ */
288 unsigned short CDECL MSVCP_char_traits_wchar_eof(void)
290 return WEOF;
293 /* ?not_eof@?$char_traits@_W@std@@SAGABG@Z */
294 /* ?not_eof@?$char_traits@_W@std@@SAGAEBG@Z */
295 unsigned short CDECL MSVCP_char_traits_wchar_not_eof(const unsigned short *in)
297 return (*in==WEOF ? !WEOF : *in);
301 /* char_traits<unsigned short> */
302 /* ?assign@?$char_traits@G@std@@SAXAAGABG@Z */
303 /* ?assign@?$char_traits@G@std@@SAXAEAGAEBG@Z */
304 void CDECL MSVCP_char_traits_short_assign(unsigned short *ch,
305 const unsigned short *assign)
307 *ch = *assign;
310 /* ?eq@?$char_traits@G@std@@SA_NABG0@Z */
311 /* ?eq@?$char_traits@G@std@@SA_NAEBG0@Z */
312 MSVCP_bool CDECL MSVCP_char_traits_short_eq(const unsigned short *ch1,
313 const unsigned short *ch2)
315 return *ch1 == *ch2;
318 /* ?lt@?$char_traits@G@std@@SA_NABG0@Z */
319 /* ?lt@?$char_traits@G@std@@SA_NAEBG0@Z */
320 MSVCP_bool CDECL MSVCP_char_traits_short_lt(const unsigned short *ch1,
321 const unsigned short *ch2)
323 return *ch1 < *ch2;
326 /* ?compare@?$char_traits@G@std@@SAHPBG0I@Z */
327 /* ?compare@?$char_traits@G@std@@SAHPEBG0_K@Z */
328 int CDECL MSVCP_char_traits_short_compare(const unsigned short *s1,
329 const unsigned short *s2, MSVCP_size_t count)
331 MSVCP_size_t i;
333 for(i=0; i<count; i++)
334 if(s1[i] != s2[i])
335 return (s1[i] < s2[i] ? -1 : 1);
337 return 0;
340 /* ?length@?$char_traits@G@std@@SAIPBG@Z */
341 /* ?length@?$char_traits@G@std@@SA_KPEBG@Z */
342 MSVCP_size_t CDECL MSVCP_char_traits_short_length(const unsigned short *str)
344 MSVCP_size_t len;
346 for(len=0; str[len]; len++);
348 return len;
351 /* ?_Copy_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
352 /* ?_Copy_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
353 unsigned short * CDECL MSVCP_char_traits_short__Copy_s(unsigned short *dest,
354 MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
356 memcpy_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
357 return dest;
360 /* ?copy@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
361 /* ?copy@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
362 unsigned short* CDECL MSVCP_char_traits_short_copy(unsigned short *dest,
363 const unsigned short *src, MSVCP_size_t count)
365 return MSVCP_char_traits_short__Copy_s(dest, count, src, count);
368 /* ?find@?$char_traits@G@std@@SAPBGPBGIABG@Z */
369 /* ?find@?$char_traits@G@std@@SAPEBGPEBG_KAEBG@Z */
370 const unsigned short* CDECL MSVCP_char_traits_short_find(
371 const unsigned short *str, MSVCP_size_t range, const unsigned short *c)
373 MSVCP_size_t i;
375 for(i=0; i<range; i++)
376 if(str[i] == *c)
377 return str+i;
379 return NULL;
382 /* ?_Move_s@?$char_traits@G@std@@SAPAGPAGIPBGI@Z */
383 /* ?_Move_s@?$char_traits@G@std@@SAPEAGPEAG_KPEBG1@Z */
384 unsigned short* CDECL MSVCP_char_traits_short__Move_s(unsigned short *dest,
385 MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
387 memmove_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
388 return dest;
391 /* ?move@?$char_traits@G@std@@SAPAGPAGPBGI@Z */
392 /* ?move@?$char_traits@G@std@@SAPEAGPEAGPEBG_K@Z */
393 unsigned short* CDECL MSVCP_char_traits_short_move(unsigned short *dest,
394 const unsigned short *src, MSVCP_size_t count)
396 return MSVCP_char_traits_short__Move_s(dest, count, src, count);
399 /* ?assign@?$char_traits@G@std@@SAPAGPAGIG@Z */
400 /* ?assign@?$char_traits@G@std@@SAPEAGPEAG_KG@Z */
401 unsigned short* CDECL MSVCP_char_traits_short_assignn(unsigned short *str,
402 MSVCP_size_t num, unsigned short c)
404 MSVCP_size_t i;
406 for(i=0; i<num; i++)
407 str[i] = c;
409 return str;
412 /* ?to_char_type@?$char_traits@G@std@@SAGABG@Z */
413 /* ?to_char_type@?$char_traits@G@std@@SAGAEBG@Z */
414 unsigned short CDECL MSVCP_char_traits_short_to_char_type(const unsigned short *i)
416 return *i;
419 /* ?to_int_type@?$char_traits@G@std@@SAGABG@Z */
420 /* ?to_int_type@?$char_traits@G@std@@SAGAEBG@Z */
421 unsigned short CDECL MSVCP_char_traits_short_to_int_type(const unsigned short *ch)
423 return *ch;
426 /* ?eq_int_type@?$char_traits@G@std@@SA_NABG0@Z */
427 /* ?eq_int_type@?$char_traits@G@std@@SA_NAEBG0@Z */
428 MSVCP_bool CDECL MSVCP_char_traits_short_eq_int_type(unsigned short *i1,
429 unsigned short *i2)
431 return *i1 == *i2;
434 /* ?eof@?$char_traits@G@std@@SAGXZ */
435 unsigned short CDECL MSVCP_char_traits_short_eof(void)
437 return -1;
440 /* ?not_eof@?$char_traits@G@std@@SAGABG@Z */
441 /* ?not_eof@?$char_traits@G@std@@SAGAEBG@Z */
442 unsigned short CDECL MSVCP_char_traits_short_not_eof(const unsigned short *in)
444 return (*in==(unsigned short)-1 ? 0 : *in);
448 /* _String_base */
449 /* ?_Xlen@_String_base@std@@SAXXZ */
450 void CDECL MSVCP__String_base_Xlen(void)
452 static const char msg[] = "string too long";
454 TRACE("\n");
455 throw_exception(EXCEPTION_LENGTH_ERROR, msg);
458 /* ?_Xlen@_String_base@std@@QBEXXZ */
459 DEFINE_THISCALL_WRAPPER(_String_base__Xlen, 4)
460 void __thiscall _String_base__Xlen(const void/*_String_base*/ *this)
462 MSVCP__String_base_Xlen();
465 /* ?_Xran@_String_base@std@@SAXXZ */
466 void CDECL MSVCP__String_base_Xran(void)
468 static const char msg[] = "invalid string position";
470 TRACE("\n");
471 throw_exception(EXCEPTION_OUT_OF_RANGE, msg);
474 /* ?_Xran@_String_base@std@@QBEXXZ */
475 DEFINE_THISCALL_WRAPPER(_String_base__Xran, 4)
476 void __thiscall _String_base__Xran(const void/*_String_base*/ *this)
478 MSVCP__String_base_Xran();
481 /* ?_Xinvarg@_String_base@std@@SAXXZ */
482 void CDECL MSVCP__String_base_Xinvarg(void)
484 static const char msg[] = "invalid string argument";
486 TRACE("\n");
487 throw_exception(EXCEPTION_INVALID_ARGUMENT, msg);
491 /* basic_string<char, char_traits<char>, allocator<char>> */
492 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
493 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
494 const MSVCP_size_t MSVCP_basic_string_char_npos = -1;
496 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ */
497 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAPEADXZ */
498 DEFINE_THISCALL_WRAPPER(basic_string_char_ptr, 4)
499 char* __thiscall basic_string_char_ptr(basic_string_char *this)
501 if(this->res < BUF_SIZE_CHAR)
502 return this->data.buf;
503 return this->data.ptr;
506 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ */
507 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEBAPEBDXZ */
508 DEFINE_THISCALL_WRAPPER(basic_string_char_const_ptr, 4)
509 const char* __thiscall basic_string_char_const_ptr(const basic_string_char *this)
511 if(this->res < BUF_SIZE_CHAR)
512 return this->data.buf;
513 return this->data.ptr;
516 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z */
517 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K@Z */
518 DEFINE_THISCALL_WRAPPER(basic_string_char_eos, 8)
519 void __thiscall basic_string_char_eos(basic_string_char *this, MSVCP_size_t len)
521 static const char nullbyte = '\0';
523 this->size = len;
524 MSVCP_char_traits_char_assign(basic_string_char_ptr(this)+len, &nullbyte);
527 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z */
528 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z */
529 DEFINE_THISCALL_WRAPPER(basic_string_char_inside, 8)
530 MSVCP_bool __thiscall basic_string_char_inside(
531 basic_string_char *this, const char *ptr)
533 char *cstr = basic_string_char_ptr(this);
535 return ptr>=cstr && ptr<cstr+this->size;
538 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z */
539 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_N_K@Z */
540 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy, 12)
541 void __thiscall basic_string_char_tidy(basic_string_char *this,
542 MSVCP_bool built, MSVCP_size_t new_size)
544 if(built && BUF_SIZE_CHAR<=this->res) {
545 char *ptr = this->data.ptr;
547 if(new_size > 0)
548 MSVCP_char_traits_char__Copy_s(this->data.buf, BUF_SIZE_CHAR, ptr, new_size);
549 MSVCP_allocator_char_deallocate(this->allocator, ptr, this->res+1);
552 this->res = BUF_SIZE_CHAR-1;
553 basic_string_char_eos(this, new_size);
556 /* Exported only from msvcp60/70 */
557 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
558 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
559 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy_built, 8)
560 void __thiscall basic_string_char_tidy_built(basic_string_char *this, MSVCP_bool built)
562 basic_string_char_tidy(this, built, 0);
565 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z */
566 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_N_K_N@Z */
567 DEFINE_THISCALL_WRAPPER(basic_string_char_grow, 12)
568 MSVCP_bool __thiscall basic_string_char_grow(
569 basic_string_char *this, MSVCP_size_t new_size, MSVCP_bool trim)
571 if(this->res < new_size) {
572 MSVCP_size_t new_res = new_size, len = this->size;
573 char *ptr;
575 new_res |= 0xf;
577 if(new_res/3 < this->res/2)
578 new_res = this->res + this->res/2;
580 ptr = MSVCP_allocator_char_allocate(this->allocator, new_res+1);
581 if(!ptr)
582 ptr = MSVCP_allocator_char_allocate(this->allocator, new_size+1);
583 else
584 new_size = new_res;
585 if(!ptr) {
586 ERR("Out of memory\n");
587 basic_string_char_tidy(this, TRUE, 0);
588 return FALSE;
591 MSVCP_char_traits_char__Copy_s(ptr, new_size,
592 basic_string_char_ptr(this), this->size);
593 basic_string_char_tidy(this, TRUE, 0);
594 this->data.ptr = ptr;
595 this->res = new_size;
596 basic_string_char_eos(this, len);
597 } else if(trim && new_size < BUF_SIZE_CHAR)
598 basic_string_char_tidy(this, TRUE,
599 new_size<this->size ? new_size : this->size);
600 else if(new_size == 0)
601 basic_string_char_eos(this, 0);
603 return (new_size>0);
606 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z */
607 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0@Z */
608 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy, 12)
609 void __thiscall basic_string_char__Copy(basic_string_char *this,
610 MSVCP_size_t new_size, MSVCP_size_t copy_len)
612 TRACE("%p %lu %lu\n", this, new_size, copy_len);
614 if(!basic_string_char_grow(this, new_size, FALSE))
615 return;
616 basic_string_char_eos(this, copy_len);
619 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
620 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
621 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator, 8)
622 allocator* __thiscall basic_string_char_get_allocator(const basic_string_char *this, allocator *ret)
624 TRACE("%p\n", this);
625 return ret;
628 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
629 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
630 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase, 12)
631 basic_string_char* __thiscall MSVCP_basic_string_char_erase(
632 basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t len)
634 TRACE("%p %lu %lu\n", this, pos, len);
636 if(pos > this->size)
637 MSVCP__String_base_Xran();
639 if(len > this->size-pos)
640 len = this->size-pos;
642 if(len) {
643 MSVCP_char_traits_char__Move_s(basic_string_char_ptr(this)+pos,
644 this->res-pos, basic_string_char_ptr(this)+pos+len,
645 this->size-pos-len);
646 basic_string_char_eos(this, this->size-len);
649 return this;
652 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
653 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
654 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr, 16)
655 basic_string_char* __thiscall MSVCP_basic_string_char_assign_substr(
656 basic_string_char *this, const basic_string_char *assign,
657 MSVCP_size_t pos, MSVCP_size_t len)
659 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
661 if(assign->size < pos)
662 MSVCP__String_base_Xran();
664 if(len > assign->size-pos)
665 len = assign->size-pos;
667 if(this == assign) {
668 MSVCP_basic_string_char_erase(this, pos+len, MSVCP_basic_string_char_npos);
669 MSVCP_basic_string_char_erase(this, 0, pos);
670 } else if(basic_string_char_grow(this, len, FALSE)) {
671 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
672 this->res, basic_string_char_const_ptr(assign)+pos, len);
673 basic_string_char_eos(this, len);
676 return this;
679 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
680 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
681 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
682 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
683 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign, 8)
684 basic_string_char* __thiscall MSVCP_basic_string_char_assign(
685 basic_string_char *this, const basic_string_char *assign)
687 return MSVCP_basic_string_char_assign_substr(this, assign,
688 0, MSVCP_basic_string_char_npos);
691 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
692 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
693 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len, 12)
694 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr_len(
695 basic_string_char *this, const char *str, MSVCP_size_t len)
697 TRACE("%p %s %lu\n", this, debugstr_an(str, len), len);
699 if(basic_string_char_inside(this, str))
700 return MSVCP_basic_string_char_assign_substr(this, this,
701 str-basic_string_char_ptr(this), len);
702 else if(basic_string_char_grow(this, len, FALSE)) {
703 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
704 this->res, str, len);
705 basic_string_char_eos(this, len);
708 return this;
711 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
712 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
713 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch, 8)
714 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ch(
715 basic_string_char *this, char ch)
717 return MSVCP_basic_string_char_assign_cstr_len(this, &ch, 1);
720 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
721 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
722 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
723 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
724 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr, 8)
725 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr(
726 basic_string_char *this, const char *str)
728 return MSVCP_basic_string_char_assign_cstr_len(this, str,
729 MSVCP_char_traits_char_length(str));
732 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
733 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
734 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn, 12)
735 basic_string_char* __thiscall MSVCP_basic_string_char_assignn(
736 basic_string_char *this, MSVCP_size_t count, char ch)
738 TRACE("%p %ld %c\n", this, count, ch);
740 basic_string_char_grow(this, count, FALSE);
741 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this), count, ch);
742 basic_string_char_eos(this, count);
743 return this;
746 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
747 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
748 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr, 12)
749 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ptr_ptr(
750 basic_string_char *this, const char *first, const char *last)
752 return MSVCP_basic_string_char_assign_cstr_len(this, first, last-first);
755 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z */
756 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0D@Z */
757 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Chassign, 16)
758 void __thiscall MSVCP_basic_string_char_Chassign(basic_string_char *this,
759 MSVCP_size_t off, MSVCP_size_t count, char ch)
761 TRACE("%p %lu %lu %c\n", this, off, count, ch);
762 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+off, count, ch);
765 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADIII@Z */
766 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K11@Z */
767 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Copy_s, 20)
768 MSVCP_size_t __thiscall MSVCP_basic_string_char_Copy_s(const basic_string_char *this,
769 char *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
771 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
773 if(this->size < off)
774 MSVCP__String_base_Xran();
776 if(count > this->size-off)
777 count = this->size-off;
779 MSVCP_char_traits_char__Copy_s(dest, size,
780 basic_string_char_const_ptr(this)+off, count);
781 return count;
784 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
785 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
786 DEFINE_THISCALL_WRAPPER(basic_string_char_copy, 16)
787 MSVCP_size_t __thiscall basic_string_char_copy(const basic_string_char *this,
788 char *dest, MSVCP_size_t count, MSVCP_size_t off)
790 return MSVCP_basic_string_char_Copy_s(this, dest, count, count, off);
793 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
794 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
795 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
796 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
797 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str, 4)
798 const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char *this)
800 TRACE("%p\n", this);
801 return basic_string_char_const_ptr(this);
804 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
805 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
806 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity, 4)
807 MSVCP_size_t __thiscall MSVCP_basic_string_char_capacity(basic_string_char *this)
809 TRACE("%p\n", this);
810 return this->res;
813 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
814 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
815 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve, 8)
816 void __thiscall MSVCP_basic_string_char_reserve(basic_string_char *this, MSVCP_size_t size)
818 MSVCP_size_t len;
820 TRACE("%p %ld\n", this, size);
822 len = this->size;
823 if(len > size)
824 return;
826 if(basic_string_char_grow(this, size, TRUE))
827 basic_string_char_eos(this, len);
830 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
831 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
832 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor, 4)
833 basic_string_char* __thiscall MSVCP_basic_string_char_ctor(basic_string_char *this)
835 TRACE("%p\n", this);
837 basic_string_char_tidy(this, FALSE, 0);
838 return this;
841 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
842 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
843 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor, 8)
844 basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(
845 basic_string_char *this, const basic_string_char *copy)
847 TRACE("%p %p\n", this, copy);
849 basic_string_char_tidy(this, FALSE, 0);
850 MSVCP_basic_string_char_assign(this, copy);
851 return this;
854 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
855 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
856 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr, 8)
857 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr(
858 basic_string_char *this, const char *str)
860 TRACE("%p %s\n", this, debugstr_a(str));
862 basic_string_char_tidy(this, FALSE, 0);
863 MSVCP_basic_string_char_assign_cstr(this, str);
864 return this;
867 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
868 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
869 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc, 12)
870 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_alloc(
871 basic_string_char *this, const char *str, const void *alloc)
873 return MSVCP_basic_string_char_ctor_cstr(this, str);
876 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
877 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
878 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len, 12)
879 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len(
880 basic_string_char *this, const char *str, MSVCP_size_t len)
882 TRACE("%p %s %ld\n", this, debugstr_an(str, len), len);
884 basic_string_char_tidy(this, FALSE, 0);
885 MSVCP_basic_string_char_assign_cstr_len(this, str, len);
886 return this;
889 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
890 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
891 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc, 16)
892 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len_alloc(
893 basic_string_char *this, const char *str, MSVCP_size_t len, const void *alloc)
895 return MSVCP_basic_string_char_ctor_cstr_len(this, str, len);
898 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z */
899 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z */
900 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr, 16)
901 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr(
902 basic_string_char *this, const basic_string_char *assign,
903 MSVCP_size_t pos, MSVCP_size_t len)
905 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
907 basic_string_char_tidy(this, FALSE, 0);
908 MSVCP_basic_string_char_assign_substr(this, assign, pos, len);
909 return this;
912 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
913 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
914 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc, 20)
915 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr_alloc(
916 basic_string_char *this, const basic_string_char *assign,
917 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
919 return MSVCP_basic_string_char_ctor_substr(this, assign, pos, len);
922 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
923 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
924 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc, 8)
925 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_alloc(
926 basic_string_char *this, const void *alloc)
928 TRACE("%p %p\n", this, alloc);
930 basic_string_char_tidy(this, FALSE, 0);
931 return this;
934 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z */
935 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z */
936 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch, 12)
937 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch(basic_string_char *this,
938 MSVCP_size_t count, char ch)
940 TRACE("%p %ld %c\n", this, count, ch);
942 basic_string_char_tidy(this, FALSE, 0);
943 MSVCP_basic_string_char_assignn(this, count, ch);
944 return this;
947 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
948 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
949 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc, 16)
950 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char *this,
951 MSVCP_size_t count, char ch, const void *alloc)
953 return MSVCP_basic_string_char_ctor_ch(this, count, ch);
956 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z */
957 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z */
958 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ptr_ptr, 12)
959 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ptr_ptr(basic_string_char *this,
960 const char *first, const char *last)
962 return MSVCP_basic_string_char_ctor_cstr_len(this, first, last-first);
965 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
966 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
967 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4)
968 void __thiscall MSVCP_basic_string_char_dtor(basic_string_char *this)
970 TRACE("%p\n", this);
971 basic_string_char_tidy(this, TRUE, 0);
974 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
975 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
976 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
977 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
978 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length, 4)
979 MSVCP_size_t __thiscall MSVCP_basic_string_char_length(const basic_string_char *this)
981 TRACE("%p\n", this);
982 return this->size;
985 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
986 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
987 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size, 4)
988 MSVCP_size_t __thiscall basic_string_char_max_size(const basic_string_char *this)
990 TRACE("%p\n", this);
991 return MSVCP_allocator_char_max_size(this->allocator)-1;
994 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
995 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
996 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty, 4)
997 MSVCP_bool __thiscall MSVCP_basic_string_char_empty(basic_string_char *this)
999 TRACE("%p\n", this);
1000 return this->size == 0;
1003 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1004 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1005 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap, 8)
1006 void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_string_char *str)
1008 if(this != str) {
1009 char tmp[sizeof(this->data)];
1010 const MSVCP_size_t size = this->size;
1011 const MSVCP_size_t res = this->res;
1013 memcpy(tmp, this->data.buf, sizeof(this->data));
1014 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
1015 memcpy(str->data.buf, tmp, sizeof(this->data));
1017 this->size = str->size;
1018 this->res = str->res;
1020 str->size = size;
1021 str->res = res;
1025 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1026 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1027 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr, 16)
1028 basic_string_char* __thiscall MSVCP_basic_string_char_substr(basic_string_char *this,
1029 basic_string_char *ret, MSVCP_size_t off, MSVCP_size_t len)
1031 TRACE("%p %lu %lu\n", this, off, len);
1033 MSVCP_basic_string_char_ctor_substr(ret, this, off, len);
1034 return ret;
1037 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1038 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1039 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr, 16)
1040 basic_string_char* __thiscall MSVCP_basic_string_char_append_substr(basic_string_char *this,
1041 const basic_string_char *append, MSVCP_size_t offset, MSVCP_size_t count)
1043 TRACE("%p %p %lu %lu\n", this, append, offset, count);
1045 if(append->size < offset)
1046 MSVCP__String_base_Xran();
1048 if(count > append->size-offset)
1049 count = append->size-offset;
1051 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1052 MSVCP__String_base_Xlen();
1054 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1055 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1056 this->res-this->size, basic_string_char_const_ptr(append)+offset, count);
1057 basic_string_char_eos(this, this->size+count);
1060 return this;
1063 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1064 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1065 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1066 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1067 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append, 8)
1068 basic_string_char* __thiscall MSVCP_basic_string_char_append(
1069 basic_string_char *this, const basic_string_char *append)
1071 return MSVCP_basic_string_char_append_substr(this, append,
1072 0, MSVCP_basic_string_char_npos);
1075 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1076 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1077 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len, 12)
1078 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr_len(
1079 basic_string_char *this, const char *append, MSVCP_size_t count)
1081 TRACE("%p %s %lu\n", this, debugstr_an(append, count), count);
1083 if(basic_string_char_inside(this, append))
1084 return MSVCP_basic_string_char_append_substr(this, this,
1085 append-basic_string_char_ptr(this), count);
1087 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
1088 MSVCP__String_base_Xlen();
1090 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1091 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
1092 this->res-this->size, append, count);
1093 basic_string_char_eos(this, this->size+count);
1096 return this;
1099 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1100 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1101 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1102 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1103 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr, 8)
1104 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr(
1105 basic_string_char *this, const char *append)
1107 return MSVCP_basic_string_char_append_cstr_len(this, append,
1108 MSVCP_char_traits_char_length(append));
1111 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1112 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1113 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end, 12)
1114 basic_string_char* __thiscall MSVCP_basic_string_char_append_beg_end(
1115 basic_string_char *this, const char *beg, const char *end)
1117 return MSVCP_basic_string_char_append_cstr_len(this, beg, end-beg);
1120 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1121 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1122 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch, 12)
1123 basic_string_char* __thiscall MSVCP_basic_string_char_append_len_ch(
1124 basic_string_char *this, MSVCP_size_t count, char ch)
1126 TRACE("%p %lu %c\n", this, count, ch);
1128 if(MSVCP_basic_string_char_npos-this->size <= count)
1129 MSVCP__String_base_Xlen();
1131 if(basic_string_char_grow(this, this->size+count, FALSE)) {
1132 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+this->size, count, ch);
1133 basic_string_char_eos(this, this->size+count);
1136 return this;
1139 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1140 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1141 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXD@Z */
1142 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXD@Z */
1143 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch, 8)
1144 basic_string_char* __thiscall MSVCP_basic_string_char_append_ch(
1145 basic_string_char *this, char ch)
1147 return MSVCP_basic_string_char_append_len_ch(this, 1, ch);
1150 /* ??$?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 */
1151 /* ??$?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 */
1152 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1153 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1154 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char *ret,
1155 const basic_string_char *left, const char *right)
1157 TRACE("%p %s\n", left, debugstr_a(right));
1159 MSVCP_basic_string_char_copy_ctor(ret, left);
1160 MSVCP_basic_string_char_append_cstr(ret, right);
1161 return ret;
1164 /* ??$?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 */
1165 /* ??$?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 */
1166 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1167 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1168 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char *ret,
1169 const char *left, const basic_string_char *right)
1171 TRACE("%s %p\n", debugstr_a(left), right);
1173 MSVCP_basic_string_char_ctor_cstr(ret, left);
1174 MSVCP_basic_string_char_append(ret, right);
1175 return ret;
1178 /* ??$?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 */
1179 /* ??$?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 */
1180 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1181 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1182 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate(basic_string_char *ret,
1183 const basic_string_char *left, const basic_string_char *right)
1185 TRACE("%p %p\n", left, right);
1187 MSVCP_basic_string_char_copy_ctor(ret, left);
1188 MSVCP_basic_string_char_append(ret, right);
1189 return ret;
1192 /* ??$?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 */
1193 /* ??$?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 */
1194 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1195 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1196 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char *ret,
1197 const basic_string_char *left, char right)
1199 TRACE("%p %c\n", left, right);
1201 MSVCP_basic_string_char_copy_ctor(ret, left);
1202 MSVCP_basic_string_char_append_ch(ret, right);
1203 return ret;
1206 /* ??$?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 */
1207 /* ??$?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 */
1208 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1209 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1210 basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char *ret,
1211 char left, const basic_string_char *right)
1213 TRACE("%c %p\n", left, right);
1215 MSVCP_basic_string_char_ctor_cstr_len(ret, &left, 1);
1216 MSVCP_basic_string_char_append(ret, right);
1217 return ret;
1220 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
1221 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
1222 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20)
1223 int __thiscall MSVCP_basic_string_char_compare_substr_cstr_len(
1224 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1225 const char *str, MSVCP_size_t count)
1227 int ans;
1229 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_an(str, count), count);
1231 if(this->size < pos)
1232 MSVCP__String_base_Xran();
1234 if(num > this->size-pos)
1235 num = this->size-pos;
1237 ans = MSVCP_char_traits_char_compare(basic_string_char_const_ptr(this)+pos,
1238 str, num>count ? count : num);
1239 if(ans)
1240 return ans;
1242 if(num > count)
1243 ans = 1;
1244 else if(num < count)
1245 ans = -1;
1246 return ans;
1249 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
1250 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
1251 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr, 16)
1252 int __thiscall MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char *this,
1253 MSVCP_size_t pos, MSVCP_size_t num, const char *str)
1255 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1256 str, MSVCP_char_traits_char_length(str));
1259 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
1260 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
1261 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr, 8)
1262 int __thiscall MSVCP_basic_string_char_compare_cstr(
1263 const basic_string_char *this, const char *str)
1265 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1266 str, MSVCP_char_traits_char_length(str));
1269 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
1270 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
1271 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr, 24)
1272 int __thiscall MSVCP_basic_string_char_compare_substr_substr(
1273 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1274 const basic_string_char *compare, MSVCP_size_t off, MSVCP_size_t count)
1276 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
1278 if(compare->size < off)
1279 MSVCP__String_base_Xran();
1281 if(count > compare->size-off)
1282 count = compare->size-off;
1284 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1285 basic_string_char_const_ptr(compare)+off, count);
1288 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
1289 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
1290 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr, 16)
1291 int __thiscall MSVCP_basic_string_char_compare_substr(
1292 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1293 const basic_string_char *compare)
1295 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1296 basic_string_char_const_ptr(compare), compare->size);
1299 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
1300 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
1301 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare, 8)
1302 int __thiscall MSVCP_basic_string_char_compare(
1303 const basic_string_char *this, const basic_string_char *compare)
1305 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1306 basic_string_char_const_ptr(compare), compare->size);
1309 /* ??$?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 */
1310 /* ??$?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 */
1311 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1312 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1313 MSVCP_bool __cdecl MSVCP_basic_string_char_equal(
1314 const basic_string_char *left, const basic_string_char *right)
1316 return MSVCP_basic_string_char_compare(left, right) == 0;
1319 /* ??$?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 */
1320 /* ??$?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 */
1321 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1322 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1323 MSVCP_bool __cdecl MSVCP_basic_string_char_equal_str_cstr(
1324 const basic_string_char *left, const char *right)
1326 return MSVCP_basic_string_char_compare_cstr(left, right) == 0;
1329 /* ??$?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 */
1330 /* ??$?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 */
1331 /* ??8std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1332 MSVCP_bool __cdecl MSVCP_basic_string_char_equal_cstr_str(
1333 const char *left, const basic_string_char *right)
1335 return MSVCP_basic_string_char_compare_cstr(right, left) == 0;
1338 /* ??$?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 */
1339 /* ??$?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 */
1340 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1341 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
1342 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal(
1343 const basic_string_char *left, const basic_string_char *right)
1345 return MSVCP_basic_string_char_compare(left, right) != 0;
1348 /* ??$?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 */
1349 /* ??$?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 */
1350 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1351 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1352 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal_str_cstr(
1353 const basic_string_char *left, const char *right)
1355 return MSVCP_basic_string_char_compare_cstr(left, right) != 0;
1358 /* ??$?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 */
1359 /* ??$?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 */
1360 /* ??9std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1361 /* ??9std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
1362 MSVCP_bool __cdecl MSVCP_basic_string_char_not_equal_cstr_str(
1363 const char *left, const basic_string_char *right)
1365 return MSVCP_basic_string_char_compare_cstr(right, left) != 0;
1368 /* ??$?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 */
1369 /* ??$?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 */
1370 MSVCP_bool __cdecl MSVCP_basic_string_char_lower(
1371 const basic_string_char *left, const basic_string_char *right)
1373 return MSVCP_basic_string_char_compare(left, right) < 0;
1376 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1377 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1378 MSVCP_bool __cdecl MSVCP_basic_string_char_lower_bstr_cstr(
1379 const basic_string_char *left, const char *right)
1381 return MSVCP_basic_string_char_compare_cstr(left, right) < 0;
1384 /* ??$?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 */
1385 /* ??$?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 */
1386 MSVCP_bool __cdecl MSVCP_basic_string_char_lower_cstr_bstr(
1387 const char *left, const basic_string_char *right)
1389 return MSVCP_basic_string_char_compare_cstr(right, left) > 0;
1392 /* ??$?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 */
1393 /* ??$?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 */
1394 MSVCP_bool __cdecl MSVCP_basic_string_char_leq(
1395 const basic_string_char *left, const basic_string_char *right)
1397 return MSVCP_basic_string_char_compare(left, right) <= 0;
1400 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1401 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1402 MSVCP_bool __cdecl MSVCP_basic_string_char_leq_bstr_cstr(
1403 const basic_string_char *left, const char *right)
1405 return MSVCP_basic_string_char_compare_cstr(left, right) <= 0;
1408 /* ??$?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 */
1409 /* ??$?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 */
1410 MSVCP_bool __cdecl MSVCP_basic_string_char_leq_cstr_bstr(
1411 const char *left, const basic_string_char *right)
1413 return MSVCP_basic_string_char_compare_cstr(right, left) >= 0;
1416 /* ??$?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 */
1417 /* ??$?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 */
1418 MSVCP_bool __cdecl MSVCP_basic_string_char_greater(
1419 const basic_string_char *left, const basic_string_char *right)
1421 return MSVCP_basic_string_char_compare(left, right) > 0;
1424 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1425 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1426 MSVCP_bool __cdecl MSVCP_basic_string_char_greater_bstr_cstr(
1427 const basic_string_char *left, const char *right)
1429 return MSVCP_basic_string_char_compare_cstr(left, right) > 0;
1432 /* ??$?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 */
1433 /* ??$?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 */
1434 MSVCP_bool __cdecl MSVCP_basic_string_char_greater_cstr_bstr(
1435 const char *left, const basic_string_char *right)
1437 return MSVCP_basic_string_char_compare_cstr(right, left) < 0;
1440 /* ??$?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 */
1441 /* ??$?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 */
1442 MSVCP_bool __cdecl MSVCP_basic_string_char_geq(
1443 const basic_string_char *left, const basic_string_char *right)
1445 return MSVCP_basic_string_char_compare(left, right) >= 0;
1448 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
1449 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
1450 MSVCP_bool __cdecl MSVCP_basic_string_char_geq_bstr_cstr(
1451 const basic_string_char *left, const char *right)
1453 return MSVCP_basic_string_char_compare_cstr(left, right) >= 0;
1456 /* ??$?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 */
1457 /* ??$?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 */
1458 MSVCP_bool __cdecl MSVCP_basic_string_char_geq_cstr_bstr(
1459 const char *left, const basic_string_char *right)
1461 return MSVCP_basic_string_char_compare_cstr(right, left) <= 0;
1464 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1465 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1466 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr, 16)
1467 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_substr(
1468 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1470 const char *p, *end;
1472 TRACE("%p %s %lu %lu\n", this, debugstr_an(find, len), pos, len);
1474 if(len==0 && pos<=this->size)
1475 return pos;
1476 if(pos>=this->size || len>this->size)
1477 return MSVCP_basic_string_char_npos;
1479 end = basic_string_char_const_ptr(this)+this->size-len+1;
1480 for(p=basic_string_char_const_ptr(this)+pos; p<end; p++) {
1481 p = MSVCP_char_traits_char_find(p, end-p, find);
1482 if(!p)
1483 break;
1485 if(!MSVCP_char_traits_char_compare(p, find, len))
1486 return p-basic_string_char_const_ptr(this);
1489 return MSVCP_basic_string_char_npos;
1492 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1493 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1494 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off, 12)
1495 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_off(
1496 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1498 return MSVCP_basic_string_char_find_cstr_substr(this, find, pos,
1499 MSVCP_char_traits_char_length(find));
1502 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1503 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1504 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off, 12)
1505 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_off(
1506 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1508 return MSVCP_basic_string_char_find_cstr_substr(this,
1509 basic_string_char_const_ptr(find), off, find->size);
1512 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1513 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1514 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch, 12)
1515 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_ch(
1516 const basic_string_char *this, char ch, MSVCP_size_t pos)
1518 return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1);
1521 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1522 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1523 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr, 16)
1524 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_substr(
1525 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1527 const char *p, *end;
1529 TRACE("%p %s %lu %lu\n", this, debugstr_an(find, len), pos, len);
1531 if(len==0)
1532 return pos<this->size ? pos : this->size;
1534 if(len > this->size)
1535 return MSVCP_basic_string_char_npos;
1537 if(pos > this->size-len+1)
1538 pos = this->size-len+1;
1539 end = basic_string_char_const_ptr(this);
1540 for(p=end+pos; p>=end; p--) {
1541 if(*p==*find && !MSVCP_char_traits_char_compare(p, find, len))
1542 return p-basic_string_char_const_ptr(this);
1545 return MSVCP_basic_string_char_npos;
1548 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1549 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1550 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off, 12)
1551 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_off(
1552 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1554 return MSVCP_basic_string_char_rfind_cstr_substr(this, find, pos,
1555 MSVCP_char_traits_char_length(find));
1558 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1559 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1560 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off, 12)
1561 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_off(
1562 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1564 return MSVCP_basic_string_char_rfind_cstr_substr(this,
1565 basic_string_char_const_ptr(find), off, find->size);
1568 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1569 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1570 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch, 12)
1571 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_ch(
1572 const basic_string_char *this, char ch, MSVCP_size_t pos)
1574 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch, pos, 1);
1577 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1578 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1579 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr, 16)
1580 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr_substr(
1581 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1583 const char *p, *end;
1585 TRACE("%p %p %lu %lu\n", this, find, off, len);
1587 if(len>0 && off<this->size) {
1588 end = basic_string_char_const_ptr(this)+this->size;
1589 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1590 if(MSVCP_char_traits_char_find(find, len, p))
1591 return p-basic_string_char_const_ptr(this);
1594 return MSVCP_basic_string_char_npos;
1597 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1598 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1599 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of, 12)
1600 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of(
1601 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1603 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1604 basic_string_char_const_ptr(find), off, find->size);
1607 /* ??0?$_Yarn@D@std@@QAE@XZ */
1608 /* ??0?$_Yarn@D@std@@QEAA@XZ */
1609 DEFINE_THISCALL_WRAPPER(_Yarn_char_ctor, 4)
1610 _Yarn_char* __thiscall _Yarn_char_ctor(_Yarn_char *this)
1612 TRACE("(%p)\n", this);
1614 this->str = NULL;
1615 this->null_str = '\0';
1616 return this;
1619 /* ?_Tidy@?$_Yarn@D@std@@AAEXXZ */
1620 /* ?_Tidy@?$_Yarn@D@std@@AEAAXXZ */
1621 DEFINE_THISCALL_WRAPPER(_Yarn_char__Tidy, 4)
1622 void __thiscall _Yarn_char__Tidy(_Yarn_char *this)
1624 TRACE("(%p)\n", this);
1626 if(this->str)
1627 MSVCRT_operator_delete(this->str);
1628 this->str = NULL;
1631 /* ??4?$_Yarn@D@std@@QAEAAV01@PBD@Z */
1632 /* ??4?$_Yarn@D@std@@QEAAAEAV01@PEBD@Z */
1633 DEFINE_THISCALL_WRAPPER(_Yarn_char_op_assign_cstr, 8)
1634 _Yarn_char* __thiscall _Yarn_char_op_assign_cstr(_Yarn_char *this, const char *str)
1636 TRACE("(%p %p)\n", this, str);
1638 _Yarn_char__Tidy(this);
1640 if(str) {
1641 MSVCP_size_t len = strlen(str);
1643 this->str = MSVCRT_operator_new((len+1)*sizeof(char));
1644 if(!this->str) {
1645 ERR("out of memory\n");
1646 return NULL;
1648 memcpy(this->str, str, (len+1)*sizeof(char));
1650 return this;
1653 /* ??0?$_Yarn@D@std@@QAE@PBD@Z */
1654 /* ??0?$_Yarn@D@std@@QEAA@PEBD@Z */
1655 DEFINE_THISCALL_WRAPPER(_Yarn_char_ctor_cstr, 8)
1656 _Yarn_char* __thiscall _Yarn_char_ctor_cstr(_Yarn_char *this, const char *str)
1658 TRACE("(%p %p)\n", this, str);
1660 _Yarn_char_ctor(this);
1661 return _Yarn_char_op_assign_cstr(this, str);
1664 /* ??4?$_Yarn@D@std@@QAEAAV01@ABV01@@Z */
1665 /* ??4?$_Yarn@D@std@@QEAAAEAV01@AEBV01@@Z */
1666 DEFINE_THISCALL_WRAPPER(_Yarn_char_op_assign, 8)
1667 _Yarn_char* __thiscall _Yarn_char_op_assign(_Yarn_char *this, const _Yarn_char *rhs)
1669 TRACE("(%p %p)\n", this, rhs);
1671 return _Yarn_char_op_assign_cstr(this, rhs->str);
1674 /* ??0?$_Yarn@D@std@@QAE@ABV01@@Z */
1675 /* ??0?$_Yarn@D@std@@QEAA@AEBV01@@Z */
1676 DEFINE_THISCALL_WRAPPER(_Yarn_char_copy_ctor, 8)
1677 _Yarn_char* __thiscall _Yarn_char_copy_ctor(_Yarn_char *this, const _Yarn_char *copy)
1679 TRACE("(%p %p)\n", this, copy);
1681 _Yarn_char_ctor(this);
1682 return _Yarn_char_op_assign(this, copy);
1685 /* ??1?$_Yarn@D@std@@QAE@XZ */
1686 /* ??1?$_Yarn@D@std@@QEAA@XZ */
1687 DEFINE_THISCALL_WRAPPER(_Yarn_char_dtor, 4)
1688 void __thiscall _Yarn_char_dtor(_Yarn_char *this)
1690 TRACE("(%p)\n", this);
1691 _Yarn_char__Tidy(this);
1694 /* ?_C_str@?$_Yarn@D@std@@QBEPBDXZ */
1695 /* ?_C_str@?$_Yarn@D@std@@QEBAPEBDXZ */
1696 /* ?c_str@?$_Yarn@D@std@@QBEPBDXZ */
1697 /* ?c_str@?$_Yarn@D@std@@QEBAPEBDXZ */
1698 DEFINE_THISCALL_WRAPPER(_Yarn_char_c_str, 4)
1699 const char* __thiscall _Yarn_char_c_str(const _Yarn_char *this)
1701 TRACE("(%p)\n", this);
1702 return this->str ? this->str : &this->null_str;
1705 /* ?_Empty@?$_Yarn@D@std@@QBE_NXZ */
1706 /* ?_Empty@?$_Yarn@D@std@@QEBA_NXZ */
1707 /* ?empty@?$_Yarn@D@std@@QBE_NXZ */
1708 /* ?empty@?$_Yarn@D@std@@QEBA_NXZ */
1709 DEFINE_THISCALL_WRAPPER(_Yarn_char_empty, 4)
1710 MSVCP_bool __thiscall _Yarn_char_empty(const _Yarn_char *this)
1712 TRACE("(%p)\n", this);
1713 return !this->str;
1716 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1717 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1718 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr, 12)
1719 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr(
1720 const basic_string_char *this, const char *find, MSVCP_size_t off)
1722 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1723 this, find, off, MSVCP_char_traits_char_length(find));
1726 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1727 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1728 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch, 12)
1729 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_ch(
1730 const basic_string_char *this, char ch, MSVCP_size_t off)
1732 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch, off, 1);
1735 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1736 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1737 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr, 16)
1738 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1739 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1741 const char *p, *end;
1743 TRACE("%p %p %lu %lu\n", this, find, off, len);
1745 if(off<this->size) {
1746 end = basic_string_char_const_ptr(this)+this->size;
1747 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1748 if(!MSVCP_char_traits_char_find(find, len, p))
1749 return p-basic_string_char_const_ptr(this);
1752 return MSVCP_basic_string_char_npos;
1755 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1756 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1757 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of, 12)
1758 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of(
1759 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1761 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1762 basic_string_char_const_ptr(find), off, find->size);
1765 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1766 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1767 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr, 12)
1768 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr(
1769 const basic_string_char *this, const char *find, MSVCP_size_t off)
1771 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1772 this, find, off, MSVCP_char_traits_char_length(find));
1775 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1776 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1777 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch, 12)
1778 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_ch(
1779 const basic_string_char *this, char ch, MSVCP_size_t off)
1781 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch, off, 1);
1784 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1785 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1786 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr, 16)
1787 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr_substr(
1788 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1790 const char *p, *beg;
1792 TRACE("%p %p %lu %lu\n", this, find, off, len);
1794 if(len>0 && this->size>0) {
1795 if(off >= this->size)
1796 off = this->size-1;
1798 beg = basic_string_char_const_ptr(this);
1799 for(p=beg+off; p>=beg; p--)
1800 if(MSVCP_char_traits_char_find(find, len, p))
1801 return p-beg;
1804 return MSVCP_basic_string_char_npos;
1807 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1808 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1809 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of, 12)
1810 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of(
1811 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1813 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1814 basic_string_char_const_ptr(find), off, find->size);
1817 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1818 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1819 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr, 12)
1820 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr(
1821 const basic_string_char *this, const char *find, MSVCP_size_t off)
1823 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1824 this, find, off, MSVCP_char_traits_char_length(find));
1827 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1828 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1829 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch, 12)
1830 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_ch(
1831 const basic_string_char *this, char ch, MSVCP_size_t off)
1833 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch, off, 1);
1836 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1837 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1838 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr, 16)
1839 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1840 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1842 const char *p, *beg;
1844 TRACE("%p %p %lu %lu\n", this, find, off, len);
1846 if(this->size>0) {
1847 if(off >= this->size)
1848 off = this->size-1;
1850 beg = basic_string_char_const_ptr(this);
1851 for(p=beg+off; p>=beg; p--)
1852 if(!MSVCP_char_traits_char_find(find, len, p))
1853 return p-beg;
1856 return MSVCP_basic_string_char_npos;
1859 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1860 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1861 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of, 12)
1862 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of(
1863 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1865 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1866 basic_string_char_const_ptr(find), off, find->size);
1869 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1870 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1871 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr, 12)
1872 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr(
1873 const basic_string_char *this, const char *find, MSVCP_size_t off)
1875 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1876 this, find, off, MSVCP_char_traits_char_length(find));
1879 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1880 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1881 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch, 12)
1882 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_ch(
1883 const basic_string_char *this, char ch, MSVCP_size_t off)
1885 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch, off, 1);
1888 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1889 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1890 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at, 8)
1891 char* __thiscall MSVCP_basic_string_char_operator_at(
1892 basic_string_char *this, MSVCP_size_t pos)
1894 TRACE("%p %lu\n", this, pos);
1896 assert(this->size >= pos);
1897 return basic_string_char_ptr(this)+pos;
1900 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1901 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1902 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_operator_at, 8)
1903 const char* __thiscall MSVCP_basic_string_char_const_operator_at(
1904 const basic_string_char *this, MSVCP_size_t pos)
1906 TRACE("%p %lu\n", this, pos);
1908 assert(this->size >= pos);
1909 return basic_string_char_const_ptr(this)+pos;
1912 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z */
1913 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z */
1914 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at_noverify, 8)
1915 char* __thiscall MSVCP_basic_string_char_operator_at_noverify(
1916 basic_string_char *this, size_t_noverify pos)
1918 TRACE("%p %lu\n", this, pos.val);
1919 return basic_string_char_ptr(this)+pos.val;
1922 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z */
1923 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z */
1924 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_const_at_noverify, 8)
1925 const char* __thiscall MSVCP_basic_string_char_operator_const_at_noverify(
1926 const basic_string_char *this, size_t_noverify pos)
1928 TRACE("%p %lu\n", this, pos.val);
1929 return basic_string_char_const_ptr(this)+pos.val;
1932 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1933 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1934 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at, 8)
1935 char* __thiscall MSVCP_basic_string_char_at(
1936 basic_string_char *this, MSVCP_size_t pos)
1938 TRACE("%p %lu\n", this, pos);
1940 if(this->size <= pos)
1941 MSVCP__String_base_Xran();
1943 return basic_string_char_ptr(this)+pos;
1946 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1947 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1948 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_at, 8)
1949 const char* __thiscall MSVCP_basic_string_char_const_at(
1950 const basic_string_char *this, MSVCP_size_t pos)
1952 TRACE("%p %lu\n", this, pos);
1954 if(this->size <= pos)
1955 MSVCP__String_base_Xran();
1957 return basic_string_char_const_ptr(this)+pos;
1960 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1961 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1962 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len, 20)
1963 basic_string_char* __thiscall basic_string_char_replace_cstr_len(basic_string_char *this,
1964 MSVCP_size_t off, MSVCP_size_t len, const char *str, MSVCP_size_t str_len)
1966 MSVCP_size_t inside_pos = -1;
1967 char *ptr = basic_string_char_ptr(this);
1969 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
1971 if(this->size < off)
1972 MSVCP__String_base_Xran();
1974 if(len > this->size-off)
1975 len = this->size-off;
1977 if(MSVCP_basic_string_char_npos-str_len <= this->size-len)
1978 MSVCP__String_base_Xlen();
1980 if(basic_string_char_inside(this, str))
1981 inside_pos = str-ptr;
1983 if(len < str_len) {
1984 basic_string_char_grow(this, this->size-len+str_len, FALSE);
1985 ptr = basic_string_char_ptr(this);
1988 if(inside_pos == -1) {
1989 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1990 memcpy(ptr+off, str, str_len*sizeof(char));
1991 } else if(len >= str_len) {
1992 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(char));
1993 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1994 } else {
1995 MSVCP_size_t size;
1997 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1999 if(inside_pos < off+len) {
2000 size = off+len-inside_pos;
2001 if(size > str_len)
2002 size = str_len;
2003 memmove(ptr+off, ptr+inside_pos, size*sizeof(char));
2004 } else {
2005 size = 0;
2008 if(str_len > size)
2009 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(char));
2012 basic_string_char_eos(this, this->size-len+str_len);
2013 return this;
2016 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
2017 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
2018 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr, 16)
2019 basic_string_char* __thiscall basic_string_char_replace_cstr(basic_string_char *this,
2020 MSVCP_size_t off, MSVCP_size_t len, const char *str)
2022 return basic_string_char_replace_cstr_len(this, off, len, str,
2023 MSVCP_char_traits_char_length(str));
2026 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
2027 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
2028 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr, 24)
2029 basic_string_char* __thiscall basic_string_char_replace_substr(basic_string_char *this, MSVCP_size_t off,
2030 MSVCP_size_t len, const basic_string_char *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
2032 if(str->size < str_off)
2033 MSVCP__String_base_Xran();
2035 if(str_len > str->size-str_off)
2036 str_len = str->size-str_off;
2038 return basic_string_char_replace_cstr_len(this, off, len,
2039 basic_string_char_const_ptr(str)+str_off, str_len);
2042 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
2043 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
2044 DEFINE_THISCALL_WRAPPER(basic_string_char_replace, 16)
2045 basic_string_char* __thiscall basic_string_char_replace(basic_string_char *this,
2046 MSVCP_size_t off, MSVCP_size_t len, const basic_string_char *str)
2048 return basic_string_char_replace_cstr_len(this, off, len,
2049 basic_string_char_const_ptr(str), str->size);
2052 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
2053 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
2054 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch, 20)
2055 basic_string_char* __thiscall basic_string_char_replace_ch(basic_string_char *this,
2056 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, char ch)
2058 char *ptr = basic_string_char_ptr(this);
2060 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
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-count <= this->size-len)
2069 MSVCP__String_base_Xlen();
2071 if(len < count) {
2072 basic_string_char_grow(this, this->size-len+count, FALSE);
2073 ptr = basic_string_char_ptr(this);
2076 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(char));
2077 MSVCP_char_traits_char_assignn(ptr+off, count, ch);
2078 basic_string_char_eos(this, this->size-len+count);
2080 return this;
2083 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
2084 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
2085 DEFINE_THISCALL_WRAPPER(basic_string_char_insert, 12)
2086 basic_string_char* __thiscall basic_string_char_insert(basic_string_char *this,
2087 MSVCP_size_t off, const basic_string_char *str)
2089 return basic_string_char_replace(this, off, 0, str);
2092 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
2093 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
2094 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr, 20)
2095 basic_string_char* __thiscall basic_string_char_insert_substr(
2096 basic_string_char *this, MSVCP_size_t off, const basic_string_char *str,
2097 MSVCP_size_t str_off, MSVCP_size_t str_count)
2099 return basic_string_char_replace_substr(this, off, 0, str, str_off, str_count);
2102 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
2103 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
2104 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr, 12)
2105 basic_string_char* __thiscall basic_string_char_insert_cstr(
2106 basic_string_char *this, MSVCP_size_t off, const char *str)
2108 return basic_string_char_replace_cstr(this, off, 0, str);
2111 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
2112 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
2113 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len, 16)
2114 basic_string_char* __thiscall basic_string_char_insert_cstr_len(basic_string_char *this,
2115 MSVCP_size_t off, const char *str, MSVCP_size_t str_len)
2117 return basic_string_char_replace_cstr_len(this, off, 0, str, str_len);
2120 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
2121 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
2122 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn, 16)
2123 basic_string_char* __thiscall basic_string_char_insert_chn(basic_string_char *this,
2124 MSVCP_size_t off, MSVCP_size_t count, char ch)
2126 return basic_string_char_replace_ch(this, off, 0, count, ch);
2129 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
2130 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
2131 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12)
2132 void __thiscall MSVCP_basic_string_char_resize_ch(
2133 basic_string_char *this, MSVCP_size_t size, char ch)
2135 TRACE("%p %lu %c\n", this, size, ch);
2137 if(size <= this->size)
2138 MSVCP_basic_string_char_erase(this, size, this->size);
2139 else
2140 MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch);
2143 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
2144 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
2145 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize, 8)
2146 void __thiscall MSVCP_basic_string_char_resize(
2147 basic_string_char *this, MSVCP_size_t size)
2149 MSVCP_basic_string_char_resize_ch(this, size, '\0');
2152 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
2153 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
2154 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear, 4)
2155 void __thiscall MSVCP_basic_string_char_clear(basic_string_char *this)
2157 basic_string_char_eos(this, 0);
2160 /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
2161 /* basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short>> */
2162 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */
2163 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2_KB */
2164 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
2165 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
2166 const MSVCP_size_t MSVCP_basic_string_wchar_npos = -1;
2168 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ */
2169 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAPEA_WXZ */
2170 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEPAGXZ */
2171 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAPEAGXZ */
2172 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ptr, 4)
2173 wchar_t* __thiscall basic_string_wchar_ptr(basic_string_wchar *this)
2175 if(this->res < BUF_SIZE_WCHAR)
2176 return this->data.buf;
2177 return this->data.ptr;
2180 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IBEPB_WXZ */
2181 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEBAPEB_WXZ */
2182 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IBEPBGXZ */
2183 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEBAPEBGXZ */
2184 DEFINE_THISCALL_WRAPPER(basic_string_wchar_const_ptr, 4)
2185 const wchar_t* __thiscall basic_string_wchar_const_ptr(const basic_string_wchar *this)
2187 if(this->res < BUF_SIZE_WCHAR)
2188 return this->data.buf;
2189 return this->data.ptr;
2192 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXI@Z */
2193 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K@Z */
2194 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXI@Z */
2195 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K@Z */
2196 DEFINE_THISCALL_WRAPPER(basic_string_wchar_eos, 8)
2197 void __thiscall basic_string_wchar_eos(basic_string_wchar *this, MSVCP_size_t len)
2199 static const wchar_t nullbyte_w = '\0';
2201 this->size = len;
2202 MSVCP_char_traits_wchar_assign(basic_string_wchar_ptr(this)+len, &nullbyte_w);
2205 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NPB_W@Z */
2206 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_NPEB_W@Z */
2207 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z */
2208 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_NPEBG@Z */
2209 DEFINE_THISCALL_WRAPPER(basic_string_wchar_inside, 8)
2210 MSVCP_bool __thiscall basic_string_wchar_inside(
2211 basic_string_wchar *this, const wchar_t *ptr)
2213 wchar_t *cstr = basic_string_wchar_ptr(this);
2215 return ptr>=cstr && ptr<cstr+this->size;
2218 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEX_NI@Z */
2219 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_N_K@Z */
2220 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEX_NI@Z */
2221 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_N_K@Z */
2222 DEFINE_THISCALL_WRAPPER(basic_string_wchar_tidy, 12)
2223 void __thiscall basic_string_wchar_tidy(basic_string_wchar *this,
2224 MSVCP_bool built, MSVCP_size_t new_size)
2226 if(built && BUF_SIZE_WCHAR<=this->res) {
2227 wchar_t *ptr = this->data.ptr;
2229 if(new_size > 0)
2230 MSVCP_char_traits_wchar__Copy_s(this->data.buf, BUF_SIZE_WCHAR, ptr, new_size);
2231 MSVCP_allocator_wchar_deallocate(this->allocator, ptr, this->res+1);
2234 this->res = BUF_SIZE_WCHAR-1;
2235 basic_string_wchar_eos(this, new_size);
2238 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NI_N@Z */
2239 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_N_K_N@Z */
2240 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NI_N@Z */
2241 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_N_K_N@Z */
2242 DEFINE_THISCALL_WRAPPER(basic_string_wchar_grow, 12)
2243 MSVCP_bool __thiscall basic_string_wchar_grow(
2244 basic_string_wchar *this, MSVCP_size_t new_size, MSVCP_bool trim)
2246 if(this->res < new_size) {
2247 MSVCP_size_t new_res = new_size, len = this->size;
2248 wchar_t *ptr;
2250 new_res |= 0xf;
2252 if(new_res/3 < this->res/2)
2253 new_res = this->res + this->res/2;
2255 ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_res+1);
2256 if(!ptr)
2257 ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_size+1);
2258 else
2259 new_size = new_res;
2260 if(!ptr) {
2261 ERR("Out of memory\n");
2262 basic_string_wchar_tidy(this, TRUE, 0);
2263 return FALSE;
2266 MSVCP_char_traits_wchar__Copy_s(ptr, new_size,
2267 basic_string_wchar_ptr(this), this->size);
2268 basic_string_wchar_tidy(this, TRUE, 0);
2269 this->data.ptr = ptr;
2270 this->res = new_size;
2271 basic_string_wchar_eos(this, len);
2272 } else if(trim && new_size < BUF_SIZE_WCHAR)
2273 basic_string_wchar_tidy(this, TRUE,
2274 new_size<this->size ? new_size : this->size);
2275 else if(new_size == 0)
2276 basic_string_wchar_eos(this, 0);
2278 return (new_size>0);
2281 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII@Z */
2282 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0@Z */
2283 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXII@Z */
2284 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0@Z */
2285 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy, 12)
2286 void __thiscall basic_string_wchar__Copy(basic_string_wchar *this,
2287 MSVCP_size_t new_size, MSVCP_size_t copy_len)
2289 TRACE("%p %lu %lu\n", this, new_size, copy_len);
2291 if(!basic_string_wchar_grow(this, new_size, FALSE))
2292 return;
2293 basic_string_wchar_eos(this, copy_len);
2296 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ */
2297 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ */
2298 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
2299 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
2300 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator, 8)
2301 allocator* __thiscall basic_string_wchar_get_allocator(const basic_string_wchar *this, allocator *ret)
2303 TRACE("%p\n", this);
2304 return ret;
2307 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z */
2308 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z */
2309 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
2310 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
2311 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase, 12)
2312 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_erase(
2313 basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t len)
2315 TRACE("%p %lu %lu\n", this, pos, len);
2317 if(pos > this->size)
2318 MSVCP__String_base_Xran();
2320 if(len > this->size-pos)
2321 len = this->size-pos;
2323 if(len) {
2324 MSVCP_char_traits_wchar__Move_s(basic_string_wchar_ptr(this)+pos,
2325 this->res-pos, basic_string_wchar_ptr(this)+pos+len,
2326 this->size-pos-len);
2327 basic_string_wchar_eos(this, this->size-len);
2330 return this;
2333 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2334 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2335 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2336 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2337 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr, 16)
2338 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_substr(
2339 basic_string_wchar *this, const basic_string_wchar *assign,
2340 MSVCP_size_t pos, MSVCP_size_t len)
2342 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2344 if(assign->size < pos)
2345 MSVCP__String_base_Xran();
2347 if(len > assign->size-pos)
2348 len = assign->size-pos;
2350 if(this == assign) {
2351 MSVCP_basic_string_wchar_erase(this, pos+len, MSVCP_basic_string_wchar_npos);
2352 MSVCP_basic_string_wchar_erase(this, 0, pos);
2353 } else if(basic_string_wchar_grow(this, len, FALSE)) {
2354 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2355 this->res, basic_string_wchar_const_ptr(assign)+pos, len);
2356 basic_string_wchar_eos(this, len);
2359 return this;
2362 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2363 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2364 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2365 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2366 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2367 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2368 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2369 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2370 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign, 8)
2371 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign(
2372 basic_string_wchar *this, const basic_string_wchar *assign)
2374 return MSVCP_basic_string_wchar_assign_substr(this, assign,
2375 0, MSVCP_basic_string_wchar_npos);
2378 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2379 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2380 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2381 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2382 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len, 12)
2383 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr_len(
2384 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2386 TRACE("%p %s %lu\n", this, debugstr_wn(str, len), len);
2388 if(basic_string_wchar_inside(this, str))
2389 return MSVCP_basic_string_wchar_assign_substr(this, this,
2390 str-basic_string_wchar_ptr(this), len);
2391 else if(basic_string_wchar_grow(this, len, FALSE)) {
2392 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2393 this->res, str, len);
2394 basic_string_wchar_eos(this, len);
2397 return this;
2400 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2401 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2402 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2403 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2404 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch, 8)
2405 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ch(
2406 basic_string_wchar *this, wchar_t ch)
2408 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch, 1);
2411 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2412 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2413 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2414 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2415 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2416 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2417 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2418 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2419 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr, 8)
2420 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr(
2421 basic_string_wchar *this, const wchar_t *str)
2423 return MSVCP_basic_string_wchar_assign_cstr_len(this, str,
2424 MSVCP_char_traits_wchar_length(str));
2427 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2428 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2429 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2430 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2431 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn, 12)
2432 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assignn(
2433 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2435 TRACE("%p %ld %c\n", this, count, ch);
2437 basic_string_wchar_grow(this, count, FALSE);
2438 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this), count, ch);
2439 basic_string_wchar_eos(this, count);
2440 return this;
2443 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2444 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2445 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2446 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2447 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr, 12)
2448 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ptr_ptr(
2449 basic_string_wchar *this, const wchar_t *first, const wchar_t *last)
2451 return MSVCP_basic_string_wchar_assign_cstr_len(this, first, last-first);
2454 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII_W@Z */
2455 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0_W@Z */
2456 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXIIG@Z */
2457 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0G@Z */
2458 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Chassign, 16)
2459 void __thiscall MSVCP_basic_string_wchar_Chassign(basic_string_wchar *this,
2460 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
2462 TRACE("%p %lu %lu %c\n", this, off, count, ch);
2463 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+off, count, ch);
2466 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WIII@Z */
2467 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K11@Z */
2468 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGIII@Z */
2469 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K11@Z */
2470 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Copy_s, 20)
2471 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_Copy_s(const basic_string_wchar *this,
2472 wchar_t *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
2474 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
2476 if(this->size < off)
2477 MSVCP__String_base_Xran();
2479 if(count > this->size-off)
2480 count = this->size-off;
2482 MSVCP_char_traits_wchar__Copy_s(dest, size,
2483 basic_string_wchar_const_ptr(this)+off, count);
2484 return count;
2487 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WII@Z */
2488 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K1@Z */
2489 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
2490 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
2491 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy, 16)
2492 MSVCP_size_t __thiscall basic_string_wchar_copy(const basic_string_wchar *this,
2493 wchar_t *dest, MSVCP_size_t count, MSVCP_size_t off)
2495 return MSVCP_basic_string_wchar_Copy_s(this, dest, count, count, off);
2498 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2499 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2500 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2501 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2502 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2503 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2504 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2505 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2506 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str, 4)
2507 const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar *this)
2509 TRACE("%p\n", this);
2510 return basic_string_wchar_const_ptr(this);
2513 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2514 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2515 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2516 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2517 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity, 4)
2518 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_capacity(basic_string_wchar *this)
2520 TRACE("%p\n", this);
2521 return this->res;
2524 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
2525 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
2526 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
2527 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
2528 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve, 8)
2529 void __thiscall MSVCP_basic_string_wchar_reserve(basic_string_wchar *this, MSVCP_size_t size)
2531 MSVCP_size_t len;
2533 TRACE("%p %ld\n", this, size);
2535 len = this->size;
2536 if(len > size)
2537 return;
2539 if(basic_string_wchar_grow(this, size, TRUE))
2540 basic_string_wchar_eos(this, len);
2543 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2544 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2545 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2546 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2547 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor, 4)
2548 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor(basic_string_wchar *this)
2550 TRACE("%p\n", this);
2552 basic_string_wchar_tidy(this, FALSE, 0);
2553 return this;
2556 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z */
2557 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z */
2558 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2559 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2560 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor, 8)
2561 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_copy_ctor(
2562 basic_string_wchar *this, const basic_string_wchar *copy)
2564 TRACE("%p %p\n", this, copy);
2566 basic_string_wchar_tidy(this, FALSE, 0);
2567 MSVCP_basic_string_wchar_assign(this, copy);
2568 return this;
2571 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2572 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2573 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2574 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2575 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr, 8)
2576 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(
2577 basic_string_wchar *this, const wchar_t *str)
2579 TRACE("%p %s\n", this, debugstr_w(str));
2581 basic_string_wchar_tidy(this, FALSE, 0);
2582 MSVCP_basic_string_wchar_assign_cstr(this, str);
2583 return this;
2586 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z */
2587 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z */
2588 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2589 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2590 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc, 12)
2591 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_alloc(
2592 basic_string_wchar *this, const wchar_t *str, const void *alloc)
2594 return MSVCP_basic_string_wchar_ctor_cstr(this, str);
2597 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2598 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2599 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2600 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2601 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len, 12)
2602 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len(
2603 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2605 TRACE("%p %s %ld\n", this, debugstr_wn(str, len), len);
2607 basic_string_wchar_tidy(this, FALSE, 0);
2608 MSVCP_basic_string_wchar_assign_cstr_len(this, str, len);
2609 return this;
2612 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z */
2613 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z */
2614 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2615 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2616 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc, 16)
2617 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2618 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len, const void *alloc)
2620 return MSVCP_basic_string_wchar_ctor_cstr_len(this, str, len);
2623 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z */
2624 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z */
2625 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@II@Z */
2626 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1@Z */
2627 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr, 16)
2628 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr(
2629 basic_string_wchar *this, const basic_string_wchar *assign,
2630 MSVCP_size_t pos, MSVCP_size_t len)
2632 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2634 basic_string_wchar_tidy(this, FALSE, 0);
2635 MSVCP_basic_string_wchar_assign_substr(this, assign, pos, len);
2636 return this;
2639 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z */
2640 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z */
2641 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2642 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2643 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc, 20)
2644 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr_alloc(
2645 basic_string_wchar *this, const basic_string_wchar *assign,
2646 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
2648 return MSVCP_basic_string_wchar_ctor_substr(this, assign, pos, len);
2651 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z */
2652 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z */
2653 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2654 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2655 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc, 8)
2656 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_alloc(
2657 basic_string_wchar *this, const void *alloc)
2659 TRACE("%p %p\n", this, alloc);
2661 basic_string_wchar_tidy(this, FALSE, 0);
2662 return this;
2665 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z */
2666 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z */
2667 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IG@Z */
2668 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KG@Z */
2669 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch, 12)
2670 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch(basic_string_wchar *this,
2671 MSVCP_size_t count, wchar_t ch)
2673 TRACE("%p %ld %c\n", this, count, ch);
2675 basic_string_wchar_tidy(this, FALSE, 0);
2676 MSVCP_basic_string_wchar_assignn(this, count, ch);
2677 return this;
2680 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z */
2681 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z */
2682 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2683 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2684 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc, 16)
2685 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar *this,
2686 MSVCP_size_t count, wchar_t ch, const void *alloc)
2688 return MSVCP_basic_string_wchar_ctor_ch(this, count, ch);
2691 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z */
2692 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z */
2693 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0@Z */
2694 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0@Z */
2695 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ptr_ptr, 12)
2696 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ptr_ptr(basic_string_wchar *this,
2697 const wchar_t *first, const wchar_t *last)
2699 return MSVCP_basic_string_wchar_ctor_cstr_len(this, first, last-first);
2702 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2703 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2704 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2705 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2706 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)
2707 void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
2709 TRACE("%p\n", this);
2710 basic_string_wchar_tidy(this, TRUE, 0);
2713 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2714 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2715 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2716 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2717 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2718 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2719 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2720 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2721 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length, 4)
2722 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_length(const basic_string_wchar *this)
2724 TRACE("%p\n", this);
2725 return this->size;
2728 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2729 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2730 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2731 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2732 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size, 4)
2733 MSVCP_size_t __thiscall basic_string_wchar_max_size(const basic_string_wchar *this)
2735 TRACE("%p\n", this);
2736 return MSVCP_allocator_wchar_max_size(this->allocator)-1;
2739 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE_NXZ */
2740 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_NXZ */
2741 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
2742 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
2743 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty, 4)
2744 MSVCP_bool __thiscall MSVCP_basic_string_wchar_empty(basic_string_wchar *this)
2746 TRACE("%p\n", this);
2747 return this->size == 0;
2750 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXAAV12@@Z */
2751 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEAV12@@Z */
2752 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
2753 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
2754 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_swap, 8)
2755 void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_string_wchar *str)
2757 if(this != str) {
2758 char tmp[sizeof(this->data)];
2759 const MSVCP_size_t size = this->size;
2760 const MSVCP_size_t res = this->res;
2762 memcpy(tmp, this->data.buf, sizeof(this->data));
2763 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
2764 memcpy(str->data.buf, tmp, sizeof(this->data));
2766 this->size = str->size;
2767 this->res = str->res;
2769 str->size = size;
2770 str->res = res;
2774 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV12@II@Z */
2775 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV12@_K0@Z */
2776 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
2777 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
2778 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_substr, 16)
2779 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_substr(basic_string_wchar *this,
2780 basic_string_wchar *ret, MSVCP_size_t off, MSVCP_size_t len)
2782 TRACE("%p %lu %lu\n", this, off, len);
2784 MSVCP_basic_string_wchar_ctor_substr(ret, this, off, len);
2785 return ret;
2788 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2789 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2790 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2791 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2792 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr, 16)
2793 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_substr(basic_string_wchar *this,
2794 const basic_string_wchar *append, MSVCP_size_t offset, MSVCP_size_t count)
2796 TRACE("%p %p %lu %lu\n", this, append, offset, count);
2798 if(append->size < offset)
2799 MSVCP__String_base_Xran();
2801 if(count > append->size-offset)
2802 count = append->size-offset;
2804 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2805 MSVCP__String_base_Xlen();
2807 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2808 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2809 this->res-this->size, basic_string_wchar_const_ptr(append)+offset, count);
2810 basic_string_wchar_eos(this, this->size+count);
2813 return this;
2816 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2817 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2818 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2819 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2820 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2821 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2822 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2823 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2824 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append, 8)
2825 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append(
2826 basic_string_wchar *this, const basic_string_wchar *append)
2828 return MSVCP_basic_string_wchar_append_substr(this, append,
2829 0, MSVCP_basic_string_wchar_npos);
2832 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2833 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2834 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2835 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2836 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len, 12)
2837 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr_len(
2838 basic_string_wchar *this, const wchar_t *append, MSVCP_size_t count)
2840 TRACE("%p %s %lu\n", this, debugstr_wn(append, count), count);
2842 if(basic_string_wchar_inside(this, append))
2843 return MSVCP_basic_string_wchar_append_substr(this, this,
2844 append-basic_string_wchar_ptr(this), count);
2846 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2847 MSVCP__String_base_Xlen();
2849 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2850 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2851 this->res-this->size, append, count);
2852 basic_string_wchar_eos(this, this->size+count);
2855 return this;
2858 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2859 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2860 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2861 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2862 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2863 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2864 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2865 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2866 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr, 8)
2867 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr(
2868 basic_string_wchar *this, const wchar_t *append)
2870 return MSVCP_basic_string_wchar_append_cstr_len(this, append,
2871 MSVCP_char_traits_wchar_length(append));
2874 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2875 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2876 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2877 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2878 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end, 12)
2879 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_beg_end(
2880 basic_string_wchar *this, const wchar_t *beg, const wchar_t *end)
2882 return MSVCP_basic_string_wchar_append_cstr_len(this, beg, end-beg);
2885 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2886 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2887 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2888 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2889 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch, 12)
2890 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_len_ch(
2891 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2893 TRACE("%p %lu %c\n", this, count, ch);
2895 if(MSVCP_basic_string_wchar_npos-this->size <= count)
2896 MSVCP__String_base_Xlen();
2898 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2899 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+this->size, count, ch);
2900 basic_string_wchar_eos(this, this->size+count);
2903 return this;
2906 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2907 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2908 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEX_W@Z */
2909 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_W@Z */
2910 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2911 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2912 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXG@Z */
2913 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXG@Z */
2914 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch, 8)
2915 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(
2916 basic_string_wchar *this, wchar_t ch)
2918 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch);
2921 /* ??$?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 */
2922 /* ??$?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 */
2923 /* ??$?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 */
2924 /* ??$?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 */
2925 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
2926 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
2927 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@PB_W@Z */
2928 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar *ret,
2929 const basic_string_wchar *left, const wchar_t *right)
2931 TRACE("%p %s\n", left, debugstr_w(right));
2933 MSVCP_basic_string_wchar_copy_ctor(ret, left);
2934 MSVCP_basic_string_wchar_append_cstr(ret, right);
2935 return ret;
2938 /* ??$?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 */
2939 /* ??$?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 */
2940 /* ??$?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 */
2941 /* ??$?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 */
2942 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
2943 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2944 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_WABV10@@Z */
2945 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar *ret,
2946 const wchar_t *left, const basic_string_wchar *right)
2948 TRACE("%s %p\n", debugstr_w(left), right);
2950 MSVCP_basic_string_wchar_ctor_cstr(ret, left);
2951 MSVCP_basic_string_wchar_append(ret, right);
2952 return ret;
2955 /* ??$?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 */
2956 /* ??$?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 */
2957 /* ??$?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 */
2958 /* ??$?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 */
2959 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
2960 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
2961 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@0@Z */
2962 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate(basic_string_wchar *ret,
2963 const basic_string_wchar *left, const basic_string_wchar *right)
2965 TRACE("%p %p\n", left, right);
2967 MSVCP_basic_string_wchar_copy_ctor(ret, left);
2968 MSVCP_basic_string_wchar_append(ret, right);
2969 return ret;
2972 /* ??$?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 */
2973 /* ??$?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 */
2974 /* ??$?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 */
2975 /* ??$?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 */
2976 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
2977 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
2978 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@ABV10@_W@Z */
2979 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_bstr_ch(
2980 basic_string_wchar *ret, const basic_string_wchar *left, wchar_t right)
2982 TRACE("%p %c\n", left, right);
2984 MSVCP_basic_string_wchar_copy_ctor(ret, left);
2985 MSVCP_basic_string_wchar_append_ch(ret, right);
2986 return ret;
2989 /* ??$?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 */
2990 /* ??$?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 */
2991 /* ??$?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 */
2992 /* ??$?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 */
2993 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
2994 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
2995 /* ??Hstd@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_WABV10@@Z */
2996 basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate_ch_bstr(
2997 basic_string_wchar* ret, wchar_t left, const basic_string_wchar *right)
2999 TRACE("%c %p\n", left, right);
3001 MSVCP_basic_string_wchar_ctor_cstr_len(ret, &left, 1);
3002 MSVCP_basic_string_wchar_append(ret, right);
3003 return ret;
3006 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_WI@Z */
3007 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W0@Z */
3008 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
3009 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
3010 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20)
3011 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr_len(
3012 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3013 const wchar_t *str, MSVCP_size_t count)
3015 int ans;
3017 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_wn(str, count), count);
3019 if(this->size < pos)
3020 MSVCP__String_base_Xran();
3022 if(num > this->size-pos)
3023 num = this->size-pos;
3025 ans = MSVCP_char_traits_wchar_compare(basic_string_wchar_const_ptr(this)+pos,
3026 str, num>count ? count : num);
3027 if(ans)
3028 return ans;
3030 if(num > count)
3031 ans = 1;
3032 else if(num < count)
3033 ans = -1;
3034 return ans;
3037 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_W@Z */
3038 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W@Z */
3039 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
3040 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
3041 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr, 16)
3042 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar *this,
3043 MSVCP_size_t pos, MSVCP_size_t num, const wchar_t *str)
3045 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3046 str, MSVCP_char_traits_wchar_length(str));
3049 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHPB_W@Z */
3050 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHPEB_W@Z */
3051 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
3052 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
3053 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr, 8)
3054 int __thiscall MSVCP_basic_string_wchar_compare_cstr(
3055 const basic_string_wchar *this, const wchar_t *str)
3057 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3058 str, MSVCP_char_traits_wchar_length(str));
3061 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@II@Z */
3062 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@00@Z */
3063 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
3064 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
3065 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr, 24)
3066 int __thiscall MSVCP_basic_string_wchar_compare_substr_substr(
3067 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3068 const basic_string_wchar *compare, MSVCP_size_t off, MSVCP_size_t count)
3070 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
3072 if(compare->size < off)
3073 MSVCP__String_base_Xran();
3075 if(count > compare->size-off)
3076 count = compare->size-off;
3078 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3079 basic_string_wchar_const_ptr(compare)+off, count);
3082 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@@Z */
3083 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@@Z */
3084 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
3085 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
3086 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr, 16)
3087 int __thiscall MSVCP_basic_string_wchar_compare_substr(
3088 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
3089 const basic_string_wchar *compare)
3091 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
3092 basic_string_wchar_const_ptr(compare), compare->size);
3095 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV12@@Z */
3096 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHAEBV12@@Z */
3097 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
3098 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
3099 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare, 8)
3100 int __thiscall MSVCP_basic_string_wchar_compare(
3101 const basic_string_wchar *this, const basic_string_wchar *compare)
3103 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
3104 basic_string_wchar_const_ptr(compare), compare->size);
3107 /* ??$?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 */
3108 /* ??$?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 */
3109 /* ??$?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 */
3110 /* ??$?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 */
3111 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3112 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3113 /* ??8std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3114 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal(
3115 const basic_string_wchar *left, const basic_string_wchar *right)
3117 return MSVCP_basic_string_wchar_compare(left, right) == 0;
3120 /* ??$?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 */
3121 /* ??$?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 */
3122 /* ??$?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 */
3123 /* ??$?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 */
3124 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
3125 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
3126 /* ??8std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3127 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal_str_cstr(
3128 const basic_string_wchar *left, const wchar_t *right)
3130 return MSVCP_basic_string_wchar_compare_cstr(left, right) == 0;
3133 /* ??$?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 */
3134 /* ??$?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 */
3135 /* ??$?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 */
3136 /* ??$?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 */
3137 /* ??8std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3138 /* ??8std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3139 MSVCP_bool __cdecl MSVCP_basic_string_wchar_equal_cstr_str(
3140 const wchar_t *left, const basic_string_wchar *right)
3142 return MSVCP_basic_string_wchar_compare_cstr(right, left) == 0;
3145 /* ??$?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 */
3146 /* ??$?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 */
3147 /* ??$?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 */
3148 /* ??$?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 */
3149 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3150 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
3151 /* ??9std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@0@Z */
3152 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal(
3153 const basic_string_wchar *left, const basic_string_wchar *right)
3155 return MSVCP_basic_string_wchar_compare(left, right) != 0;
3158 /* ??$?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 */
3159 /* ??$?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 */
3160 /* ??$?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 */
3161 /* ??$?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 */
3162 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
3163 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
3164 /* ??9std@@YA_NABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@PB_W@Z */
3165 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal_str_cstr(
3166 const basic_string_wchar *left, const wchar_t *right)
3168 return MSVCP_basic_string_wchar_compare_cstr(left, right) != 0;
3171 /* ??$?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 */
3172 /* ??$?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 */
3173 /* ??$?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 */
3174 /* ??$?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 */
3175 /* ??9std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3176 /* ??9std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
3177 /* ??9std@@YA_NPB_WABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
3178 MSVCP_bool __cdecl MSVCP_basic_string_wchar_not_equal_cstr_str(
3179 const wchar_t *left, const basic_string_wchar *right)
3181 return MSVCP_basic_string_wchar_compare_cstr(right, left) != 0;
3184 /* ??$?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 */
3185 /* ??$?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 */
3186 /* ??$?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 */
3187 /* ??$?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 */
3188 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower(
3189 const basic_string_wchar *left, const basic_string_wchar *right)
3191 return MSVCP_basic_string_wchar_compare(left, right) < 0;
3194 /* ??$?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 */
3195 /* ??$?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 */
3196 /* ??$?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 */
3197 /* ??$?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 */
3198 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower_bstr_cstr(
3199 const basic_string_wchar *left, const wchar_t *right)
3201 return MSVCP_basic_string_wchar_compare_cstr(left, right) < 0;
3204 /* ??$?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 */
3205 /* ??$?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 */
3206 /* ??$?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 */
3207 /* ??$?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 */
3208 MSVCP_bool __cdecl MSVCP_basic_string_wchar_lower_cstr_bstr(
3209 const wchar_t *left, const basic_string_wchar *right)
3211 return MSVCP_basic_string_wchar_compare_cstr(right, left) > 0;
3214 /* ??$?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 */
3215 /* ??$?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 */
3216 /* ??$?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 */
3217 /* ??$?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 */
3218 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq(
3219 const basic_string_wchar *left, const basic_string_wchar *right)
3221 return MSVCP_basic_string_wchar_compare(left, right) <= 0;
3224 /* ??$?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 */
3225 /* ??$?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 */
3226 /* ??$?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 */
3227 /* ??$?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 */
3228 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_bstr_cstr(
3229 const basic_string_wchar *left, const wchar_t *right)
3231 return MSVCP_basic_string_wchar_compare_cstr(left, right) <= 0;
3234 /* ??$?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 */
3235 /* ??$?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 */
3236 /* ??$?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 */
3237 /* ??$?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 */
3238 MSVCP_bool __cdecl MSVCP_basic_string_wchar_leq_cstr_bstr(
3239 const wchar_t *left, const basic_string_wchar *right)
3241 return MSVCP_basic_string_wchar_compare_cstr(right, left) >= 0;
3244 /* ??$?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 */
3245 /* ??$?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 */
3246 /* ??$?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 */
3247 /* ??$?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 */
3248 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater(
3249 const basic_string_wchar *left, const basic_string_wchar *right)
3251 return MSVCP_basic_string_wchar_compare(left, right) > 0;
3254 /* ??$?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 */
3255 /* ??$?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 */
3256 /* ??$?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 */
3257 /* ??$?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 */
3258 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_bstr_cstr(
3259 const basic_string_wchar *left, const wchar_t *right)
3261 return MSVCP_basic_string_wchar_compare_cstr(left, right) > 0;
3264 /* ??$?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 */
3265 /* ??$?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 */
3266 /* ??$?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 */
3267 /* ??$?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 */
3268 MSVCP_bool __cdecl MSVCP_basic_string_wchar_greater_cstr_bstr(
3269 const wchar_t *left, const basic_string_wchar *right)
3271 return MSVCP_basic_string_wchar_compare_cstr(right, left) < 0;
3274 /* ??$?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 */
3275 /* ??$?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 */
3276 /* ??$?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 */
3277 /* ??$?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 */
3278 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq(
3279 const basic_string_wchar *left, const basic_string_wchar *right)
3281 return MSVCP_basic_string_wchar_compare(left, right) >= 0;
3284 /* ??$?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 */
3285 /* ??$?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 */
3286 /* ??$?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 */
3287 /* ??$?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 */
3288 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_bstr_cstr(
3289 const basic_string_wchar *left, const wchar_t *right)
3291 return MSVCP_basic_string_wchar_compare_cstr(left, right) >= 0;
3294 /* ??$?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 */
3295 /* ??$?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 */
3296 /* ??$?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 */
3297 /* ??$?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 */
3298 MSVCP_bool __cdecl MSVCP_basic_string_wchar_geq_cstr_bstr(
3299 const wchar_t *left, const basic_string_wchar *right)
3301 return MSVCP_basic_string_wchar_compare_cstr(right, left) <= 0;
3304 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3305 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3306 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3307 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3308 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr, 16)
3309 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_substr(
3310 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
3312 const wchar_t *p, *end;
3314 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find, len), pos, len);
3316 if(len==0 && pos<=this->size)
3317 return pos;
3318 if(pos>=this->size || len>this->size)
3319 return MSVCP_basic_string_wchar_npos;
3321 end = basic_string_wchar_const_ptr(this)+this->size-len+1;
3322 for(p=basic_string_wchar_const_ptr(this)+pos; p<end; p++) {
3323 p = MSVCP_char_traits_wchar_find(p, end-p, find);
3324 if(!p)
3325 break;
3327 if(!MSVCP_char_traits_wchar_compare(p, find, len))
3328 return p-basic_string_wchar_const_ptr(this);
3331 return MSVCP_basic_string_wchar_npos;
3334 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3335 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3336 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3337 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3338 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off, 12)
3339 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_off(
3340 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
3342 return MSVCP_basic_string_wchar_find_cstr_substr(this, find, pos,
3343 MSVCP_char_traits_wchar_length(find));
3346 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3347 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3348 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3349 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3350 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off, 12)
3351 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_off(
3352 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3354 return MSVCP_basic_string_wchar_find_cstr_substr(this,
3355 basic_string_wchar_const_ptr(find), off, find->size);
3358 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3359 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3360 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3361 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3362 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch, 12)
3363 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_ch(
3364 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
3366 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1);
3369 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3370 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3371 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3372 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3373 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr, 16)
3374 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_substr(
3375 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
3377 const wchar_t *p, *end;
3379 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find, len), pos, len);
3381 if(len==0)
3382 return pos<this->size ? pos : this->size;
3384 if(len > this->size)
3385 return MSVCP_basic_string_wchar_npos;
3387 if(pos > this->size-len+1)
3388 pos = this->size-len+1;
3389 end = basic_string_wchar_const_ptr(this);
3390 for(p=end+pos; p>=end; p--) {
3391 if(*p==*find && !MSVCP_char_traits_wchar_compare(p, find, len))
3392 return p-basic_string_wchar_const_ptr(this);
3395 return MSVCP_basic_string_wchar_npos;
3398 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3399 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3400 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3401 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3402 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off, 12)
3403 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_off(
3404 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
3406 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find, pos,
3407 MSVCP_char_traits_wchar_length(find));
3410 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3411 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3412 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3413 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3414 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off, 12)
3415 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_off(
3416 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3418 return MSVCP_basic_string_wchar_rfind_cstr_substr(this,
3419 basic_string_wchar_const_ptr(find), off, find->size);
3422 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3423 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3424 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3425 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3426 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch, 12)
3427 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_ch(
3428 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
3430 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch, pos, 1);
3433 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3434 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3435 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3436 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3437 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr, 16)
3438 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3439 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3441 const wchar_t *p, *end;
3443 TRACE("%p %p %lu %lu\n", this, find, off, len);
3445 if(len>0 && off<this->size) {
3446 end = basic_string_wchar_const_ptr(this)+this->size;
3447 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3448 if(MSVCP_char_traits_wchar_find(find, len, p))
3449 return p-basic_string_wchar_const_ptr(this);
3452 return MSVCP_basic_string_wchar_npos;
3455 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3456 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3457 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3458 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3459 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of, 12)
3460 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of(
3461 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3463 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
3464 basic_string_wchar_const_ptr(find), off, find->size);
3467 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3468 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3469 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3470 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3471 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr, 12)
3472 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr(
3473 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3475 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
3476 this, find, off, MSVCP_char_traits_wchar_length(find));
3479 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3480 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3481 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3482 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3483 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch, 12)
3484 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_ch(
3485 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3487 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch, off, 1);
3490 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3491 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3492 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3493 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3494 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr, 16)
3495 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3496 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3498 const wchar_t *p, *end;
3500 TRACE("%p %p %lu %lu\n", this, find, off, len);
3502 if(off<this->size) {
3503 end = basic_string_wchar_const_ptr(this)+this->size;
3504 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
3505 if(!MSVCP_char_traits_wchar_find(find, len, p))
3506 return p-basic_string_wchar_const_ptr(this);
3509 return MSVCP_basic_string_wchar_npos;
3512 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3513 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3514 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3515 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3516 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of, 12)
3517 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of(
3518 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3520 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
3521 basic_string_wchar_const_ptr(find), off, find->size);
3524 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3525 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3526 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3527 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3528 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr, 12)
3529 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr(
3530 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3532 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3533 this, find, off, MSVCP_char_traits_wchar_length(find));
3536 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3537 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3538 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3539 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3540 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch, 12)
3541 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_ch(
3542 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3544 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch, off, 1);
3547 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3548 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3549 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3550 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3551 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr, 16)
3552 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3553 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3555 const wchar_t *p, *beg;
3557 TRACE("%p %p %lu %lu\n", this, find, off, len);
3560 if(len>0 && this->size>0) {
3561 if(off >= this->size)
3562 off = this->size-1;
3564 beg = basic_string_wchar_const_ptr(this);
3565 for(p=beg+off; p>=beg; p--)
3566 if(MSVCP_char_traits_wchar_find(find, len, p))
3567 return p-beg;
3570 return MSVCP_basic_string_wchar_npos;
3573 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3574 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3575 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3576 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3577 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of, 12)
3578 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of(
3579 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3581 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
3582 basic_string_wchar_const_ptr(find), off, find->size);
3585 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3586 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3587 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3588 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3589 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr, 12)
3590 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr(
3591 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3593 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3594 this, find, off, MSVCP_char_traits_wchar_length(find));
3597 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3598 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3599 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3600 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3601 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch, 12)
3602 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_ch(
3603 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3605 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch, off, 1);
3608 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3609 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3610 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3611 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3612 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr, 16)
3613 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3614 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3616 const wchar_t *p, *beg;
3618 TRACE("%p %p %lu %lu\n", this, find, off, len);
3620 if(this->size>0) {
3621 if(off >= this->size)
3622 off = this->size-1;
3624 beg = basic_string_wchar_const_ptr(this);
3625 for(p=beg+off; p>=beg; p--)
3626 if(!MSVCP_char_traits_wchar_find(find, len, p))
3627 return p-beg;
3630 return MSVCP_basic_string_wchar_npos;
3633 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3634 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3635 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3636 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3637 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of, 12)
3638 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of(
3639 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3641 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
3642 basic_string_wchar_const_ptr(find), off, find->size);
3645 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3646 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3647 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3648 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3649 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr, 12)
3650 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr(
3651 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3653 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3654 this, find, off, MSVCP_char_traits_wchar_length(find));
3657 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3658 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3659 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3660 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3661 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch, 12)
3662 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_ch(
3663 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3665 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch, off, 1);
3668 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z */
3669 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z */
3670 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
3671 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
3672 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len, 20)
3673 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr_len(basic_string_wchar *this,
3674 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str, MSVCP_size_t str_len)
3676 MSVCP_size_t inside_pos = -1;
3677 wchar_t *ptr = basic_string_wchar_ptr(this);
3679 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
3681 if(this->size < off)
3682 MSVCP__String_base_Xran();
3684 if(len > this->size-off)
3685 len = this->size-off;
3687 if(MSVCP_basic_string_wchar_npos-str_len <= this->size-len)
3688 MSVCP__String_base_Xlen();
3690 if(basic_string_wchar_inside(this, str))
3691 inside_pos = str-ptr;
3693 if(len < str_len) {
3694 basic_string_wchar_grow(this, this->size-len+str_len, FALSE);
3695 ptr = basic_string_wchar_ptr(this);
3698 if(inside_pos == -1) {
3699 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3700 memcpy(ptr+off, str, str_len*sizeof(wchar_t));
3701 } else if(len >= str_len) {
3702 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(wchar_t));
3703 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3704 } else {
3705 MSVCP_size_t size;
3707 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3709 if(inside_pos < off+len) {
3710 size = off+len-inside_pos;
3711 if(size > str_len)
3712 size = str_len;
3713 memmove(ptr+off, ptr+inside_pos, size*sizeof(wchar_t));
3714 } else {
3715 size = 0;
3718 if(str_len > size)
3719 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(wchar_t));
3722 basic_string_wchar_eos(this, this->size-len+str_len);
3723 return this;
3726 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z */
3727 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z */
3728 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3729 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3730 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr, 16)
3731 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr(basic_string_wchar *this,
3732 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str)
3734 return basic_string_wchar_replace_cstr_len(this, off, len, str,
3735 MSVCP_char_traits_wchar_length(str));
3738 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z */
3739 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3740 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3741 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3742 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr, 24)
3743 basic_string_wchar* __thiscall basic_string_wchar_replace_substr(basic_string_wchar *this, MSVCP_size_t off,
3744 MSVCP_size_t len, const basic_string_wchar *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
3746 if(str->size < str_off)
3747 MSVCP__String_base_Xran();
3749 if(str_len > str->size-str_off)
3750 str_len = str->size-str_off;
3752 return basic_string_wchar_replace_cstr_len(this, off, len,
3753 basic_string_wchar_const_ptr(str)+str_off, str_len);
3756 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z */
3757 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3758 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3759 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3760 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace, 16)
3761 basic_string_wchar* __thiscall basic_string_wchar_replace(basic_string_wchar *this,
3762 MSVCP_size_t off, MSVCP_size_t len, const basic_string_wchar *str)
3764 return basic_string_wchar_replace_cstr_len(this, off, len,
3765 basic_string_wchar_const_ptr(str), str->size);
3768 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z */
3769 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z */
3770 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3771 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3772 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch, 20)
3773 basic_string_wchar* __thiscall basic_string_wchar_replace_ch(basic_string_wchar *this,
3774 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, wchar_t ch)
3776 wchar_t *ptr = basic_string_wchar_ptr(this);
3778 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
3780 if(this->size < off)
3781 MSVCP__String_base_Xran();
3783 if(len > this->size-off)
3784 len = this->size-off;
3786 if(MSVCP_basic_string_wchar_npos-count <= this->size-len)
3787 MSVCP__String_base_Xlen();
3789 if(len < count) {
3790 basic_string_wchar_grow(this, this->size-len+count, FALSE);
3791 ptr = basic_string_wchar_ptr(this);
3794 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3795 MSVCP_char_traits_wchar_assignn(ptr+off, count, ch);
3796 basic_string_wchar_eos(this, this->size-len+count);
3798 return this;
3801 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@@Z */
3802 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3803 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3804 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3805 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert, 12)
3806 basic_string_wchar* __thiscall basic_string_wchar_insert(basic_string_wchar *this,
3807 MSVCP_size_t off, const basic_string_wchar *str)
3809 return basic_string_wchar_replace(this, off, 0, str);
3812 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@II@Z */
3813 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3814 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3815 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3816 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr, 20)
3817 basic_string_wchar* __thiscall basic_string_wchar_insert_substr(
3818 basic_string_wchar *this, MSVCP_size_t off, const basic_string_wchar *str,
3819 MSVCP_size_t str_off, MSVCP_size_t str_count)
3821 return basic_string_wchar_replace_substr(this, off, 0, str, str_off, str_count);
3824 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_W@Z */
3825 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W@Z */
3826 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3827 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3828 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr, 12)
3829 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr(
3830 basic_string_wchar *this, MSVCP_size_t off, const wchar_t *str)
3832 return basic_string_wchar_replace_cstr(this, off, 0, str);
3835 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_WI@Z */
3836 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W0@Z */
3837 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3838 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3839 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len, 16)
3840 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr_len(basic_string_wchar *this,
3841 MSVCP_size_t off, const wchar_t *str, MSVCP_size_t str_len)
3843 return basic_string_wchar_replace_cstr_len(this, off, 0, str, str_len);
3846 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II_W@Z */
3847 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0_W@Z */
3848 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3849 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3850 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn, 16)
3851 basic_string_wchar* __thiscall basic_string_wchar_insert_chn(basic_string_wchar *this,
3852 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
3854 return basic_string_wchar_replace_ch(this, off, 0, count, ch);
3857 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
3858 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
3859 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
3860 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
3861 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at, 8)
3862 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at(
3863 basic_string_wchar *this, MSVCP_size_t pos)
3865 TRACE("%p %lu\n", this, pos);
3867 assert(this->size >= pos);
3868 return basic_string_wchar_ptr(this)+pos;
3871 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
3872 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
3873 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
3874 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
3875 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_operator_at, 8)
3876 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_operator_at(
3877 const basic_string_wchar *this, MSVCP_size_t pos)
3879 TRACE("%p %lu\n", this, pos);
3881 assert(this->size >= pos);
3882 return basic_string_wchar_const_ptr(this)+pos;
3885 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z */
3886 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z */
3887 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGU_Size_type_nosscl@01@@Z */
3888 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAGU_Size_type_nosscl@01@@Z */
3889 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at_noverify, 8)
3890 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at_noverify(
3891 basic_string_wchar *this, size_t_noverify pos)
3893 TRACE("%p %lu\n", this, pos.val);
3894 return basic_string_wchar_ptr(this)+pos.val;
3897 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z */
3898 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z */
3899 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGU_Size_type_nosscl@01@@Z */
3900 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBGU_Size_type_nosscl@01@@Z */
3901 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_const_at_noverify, 8)
3902 const wchar_t* __thiscall MSVCP_basic_string_wchar_operator_const_at_noverify(
3903 const basic_string_wchar *this, size_t_noverify pos)
3905 TRACE("%p %lu\n", this, pos.val);
3906 return basic_string_wchar_const_ptr(this)+pos.val;
3909 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
3910 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
3911 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
3912 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
3913 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at, 8)
3914 wchar_t* __thiscall MSVCP_basic_string_wchar_at(
3915 basic_string_wchar *this, MSVCP_size_t pos)
3917 TRACE("%p %lu\n", this, pos);
3919 if(this->size <= pos)
3920 MSVCP__String_base_Xran();
3922 return basic_string_wchar_ptr(this)+pos;
3925 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
3926 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
3927 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
3928 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
3929 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_at, 8)
3930 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at(
3931 const basic_string_wchar *this, MSVCP_size_t pos)
3933 TRACE("%p %lu\n", this, pos);
3935 if(this->size <= pos)
3936 MSVCP__String_base_Xran();
3938 return basic_string_wchar_const_ptr(this)+pos;
3941 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z */
3942 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z */
3943 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
3944 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
3945 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch, 12)
3946 void __thiscall MSVCP_basic_string_wchar_resize_ch(
3947 basic_string_wchar *this, MSVCP_size_t size, wchar_t ch)
3949 TRACE("%p %lu %c\n", this, size, ch);
3951 if(size <= this->size)
3952 MSVCP_basic_string_wchar_erase(this, size, this->size);
3953 else
3954 MSVCP_basic_string_wchar_append_len_ch(this, size-this->size, ch);
3957 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
3958 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
3959 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3960 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3961 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize, 8)
3962 void __thiscall MSVCP_basic_string_wchar_resize(
3963 basic_string_wchar *this, MSVCP_size_t size)
3965 MSVCP_basic_string_wchar_resize_ch(this, size, '\0');
3968 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
3969 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
3970 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
3971 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
3972 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear, 4)
3973 void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar *this)
3975 basic_string_wchar_eos(this, 0);
3978 /* _String_val class */
3979 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ */
3980 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ */
3981 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ */
3982 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ */
3983 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ */
3984 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ */
3985 DEFINE_THISCALL_WRAPPER(_String_val_ctor, 4)
3986 void* __thiscall _String_val_ctor(void *this)
3988 TRACE("%p\n", this);
3989 return this;
3992 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z */
3993 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z */
3994 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z */
3995 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z */
3996 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z */
3997 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z */
3998 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z */
3999 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z */
4000 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z */
4001 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z */
4002 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z */
4003 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z */
4004 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4005 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4006 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z */
4007 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4008 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z */
4009 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z */
4010 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
4011 DEFINE_THISCALL_WRAPPER(_String_val_null_ctor, 8)
4012 void* __thiscall _String_val_null_ctor(void *this, const void *misc)
4014 TRACE("%p %p\n", this, misc);
4015 return this;
4018 #if _MSVCP_VER < 80 /* old iterator functions */
4020 typedef struct {
4021 const char *pos;
4022 } basic_string_char_iterator;
4024 typedef struct {
4025 const wchar_t *pos;
4026 } basic_string_wchar_iterator;
4028 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KAIVconst_iterator@12@0@Z */
4029 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAIV?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4030 MSVCP_size_t __cdecl basic_string_char__Pdif(basic_string_char_iterator i1, basic_string_char_iterator i2)
4032 TRACE("(%p %p)\n", i1.pos, i2.pos);
4033 return !i1.pos ? 0 : i1.pos-i2.pos;
4036 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@0@Z */
4037 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@0@Z */
4038 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter_range, 16)
4039 basic_string_char_iterator* __thiscall basic_string_char_erase_iter_range(basic_string_char *this,
4040 basic_string_char_iterator *ret, basic_string_char_iterator beg, basic_string_char_iterator end)
4042 MSVCP_size_t off;
4044 ret->pos = basic_string_char_ptr(this);
4045 off = basic_string_char__Pdif(beg, *ret);
4047 MSVCP_basic_string_char_erase(this, off, basic_string_char__Pdif(end, beg));
4049 ret->pos = basic_string_char_ptr(this)+off;
4050 return ret;
4053 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@@Z */
4054 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@@Z */
4055 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter, 12)
4056 basic_string_char_iterator* __thiscall basic_string_char_erase_iter(basic_string_char *this,
4057 basic_string_char_iterator *ret, basic_string_char_iterator pos)
4059 MSVCP_size_t off;
4061 ret->pos = basic_string_char_ptr(this);
4062 off = basic_string_char__Pdif(pos, *ret);
4064 MSVCP_basic_string_char_erase(this, off, 1);
4066 ret->pos = basic_string_char_ptr(this)+off;
4067 return ret;
4070 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4071 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4072 DEFINE_THISCALL_WRAPPER(basic_string_char_assign_iter, 12)
4073 basic_string_char* __thiscall basic_string_char_assign_iter(basic_string_char *this,
4074 basic_string_char_iterator beg, basic_string_char_iterator end)
4076 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
4079 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@Vconst_iterator@01@0@Z */
4080 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@V?$_Ptrit@DHPBDABDPADAAD@1@0@Z */
4081 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter, 12)
4082 basic_string_char* __thiscall basic_string_char_ctor_iter(basic_string_char *this,
4083 basic_string_char_iterator beg, basic_string_char_iterator end)
4085 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4088 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4089 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPBDABDPADAAD@2@0@Z */
4090 DEFINE_THISCALL_WRAPPER(basic_string_char_append_iter, 12)
4091 basic_string_char* __thiscall basic_string_char_append_iter(basic_string_char *this,
4092 basic_string_char_iterator beg, basic_string_char_iterator end)
4094 return basic_string_char_replace_cstr_len(this, this->size, 0, beg.pos, end.pos-beg.pos);
4097 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4098 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0V?$_Ptrit@DHPBDABDPADAAD@2@1@Z */
4099 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter, 20)
4100 basic_string_char* __thiscall basic_string_char_replace_iter_iter(basic_string_char *this,
4101 basic_string_char_iterator beg, basic_string_char_iterator end,
4102 basic_string_char_iterator rbeg, basic_string_char_iterator rend)
4104 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4105 end.pos-beg.pos, rbeg.pos, rend.pos-rbeg.pos);
4108 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4109 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0ABV12@@Z */
4110 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr, 16)
4111 basic_string_char* __thiscall basic_string_char_replace_iter_bstr(basic_string_char *this,
4112 basic_string_char_iterator beg, basic_string_char_iterator end, const basic_string_char *str)
4114 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4115 end.pos-beg.pos, basic_string_char_const_ptr(str), str->size);
4118 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0ID@Z */
4119 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0ID@Z */
4120 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ch, 20)
4121 basic_string_char* __thiscall basic_string_char_replace_iter_ch(basic_string_char *this,
4122 basic_string_char_iterator beg, basic_string_char_iterator end, MSVCP_size_t count, char ch)
4124 /* TODO: add more efficient implementation */
4125 MSVCP_size_t off = beg.pos-basic_string_char_ptr(this);
4127 basic_string_char_replace_cstr_len(this, off, end.pos-beg.pos, NULL, 0);
4128 while(count--)
4129 basic_string_char_replace_cstr_len(this, off, 0, &ch, 1);
4130 return this;
4133 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD1@Z */
4134 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBD1@Z */
4135 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_beg_end, 20)
4136 basic_string_char* __thiscall basic_string_char_replace_iter_beg_end(basic_string_char *this,
4137 basic_string_char_iterator beg, basic_string_char_iterator end, const char *rbeg, const char *rend)
4139 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4140 end.pos-beg.pos, rbeg, rend-rbeg);
4143 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBD@Z */
4144 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBD@Z */
4145 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr, 16)
4146 basic_string_char* __thiscall basic_string_char_replace_iter_cstr(basic_string_char *this,
4147 basic_string_char_iterator beg, basic_string_char_iterator end, const char *str)
4149 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4150 end.pos-beg.pos, str, strlen(str));
4153 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@Viterator@12@0PBDI@Z */
4154 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@V?$_Ptrit@DHPADAADPADAAD@2@0PBDI@Z */
4155 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len, 20)
4156 basic_string_char* __thiscall basic_string_char_replace_iter_cstr_len(basic_string_char *this,
4157 basic_string_char_iterator beg, basic_string_char_iterator end, const char *str, MSVCP_size_t len)
4159 return basic_string_char_replace_cstr_len(this, beg.pos-basic_string_char_ptr(this),
4160 end.pos-beg.pos, str, len);
4163 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@ID@Z */
4164 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXV?$_Ptrit@DHPADAADPADAAD@2@ID@Z */
4165 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn, 16)
4166 void __thiscall basic_string_char_insert_iter_chn(basic_string_char *this,
4167 basic_string_char_iterator where, MSVCP_size_t count, char ch)
4169 basic_string_char_iterator iter = { basic_string_char_ptr(this) };
4170 MSVCP_size_t off = basic_string_char__Pdif(where, iter);
4172 basic_string_char_insert_chn(this, off, count, ch);
4175 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@D@Z */
4176 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@D@Z */
4177 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch, 16)
4178 basic_string_char_iterator* __thiscall basic_string_char_insert_iter_ch(basic_string_char *this,
4179 basic_string_char_iterator *ret, basic_string_char_iterator where, char ch)
4181 MSVCP_size_t off;
4183 ret->pos = basic_string_char_ptr(this);
4184 off = basic_string_char__Pdif(where, *ret);
4186 basic_string_char_insert_chn(this, off, 1, ch);
4187 ret->pos = basic_string_char_ptr(this)+off;
4188 return ret;
4191 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@V312@@Z */
4192 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@V32@@Z */
4193 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_null, 12)
4194 basic_string_char_iterator* __thiscall basic_string_char_insert_iter_null(basic_string_char *this,
4195 basic_string_char_iterator *ret, basic_string_char_iterator where)
4197 return basic_string_char_insert_iter_ch(this, ret, where, 0);
4200 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */
4201 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */
4202 /* ?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 */
4203 /* ?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 */
4204 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@XZ */
4205 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_Ptrit@DHPBDABDPADAAD@2@XZ */
4206 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@DHPADAADPADAAD@std@@@2@XZ */
4207 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@DHPBDABDPADAAD@std@@@2@XZ */
4208 DEFINE_THISCALL_WRAPPER(basic_string_char_begin, 8)
4209 basic_string_char_iterator* __thiscall basic_string_char_begin(
4210 basic_string_char *this, basic_string_char_iterator *ret)
4212 ret->pos = basic_string_char_ptr(this);
4213 return ret;
4216 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AViterator@12@XZ */
4217 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AVconst_iterator@12@XZ */
4218 /* ?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 */
4219 /* ?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 */
4220 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_Ptrit@DHPADAADPADAAD@2@XZ */
4221 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_Ptrit@DHPBDABDPADAAD@2@XZ */
4222 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@DHPADAADPADAAD@std@@@2@XZ */
4223 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@DHPBDABDPADAAD@std@@@2@XZ */
4224 DEFINE_THISCALL_WRAPPER(basic_string_char_end, 8)
4225 basic_string_char_iterator* __thiscall basic_string_char_end(
4226 basic_string_char *this, basic_string_char_iterator *ret)
4228 ret->pos = basic_string_char_ptr(this)+this->size;
4229 return ret;
4232 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIVconst_iterator@12@0@Z */
4233 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@KAIVconst_iterator@12@0@Z */
4234 /* ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@CAIV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4235 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAIV?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4236 MSVCP_size_t __cdecl basic_string_wchar__Pdif(basic_string_wchar_iterator i1, basic_string_wchar_iterator i2)
4238 TRACE("(%p %p)\n", i1.pos, i2.pos);
4239 return !i1.pos ? 0 : i1.pos-i2.pos;
4242 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@0@Z */
4243 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@0@Z */
4244 /* ?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 */
4245 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@0@Z */
4246 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter_range, 16)
4247 basic_string_wchar_iterator* __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this,
4248 basic_string_wchar_iterator *ret, basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4250 MSVCP_size_t off;
4252 ret->pos = basic_string_wchar_ptr(this);
4253 off = basic_string_wchar__Pdif(beg, *ret);
4255 MSVCP_basic_string_wchar_erase(this, off, basic_string_wchar__Pdif(end, beg));
4257 ret->pos = basic_string_wchar_ptr(this)+off;
4258 return ret;
4261 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@@Z */
4262 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z */
4263 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V32@@Z */
4264 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@@Z */
4265 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter, 12)
4266 basic_string_wchar_iterator* __thiscall basic_string_wchar_erase_iter(basic_string_wchar *this,
4267 basic_string_wchar_iterator *ret, basic_string_wchar_iterator pos)
4269 MSVCP_size_t off;
4271 ret->pos = basic_string_wchar_ptr(this);
4272 off = basic_string_wchar__Pdif(pos, *ret);
4274 MSVCP_basic_string_wchar_erase(this, off, 1);
4276 ret->pos = basic_string_wchar_ptr(this)+off;
4277 return ret;
4280 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4281 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4282 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4283 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4284 DEFINE_THISCALL_WRAPPER(basic_string_wchar_assign_iter, 12)
4285 basic_string_wchar* __thiscall basic_string_wchar_assign_iter(basic_string_wchar *this,
4286 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4288 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
4291 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@Vconst_iterator@01@0@Z */
4292 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@Vconst_iterator@01@0@Z */
4293 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@1@0@Z */
4294 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@V?$_Ptrit@GHPBGABGPAGAAG@1@0@Z */
4295 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter, 12)
4296 basic_string_wchar* __thiscall basic_string_wchar_ctor_iter(basic_string_wchar *this,
4297 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4299 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4302 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4303 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Vconst_iterator@12@0@Z */
4304 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@0@Z */
4305 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPBGABGPAGAAG@2@0@Z */
4306 DEFINE_THISCALL_WRAPPER(basic_string_wchar_append_iter, 12)
4307 basic_string_wchar* __thiscall basic_string_wchar_append_iter(basic_string_wchar *this,
4308 basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4310 return basic_string_wchar_replace_cstr_len(this, this->size, 0, beg.pos, end.pos-beg.pos);
4313 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4314 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0Vconst_iterator@12@1@Z */
4315 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0V?$_Ptrit@GHPBGABGPAGAAG@2@1@Z */
4316 /* ?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 */
4317 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter, 20)
4318 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
4319 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4320 basic_string_wchar_iterator rbeg, basic_string_wchar_iterator rend)
4322 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4323 end.pos-beg.pos, rbeg.pos, rend.pos-rbeg.pos);
4326 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4327 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0ABV12@@Z */
4328 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0ABV12@@Z */
4329 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@0ABV12@@Z */
4330 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr, 16)
4331 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
4332 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, basic_string_wchar *str)
4334 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4335 end.pos-beg.pos, basic_string_wchar_ptr(str), str->size);
4338 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0IG@Z */
4339 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0I_W@Z */
4340 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0IG@Z */
4341 /* ?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 */
4342 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ch, 20)
4343 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
4344 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, MSVCP_size_t count, wchar_t ch)
4346 /* TODO: add more efficient implementation */
4347 MSVCP_size_t off = beg.pos-basic_string_wchar_ptr(this);
4349 basic_string_wchar_replace_cstr_len(this, off, end.pos-beg.pos, NULL, 0);
4350 while(count--)
4351 basic_string_wchar_replace_cstr_len(this, off, 0, &ch, 1);
4352 return this;
4355 /* ?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 */
4356 /* ?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 */
4357 static basic_string_wchar* basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
4358 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4359 const wchar_t *res_beg, const wchar_t *res_end)
4361 basic_string_wchar_iterator begin = { basic_string_wchar_ptr(this) };
4362 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg, begin),
4363 basic_string_wchar__Pdif(end, beg), res_beg, res_end-res_beg);
4366 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG1@Z */
4367 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W1@Z */
4368 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBG1@Z */
4369 /* ?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 */
4370 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_beg_end, 20)
4371 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_beg_end(basic_string_wchar *this,
4372 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4373 const wchar_t *rbeg, const wchar_t *rend)
4375 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4376 end.pos-beg.pos, rbeg, rend-rbeg);
4379 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBG@Z */
4380 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_W@Z */
4381 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBG@Z */
4382 /* ?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 */
4383 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr, 16)
4384 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
4385 basic_string_wchar_iterator beg, basic_string_wchar_iterator end, const wchar_t *str)
4387 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4388 end.pos-beg.pos, str, wcslen(str));
4391 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@Viterator@12@0PBGI@Z */
4392 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@Viterator@12@0PB_WI@Z */
4393 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@V?$_Ptrit@GHPAGAAGPAGAAG@2@0PBGI@Z */
4394 /* ?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 */
4395 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len, 20)
4396 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
4397 basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
4398 const wchar_t *str, MSVCP_size_t len)
4400 return basic_string_wchar_replace_cstr_len(this, beg.pos-basic_string_wchar_ptr(this),
4401 end.pos-beg.pos, str, len);
4404 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@I_W@Z */
4405 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@IG@Z */
4406 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@I_W@Z */
4407 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@IG@Z */
4408 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn, 16)
4409 void __thiscall basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
4410 basic_string_wchar_iterator where, MSVCP_size_t count, wchar_t ch)
4412 basic_string_wchar_iterator iter = { basic_string_wchar_ptr(this) };
4413 MSVCP_size_t off = basic_string_wchar__Pdif(where, iter);
4415 basic_string_wchar_insert_chn(this, off, count, ch);
4418 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@_W@Z */
4419 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@G@Z */
4420 /* ?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 */
4421 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@G@Z */
4422 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch, 16)
4423 basic_string_wchar_iterator* __thiscall basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
4424 basic_string_wchar_iterator *ret, basic_string_wchar_iterator where, wchar_t ch)
4426 MSVCP_size_t off;
4428 ret->pos = basic_string_wchar_ptr(this);
4429 off = basic_string_wchar__Pdif(where, *ret);
4431 basic_string_wchar_insert_chn(this, off, 1, ch);
4432 ret->pos = basic_string_wchar_ptr(this)+off;
4433 return ret;
4436 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@V312@@Z */
4437 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@V312@@Z */
4438 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@V32@@Z */
4439 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@V32@@Z */
4440 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_null, 12)
4441 basic_string_wchar_iterator* __thiscall basic_string_wchar_insert_iter_null(basic_string_wchar *this,
4442 basic_string_wchar_iterator *ret, basic_string_wchar_iterator where)
4444 return basic_string_wchar_insert_iter_ch(this, ret, where, 0);
4447 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@PB_W1@Z */
4448 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@PBG1@Z */
4449 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@PB_W1@Z */
4450 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@PBG1@Z */
4451 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ptr_ptr, 16)
4452 void __thiscall basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
4453 basic_string_wchar_iterator where, const wchar_t *beg, const wchar_t *end)
4455 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
4458 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4459 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4460 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXViterator@12@Vconst_iterator@12@1@Z */
4461 /* ?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 */
4462 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXV?$_Ptrit@GHPAGAAGPAGAAG@2@V?$_Ptrit@GHPBGABGPAGAAG@2@1@Z */
4463 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 16)
4464 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
4465 basic_string_wchar_iterator where, basic_string_wchar_iterator beg, basic_string_wchar_iterator end)
4467 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg.pos, end.pos);
4470 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ */
4471 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AVconst_iterator@12@XZ */
4472 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@XZ */
4473 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AVconst_iterator@12@XZ */
4474 /* ?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 */
4475 /* ?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 */
4476 /* ?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 */
4477 /* ?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 */
4478 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@XZ */
4479 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_Ptrit@GHPBGABGPAGAAG@2@XZ */
4480 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@XZ */
4481 /* ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@XZ */
4482 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@GHPAGAAGPAGAAG@std@@@2@XZ */
4483 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@GHPBGABGPAGAAG@std@@@2@XZ */
4484 /* ?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 */
4485 /* ?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 */
4486 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin, 8)
4487 basic_string_wchar_iterator* __thiscall basic_string_wchar_begin(
4488 basic_string_wchar *this, basic_string_wchar_iterator *ret)
4490 ret->pos = basic_string_wchar_ptr(this);
4491 return ret;
4494 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AViterator@12@XZ */
4495 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AVconst_iterator@12@XZ */
4496 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AViterator@12@XZ */
4497 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AVconst_iterator@12@XZ */
4498 /* ?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 */
4499 /* ?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 */
4500 /* ?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 */
4501 /* ?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 */
4502 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_Ptrit@GHPAGAAGPAGAAG@2@XZ */
4503 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_Ptrit@GHPBGABGPAGAAG@2@XZ */
4504 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_Ptrit@_WHPA_WAA_WPA_WAA_W@2@XZ */
4505 /* ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$_Ptrit@_WHPB_WAB_WPA_WAA_W@2@XZ */
4506 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@V?$_Ptrit@GHPAGAAGPAGAAG@std@@@2@XZ */
4507 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_Ptrit@GHPBGABGPAGAAG@std@@@2@XZ */
4508 /* ?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 */
4509 /* ?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 */
4510 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end, 8)
4511 basic_string_wchar_iterator* __thiscall basic_string_wchar_end(
4512 basic_string_wchar *this, basic_string_wchar_iterator *ret)
4514 ret->pos = basic_string_wchar_ptr(this)+this->size;
4515 return ret;
4518 #else /* _MSVCP_VER >= 80, new iterator functions */
4520 /* _String_iterator<char> and _String_const_iterator<char> class */
4521 typedef struct {
4522 basic_string_char *bstr;
4523 const char *pos;
4524 } String_iterator_char;
4526 typedef struct {
4527 #if _MSVCP_VER == 80
4528 void *cont;
4529 #endif
4530 const basic_string_char *bstr;
4531 const char *pos;
4532 } String_reverse_iterator_char;
4534 typedef struct {
4535 basic_string_wchar *bstr;
4536 const wchar_t *pos;
4537 } String_iterator_wchar;
4539 typedef struct {
4540 #if _MSVCP_VER == 80
4541 void *cont;
4542 #endif
4543 const basic_string_wchar *bstr;
4544 const wchar_t *pos;
4545 } String_reverse_iterator_wchar;
4547 /* ?_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 */
4548 /* ?_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 */
4549 MSVCP_size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, String_iterator_char i2)
4551 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
4553 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
4554 _invalid_parameter(NULL, NULL, NULL, 0, 0);
4555 return 0;
4558 return !i1.pos ? 0 : i1.pos-i2.pos;
4561 /* ?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 */
4562 /* ?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 */
4563 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase_iter_range, 24)
4564 String_iterator_char* __thiscall MSVCP_basic_string_char_erase_iter_range(basic_string_char *this,
4565 String_iterator_char *ret, String_iterator_char beg, String_iterator_char end)
4567 MSVCP_size_t off;
4569 ret->bstr = this;
4570 ret->pos = basic_string_char_ptr(this);
4571 off = MSVCP_basic_string_char_Pdif(beg, *ret);
4573 MSVCP_basic_string_char_erase(this, off, MSVCP_basic_string_char_Pdif(end, beg));
4575 ret->bstr = this;
4576 ret->pos = basic_string_char_ptr(this)+off;
4577 return ret;
4580 /* ?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 */
4581 /* ?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 */
4582 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase_iter, 16)
4583 String_iterator_char* __thiscall MSVCP_basic_string_char_erase_iter(basic_string_char *this,
4584 String_iterator_char *ret, String_iterator_char pos)
4586 MSVCP_size_t off;
4588 ret->bstr = this;
4589 ret->pos = basic_string_char_ptr(this);
4590 off = MSVCP_basic_string_char_Pdif(pos, *ret);
4592 MSVCP_basic_string_char_erase(this, off, 1);
4594 ret->bstr = this;
4595 ret->pos = basic_string_char_ptr(this)+off;
4596 return ret;
4599 /* ?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 */
4600 /* ?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 */
4601 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_iter, 20)
4602 basic_string_char* __thiscall MSVCP_basic_string_char_assign_iter(basic_string_char *this,
4603 String_iterator_char beg, String_iterator_char end)
4605 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
4608 /* ??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 */
4609 /* ??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 */
4610 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_iter, 20)
4611 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_iter(basic_string_char *this,
4612 String_iterator_char beg, String_iterator_char end)
4614 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4617 /* ?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 */
4618 /* ?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 */
4619 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_iter, 20)
4620 basic_string_char* __thiscall MSVCP_basic_string_char_append_iter(
4621 basic_string_char *this, String_iterator_char beg, String_iterator_char end)
4623 return MSVCP_basic_string_char_append_cstr_len(this, beg.pos, end.pos-beg.pos);
4626 /* ?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 */
4627 /* ?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 */
4628 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_iter, 36)
4629 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_iter(basic_string_char *this,
4630 String_iterator_char beg, String_iterator_char end,
4631 String_iterator_char res_beg, String_iterator_char res_end)
4633 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4634 return basic_string_char_replace_cstr_len(this,
4635 MSVCP_basic_string_char_Pdif(beg, begin), MSVCP_basic_string_char_Pdif(end, beg),
4636 res_beg.pos, MSVCP_basic_string_char_Pdif(res_end, res_beg));
4639 /* ?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 */
4640 /* ?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 */
4641 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_bstr, 24)
4642 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_bstr(basic_string_char *this,
4643 String_iterator_char beg, String_iterator_char end, const basic_string_char *str)
4645 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4646 return basic_string_char_replace(this, MSVCP_basic_string_char_Pdif(beg, begin),
4647 MSVCP_basic_string_char_Pdif(end, beg), str);
4650 /* ?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 */
4651 /* ?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 */
4652 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_ch, 28)
4653 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_ch(basic_string_char *this,
4654 String_iterator_char beg, String_iterator_char end, MSVCP_size_t count, char ch)
4656 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4657 return basic_string_char_replace_ch(this, MSVCP_basic_string_char_Pdif(beg, begin),
4658 MSVCP_basic_string_char_Pdif(end, beg), count, ch);
4661 /* ?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 */
4662 /* ?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 */
4663 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_ptr_ptr, 28)
4664 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_ptr_ptr(basic_string_char *this,
4665 String_iterator_char beg, String_iterator_char end,
4666 const char *res_beg, const char *res_end)
4668 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4669 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
4670 MSVCP_basic_string_char_Pdif(end, beg), res_beg, res_end-res_beg);
4673 /* ?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 */
4674 /* ?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 */
4675 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_cstr, 24)
4676 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_cstr(basic_string_char *this,
4677 String_iterator_char beg, String_iterator_char end, const char *str)
4679 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4680 return basic_string_char_replace_cstr(this, MSVCP_basic_string_char_Pdif(beg, begin),
4681 MSVCP_basic_string_char_Pdif(end, beg), str);
4684 /* ?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 */
4685 /* ?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 */
4686 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_replace_iter_cstr_len, 28)
4687 basic_string_char* __thiscall MSVCP_basic_string_char_replace_iter_cstr_len(basic_string_char *this,
4688 String_iterator_char beg, String_iterator_char end, const char *str, MSVCP_size_t len)
4690 String_iterator_char begin = { this, basic_string_char_ptr(this) };
4691 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
4692 MSVCP_basic_string_char_Pdif(end, beg), str, len);
4695 /* ?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 */
4696 /* ?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 */
4697 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_chn, 20)
4698 void __thiscall MSVCP_basic_string_char_insert_iter_chn(basic_string_char *this,
4699 String_iterator_char where, MSVCP_size_t count, char ch)
4701 String_iterator_char iter = { this, basic_string_char_ptr(this) };
4702 MSVCP_size_t off = MSVCP_basic_string_char_Pdif(where, iter);
4704 basic_string_char_insert_chn(this, off, count, ch);
4707 /* ?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 */
4708 /* ?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 */
4709 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_ch, 20)
4710 String_iterator_char* __thiscall MSVCP_basic_string_char_insert_iter_ch(basic_string_char *this,
4711 String_iterator_char *ret, String_iterator_char where, char ch)
4713 MSVCP_size_t off;
4715 ret->bstr = this;
4716 ret->pos = basic_string_char_ptr(this);
4717 off = MSVCP_basic_string_char_Pdif(where, *ret);
4719 basic_string_char_insert_chn(this, off, 1, ch);
4720 ret->pos = basic_string_char_ptr(this)+off;
4721 return ret;
4724 /* ?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 */
4725 /* ?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 */
4726 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_null, 16)
4727 String_iterator_char* __thiscall MSVCP_basic_string_char_insert_iter_null(basic_string_char *this,
4728 String_iterator_char *ret, String_iterator_char where)
4730 return MSVCP_basic_string_char_insert_iter_ch(this, ret, where, 0);
4733 /* ?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 */
4734 /* ?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 */
4735 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 28)
4736 void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this,
4737 String_iterator_char where, String_iterator_char beg, String_iterator_char end)
4739 MSVCP_basic_string_char_replace_iter_iter(this, where, where, beg, end);
4742 /* ?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 */
4743 /* ?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 */
4744 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_insert_iter_ptr_ptr, 20)
4745 void __thiscall MSVCP_basic_string_char_insert_iter_ptr_ptr(basic_string_char *this,
4746 String_iterator_char where, const char *beg, const char *end)
4748 MSVCP_basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end);
4751 /* ?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 */
4752 /* ?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 */
4753 /* ?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 */
4754 /* ?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 */
4755 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_begin, 8)
4756 String_iterator_char* __thiscall MSVCP_basic_string_char_begin(
4757 basic_string_char *this, String_iterator_char *ret)
4759 TRACE("%p\n", this);
4761 ret->bstr = this;
4762 ret->pos = basic_string_char_const_ptr(this);
4763 return ret;
4766 /* ?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 */
4767 /* ?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 */
4768 /* ?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 */
4769 /* ?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 */
4770 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_end, 8)
4771 String_iterator_char* __thiscall MSVCP_basic_string_char_end(
4772 basic_string_char *this, String_iterator_char *ret)
4774 TRACE("%p\n", this);
4776 ret->bstr = this;
4777 ret->pos = basic_string_char_const_ptr(this)+this->size;
4778 return ret;
4781 /* ?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 */
4782 /* ?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 */
4783 /* ?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 */
4784 /* ?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 */
4785 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rbegin, 8)
4786 String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rbegin(
4787 basic_string_char *this, String_reverse_iterator_char *ret)
4789 TRACE("%p\n", this);
4791 #if _MSVCP_VER == 80
4792 ret->cont = NULL;
4793 #endif
4794 ret->bstr = this;
4795 ret->pos = basic_string_char_const_ptr(this)+this->size;
4796 return ret;
4799 /* ?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 */
4800 /* ?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 */
4801 /* ?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 */
4802 /* ?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 */
4803 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rend, 8)
4804 String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rend(
4805 basic_string_char *this, String_reverse_iterator_char *ret)
4807 TRACE("%p\n", this);
4809 #if _MSVCP_VER == 80
4810 ret->cont = NULL;
4811 #endif
4812 ret->bstr = this;
4813 ret->pos = basic_string_char_const_ptr(this);
4814 return ret;
4817 /* ?_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 */
4818 /* ?_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 */
4819 /* ?_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 */
4820 /* ?_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 */
4821 MSVCP_size_t __cdecl MSVCP_basic_string_wchar_Pdif(String_iterator_wchar i1, String_iterator_wchar i2)
4823 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
4825 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
4826 _invalid_parameter(NULL, NULL, NULL, 0, 0);
4827 return 0;
4830 return !i1.pos ? 0 : i1.pos-i2.pos;
4833 /* ?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 */
4834 /* ?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 */
4835 /* ?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 */
4836 /* ?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 */
4837 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase_iter_range, 24)
4838 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_erase_iter_range(basic_string_wchar *this,
4839 String_iterator_wchar *ret, String_iterator_wchar beg, String_iterator_wchar end)
4841 MSVCP_size_t off;
4843 ret->bstr = this;
4844 ret->pos = basic_string_wchar_ptr(this);
4845 off = MSVCP_basic_string_wchar_Pdif(beg, *ret);
4847 MSVCP_basic_string_wchar_erase(this, off, MSVCP_basic_string_wchar_Pdif(end, beg));
4849 ret->bstr = this;
4850 ret->pos = basic_string_wchar_ptr(this)+off;
4851 return ret;
4854 /* ?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 */
4855 /* ?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 */
4856 /* ?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 */
4857 /* ?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 */
4858 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase_iter, 16)
4859 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_erase_iter(basic_string_wchar *this,
4860 String_iterator_wchar *ret, String_iterator_wchar pos)
4862 MSVCP_size_t off;
4864 ret->bstr = this;
4865 ret->pos = basic_string_wchar_ptr(this);
4866 off = MSVCP_basic_string_wchar_Pdif(pos, *ret);
4868 MSVCP_basic_string_wchar_erase(this, off, 1);
4870 ret->bstr = this;
4871 ret->pos = basic_string_wchar_ptr(this)+off;
4872 return ret;
4875 /* ?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 */
4876 /* ?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 */
4877 /* ?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 */
4878 /* ?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 */
4879 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_iter, 20)
4880 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_iter(basic_string_wchar *this,
4881 String_iterator_wchar beg, String_iterator_wchar end)
4883 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
4886 /* ??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 */
4887 /* ??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 */
4888 /* ??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 */
4889 /* ??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 */
4890 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_iter, 20)
4891 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_iter(basic_string_wchar *this,
4892 String_iterator_wchar beg, String_iterator_wchar end)
4894 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
4897 /* ?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 */
4898 /* ?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 */
4899 /* ?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 */
4900 /* ?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 */
4901 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_iter, 20)
4902 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_iter(
4903 basic_string_wchar *this, String_iterator_wchar beg, String_iterator_wchar end)
4905 return MSVCP_basic_string_wchar_append_cstr_len(this, beg.pos, end.pos-beg.pos);
4908 /* ?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 */
4909 /* ?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 */
4910 /* ?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 */
4911 /* ?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 */
4912 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_iter, 36)
4913 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
4914 String_iterator_wchar beg, String_iterator_wchar end,
4915 String_iterator_wchar res_beg, String_iterator_wchar res_end)
4917 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4918 return basic_string_wchar_replace_cstr_len(this,
4919 MSVCP_basic_string_wchar_Pdif(beg, begin), MSVCP_basic_string_wchar_Pdif(end, beg),
4920 res_beg.pos, MSVCP_basic_string_wchar_Pdif(res_end, res_beg));
4923 /* ?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 */
4924 /* ?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 */
4925 /* ?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 */
4926 /* ?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 */
4927 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_bstr, 24)
4928 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
4929 String_iterator_wchar beg, String_iterator_wchar end, const basic_string_wchar *str)
4931 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4932 return basic_string_wchar_replace(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4933 MSVCP_basic_string_wchar_Pdif(end, beg), str);
4936 /* ?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 */
4937 /* ?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 */
4938 /* ?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 */
4939 /* ?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 */
4940 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_ch, 28)
4941 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
4942 String_iterator_wchar beg, String_iterator_wchar end, MSVCP_size_t count, wchar_t ch)
4944 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4945 return basic_string_wchar_replace_ch(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4946 MSVCP_basic_string_wchar_Pdif(end, beg), count, ch);
4949 /* ?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 */
4950 /* ?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 */
4951 /* ?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 */
4952 /* ?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 */
4953 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_ptr_ptr, 28)
4954 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
4955 String_iterator_wchar beg, String_iterator_wchar end,
4956 const wchar_t *res_beg, const wchar_t *res_end)
4958 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4959 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4960 MSVCP_basic_string_wchar_Pdif(end, beg), res_beg, res_end-res_beg);
4963 /* ?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 */
4964 /* ?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 */
4965 /* ?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 */
4966 /* ?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 */
4967 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_cstr, 24)
4968 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
4969 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str)
4971 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4972 return basic_string_wchar_replace_cstr(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4973 MSVCP_basic_string_wchar_Pdif(end, beg), str);
4976 /* ?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 */
4977 /* ?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 */
4978 /* ?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 */
4979 /* ?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 */
4980 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_replace_iter_cstr_len, 28)
4981 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
4982 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str, MSVCP_size_t len)
4984 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
4985 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
4986 MSVCP_basic_string_wchar_Pdif(end, beg), str, len);
4989 /* ?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 */
4990 /* ?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 */
4991 /* ?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 */
4992 /* ?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 */
4993 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_chn, 20)
4994 void __thiscall MSVCP_basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
4995 String_iterator_wchar where, MSVCP_size_t count, wchar_t ch)
4997 String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) };
4998 MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(where, iter);
5000 basic_string_wchar_insert_chn(this, off, count, ch);
5003 /* ?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 */
5004 /* ?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 */
5005 /* ?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 */
5006 /* ?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 */
5007 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_ch, 20)
5008 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
5009 String_iterator_wchar *ret, String_iterator_wchar where, wchar_t ch)
5011 MSVCP_size_t off;
5013 ret->bstr = this;
5014 ret->pos = basic_string_wchar_ptr(this);
5015 off = MSVCP_basic_string_wchar_Pdif(where, *ret);
5017 basic_string_wchar_insert_chn(this, off, 1, ch);
5018 ret->pos = basic_string_wchar_ptr(this)+off;
5019 return ret;
5022 /* ?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 */
5023 /* ?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 */
5024 /* ?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 */
5025 /* ?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 */
5026 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_null, 16)
5027 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_insert_iter_null(basic_string_wchar *this,
5028 String_iterator_wchar *ret, String_iterator_wchar where)
5030 return MSVCP_basic_string_wchar_insert_iter_ch(this, ret, where, 0);
5033 /* ?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 */
5034 /* ?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 */
5035 /* ?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 */
5036 /* ?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 */
5037 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 28)
5038 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
5039 String_iterator_wchar where, String_iterator_wchar beg, String_iterator_wchar end)
5041 MSVCP_basic_string_wchar_replace_iter_iter(this, where, where, beg, end);
5044 /* ?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 */
5045 /* ?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 */
5046 /* ?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 */
5047 /* ?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 */
5048 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_insert_iter_ptr_ptr, 20)
5049 void __thiscall MSVCP_basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
5050 String_iterator_wchar where, const wchar_t *beg, const wchar_t *end)
5052 MSVCP_basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
5055 /* ?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 */
5056 /* ?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 */
5057 /* ?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 */
5058 /* ?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 */
5059 /* ?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 */
5060 /* ?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 */
5061 /* ?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 */
5062 /* ?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 */
5063 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_begin, 8)
5064 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_begin(
5065 basic_string_wchar *this, String_iterator_wchar *ret)
5067 TRACE("%p\n", this);
5069 ret->bstr = this;
5070 ret->pos = basic_string_wchar_const_ptr(this);
5071 return ret;
5074 /* ?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 */
5075 /* ?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 */
5076 /* ?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 */
5077 /* ?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 */
5078 /* ?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 */
5079 /* ?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 */
5080 /* ?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 */
5081 /* ?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 */
5082 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_end, 8)
5083 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_end(
5084 basic_string_wchar *this, String_iterator_wchar *ret)
5086 TRACE("%p\n", this);
5088 ret->bstr = this;
5089 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
5090 return ret;
5093 /* ?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 */
5094 /* ?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 */
5095 /* ?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 */
5096 /* ?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 */
5097 /* ?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 */
5098 /* ?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 */
5099 /* ?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 */
5100 /* ?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 */
5101 /* ?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 */
5102 /* ?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 */
5103 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rbegin, 8)
5104 String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rbegin(
5105 basic_string_wchar *this, String_reverse_iterator_wchar *ret)
5107 TRACE("%p\n", this);
5109 #if _MSVCP_VER == 80
5110 ret->cont = NULL;
5111 #endif
5112 ret->bstr = this;
5113 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
5114 return ret;
5117 /* ?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 */
5118 /* ?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 */
5119 /* ?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 */
5120 /* ?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 */
5121 /* ?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 */
5122 /* ?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 */
5123 /* ?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 */
5124 /* ?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 */
5125 /* ?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 */
5126 /* ?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 */
5127 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rend, 8)
5128 String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rend(
5129 basic_string_wchar *this, String_reverse_iterator_wchar *ret)
5131 TRACE("%p\n", this);
5133 #if _MSVCP_VER == 80
5134 ret->cont = NULL;
5135 #endif
5136 ret->bstr = this;
5137 ret->pos = basic_string_wchar_const_ptr(this);
5138 return ret;
5141 #endif /* _MSVCP_VER < 80 */