msvcp100: Remove some unused functions.
[wine.git] / dlls / msvcp100 / string.c
blobbbd01b440d91cbee8dae29aa554027ca7eb44147
1 /*
2 * Copyright 2010 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
23 #include "msvcp.h"
24 #include "stdio.h"
25 #include "assert.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 /* _String_iterator<char> and _String_const_iterator<char> class */
33 typedef struct {
34 basic_string_char *bstr;
35 const char *pos;
36 } String_iterator_char;
37 typedef String_iterator_char String_reverse_iterator_char;
39 typedef struct {
40 basic_string_wchar *bstr;
41 const wchar_t *pos;
42 } String_iterator_wchar;
43 typedef String_iterator_wchar String_reverse_iterator_wchar;
45 /* size_t_noverify structure */
46 typedef struct {
47 MSVCP_size_t val;
48 } size_t_noverify;
50 /* allocator class */
51 typedef struct {
52 char empty_struct;
53 } allocator;
55 /* char_traits<char> */
56 /* ?assign@?$char_traits@D@std@@SAXAADABD@Z */
57 /* ?assign@?$char_traits@D@std@@SAXAEADAEBD@Z */
58 static void CDECL MSVCP_char_traits_char_assign(char *ch, const char *assign)
60 *ch = *assign;
63 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
64 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
65 static int CDECL MSVCP_char_traits_char_compare(
66 const char *s1, const char *s2, MSVCP_size_t count)
68 int ret = memcmp(s1, s2, count);
69 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
72 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
73 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
74 static MSVCP_size_t CDECL MSVCP_char_traits_char_length(const char *str)
76 return strlen(str);
79 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
80 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
81 static char* CDECL MSVCP_char_traits_char__Copy_s(char *dest,
82 MSVCP_size_t size, const char *src, MSVCP_size_t count)
84 if(!dest || !src || size<count) {
85 if(dest && size)
86 dest[0] = '\0';
87 _invalid_parameter(NULL, NULL, NULL, 0, 0);
88 return dest;
91 return memcpy(dest, src, count);
94 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
95 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
96 static const char * CDECL MSVCP_char_traits_char_find(
97 const char *str, MSVCP_size_t range, const char *c)
99 return memchr(str, *c, range);
102 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
103 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
104 static char* CDECL MSVCP_char_traits_char__Move_s(char *dest,
105 MSVCP_size_t size, const char *src, MSVCP_size_t count)
107 if(!dest || !src || size<count) {
108 if(dest && size)
109 dest[0] = '\0';
110 _invalid_parameter(NULL, NULL, NULL, 0, 0);
111 return dest;
114 return memmove(dest, src, count);
117 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
118 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
119 static char* CDECL MSVCP_char_traits_char_assignn(char *str, MSVCP_size_t num, char c)
121 return memset(str, c, num);
125 /* char_traits<wchar_t> */
126 /* ?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z */
127 /* ?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z */
128 static void CDECL MSVCP_char_traits_wchar_assign(wchar_t *ch,
129 const wchar_t *assign)
131 *ch = *assign;
134 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
135 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
136 static int CDECL MSVCP_char_traits_wchar_compare(const wchar_t *s1,
137 const wchar_t *s2, MSVCP_size_t count)
139 int ret = memcmp(s1, s2, count * sizeof(wchar_t));
140 return (ret>0 ? 1 : (ret<0 ? -1 : 0));
143 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
144 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
145 static MSVCP_size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str)
147 return wcslen((WCHAR*)str);
150 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
151 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
152 static wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest,
153 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
155 if(!dest || !src || size<count) {
156 if(dest && size)
157 dest[0] = '\0';
158 _invalid_parameter(NULL, NULL, NULL, 0, 0);
159 return dest;
162 return memcpy(dest, src, count * sizeof(wchar_t));
165 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
166 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
167 static const wchar_t* CDECL MSVCP_char_traits_wchar_find(
168 const wchar_t *str, MSVCP_size_t range, const wchar_t *c)
170 MSVCP_size_t i=0;
172 for(i=0; i<range; i++)
173 if(str[i] == *c)
174 return str+i;
176 return NULL;
179 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
180 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
181 static wchar_t* CDECL MSVCP_char_traits_wchar__Move_s(wchar_t *dest,
182 MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
184 if(!dest || !src || size<count) {
185 if(dest && size)
186 dest[0] = '\0';
187 _invalid_parameter(NULL, NULL, NULL, 0, 0);
188 return dest;
191 return memmove(dest, src, count * sizeof(WCHAR));
194 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
195 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
196 static wchar_t* CDECL MSVCP_char_traits_wchar_assignn(wchar_t *str,
197 MSVCP_size_t num, wchar_t c)
199 MSVCP_size_t i;
201 for(i=0; i<num; i++)
202 str[i] = c;
204 return str;
208 /* _String_base */
209 /* ?_Xlen@_String_base@std@@SAXXZ */
210 static void CDECL MSVCP__String_base_Xlen(void)
212 static const char msg[] = "string too long";
214 TRACE("\n");
215 throw_exception(EXCEPTION_LENGTH_ERROR, msg);
218 /* ?_Xran@_String_base@std@@SAXXZ */
219 static void CDECL MSVCP__String_base_Xran(void)
221 static const char msg[] = "invalid string position";
223 TRACE("\n");
224 throw_exception(EXCEPTION_OUT_OF_RANGE, msg);
228 /* basic_string<char, char_traits<char>, allocator<char>> */
229 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
230 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
231 static const MSVCP_size_t MSVCP_basic_string_char_npos = -1;
233 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEPADXZ */
234 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAPEADXZ */
235 DEFINE_THISCALL_WRAPPER(basic_string_char_ptr, 4)
236 char* __thiscall basic_string_char_ptr(basic_string_char *this)
238 if(this->res == BUF_SIZE_CHAR-1)
239 return this->data.buf;
240 return this->data.ptr;
243 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IBEPBDXZ */
244 /* ?_Myptr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEBAPEBDXZ */
245 DEFINE_THISCALL_WRAPPER(basic_string_char_const_ptr, 4)
246 const char* __thiscall basic_string_char_const_ptr(const basic_string_char *this)
248 if(this->res == BUF_SIZE_CHAR-1)
249 return this->data.buf;
250 return this->data.ptr;
253 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXI@Z */
254 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K@Z */
255 DEFINE_THISCALL_WRAPPER(basic_string_char_eos, 8)
256 void __thiscall basic_string_char_eos(basic_string_char *this, MSVCP_size_t len)
258 static const char nullbyte = '\0';
260 this->size = len;
261 MSVCP_char_traits_char_assign(basic_string_char_ptr(this)+len, &nullbyte);
264 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NPBD@Z */
265 /* ?_Inside@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_NPEBD@Z */
266 DEFINE_THISCALL_WRAPPER(basic_string_char_inside, 8)
267 MSVCP_bool __thiscall basic_string_char_inside(
268 basic_string_char *this, const char *ptr)
270 char *cstr = basic_string_char_ptr(this);
272 return (ptr<cstr || ptr>=cstr+this->size) ? FALSE : TRUE;
275 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEX_NI@Z */
276 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_N_K@Z */
277 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy, 12)
278 void __thiscall basic_string_char_tidy(basic_string_char *this,
279 MSVCP_bool built, MSVCP_size_t new_size)
281 if(built && BUF_SIZE_CHAR<=this->res) {
282 char *ptr = this->data.ptr;
284 if(new_size > 0)
285 MSVCP_char_traits_char__Copy_s(this->data.buf, BUF_SIZE_CHAR, ptr, new_size);
286 MSVCP_allocator_char_deallocate(this->allocator, ptr, this->res+1);
289 this->res = BUF_SIZE_CHAR-1;
290 basic_string_char_eos(this, new_size);
293 /* Exported only from msvcp60/70 */
294 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
295 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
296 DEFINE_THISCALL_WRAPPER(basic_string_char_tidy_built, 8)
297 void __thiscall basic_string_char_tidy_built(basic_string_char *this, MSVCP_bool built)
299 basic_string_char_tidy(this, built, 0);
302 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z */
303 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAA_N_K_N@Z */
304 DEFINE_THISCALL_WRAPPER(basic_string_char_grow, 12)
305 MSVCP_bool __thiscall basic_string_char_grow(
306 basic_string_char *this, MSVCP_size_t new_size, MSVCP_bool trim)
308 if(this->res < new_size) {
309 MSVCP_size_t new_res = new_size, len = this->size;
310 char *ptr;
312 new_res |= 0xf;
314 if(new_res/3 < this->res/2)
315 new_res = this->res + this->res/2;
317 ptr = MSVCP_allocator_char_allocate(this->allocator, new_res+1);
318 if(!ptr)
319 ptr = MSVCP_allocator_char_allocate(this->allocator, new_size+1);
320 else
321 new_size = new_res;
322 if(!ptr) {
323 ERR("Out of memory\n");
324 basic_string_char_tidy(this, TRUE, 0);
325 return FALSE;
328 MSVCP_char_traits_char__Copy_s(ptr, new_size,
329 basic_string_char_ptr(this), this->size);
330 basic_string_char_tidy(this, TRUE, 0);
331 this->data.ptr = ptr;
332 this->res = new_size;
333 basic_string_char_eos(this, len);
334 } else if(trim && new_size < BUF_SIZE_CHAR)
335 basic_string_char_tidy(this, TRUE,
336 new_size<this->size ? new_size : this->size);
337 else if(new_size == 0)
338 basic_string_char_eos(this, 0);
340 return (new_size>0);
343 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXII@Z */
344 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0@Z */
345 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy, 12)
346 void __thiscall basic_string_char__Copy(basic_string_char *this,
347 MSVCP_size_t new_size, MSVCP_size_t copy_len)
349 TRACE("%p %lu %lu\n", this, new_size, copy_len);
351 if(!basic_string_char_grow(this, new_size, FALSE))
352 return;
353 basic_string_char_eos(this, copy_len);
356 /* ?_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 */
357 /* ?_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 */
358 static MSVCP_size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, String_iterator_char i2)
360 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
362 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
363 _invalid_parameter(NULL, NULL, NULL, 0, 0);
364 return 0;
367 return !i1.pos ? 0 : i1.pos-i2.pos;
370 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
371 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
372 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator, 8)
373 allocator* __thiscall basic_string_char_get_allocator(const basic_string_char *this, allocator *ret)
375 TRACE("%p\n", this);
376 return ret;
379 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
380 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
381 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase, 12)
382 basic_string_char* __thiscall MSVCP_basic_string_char_erase(
383 basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t len)
385 TRACE("%p %lu %lu\n", this, pos, len);
387 if(pos > this->size)
388 MSVCP__String_base_Xran();
390 if(len > this->size-pos)
391 len = this->size-pos;
393 if(len) {
394 MSVCP_char_traits_char__Move_s(basic_string_char_ptr(this)+pos,
395 this->res-pos, basic_string_char_ptr(this)+pos+len,
396 this->size-pos-len);
397 basic_string_char_eos(this, this->size-len);
400 return this;
403 /* ?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 */
404 /* ?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 */
405 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter_range, 24)
406 String_iterator_char* __thiscall basic_string_char_erase_iter_range(basic_string_char *this,
407 String_iterator_char *ret, String_iterator_char beg, String_iterator_char end)
409 MSVCP_size_t off;
411 ret->bstr = this;
412 ret->pos = basic_string_char_ptr(this);
413 off = MSVCP_basic_string_char_Pdif(beg, *ret);
415 MSVCP_basic_string_char_erase(this, off, MSVCP_basic_string_char_Pdif(end, beg));
417 ret->bstr = this;
418 ret->pos = basic_string_char_ptr(this)+off;
419 return ret;
422 /* ?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 */
423 /* ?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 */
424 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter, 16)
425 String_iterator_char* __thiscall basic_string_char_erase_iter(basic_string_char *this,
426 String_iterator_char *ret, String_iterator_char pos)
428 MSVCP_size_t off;
430 ret->bstr = this;
431 ret->pos = basic_string_char_ptr(this);
432 off = MSVCP_basic_string_char_Pdif(pos, *ret);
434 MSVCP_basic_string_char_erase(this, off, 1);
436 ret->bstr = this;
437 ret->pos = basic_string_char_ptr(this)+off;
438 return ret;
441 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
442 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
443 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr, 16)
444 basic_string_char* __thiscall MSVCP_basic_string_char_assign_substr(
445 basic_string_char *this, const basic_string_char *assign,
446 MSVCP_size_t pos, MSVCP_size_t len)
448 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
450 if(assign->size < pos)
451 MSVCP__String_base_Xran();
453 if(len > assign->size-pos)
454 len = assign->size-pos;
456 if(this == assign) {
457 MSVCP_basic_string_char_erase(this, pos+len, MSVCP_basic_string_char_npos);
458 MSVCP_basic_string_char_erase(this, 0, pos);
459 } else if(basic_string_char_grow(this, len, FALSE)) {
460 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
461 this->res, basic_string_char_const_ptr(assign)+pos, len);
462 basic_string_char_eos(this, len);
465 return this;
468 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
469 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
470 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
471 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
472 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign, 8)
473 basic_string_char* __thiscall MSVCP_basic_string_char_assign(
474 basic_string_char *this, const basic_string_char *assign)
476 return MSVCP_basic_string_char_assign_substr(this, assign,
477 0, MSVCP_basic_string_char_npos);
480 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
481 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
482 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len, 12)
483 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr_len(
484 basic_string_char *this, const char *str, MSVCP_size_t len)
486 TRACE("%p %s %lu\n", this, debugstr_a(str), len);
488 if(basic_string_char_inside(this, str))
489 return MSVCP_basic_string_char_assign_substr(this, this,
490 str-basic_string_char_ptr(this), len);
491 else if(basic_string_char_grow(this, len, FALSE)) {
492 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this),
493 this->res, str, len);
494 basic_string_char_eos(this, len);
497 return this;
500 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
501 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
502 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch, 8)
503 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ch(
504 basic_string_char *this, char ch)
506 return MSVCP_basic_string_char_assign_cstr_len(this, &ch, 1);
509 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
510 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
511 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
512 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
513 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr, 8)
514 basic_string_char* __thiscall MSVCP_basic_string_char_assign_cstr(
515 basic_string_char *this, const char *str)
517 return MSVCP_basic_string_char_assign_cstr_len(this, str,
518 MSVCP_char_traits_char_length(str));
521 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
522 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
523 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn, 12)
524 basic_string_char* __thiscall MSVCP_basic_string_char_assignn(
525 basic_string_char *this, MSVCP_size_t count, char ch)
527 TRACE("%p %ld %c\n", this, count, ch);
529 basic_string_char_grow(this, count, FALSE);
530 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this), count, ch);
531 basic_string_char_eos(this, count);
532 return this;
535 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
536 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
537 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr, 12)
538 basic_string_char* __thiscall MSVCP_basic_string_char_assign_ptr_ptr(
539 basic_string_char *this, const char *first, const char *last)
541 return MSVCP_basic_string_char_assign_cstr_len(this, first, last-first);
544 /* ?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 */
545 /* ?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 */
546 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_iter, 20)
547 basic_string_char* __thiscall MSVCP_basic_string_char_assign_iter(basic_string_char *this,
548 String_iterator_char beg, String_iterator_char end)
550 return MSVCP_basic_string_char_assign_ptr_ptr(this, beg.pos, end.pos);
553 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXIID@Z */
554 /* ?_Chassign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAX_K0D@Z */
555 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Chassign, 16)
556 void __thiscall MSVCP_basic_string_char_Chassign(basic_string_char *this,
557 MSVCP_size_t off, MSVCP_size_t count, char ch)
559 TRACE("%p %lu %lu %c\n", this, off, count, ch);
560 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+off, count, ch);
563 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADIII@Z */
564 /* ?_Copy_s@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K11@Z */
565 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_Copy_s, 20)
566 MSVCP_size_t __thiscall MSVCP_basic_string_char_Copy_s(const basic_string_char *this,
567 char *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
569 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
571 if(this->size < off)
572 MSVCP__String_base_Xran();
574 if(count > this->size-off)
575 count = this->size-off;
577 MSVCP_char_traits_char__Copy_s(dest, size,
578 basic_string_char_const_ptr(this)+off, count);
579 return count;
582 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
583 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
584 DEFINE_THISCALL_WRAPPER(basic_string_char_copy, 16)
585 MSVCP_size_t __thiscall basic_string_char_copy(const basic_string_char *this,
586 char *dest, MSVCP_size_t count, MSVCP_size_t off)
588 return MSVCP_basic_string_char_Copy_s(this, dest, count, count, off);
591 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
592 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
593 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
594 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
595 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str, 4)
596 const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char *this)
598 TRACE("%p\n", this);
599 return basic_string_char_const_ptr(this);
602 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
603 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
604 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity, 4)
605 MSVCP_size_t __thiscall MSVCP_basic_string_char_capacity(basic_string_char *this)
607 TRACE("%p\n", this);
608 return this->res;
611 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
612 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
613 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve, 8)
614 void __thiscall MSVCP_basic_string_char_reserve(basic_string_char *this, MSVCP_size_t size)
616 MSVCP_size_t len;
618 TRACE("%p %ld\n", this, size);
620 len = this->size;
621 if(len > size)
622 return;
624 basic_string_char_grow(this, size, FALSE);
625 basic_string_char_eos(this, len);
628 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
629 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
630 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor, 4)
631 basic_string_char* __thiscall MSVCP_basic_string_char_ctor(basic_string_char *this)
633 TRACE("%p\n", this);
635 basic_string_char_tidy(this, FALSE, 0);
636 return this;
639 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
640 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
641 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor, 8)
642 basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(
643 basic_string_char *this, const basic_string_char *copy)
645 TRACE("%p %p\n", this, copy);
647 basic_string_char_tidy(this, FALSE, 0);
648 MSVCP_basic_string_char_assign(this, copy);
649 return this;
652 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
653 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
654 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr, 8)
655 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr(
656 basic_string_char *this, const char *str)
658 TRACE("%p %s\n", this, debugstr_a(str));
660 basic_string_char_tidy(this, FALSE, 0);
661 MSVCP_basic_string_char_assign_cstr(this, str);
662 return this;
665 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
666 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
667 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc, 12)
668 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_alloc(
669 basic_string_char *this, const char *str, const void *alloc)
671 return MSVCP_basic_string_char_ctor_cstr(this, str);
674 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
675 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
676 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len, 12)
677 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len(
678 basic_string_char *this, const char *str, MSVCP_size_t len)
680 TRACE("%p %s %ld\n", this, debugstr_a(str), len);
682 basic_string_char_tidy(this, FALSE, 0);
683 MSVCP_basic_string_char_assign_cstr_len(this, str, len);
684 return this;
687 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
688 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
689 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc, 16)
690 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len_alloc(
691 basic_string_char *this, const char *str, MSVCP_size_t len, const void *alloc)
693 return MSVCP_basic_string_char_ctor_cstr_len(this, str, len);
696 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@II@Z */
697 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1@Z */
698 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr, 16)
699 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr(
700 basic_string_char *this, const basic_string_char *assign,
701 MSVCP_size_t pos, MSVCP_size_t len)
703 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
705 basic_string_char_tidy(this, FALSE, 0);
706 MSVCP_basic_string_char_assign_substr(this, assign, pos, len);
707 return this;
710 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
711 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
712 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc, 20)
713 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr_alloc(
714 basic_string_char *this, const basic_string_char *assign,
715 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
717 return MSVCP_basic_string_char_ctor_substr(this, assign, pos, len);
720 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
721 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
722 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc, 8)
723 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_alloc(
724 basic_string_char *this, const void *alloc)
726 TRACE("%p %p\n", this, alloc);
728 basic_string_char_tidy(this, FALSE, 0);
729 return this;
732 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z */
733 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KD@Z */
734 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch, 12)
735 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch(basic_string_char *this,
736 MSVCP_size_t count, char ch)
738 TRACE("%p %ld %c\n", this, count, ch);
740 basic_string_char_tidy(this, FALSE, 0);
741 MSVCP_basic_string_char_assignn(this, count, ch);
742 return this;
745 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
746 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
747 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc, 16)
748 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char *this,
749 MSVCP_size_t count, char ch, const void *alloc)
751 return MSVCP_basic_string_char_ctor_ch(this, count, ch);
754 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0@Z */
755 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0@Z */
756 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ptr_ptr, 12)
757 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_ptr_ptr(basic_string_char *this,
758 const char *first, const char *last)
760 return MSVCP_basic_string_char_ctor_cstr_len(this, first, last-first);
763 /* ??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 */
764 /* ??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 */
765 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_iter, 20)
766 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_iter(basic_string_char *this,
767 String_iterator_char beg, String_iterator_char end)
769 return MSVCP_basic_string_char_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
772 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
773 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
774 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4)
775 void __thiscall MSVCP_basic_string_char_dtor(basic_string_char *this)
777 TRACE("%p\n", this);
778 basic_string_char_tidy(this, TRUE, 0);
781 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
782 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
783 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
784 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
785 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length, 4)
786 MSVCP_size_t __thiscall MSVCP_basic_string_char_length(const basic_string_char *this)
788 TRACE("%p\n", this);
789 return this->size;
792 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
793 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
794 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size, 4)
795 MSVCP_size_t __thiscall basic_string_char_max_size(const basic_string_char *this)
797 TRACE("%p\n", this);
798 return MSVCP_allocator_char_max_size(this->allocator)-1;
801 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
802 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
803 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty, 4)
804 MSVCP_bool __thiscall MSVCP_basic_string_char_empty(basic_string_char *this)
806 TRACE("%p\n", this);
807 return this->size == 0;
810 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
811 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
812 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap, 8)
813 void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_string_char *str)
815 if(this != str) {
816 char tmp[sizeof(this->data)];
817 const MSVCP_size_t size = this->size;
818 const MSVCP_size_t res = this->res;
820 memcpy(tmp, this->data.buf, sizeof(this->data));
821 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
822 memcpy(str->data.buf, tmp, sizeof(this->data));
824 this->size = str->size;
825 this->res = str->res;
827 str->size = size;
828 str->res = res;
832 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
833 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
834 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr, 16)
835 basic_string_char* __thiscall MSVCP_basic_string_char_substr(basic_string_char *this,
836 basic_string_char *ret, MSVCP_size_t off, MSVCP_size_t len)
838 TRACE("%p %lu %lu\n", this, off, len);
840 MSVCP_basic_string_char_ctor_substr(ret, this, off, len);
841 return ret;
844 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
845 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
846 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr, 16)
847 basic_string_char* __thiscall MSVCP_basic_string_char_append_substr(basic_string_char *this,
848 const basic_string_char *append, MSVCP_size_t offset, MSVCP_size_t count)
850 TRACE("%p %p %lu %lu\n", this, append, offset, count);
852 if(append->size < offset)
853 MSVCP__String_base_Xran();
855 if(count > append->size-offset)
856 count = append->size-offset;
858 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
859 MSVCP__String_base_Xlen();
861 if(basic_string_char_grow(this, this->size+count, FALSE)) {
862 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
863 this->res-this->size, basic_string_char_const_ptr(append)+offset, count);
864 basic_string_char_eos(this, this->size+count);
867 return this;
870 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
871 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
872 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
873 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
874 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append, 8)
875 basic_string_char* __thiscall MSVCP_basic_string_char_append(
876 basic_string_char *this, const basic_string_char *append)
878 return MSVCP_basic_string_char_append_substr(this, append,
879 0, MSVCP_basic_string_char_npos);
882 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
883 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
884 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len, 12)
885 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr_len(
886 basic_string_char *this, const char *append, MSVCP_size_t count)
888 TRACE("%p %s %lu\n", this, debugstr_a(append), count);
890 if(basic_string_char_inside(this, append))
891 return MSVCP_basic_string_char_append_substr(this, this,
892 append-basic_string_char_ptr(this), count);
894 if(MSVCP_basic_string_char_npos-this->size<=count || this->size+count<this->size)
895 MSVCP__String_base_Xlen();
897 if(basic_string_char_grow(this, this->size+count, FALSE)) {
898 MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
899 this->res-this->size, append, count);
900 basic_string_char_eos(this, this->size+count);
903 return this;
906 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
907 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
908 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
909 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
910 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr, 8)
911 basic_string_char* __thiscall MSVCP_basic_string_char_append_cstr(
912 basic_string_char *this, const char *append)
914 return MSVCP_basic_string_char_append_cstr_len(this, append,
915 MSVCP_char_traits_char_length(append));
918 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
919 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
920 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end, 12)
921 basic_string_char* __thiscall MSVCP_basic_string_char_append_beg_end(
922 basic_string_char *this, const char *beg, const char *end)
924 return MSVCP_basic_string_char_append_cstr_len(this, beg, end-beg);
927 /* ?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 */
928 /* ?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 */
929 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_iter, 20)
930 basic_string_char* __thiscall MSVCP_basic_string_char_append_iter(
931 basic_string_char *this, String_iterator_char beg, String_iterator_char end)
933 return MSVCP_basic_string_char_append_cstr_len(this, beg.pos, end.pos-beg.pos);
936 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
937 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
938 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch, 12)
939 basic_string_char* __thiscall MSVCP_basic_string_char_append_len_ch(
940 basic_string_char *this, MSVCP_size_t count, char ch)
942 TRACE("%p %lu %c\n", this, count, ch);
944 if(MSVCP_basic_string_char_npos-this->size <= count)
945 MSVCP__String_base_Xlen();
947 if(basic_string_char_grow(this, this->size+count, FALSE)) {
948 MSVCP_char_traits_char_assignn(basic_string_char_ptr(this)+this->size, count, ch);
949 basic_string_char_eos(this, this->size+count);
952 return this;
955 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
956 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
957 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXD@Z */
958 /* ?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXD@Z */
959 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch, 8)
960 basic_string_char* __thiscall MSVCP_basic_string_char_append_ch(
961 basic_string_char *this, char ch)
963 return MSVCP_basic_string_char_append_len_ch(this, 1, ch);
966 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
967 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
968 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20)
969 int __thiscall MSVCP_basic_string_char_compare_substr_cstr_len(
970 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
971 const char *str, MSVCP_size_t count)
973 int ans;
975 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_a(str), count);
977 if(this->size < pos)
978 MSVCP__String_base_Xran();
980 if(pos+num > this->size)
981 num = this->size-pos;
983 ans = MSVCP_char_traits_char_compare(basic_string_char_const_ptr(this)+pos,
984 str, num>count ? count : num);
985 if(ans)
986 return ans;
988 if(num > count)
989 ans = 1;
990 else if(num < count)
991 ans = -1;
992 return ans;
995 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
996 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
997 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr, 16)
998 int __thiscall MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char *this,
999 MSVCP_size_t pos, MSVCP_size_t num, const char *str)
1001 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1002 str, MSVCP_char_traits_char_length(str));
1005 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
1006 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
1007 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr, 8)
1008 int __thiscall MSVCP_basic_string_char_compare_cstr(
1009 const basic_string_char *this, const char *str)
1011 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1012 str, MSVCP_char_traits_char_length(str));
1015 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
1016 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
1017 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr, 24)
1018 int __thiscall MSVCP_basic_string_char_compare_substr_substr(
1019 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1020 const basic_string_char *compare, MSVCP_size_t off, MSVCP_size_t count)
1022 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
1024 if(compare->size < off)
1025 MSVCP__String_base_Xran();
1027 if(off+count > compare->size)
1028 count = compare->size-off;
1030 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1031 basic_string_char_const_ptr(compare)+off, count);
1034 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
1035 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
1036 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr, 16)
1037 int __thiscall MSVCP_basic_string_char_compare_substr(
1038 const basic_string_char *this, MSVCP_size_t pos, MSVCP_size_t num,
1039 const basic_string_char *compare)
1041 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
1042 basic_string_char_const_ptr(compare), compare->size);
1045 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
1046 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
1047 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare, 8)
1048 int __thiscall MSVCP_basic_string_char_compare(
1049 const basic_string_char *this, const basic_string_char *compare)
1051 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
1052 basic_string_char_const_ptr(compare), compare->size);
1055 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1056 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1057 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr, 16)
1058 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_substr(
1059 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1061 const char *p, *end;
1063 TRACE("%p %s %lu %lu\n", this, debugstr_a(find), pos, len);
1065 if(len==0 && pos<=this->size)
1066 return pos;
1068 end = basic_string_char_const_ptr(this)+this->size-len+1;
1069 for(p=basic_string_char_const_ptr(this)+pos; p<end; p++) {
1070 p = MSVCP_char_traits_char_find(p, end-p, find);
1071 if(!p)
1072 break;
1074 if(!MSVCP_char_traits_char_compare(p, find, len))
1075 return p-basic_string_char_const_ptr(this);
1078 return MSVCP_basic_string_char_npos;
1081 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1082 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1083 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off, 12)
1084 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_cstr_off(
1085 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1087 return MSVCP_basic_string_char_find_cstr_substr(this, find, pos,
1088 MSVCP_char_traits_char_length(find));
1091 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1092 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1093 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off, 12)
1094 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_off(
1095 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1097 return MSVCP_basic_string_char_find_cstr_substr(this,
1098 basic_string_char_const_ptr(find), off, find->size);
1101 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1102 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1103 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch, 12)
1104 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_ch(
1105 const basic_string_char *this, char ch, MSVCP_size_t pos)
1107 return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1);
1110 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1111 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1112 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr, 16)
1113 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_substr(
1114 const basic_string_char *this, const char *find, MSVCP_size_t pos, MSVCP_size_t len)
1116 const char *p, *end;
1118 TRACE("%p %s %lu %lu\n", this, debugstr_a(find), pos, len);
1120 if(len==0)
1121 return pos<this->size ? pos : this->size;
1123 if(len > this->size)
1124 return MSVCP_basic_string_char_npos;
1126 if(pos > this->size-len+1)
1127 pos = this->size-len+1;
1128 end = basic_string_char_const_ptr(this);
1129 for(p=end+pos; p>=end; p--) {
1130 if(*p==*find && !MSVCP_char_traits_char_compare(p, find, len))
1131 return p-basic_string_char_const_ptr(this);
1134 return MSVCP_basic_string_char_npos;
1137 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1138 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1139 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off, 12)
1140 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_cstr_off(
1141 const basic_string_char *this, const char *find, MSVCP_size_t pos)
1143 return MSVCP_basic_string_char_rfind_cstr_substr(this, find, pos,
1144 MSVCP_char_traits_char_length(find));
1147 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1148 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1149 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off, 12)
1150 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_off(
1151 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1153 return MSVCP_basic_string_char_rfind_cstr_substr(this,
1154 basic_string_char_const_ptr(find), off, find->size);
1157 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1158 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1159 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch, 12)
1160 MSVCP_size_t __thiscall MSVCP_basic_string_char_rfind_ch(
1161 const basic_string_char *this, char ch, MSVCP_size_t pos)
1163 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch, pos, 1);
1166 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1167 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1168 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr, 16)
1169 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr_substr(
1170 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1172 const char *p, *end;
1174 TRACE("%p %p %lu %lu\n", this, find, off, len);
1176 if(len>0 && off<this->size) {
1177 end = basic_string_char_const_ptr(this)+this->size;
1178 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1179 if(MSVCP_char_traits_char_find(find, len, p))
1180 return p-basic_string_char_const_ptr(this);
1183 return MSVCP_basic_string_char_npos;
1186 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1187 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1188 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of, 12)
1189 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of(
1190 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1192 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1193 basic_string_char_const_ptr(find), off, find->size);
1196 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1197 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1198 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr, 12)
1199 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_cstr(
1200 const basic_string_char *this, const char *find, MSVCP_size_t off)
1202 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1203 this, find, off, MSVCP_char_traits_char_length(find));
1206 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1207 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1208 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch, 12)
1209 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_of_ch(
1210 const basic_string_char *this, char ch, MSVCP_size_t off)
1212 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch, off, 1);
1215 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1216 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1217 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr, 16)
1218 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1219 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1221 const char *p, *end;
1223 TRACE("%p %p %lu %lu\n", this, find, off, len);
1225 if(off<this->size) {
1226 end = basic_string_char_const_ptr(this)+this->size;
1227 for(p=basic_string_char_const_ptr(this)+off; p<end; p++)
1228 if(!MSVCP_char_traits_char_find(find, len, p))
1229 return p-basic_string_char_const_ptr(this);
1232 return MSVCP_basic_string_char_npos;
1235 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1236 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1237 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of, 12)
1238 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of(
1239 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1241 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1242 basic_string_char_const_ptr(find), off, find->size);
1245 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1246 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1247 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr, 12)
1248 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_cstr(
1249 const basic_string_char *this, const char *find, MSVCP_size_t off)
1251 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1252 this, find, off, MSVCP_char_traits_char_length(find));
1255 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1256 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1257 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch, 12)
1258 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_first_not_of_ch(
1259 const basic_string_char *this, char ch, MSVCP_size_t off)
1261 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch, off, 1);
1264 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1265 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1266 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr, 16)
1267 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr_substr(
1268 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1270 const char *p, *beg;
1272 TRACE("%p %p %lu %lu\n", this, find, off, len);
1274 if(len>0 && this->size>0) {
1275 if(off >= this->size)
1276 off = this->size-1;
1278 beg = basic_string_char_const_ptr(this);
1279 for(p=beg+off; p>=beg; p--)
1280 if(MSVCP_char_traits_char_find(find, len, p))
1281 return p-beg;
1284 return MSVCP_basic_string_char_npos;
1287 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1288 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1289 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of, 12)
1290 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of(
1291 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1293 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1294 basic_string_char_const_ptr(find), off, find->size);
1297 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1298 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1299 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr, 12)
1300 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_cstr(
1301 const basic_string_char *this, const char *find, MSVCP_size_t off)
1303 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1304 this, find, off, MSVCP_char_traits_char_length(find));
1307 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1308 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1309 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch, 12)
1310 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_of_ch(
1311 const basic_string_char *this, char ch, MSVCP_size_t off)
1313 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch, off, 1);
1316 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1317 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1318 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr, 16)
1319 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1320 const basic_string_char *this, const char *find, MSVCP_size_t off, MSVCP_size_t len)
1322 const char *p, *beg;
1324 TRACE("%p %p %lu %lu\n", this, find, off, len);
1326 if(len>0 && this->size>0) {
1327 if(off >= this->size)
1328 off = this->size-1;
1330 beg = basic_string_char_const_ptr(this);
1331 for(p=beg+off; p>=beg; p--)
1332 if(!MSVCP_char_traits_char_find(find, len, p))
1333 return p-beg;
1336 return MSVCP_basic_string_char_npos;
1339 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1340 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1341 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of, 12)
1342 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of(
1343 const basic_string_char *this, const basic_string_char *find, MSVCP_size_t off)
1345 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1346 basic_string_char_const_ptr(find), off, find->size);
1349 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1350 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1351 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr, 12)
1352 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_cstr(
1353 const basic_string_char *this, const char *find, MSVCP_size_t off)
1355 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1356 this, find, off, MSVCP_char_traits_char_length(find));
1359 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1360 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1361 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch, 12)
1362 MSVCP_size_t __thiscall MSVCP_basic_string_char_find_last_not_of_ch(
1363 const basic_string_char *this, char ch, MSVCP_size_t off)
1365 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch, off, 1);
1368 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1369 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1370 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at, 8)
1371 char* __thiscall MSVCP_basic_string_char_operator_at(
1372 basic_string_char *this, MSVCP_size_t pos)
1374 TRACE("%p %lu\n", this, pos);
1376 assert(this->size >= pos);
1377 return basic_string_char_ptr(this)+pos;
1380 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1381 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1382 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_operator_at, 8)
1383 const char* __thiscall MSVCP_basic_string_char_const_operator_at(
1384 const basic_string_char *this, MSVCP_size_t pos)
1386 TRACE("%p %lu\n", this, pos);
1388 assert(this->size >= pos);
1389 return basic_string_char_const_ptr(this)+pos;
1392 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADU_Size_type_nosscl@01@@Z */
1393 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEADU_Size_type_nosscl@01@@Z */
1394 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at_noverify, 8)
1395 char* __thiscall MSVCP_basic_string_char_operator_at_noverify(
1396 basic_string_char *this, size_t_noverify pos)
1398 TRACE("%p %lu\n", this, pos.val);
1399 return basic_string_char_ptr(this)+pos.val;
1402 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDU_Size_type_nosscl@01@@Z */
1403 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBDU_Size_type_nosscl@01@@Z */
1404 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_const_at_noverify, 8)
1405 const char* __thiscall MSVCP_basic_string_char_operator_const_at_noverify(
1406 const basic_string_char *this, size_t_noverify pos)
1408 TRACE("%p %lu\n", this, pos.val);
1409 return basic_string_char_const_ptr(this)+pos.val;
1412 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1413 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1414 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at, 8)
1415 char* __thiscall MSVCP_basic_string_char_at(
1416 basic_string_char *this, MSVCP_size_t pos)
1418 TRACE("%p %lu\n", this, pos);
1420 if(this->size <= pos)
1421 MSVCP__String_base_Xran();
1423 return basic_string_char_ptr(this)+pos;
1426 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1427 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1428 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_at, 8)
1429 const char* __thiscall MSVCP_basic_string_char_const_at(
1430 const basic_string_char *this, MSVCP_size_t pos)
1432 TRACE("%p %lu\n", this, pos);
1434 if(this->size <= pos)
1435 MSVCP__String_base_Xran();
1437 return basic_string_char_const_ptr(this)+pos;
1440 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1441 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1442 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len, 20)
1443 basic_string_char* __thiscall basic_string_char_replace_cstr_len(basic_string_char *this,
1444 MSVCP_size_t off, MSVCP_size_t len, const char *str, MSVCP_size_t str_len)
1446 MSVCP_size_t inside_pos = -1;
1447 char *ptr = basic_string_char_ptr(this);
1449 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
1451 if(this->size < off)
1452 MSVCP__String_base_Xran();
1454 if(len > this->size-off)
1455 len = this->size-off;
1457 if(MSVCP_basic_string_char_npos-str_len <= this->size-len)
1458 MSVCP__String_base_Xlen();
1460 if(basic_string_char_inside(this, str))
1461 inside_pos = str-ptr;
1463 if(len < str_len) {
1464 basic_string_char_grow(this, this->size-len+str_len, FALSE);
1465 ptr = basic_string_char_ptr(this);
1468 if(inside_pos == -1) {
1469 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1470 memcpy(ptr+off, str, str_len*sizeof(char));
1471 } else if(len >= str_len) {
1472 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(char));
1473 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1474 } else {
1475 MSVCP_size_t size;
1477 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(char));
1479 if(inside_pos < off+len) {
1480 size = off+len-inside_pos;
1481 if(size > str_len)
1482 size = str_len;
1483 memmove(ptr+off, ptr+inside_pos, size*sizeof(char));
1484 } else {
1485 size = 0;
1488 if(str_len > size)
1489 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(char));
1492 basic_string_char_eos(this, this->size-len+str_len);
1493 return this;
1496 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
1497 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
1498 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr, 16)
1499 basic_string_char* __thiscall basic_string_char_replace_cstr(basic_string_char *this,
1500 MSVCP_size_t off, MSVCP_size_t len, const char *str)
1502 return basic_string_char_replace_cstr_len(this, off, len, str,
1503 MSVCP_char_traits_char_length(str));
1506 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
1507 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
1508 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr, 24)
1509 basic_string_char* __thiscall basic_string_char_replace_substr(basic_string_char *this, MSVCP_size_t off,
1510 MSVCP_size_t len, const basic_string_char *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
1512 if(str->size < str_off)
1513 MSVCP__String_base_Xran();
1515 if(str_off+str_len > str->size)
1516 str_len = str->size-str_off;
1518 return basic_string_char_replace_cstr_len(this, off, len,
1519 basic_string_char_const_ptr(str)+str_off, str_len);
1522 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
1523 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
1524 DEFINE_THISCALL_WRAPPER(basic_string_char_replace, 16)
1525 basic_string_char* __thiscall basic_string_char_replace(basic_string_char *this,
1526 MSVCP_size_t off, MSVCP_size_t len, const basic_string_char *str)
1528 return basic_string_char_replace_cstr_len(this, off, len,
1529 basic_string_char_const_ptr(str), str->size);
1532 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
1533 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
1534 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch, 20)
1535 basic_string_char* __thiscall basic_string_char_replace_ch(basic_string_char *this,
1536 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, char ch)
1538 char *ptr = basic_string_char_ptr(this);
1540 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
1542 if(this->size < off)
1543 MSVCP__String_base_Xran();
1545 if(len > this->size-off)
1546 len = this->size-off;
1548 if(MSVCP_basic_string_char_npos-count <= this->size-len)
1549 MSVCP__String_base_Xlen();
1551 if(len < count) {
1552 basic_string_char_grow(this, this->size-len+count, FALSE);
1553 ptr = basic_string_char_ptr(this);
1556 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(char));
1557 MSVCP_char_traits_char_assignn(ptr+off, count, ch);
1558 basic_string_char_eos(this, this->size-len+count);
1560 return this;
1563 /* ?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 */
1564 /* ?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 */
1565 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter, 36)
1566 basic_string_char* __thiscall basic_string_char_replace_iter_iter(basic_string_char *this,
1567 String_iterator_char beg, String_iterator_char end,
1568 String_iterator_char res_beg, String_iterator_char res_end)
1570 String_iterator_char begin = { this, basic_string_char_ptr(this) };
1571 return basic_string_char_replace_cstr_len(this,
1572 MSVCP_basic_string_char_Pdif(beg, begin), MSVCP_basic_string_char_Pdif(end, beg),
1573 res_beg.pos, MSVCP_basic_string_char_Pdif(res_end, res_beg));
1576 /* ?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 */
1577 /* ?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 */
1578 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr, 24)
1579 basic_string_char* __thiscall basic_string_char_replace_iter_bstr(basic_string_char *this,
1580 String_iterator_char beg, String_iterator_char end, const basic_string_char *str)
1582 String_iterator_char begin = { this, basic_string_char_ptr(this) };
1583 return basic_string_char_replace(this, MSVCP_basic_string_char_Pdif(beg, begin),
1584 MSVCP_basic_string_char_Pdif(end, beg), str);
1587 /* ?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 */
1588 /* ?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 */
1589 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ch, 28)
1590 basic_string_char* __thiscall basic_string_char_replace_iter_ch(basic_string_char *this,
1591 String_iterator_char beg, String_iterator_char end, MSVCP_size_t count, char ch)
1593 String_iterator_char begin = { this, basic_string_char_ptr(this) };
1594 return basic_string_char_replace_ch(this, MSVCP_basic_string_char_Pdif(beg, begin),
1595 MSVCP_basic_string_char_Pdif(end, beg), count, ch);
1598 /* ?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 */
1599 /* ?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 */
1600 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_ptr_ptr, 28)
1601 basic_string_char* __thiscall basic_string_char_replace_iter_ptr_ptr(basic_string_char *this,
1602 String_iterator_char beg, String_iterator_char end,
1603 const char *res_beg, const char *res_end)
1605 String_iterator_char begin = { this, basic_string_char_ptr(this) };
1606 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
1607 MSVCP_basic_string_char_Pdif(end, beg), res_beg, res_end-res_beg);
1610 /* ?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 */
1611 /* ?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 */
1612 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr, 24)
1613 basic_string_char* __thiscall basic_string_char_replace_iter_cstr(basic_string_char *this,
1614 String_iterator_char beg, String_iterator_char end, const char *str)
1616 String_iterator_char begin = { this, basic_string_char_ptr(this) };
1617 return basic_string_char_replace_cstr(this, MSVCP_basic_string_char_Pdif(beg, begin),
1618 MSVCP_basic_string_char_Pdif(end, beg), str);
1621 /* ?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 */
1622 /* ?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 */
1623 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len, 28)
1624 basic_string_char* __thiscall basic_string_char_replace_iter_cstr_len(basic_string_char *this,
1625 String_iterator_char beg, String_iterator_char end, const char *str, MSVCP_size_t len)
1627 String_iterator_char begin = { this, basic_string_char_ptr(this) };
1628 return basic_string_char_replace_cstr_len(this, MSVCP_basic_string_char_Pdif(beg, begin),
1629 MSVCP_basic_string_char_Pdif(end, beg), str, len);
1632 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
1633 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
1634 DEFINE_THISCALL_WRAPPER(basic_string_char_insert, 12)
1635 basic_string_char* __thiscall basic_string_char_insert(basic_string_char *this,
1636 MSVCP_size_t off, const basic_string_char *str)
1638 return basic_string_char_replace(this, off, 0, str);
1641 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
1642 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
1643 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr, 20)
1644 basic_string_char* __thiscall basic_string_char_insert_substr(
1645 basic_string_char *this, MSVCP_size_t off, const basic_string_char *str,
1646 MSVCP_size_t str_off, MSVCP_size_t str_count)
1648 return basic_string_char_replace_substr(this, off, 0, str, str_off, str_count);
1651 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
1652 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
1653 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr, 12)
1654 basic_string_char* __thiscall basic_string_char_insert_cstr(
1655 basic_string_char *this, MSVCP_size_t off, const char *str)
1657 return basic_string_char_replace_cstr(this, off, 0, str);
1660 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
1661 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
1662 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len, 16)
1663 basic_string_char* __thiscall basic_string_char_insert_cstr_len(basic_string_char *this,
1664 MSVCP_size_t off, const char *str, MSVCP_size_t str_len)
1666 return basic_string_char_replace_cstr_len(this, off, 0, str, str_len);
1669 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
1670 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
1671 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn, 16)
1672 basic_string_char* __thiscall basic_string_char_insert_chn(basic_string_char *this,
1673 MSVCP_size_t off, MSVCP_size_t count, char ch)
1675 return basic_string_char_replace_ch(this, off, 0, count, ch);
1678 /* ?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 */
1679 /* ?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 */
1680 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn, 20)
1681 void __thiscall basic_string_char_insert_iter_chn(basic_string_char *this,
1682 String_iterator_char where, MSVCP_size_t count, char ch)
1684 String_iterator_char iter = { this, basic_string_char_ptr(this) };
1685 MSVCP_size_t off = MSVCP_basic_string_char_Pdif(where, iter);
1687 basic_string_char_insert_chn(this, off, count, ch);
1690 /* ?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 */
1691 /* ?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 */
1692 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch, 20)
1693 String_iterator_char* __thiscall basic_string_char_insert_iter_ch(basic_string_char *this,
1694 String_iterator_char *ret, String_iterator_char where, char ch)
1696 MSVCP_size_t off;
1698 ret->bstr = this;
1699 ret->pos = basic_string_char_ptr(this);
1700 off = MSVCP_basic_string_char_Pdif(where, *ret);
1702 basic_string_char_insert_chn(this, off, 1, ch);
1703 ret->pos = basic_string_char_ptr(this)+off;
1704 return ret;
1707 /* ?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 */
1708 /* ?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 */
1709 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_null, 16)
1710 String_iterator_char* __thiscall basic_string_char_insert_iter_null(basic_string_char *this,
1711 String_iterator_char *ret, String_iterator_char where)
1713 return basic_string_char_insert_iter_ch(this, ret, where, 0);
1716 /* ?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 */
1717 /* ?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 */
1718 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 28)
1719 void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this,
1720 String_iterator_char where, String_iterator_char beg, String_iterator_char end)
1722 basic_string_char_replace_iter_iter(this, where, where, beg, end);
1725 /* ?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 */
1726 /* ?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 */
1727 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ptr_ptr, 20)
1728 void __thiscall basic_string_char_insert_iter_ptr_ptr(basic_string_char *this,
1729 String_iterator_char where, const char *beg, const char *end)
1731 basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end);
1734 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
1735 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
1736 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12)
1737 void __thiscall MSVCP_basic_string_char_resize_ch(
1738 basic_string_char *this, MSVCP_size_t size, char ch)
1740 TRACE("%p %lu %c\n", this, size, ch);
1742 if(size <= this->size)
1743 MSVCP_basic_string_char_erase(this, size, this->size);
1744 else
1745 MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch);
1748 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1749 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1750 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize, 8)
1751 void __thiscall MSVCP_basic_string_char_resize(
1752 basic_string_char *this, MSVCP_size_t size)
1754 MSVCP_basic_string_char_resize_ch(this, size, '\0');
1757 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
1758 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
1759 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear, 4)
1760 void __thiscall MSVCP_basic_string_char_clear(basic_string_char *this)
1762 basic_string_char_eos(this, 0);
1765 /* ?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 */
1766 /* ?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 */
1767 /* ?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 */
1768 /* ?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 */
1769 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_begin, 8)
1770 String_iterator_char* __thiscall MSVCP_basic_string_char_begin(
1771 basic_string_char *this, String_iterator_char *ret)
1773 TRACE("%p\n", this);
1775 ret->bstr = this;
1776 ret->pos = basic_string_char_const_ptr(this);
1777 return ret;
1780 /* ?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 */
1781 /* ?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 */
1782 /* ?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 */
1783 /* ?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 */
1784 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_end, 8)
1785 String_iterator_char* __thiscall MSVCP_basic_string_char_end(
1786 basic_string_char *this, String_iterator_char *ret)
1788 TRACE("%p\n", this);
1790 ret->bstr = this;
1791 ret->pos = basic_string_char_const_ptr(this)+this->size;
1792 return ret;
1795 /* ?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 */
1796 /* ?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 */
1797 /* ?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 */
1798 /* ?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 */
1799 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rbegin, 8)
1800 String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rbegin(
1801 basic_string_char *this, String_reverse_iterator_char *ret)
1803 TRACE("%p\n", this);
1805 ret->bstr = this;
1806 ret->pos = basic_string_char_const_ptr(this)+this->size;
1807 return ret;
1810 /* ?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 */
1811 /* ?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 */
1812 /* ?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 */
1813 /* ?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 */
1814 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rend, 8)
1815 String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rend(
1816 basic_string_char *this, String_reverse_iterator_char *ret)
1818 TRACE("%p\n", this);
1820 ret->bstr = this;
1821 ret->pos = basic_string_char_const_ptr(this);
1822 return ret;
1825 /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
1826 /* basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short>> */
1827 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */
1828 /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2_KB */
1829 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
1830 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
1831 const MSVCP_size_t MSVCP_basic_string_wchar_npos = -1;
1833 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ */
1834 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAPEA_WXZ */
1835 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEPAGXZ */
1836 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAPEAGXZ */
1837 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ptr, 4)
1838 wchar_t* __thiscall basic_string_wchar_ptr(basic_string_wchar *this)
1840 if(this->res == BUF_SIZE_WCHAR-1)
1841 return this->data.buf;
1842 return this->data.ptr;
1845 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IBEPB_WXZ */
1846 /* ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEBAPEB_WXZ */
1847 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IBEPBGXZ */
1848 /* ?_Myptr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEBAPEBGXZ */
1849 DEFINE_THISCALL_WRAPPER(basic_string_wchar_const_ptr, 4)
1850 const wchar_t* __thiscall basic_string_wchar_const_ptr(const basic_string_wchar *this)
1852 if(this->res == BUF_SIZE_WCHAR-1)
1853 return this->data.buf;
1854 return this->data.ptr;
1857 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXI@Z */
1858 /* ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K@Z */
1859 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXI@Z */
1860 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K@Z */
1861 DEFINE_THISCALL_WRAPPER(basic_string_wchar_eos, 8)
1862 void __thiscall basic_string_wchar_eos(basic_string_wchar *this, MSVCP_size_t len)
1864 static const wchar_t nullbyte_w = '\0';
1866 this->size = len;
1867 MSVCP_char_traits_wchar_assign(basic_string_wchar_ptr(this)+len, &nullbyte_w);
1870 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NPB_W@Z */
1871 /* ?_Inside@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_NPEB_W@Z */
1872 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NPBG@Z */
1873 /* ?_Inside@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_NPEBG@Z */
1874 DEFINE_THISCALL_WRAPPER(basic_string_wchar_inside, 8)
1875 MSVCP_bool __thiscall basic_string_wchar_inside(
1876 basic_string_wchar *this, const wchar_t *ptr)
1878 wchar_t *cstr = basic_string_wchar_ptr(this);
1880 return (ptr<cstr || ptr>=cstr+this->size) ? FALSE : TRUE;
1883 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEX_NI@Z */
1884 /* ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_N_K@Z */
1885 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEX_NI@Z */
1886 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_N_K@Z */
1887 DEFINE_THISCALL_WRAPPER(basic_string_wchar_tidy, 12)
1888 void __thiscall basic_string_wchar_tidy(basic_string_wchar *this,
1889 MSVCP_bool built, MSVCP_size_t new_size)
1891 if(built && BUF_SIZE_WCHAR<=this->res) {
1892 wchar_t *ptr = this->data.ptr;
1894 if(new_size > 0)
1895 MSVCP_char_traits_wchar__Copy_s(this->data.buf, BUF_SIZE_WCHAR, ptr, new_size);
1896 MSVCP_allocator_wchar_deallocate(this->allocator, ptr, this->res+1);
1899 this->res = BUF_SIZE_WCHAR-1;
1900 basic_string_wchar_eos(this, new_size);
1903 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NI_N@Z */
1904 /* ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAA_N_K_N@Z */
1905 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAE_NI_N@Z */
1906 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAA_N_K_N@Z */
1907 DEFINE_THISCALL_WRAPPER(basic_string_wchar_grow, 12)
1908 MSVCP_bool __thiscall basic_string_wchar_grow(
1909 basic_string_wchar *this, MSVCP_size_t new_size, MSVCP_bool trim)
1911 if(this->res < new_size) {
1912 MSVCP_size_t new_res = new_size, len = this->size;
1913 wchar_t *ptr;
1915 new_res |= 0xf;
1917 if(new_res/3 < this->res/2)
1918 new_res = this->res + this->res/2;
1920 ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_res+1);
1921 if(!ptr)
1922 ptr = MSVCP_allocator_wchar_allocate(this->allocator, new_size+1);
1923 else
1924 new_size = new_res;
1925 if(!ptr) {
1926 ERR("Out of memory\n");
1927 basic_string_wchar_tidy(this, TRUE, 0);
1928 return FALSE;
1931 MSVCP_char_traits_wchar__Copy_s(ptr, new_size,
1932 basic_string_wchar_ptr(this), this->size);
1933 basic_string_wchar_tidy(this, TRUE, 0);
1934 this->data.ptr = ptr;
1935 this->res = new_size;
1936 basic_string_wchar_eos(this, len);
1937 } else if(trim && new_size < BUF_SIZE_WCHAR)
1938 basic_string_wchar_tidy(this, TRUE,
1939 new_size<this->size ? new_size : this->size);
1940 else if(new_size == 0)
1941 basic_string_wchar_eos(this, 0);
1943 return (new_size>0);
1946 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII@Z */
1947 /* ?_Copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0@Z */
1948 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXII@Z */
1949 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0@Z */
1950 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy, 12)
1951 void __thiscall basic_string_wchar__Copy(basic_string_wchar *this,
1952 MSVCP_size_t new_size, MSVCP_size_t copy_len)
1954 TRACE("%p %lu %lu\n", this, new_size, copy_len);
1956 if(!basic_string_wchar_grow(this, new_size, FALSE))
1957 return;
1958 basic_string_wchar_eos(this, copy_len);
1961 /* ?_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 */
1962 /* ?_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 */
1963 /* ?_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 */
1964 /* ?_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 */
1965 static MSVCP_size_t __cdecl MSVCP_basic_string_wchar_Pdif(String_iterator_wchar i1, String_iterator_wchar i2)
1967 TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos);
1969 if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) {
1970 _invalid_parameter(NULL, NULL, NULL, 0, 0);
1971 return 0;
1974 return !i1.pos ? 0 : i1.pos-i2.pos;
1977 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$allocator@_W@2@XZ */
1978 /* ?get_allocator@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$allocator@_W@2@XZ */
1979 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
1980 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
1981 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator, 8)
1982 allocator* __thiscall basic_string_wchar_get_allocator(const basic_string_wchar *this, allocator *ret)
1984 TRACE("%p\n", this);
1985 return ret;
1988 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II@Z */
1989 /* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0@Z */
1990 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
1991 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
1992 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase, 12)
1993 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_erase(
1994 basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t len)
1996 TRACE("%p %lu %lu\n", this, pos, len);
1998 if(pos > this->size)
1999 MSVCP__String_base_Xran();
2001 if(len > this->size-pos)
2002 len = this->size-pos;
2004 if(len) {
2005 MSVCP_char_traits_wchar__Move_s(basic_string_wchar_ptr(this)+pos,
2006 this->res-pos, basic_string_wchar_ptr(this)+pos+len,
2007 this->size-pos-len);
2008 basic_string_wchar_eos(this, this->size-len);
2011 return this;
2014 /* ?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 */
2015 /* ?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 */
2016 /* ?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 */
2017 /* ?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 */
2018 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter_range, 24)
2019 String_iterator_wchar* __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this,
2020 String_iterator_wchar *ret, String_iterator_wchar beg, String_iterator_wchar end)
2022 MSVCP_size_t off;
2024 ret->bstr = this;
2025 ret->pos = basic_string_wchar_ptr(this);
2026 off = MSVCP_basic_string_wchar_Pdif(beg, *ret);
2028 MSVCP_basic_string_wchar_erase(this, off, MSVCP_basic_string_wchar_Pdif(end, beg));
2030 ret->bstr = this;
2031 ret->pos = basic_string_wchar_ptr(this)+off;
2032 return ret;
2035 /* ?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 */
2036 /* ?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 */
2037 /* ?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 */
2038 /* ?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 */
2039 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter, 16)
2040 String_iterator_wchar* __thiscall basic_string_wchar_erase_iter(basic_string_wchar *this,
2041 String_iterator_wchar *ret, String_iterator_wchar pos)
2043 MSVCP_size_t off;
2045 ret->bstr = this;
2046 ret->pos = basic_string_wchar_ptr(this);
2047 off = MSVCP_basic_string_wchar_Pdif(pos, *ret);
2049 MSVCP_basic_string_wchar_erase(this, off, 1);
2051 ret->bstr = this;
2052 ret->pos = basic_string_wchar_ptr(this)+off;
2053 return ret;
2056 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2057 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2058 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2059 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2060 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr, 16)
2061 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_substr(
2062 basic_string_wchar *this, const basic_string_wchar *assign,
2063 MSVCP_size_t pos, MSVCP_size_t len)
2065 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2067 if(assign->size < pos)
2068 MSVCP__String_base_Xran();
2070 if(len > assign->size-pos)
2071 len = assign->size-pos;
2073 if(this == assign) {
2074 MSVCP_basic_string_wchar_erase(this, pos+len, MSVCP_basic_string_wchar_npos);
2075 MSVCP_basic_string_wchar_erase(this, 0, pos);
2076 } else if(basic_string_wchar_grow(this, len, FALSE)) {
2077 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2078 this->res, basic_string_wchar_const_ptr(assign)+pos, len);
2079 basic_string_wchar_eos(this, len);
2082 return this;
2085 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2086 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2087 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2088 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2089 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2090 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2091 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2092 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2093 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign, 8)
2094 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign(
2095 basic_string_wchar *this, const basic_string_wchar *assign)
2097 return MSVCP_basic_string_wchar_assign_substr(this, assign,
2098 0, MSVCP_basic_string_wchar_npos);
2101 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2102 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2103 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2104 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2105 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len, 12)
2106 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr_len(
2107 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2109 TRACE("%p %s %lu\n", this, debugstr_w(str), len);
2111 if(basic_string_wchar_inside(this, str))
2112 return MSVCP_basic_string_wchar_assign_substr(this, this,
2113 str-basic_string_wchar_ptr(this), len);
2114 else if(basic_string_wchar_grow(this, len, FALSE)) {
2115 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this),
2116 this->res, str, len);
2117 basic_string_wchar_eos(this, len);
2120 return this;
2123 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2124 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2125 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2126 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2127 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch, 8)
2128 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ch(
2129 basic_string_wchar *this, wchar_t ch)
2131 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch, 1);
2134 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2135 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2136 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2137 /* ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2138 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2139 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2140 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2141 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2142 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr, 8)
2143 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_cstr(
2144 basic_string_wchar *this, const wchar_t *str)
2146 return MSVCP_basic_string_wchar_assign_cstr_len(this, str,
2147 MSVCP_char_traits_wchar_length(str));
2150 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2151 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2152 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2153 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2154 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn, 12)
2155 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assignn(
2156 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2158 TRACE("%p %ld %c\n", this, count, ch);
2160 basic_string_wchar_grow(this, count, FALSE);
2161 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this), count, ch);
2162 basic_string_wchar_eos(this, count);
2163 return this;
2166 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2167 /* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2168 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2169 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2170 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr, 12)
2171 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_ptr_ptr(
2172 basic_string_wchar *this, const wchar_t *first, const wchar_t *last)
2174 return MSVCP_basic_string_wchar_assign_cstr_len(this, first, last-first);
2177 /* ?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 */
2178 /* ?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 */
2179 /* ?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 */
2180 /* ?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 */
2181 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_iter, 20)
2182 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_assign_iter(basic_string_wchar *this,
2183 String_iterator_wchar beg, String_iterator_wchar end)
2185 return MSVCP_basic_string_wchar_assign_ptr_ptr(this, beg.pos, end.pos);
2188 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXII_W@Z */
2189 /* ?_Chassign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAX_K0_W@Z */
2190 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXIIG@Z */
2191 /* ?_Chassign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAX_K0G@Z */
2192 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Chassign, 16)
2193 void __thiscall MSVCP_basic_string_wchar_Chassign(basic_string_wchar *this,
2194 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
2196 TRACE("%p %lu %lu %c\n", this, off, count, ch);
2197 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+off, count, ch);
2200 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WIII@Z */
2201 /* ?_Copy_s@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K11@Z */
2202 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGIII@Z */
2203 /* ?_Copy_s@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K11@Z */
2204 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_Copy_s, 20)
2205 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_Copy_s(const basic_string_wchar *this,
2206 wchar_t *dest, MSVCP_size_t size, MSVCP_size_t count, MSVCP_size_t off)
2208 TRACE("%p %p %lu %lu %lu\n", this, dest, size, count, off);
2210 if(this->size < off)
2211 MSVCP__String_base_Xran();
2213 if(count > this->size-off)
2214 count = this->size-off;
2216 MSVCP_char_traits_wchar__Copy_s(dest, size,
2217 basic_string_wchar_const_ptr(this)+off, count);
2218 return count;
2221 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPA_WII@Z */
2222 /* ?copy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEA_W_K1@Z */
2223 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
2224 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
2225 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy, 16)
2226 MSVCP_size_t __thiscall basic_string_wchar_copy(const basic_string_wchar *this,
2227 wchar_t *dest, MSVCP_size_t count, MSVCP_size_t off)
2229 return MSVCP_basic_string_wchar_Copy_s(this, dest, count, count, off);
2232 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2233 /* ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2234 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ */
2235 /* ?data@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ */
2236 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2237 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2238 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
2239 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
2240 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str, 4)
2241 const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar *this)
2243 TRACE("%p\n", this);
2244 return basic_string_wchar_const_ptr(this);
2247 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2248 /* ?capacity@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2249 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2250 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2251 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity, 4)
2252 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_capacity(basic_string_wchar *this)
2254 TRACE("%p\n", this);
2255 return this->res;
2258 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
2259 /* ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
2260 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
2261 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
2262 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve, 8)
2263 void __thiscall MSVCP_basic_string_wchar_reserve(basic_string_wchar *this, MSVCP_size_t size)
2265 MSVCP_size_t len;
2267 TRACE("%p %ld\n", this, size);
2269 len = this->size;
2270 if(len > size)
2271 return;
2273 basic_string_wchar_grow(this, size, FALSE);
2274 basic_string_wchar_eos(this, len);
2277 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2278 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2279 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2280 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2281 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor, 4)
2282 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor(basic_string_wchar *this)
2284 TRACE("%p\n", this);
2286 basic_string_wchar_tidy(this, FALSE, 0);
2287 return this;
2290 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z */
2291 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@@Z */
2292 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2293 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2294 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor, 8)
2295 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_copy_ctor(
2296 basic_string_wchar *this, const basic_string_wchar *copy)
2298 TRACE("%p %p\n", this, copy);
2300 basic_string_wchar_tidy(this, FALSE, 0);
2301 MSVCP_basic_string_wchar_assign(this, copy);
2302 return this;
2305 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2306 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2307 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2308 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2309 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr, 8)
2310 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(
2311 basic_string_wchar *this, const wchar_t *str)
2313 TRACE("%p %s\n", this, debugstr_w(str));
2315 basic_string_wchar_tidy(this, FALSE, 0);
2316 MSVCP_basic_string_wchar_assign_cstr(this, str);
2317 return this;
2320 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WABV?$allocator@_W@1@@Z */
2321 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_WAEBV?$allocator@_W@1@@Z */
2322 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2323 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2324 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc, 12)
2325 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_alloc(
2326 basic_string_wchar *this, const wchar_t *str, const void *alloc)
2328 return MSVCP_basic_string_wchar_ctor_cstr(this, str);
2331 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2332 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2333 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2334 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2335 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len, 12)
2336 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len(
2337 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
2339 TRACE("%p %s %ld\n", this, debugstr_w(str), len);
2341 basic_string_wchar_tidy(this, FALSE, 0);
2342 MSVCP_basic_string_wchar_assign_cstr_len(this, str, len);
2343 return this;
2346 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WIABV?$allocator@_W@1@@Z */
2347 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_KAEBV?$allocator@_W@1@@Z */
2348 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2349 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2350 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc, 16)
2351 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2352 basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len, const void *alloc)
2354 return MSVCP_basic_string_wchar_ctor_cstr_len(this, str, len);
2357 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@II@Z */
2358 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1@Z */
2359 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@II@Z */
2360 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1@Z */
2361 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr, 16)
2362 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr(
2363 basic_string_wchar *this, const basic_string_wchar *assign,
2364 MSVCP_size_t pos, MSVCP_size_t len)
2366 TRACE("%p %p %lu %lu\n", this, assign, pos, len);
2368 basic_string_wchar_tidy(this, FALSE, 0);
2369 MSVCP_basic_string_wchar_assign_substr(this, assign, pos, len);
2370 return this;
2373 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@IIABV?$allocator@_W@1@@Z */
2374 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@_W@1@@Z */
2375 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2376 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2377 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc, 20)
2378 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr_alloc(
2379 basic_string_wchar *this, const basic_string_wchar *assign,
2380 MSVCP_size_t pos, MSVCP_size_t len, const void *alloc)
2382 return MSVCP_basic_string_wchar_ctor_substr(this, assign, pos, len);
2385 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$allocator@_W@1@@Z */
2386 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$allocator@_W@1@@Z */
2387 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2388 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2389 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc, 8)
2390 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_alloc(
2391 basic_string_wchar *this, const void *alloc)
2393 TRACE("%p %p\n", this, alloc);
2395 basic_string_wchar_tidy(this, FALSE, 0);
2396 return this;
2399 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_W@Z */
2400 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_W@Z */
2401 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IG@Z */
2402 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KG@Z */
2403 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch, 12)
2404 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch(basic_string_wchar *this,
2405 MSVCP_size_t count, wchar_t ch)
2407 TRACE("%p %ld %c\n", this, count, ch);
2409 basic_string_wchar_tidy(this, FALSE, 0);
2410 MSVCP_basic_string_wchar_assignn(this, count, ch);
2411 return this;
2414 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@I_WABV?$allocator@_W@1@@Z */
2415 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@_K_WAEBV?$allocator@_W@1@@Z */
2416 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2417 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2418 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc, 16)
2419 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar *this,
2420 MSVCP_size_t count, wchar_t ch, const void *alloc)
2422 return MSVCP_basic_string_wchar_ctor_ch(this, count, ch);
2425 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W0@Z */
2426 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W0@Z */
2427 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0@Z */
2428 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0@Z */
2429 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ptr_ptr, 12)
2430 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_ptr_ptr(basic_string_wchar *this,
2431 const wchar_t *first, const wchar_t *last)
2433 return MSVCP_basic_string_wchar_ctor_cstr_len(this, first, last-first);
2436 /* ??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 */
2437 /* ??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 */
2438 /* ??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 */
2439 /* ??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 */
2440 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_iter, 20)
2441 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_iter(basic_string_wchar *this,
2442 String_iterator_wchar beg, String_iterator_wchar end)
2444 return MSVCP_basic_string_wchar_ctor_cstr_len(this, beg.pos, end.pos-beg.pos);
2447 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ */
2448 /* ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ */
2449 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2450 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2451 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)
2452 void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
2454 TRACE("%p\n", this);
2455 basic_string_wchar_tidy(this, TRUE, 0);
2458 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2459 /* ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2460 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2461 /* ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2462 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2463 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2464 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2465 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2466 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length, 4)
2467 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_length(const basic_string_wchar *this)
2469 TRACE("%p\n", this);
2470 return this->size;
2473 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ */
2474 /* ?max_size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KXZ */
2475 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
2476 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
2477 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size, 4)
2478 MSVCP_size_t __thiscall basic_string_wchar_max_size(const basic_string_wchar *this)
2480 TRACE("%p\n", this);
2481 return MSVCP_allocator_wchar_max_size(this->allocator)-1;
2484 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE_NXZ */
2485 /* ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_NXZ */
2486 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
2487 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
2488 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty, 4)
2489 MSVCP_bool __thiscall MSVCP_basic_string_wchar_empty(basic_string_wchar *this)
2491 TRACE("%p\n", this);
2492 return this->size == 0;
2495 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXAAV12@@Z */
2496 /* ?swap@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEAV12@@Z */
2497 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
2498 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
2499 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_swap, 8)
2500 void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_string_wchar *str)
2502 if(this != str) {
2503 char tmp[sizeof(this->data)];
2504 const MSVCP_size_t size = this->size;
2505 const MSVCP_size_t res = this->res;
2507 memcpy(tmp, this->data.buf, sizeof(this->data));
2508 memcpy(this->data.buf, str->data.buf, sizeof(this->data));
2509 memcpy(str->data.buf, tmp, sizeof(this->data));
2511 this->size = str->size;
2512 this->res = str->res;
2514 str->size = size;
2515 str->res = res;
2519 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV12@II@Z */
2520 /* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV12@_K0@Z */
2521 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
2522 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
2523 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_substr, 16)
2524 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_substr(basic_string_wchar *this,
2525 basic_string_wchar *ret, MSVCP_size_t off, MSVCP_size_t len)
2527 TRACE("%p %lu %lu\n", this, off, len);
2529 MSVCP_basic_string_wchar_ctor_substr(ret, this, off, len);
2530 return ret;
2533 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
2534 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2535 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2536 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2537 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr, 16)
2538 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_substr(basic_string_wchar *this,
2539 const basic_string_wchar *append, MSVCP_size_t offset, MSVCP_size_t count)
2541 TRACE("%p %p %lu %lu\n", this, append, offset, count);
2543 if(append->size < offset)
2544 MSVCP__String_base_Xran();
2546 if(count > append->size-offset)
2547 count = append->size-offset;
2549 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2550 MSVCP__String_base_Xlen();
2552 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2553 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2554 this->res-this->size, basic_string_wchar_const_ptr(append)+offset, count);
2555 basic_string_wchar_eos(this, this->size+count);
2558 return this;
2561 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@@Z */
2562 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@AEBV12@@Z */
2563 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z */
2564 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@AEBV01@@Z */
2565 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2566 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2567 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2568 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2569 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append, 8)
2570 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append(
2571 basic_string_wchar *this, const basic_string_wchar *append)
2573 return MSVCP_basic_string_wchar_append_substr(this, append,
2574 0, MSVCP_basic_string_wchar_npos);
2577 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z */
2578 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W_K@Z */
2579 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2580 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2581 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len, 12)
2582 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr_len(
2583 basic_string_wchar *this, const wchar_t *append, MSVCP_size_t count)
2585 TRACE("%p %s %lu\n", this, debugstr_w(append), count);
2587 if(basic_string_wchar_inside(this, append))
2588 return MSVCP_basic_string_wchar_append_substr(this, this,
2589 append-basic_string_wchar_ptr(this), count);
2591 if(MSVCP_basic_string_wchar_npos-this->size<=count || this->size+count<this->size)
2592 MSVCP__String_base_Xlen();
2594 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2595 MSVCP_char_traits_wchar__Copy_s(basic_string_wchar_ptr(this)+this->size,
2596 this->res-this->size, append, count);
2597 basic_string_wchar_eos(this, this->size+count);
2600 return this;
2603 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W@Z */
2604 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W@Z */
2605 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z */
2606 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@PEB_W@Z */
2607 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2608 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2609 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2610 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2611 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr, 8)
2612 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_cstr(
2613 basic_string_wchar *this, const wchar_t *append)
2615 return MSVCP_basic_string_wchar_append_cstr_len(this, append,
2616 MSVCP_char_traits_wchar_length(append));
2619 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_W0@Z */
2620 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@PEB_W0@Z */
2621 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2622 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2623 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end, 12)
2624 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_beg_end(
2625 basic_string_wchar *this, const wchar_t *beg, const wchar_t *end)
2627 return MSVCP_basic_string_wchar_append_cstr_len(this, beg, end-beg);
2630 /* ?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 */
2631 /* ?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 */
2632 /* ?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 */
2633 /* ?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 */
2634 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_iter, 20)
2635 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_iter(
2636 basic_string_wchar *this, String_iterator_wchar beg, String_iterator_wchar end)
2638 return MSVCP_basic_string_wchar_append_cstr_len(this, beg.pos, end.pos-beg.pos);
2641 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z */
2642 /* ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K_W@Z */
2643 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2644 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2645 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch, 12)
2646 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_len_ch(
2647 basic_string_wchar *this, MSVCP_size_t count, wchar_t ch)
2649 TRACE("%p %lu %c\n", this, count, ch);
2651 if(MSVCP_basic_string_wchar_npos-this->size <= count)
2652 MSVCP__String_base_Xlen();
2654 if(basic_string_wchar_grow(this, this->size+count, FALSE)) {
2655 MSVCP_char_traits_wchar_assignn(basic_string_wchar_ptr(this)+this->size, count, ch);
2656 basic_string_wchar_eos(this, this->size+count);
2659 return this;
2662 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@_W@Z */
2663 /* ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV01@_W@Z */
2664 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEX_W@Z */
2665 /* ?push_back@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_W@Z */
2666 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2667 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2668 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXG@Z */
2669 /* ?push_back@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXG@Z */
2670 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch, 8)
2671 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(
2672 basic_string_wchar *this, wchar_t ch)
2674 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch);
2677 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_WI@Z */
2678 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W0@Z */
2679 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
2680 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
2681 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20)
2682 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr_len(
2683 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
2684 const wchar_t *str, MSVCP_size_t count)
2686 int ans;
2688 TRACE("%p %lu %lu %s %lu\n", this, pos, num, debugstr_w(str), count);
2690 if(this->size < pos)
2691 MSVCP__String_base_Xran();
2693 if(pos+num > this->size)
2694 num = this->size-pos;
2696 ans = MSVCP_char_traits_wchar_compare(basic_string_wchar_const_ptr(this)+pos,
2697 str, num>count ? count : num);
2698 if(ans)
2699 return ans;
2701 if(num > count)
2702 ans = 1;
2703 else if(num < count)
2704 ans = -1;
2705 return ans;
2708 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIPB_W@Z */
2709 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0PEB_W@Z */
2710 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
2711 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
2712 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr, 16)
2713 int __thiscall MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar *this,
2714 MSVCP_size_t pos, MSVCP_size_t num, const wchar_t *str)
2716 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
2717 str, MSVCP_char_traits_wchar_length(str));
2720 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHPB_W@Z */
2721 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHPEB_W@Z */
2722 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
2723 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
2724 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr, 8)
2725 int __thiscall MSVCP_basic_string_wchar_compare_cstr(
2726 const basic_string_wchar *this, const wchar_t *str)
2728 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
2729 str, MSVCP_char_traits_wchar_length(str));
2732 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@II@Z */
2733 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@00@Z */
2734 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
2735 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
2736 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr, 24)
2737 int __thiscall MSVCP_basic_string_wchar_compare_substr_substr(
2738 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
2739 const basic_string_wchar *compare, MSVCP_size_t off, MSVCP_size_t count)
2741 TRACE("%p %lu %lu %p %lu %lu\n", this, pos, num, compare, off, count);
2743 if(compare->size < off)
2744 MSVCP__String_base_Xran();
2746 if(off+count > compare->size)
2747 count = compare->size-off;
2749 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
2750 basic_string_wchar_const_ptr(compare)+off, count);
2753 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHIIABV12@@Z */
2754 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAH_K0AEBV12@@Z */
2755 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
2756 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
2757 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr, 16)
2758 int __thiscall MSVCP_basic_string_wchar_compare_substr(
2759 const basic_string_wchar *this, MSVCP_size_t pos, MSVCP_size_t num,
2760 const basic_string_wchar *compare)
2762 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos, num,
2763 basic_string_wchar_const_ptr(compare), compare->size);
2766 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV12@@Z */
2767 /* ?compare@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAHAEBV12@@Z */
2768 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
2769 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
2770 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare, 8)
2771 int __thiscall MSVCP_basic_string_wchar_compare(
2772 const basic_string_wchar *this, const basic_string_wchar *compare)
2774 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size,
2775 basic_string_wchar_const_ptr(compare), compare->size);
2778 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
2779 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
2780 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2781 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2782 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr, 16)
2783 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_substr(
2784 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
2786 const wchar_t *p, *end;
2788 TRACE("%p %s %lu %lu\n", this, debugstr_w(find), pos, len);
2790 if(len==0 && pos<=this->size)
2791 return pos;
2793 end = basic_string_wchar_const_ptr(this)+this->size-len+1;
2794 for(p=basic_string_wchar_const_ptr(this)+pos; p<end; p++) {
2795 p = MSVCP_char_traits_wchar_find(p, end-p, find);
2796 if(!p)
2797 break;
2799 if(!MSVCP_char_traits_wchar_compare(p, find, len))
2800 return p-basic_string_wchar_const_ptr(this);
2803 return MSVCP_basic_string_wchar_npos;
2806 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
2807 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
2808 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2809 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2810 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off, 12)
2811 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_cstr_off(
2812 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
2814 return MSVCP_basic_string_wchar_find_cstr_substr(this, find, pos,
2815 MSVCP_char_traits_wchar_length(find));
2818 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
2819 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
2820 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2821 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2822 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off, 12)
2823 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_off(
2824 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
2826 return MSVCP_basic_string_wchar_find_cstr_substr(this,
2827 basic_string_wchar_const_ptr(find), off, find->size);
2830 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
2831 /* ?find@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
2832 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2833 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2834 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch, 12)
2835 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_ch(
2836 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
2838 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1);
2841 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
2842 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
2843 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2844 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2845 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr, 16)
2846 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_substr(
2847 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos, MSVCP_size_t len)
2849 const wchar_t *p, *end;
2851 TRACE("%p %s %lu %lu\n", this, debugstr_w(find), pos, len);
2853 if(len==0)
2854 return pos<this->size ? pos : this->size;
2856 if(len > this->size)
2857 return MSVCP_basic_string_wchar_npos;
2859 if(pos > this->size-len+1)
2860 pos = this->size-len+1;
2861 end = basic_string_wchar_const_ptr(this);
2862 for(p=end+pos; p>=end; p--) {
2863 if(*p==*find && !MSVCP_char_traits_wchar_compare(p, find, len))
2864 return p-basic_string_wchar_const_ptr(this);
2867 return MSVCP_basic_string_wchar_npos;
2870 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
2871 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
2872 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2873 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2874 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off, 12)
2875 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_cstr_off(
2876 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t pos)
2878 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find, pos,
2879 MSVCP_char_traits_wchar_length(find));
2882 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
2883 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
2884 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2885 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2886 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off, 12)
2887 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_off(
2888 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
2890 return MSVCP_basic_string_wchar_rfind_cstr_substr(this,
2891 basic_string_wchar_const_ptr(find), off, find->size);
2894 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
2895 /* ?rfind@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
2896 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2897 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2898 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch, 12)
2899 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_rfind_ch(
2900 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t pos)
2902 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch, pos, 1);
2905 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
2906 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
2907 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2908 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2909 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr, 16)
2910 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2911 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
2913 const wchar_t *p, *end;
2915 TRACE("%p %p %lu %lu\n", this, find, off, len);
2917 if(len>0 && off<this->size) {
2918 end = basic_string_wchar_const_ptr(this)+this->size;
2919 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
2920 if(MSVCP_char_traits_wchar_find(find, len, p))
2921 return p-basic_string_wchar_const_ptr(this);
2924 return MSVCP_basic_string_wchar_npos;
2927 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
2928 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
2929 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2930 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2931 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of, 12)
2932 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of(
2933 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
2935 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
2936 basic_string_wchar_const_ptr(find), off, find->size);
2939 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
2940 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
2941 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2942 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2943 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr, 12)
2944 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_cstr(
2945 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
2947 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2948 this, find, off, MSVCP_char_traits_wchar_length(find));
2951 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
2952 /* ?find_first_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
2953 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2954 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2955 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch, 12)
2956 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_of_ch(
2957 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
2959 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch, off, 1);
2962 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
2963 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
2964 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2965 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2966 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr, 16)
2967 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2968 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
2970 const wchar_t *p, *end;
2972 TRACE("%p %p %lu %lu\n", this, find, off, len);
2974 if(off<this->size) {
2975 end = basic_string_wchar_const_ptr(this)+this->size;
2976 for(p=basic_string_wchar_const_ptr(this)+off; p<end; p++)
2977 if(!MSVCP_char_traits_wchar_find(find, len, p))
2978 return p-basic_string_wchar_const_ptr(this);
2981 return MSVCP_basic_string_wchar_npos;
2984 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
2985 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
2986 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2987 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2988 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of, 12)
2989 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of(
2990 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
2992 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
2993 basic_string_wchar_const_ptr(find), off, find->size);
2996 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
2997 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
2998 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2999 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3000 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr, 12)
3001 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_cstr(
3002 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3004 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
3005 this, find, off, MSVCP_char_traits_wchar_length(find));
3008 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3009 /* ?find_first_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3010 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3011 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3012 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch, 12)
3013 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_first_not_of_ch(
3014 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3016 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch, off, 1);
3019 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3020 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3021 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3022 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3023 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr, 16)
3024 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3025 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3027 const wchar_t *p, *beg;
3029 TRACE("%p %p %lu %lu\n", this, find, off, len);
3032 if(len>0 && this->size>0) {
3033 if(off >= this->size)
3034 off = this->size-1;
3036 beg = basic_string_wchar_const_ptr(this);
3037 for(p=beg+off; p>=beg; p--)
3038 if(MSVCP_char_traits_wchar_find(find, len, p))
3039 return p-beg;
3042 return MSVCP_basic_string_wchar_npos;
3045 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3046 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3047 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3048 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3049 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of, 12)
3050 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of(
3051 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3053 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
3054 basic_string_wchar_const_ptr(find), off, find->size);
3057 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3058 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3059 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3060 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3061 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr, 12)
3062 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_cstr(
3063 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3065 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
3066 this, find, off, MSVCP_char_traits_wchar_length(find));
3069 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3070 /* ?find_last_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3071 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3072 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3073 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch, 12)
3074 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_of_ch(
3075 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3077 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch, off, 1);
3080 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WII@Z */
3081 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K1@Z */
3082 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
3083 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
3084 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr, 16)
3085 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3086 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off, MSVCP_size_t len)
3088 const wchar_t *p, *beg;
3090 TRACE("%p %p %lu %lu\n", this, find, off, len);
3092 if(len>0 && this->size>0) {
3093 if(off >= this->size)
3094 off = this->size-1;
3096 beg = basic_string_wchar_const_ptr(this);
3097 for(p=beg+off; p>=beg; p--)
3098 if(!MSVCP_char_traits_wchar_find(find, len, p))
3099 return p-beg;
3102 return MSVCP_basic_string_wchar_npos;
3105 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIABV12@I@Z */
3106 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KAEBV12@_K@Z */
3107 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
3108 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
3109 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of, 12)
3110 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of(
3111 const basic_string_wchar *this, const basic_string_wchar *find, MSVCP_size_t off)
3113 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
3114 basic_string_wchar_const_ptr(find), off, find->size);
3117 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIPB_WI@Z */
3118 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_KPEB_W_K@Z */
3119 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
3120 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
3121 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr, 12)
3122 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_cstr(
3123 const basic_string_wchar *this, const wchar_t *find, MSVCP_size_t off)
3125 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
3126 this, find, off, MSVCP_char_traits_wchar_length(find));
3129 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEI_WI@Z */
3130 /* ?find_last_not_of@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_K_W_K@Z */
3131 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
3132 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
3133 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch, 12)
3134 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_find_last_not_of_ch(
3135 const basic_string_wchar *this, wchar_t ch, MSVCP_size_t off)
3137 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch, off, 1);
3140 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_WI@Z */
3141 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W0@Z */
3142 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
3143 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
3144 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len, 20)
3145 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr_len(basic_string_wchar *this,
3146 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str, MSVCP_size_t str_len)
3148 MSVCP_size_t inside_pos = -1;
3149 wchar_t *ptr = basic_string_wchar_ptr(this);
3151 TRACE("%p %ld %ld %p %ld\n", this, off, len, str, str_len);
3153 if(this->size < off)
3154 MSVCP__String_base_Xran();
3156 if(len > this->size-off)
3157 len = this->size-off;
3159 if(MSVCP_basic_string_wchar_npos-str_len <= this->size-len)
3160 MSVCP__String_base_Xlen();
3162 if(basic_string_wchar_inside(this, str))
3163 inside_pos = str-ptr;
3165 if(len < str_len) {
3166 basic_string_wchar_grow(this, this->size-len+str_len, FALSE);
3167 ptr = basic_string_wchar_ptr(this);
3170 if(inside_pos == -1) {
3171 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3172 memcpy(ptr+off, str, str_len*sizeof(wchar_t));
3173 } else if(len >= str_len) {
3174 memmove(ptr+off, ptr+inside_pos, str_len*sizeof(wchar_t));
3175 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3176 } else {
3177 MSVCP_size_t size;
3179 memmove(ptr+off+str_len, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3181 if(inside_pos < off+len) {
3182 size = off+len-inside_pos;
3183 if(size > str_len)
3184 size = str_len;
3185 memmove(ptr+off, ptr+inside_pos, size*sizeof(wchar_t));
3186 } else {
3187 size = 0;
3190 if(str_len > size)
3191 memmove(ptr+off+size, ptr+off+str_len, (str_len-size)*sizeof(wchar_t));
3194 basic_string_wchar_eos(this, this->size-len+str_len);
3195 return this;
3198 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIPB_W@Z */
3199 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0PEB_W@Z */
3200 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3201 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3202 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr, 16)
3203 basic_string_wchar* __thiscall basic_string_wchar_replace_cstr(basic_string_wchar *this,
3204 MSVCP_size_t off, MSVCP_size_t len, const wchar_t *str)
3206 return basic_string_wchar_replace_cstr_len(this, off, len, str,
3207 MSVCP_char_traits_wchar_length(str));
3210 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z */
3211 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3212 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3213 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3214 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr, 24)
3215 basic_string_wchar* __thiscall basic_string_wchar_replace_substr(basic_string_wchar *this, MSVCP_size_t off,
3216 MSVCP_size_t len, const basic_string_wchar *str, MSVCP_size_t str_off, MSVCP_size_t str_len)
3218 if(str->size < str_off)
3219 MSVCP__String_base_Xran();
3221 if(str_off+str_len > str->size)
3222 str_len = str->size-str_off;
3224 return basic_string_wchar_replace_cstr_len(this, off, len,
3225 basic_string_wchar_const_ptr(str)+str_off, str_len);
3228 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z */
3229 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3230 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3231 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3232 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace, 16)
3233 basic_string_wchar* __thiscall basic_string_wchar_replace(basic_string_wchar *this,
3234 MSVCP_size_t off, MSVCP_size_t len, const basic_string_wchar *str)
3236 return basic_string_wchar_replace_cstr_len(this, off, len,
3237 basic_string_wchar_const_ptr(str), str->size);
3240 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@III_W@Z */
3241 /* ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K00_W@Z */
3242 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3243 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3244 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch, 20)
3245 basic_string_wchar* __thiscall basic_string_wchar_replace_ch(basic_string_wchar *this,
3246 MSVCP_size_t off, MSVCP_size_t len, MSVCP_size_t count, wchar_t ch)
3248 wchar_t *ptr = basic_string_wchar_ptr(this);
3250 TRACE("%p %ld %ld %ld %c\n", this, off, len, count, ch);
3252 if(this->size < off)
3253 MSVCP__String_base_Xran();
3255 if(len > this->size-off)
3256 len = this->size-off;
3258 if(MSVCP_basic_string_wchar_npos-count <= this->size-len)
3259 MSVCP__String_base_Xlen();
3261 if(len < count) {
3262 basic_string_wchar_grow(this, this->size-len+count, FALSE);
3263 ptr = basic_string_wchar_ptr(this);
3266 memmove(ptr+off+count, ptr+off+len, (this->size-off-len)*sizeof(wchar_t));
3267 MSVCP_char_traits_wchar_assignn(ptr+off, count, ch);
3268 basic_string_wchar_eos(this, this->size-len+count);
3270 return this;
3273 /* ?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 */
3274 /* ?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 */
3275 /* ?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 */
3276 /* ?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 */
3277 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter, 36)
3278 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_iter(basic_string_wchar *this,
3279 String_iterator_wchar beg, String_iterator_wchar end,
3280 String_iterator_wchar res_beg, String_iterator_wchar res_end)
3282 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
3283 return basic_string_wchar_replace_cstr_len(this,
3284 MSVCP_basic_string_wchar_Pdif(beg, begin), MSVCP_basic_string_wchar_Pdif(end, beg),
3285 res_beg.pos, MSVCP_basic_string_wchar_Pdif(res_end, res_beg));
3288 /* ?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 */
3289 /* ?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 */
3290 /* ?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 */
3291 /* ?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 */
3292 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr, 24)
3293 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_bstr(basic_string_wchar *this,
3294 String_iterator_wchar beg, String_iterator_wchar end, const basic_string_wchar *str)
3296 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
3297 return basic_string_wchar_replace(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
3298 MSVCP_basic_string_wchar_Pdif(end, beg), str);
3301 /* ?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 */
3302 /* ?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 */
3303 /* ?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 */
3304 /* ?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 */
3305 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ch, 28)
3306 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_wchar *this,
3307 String_iterator_wchar beg, String_iterator_wchar end, MSVCP_size_t count, wchar_t ch)
3309 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
3310 return basic_string_wchar_replace_ch(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
3311 MSVCP_basic_string_wchar_Pdif(end, beg), count, ch);
3314 /* ?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 */
3315 /* ?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 */
3316 /* ?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 */
3317 /* ?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 */
3318 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_ptr_ptr, 28)
3319 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
3320 String_iterator_wchar beg, String_iterator_wchar end,
3321 const wchar_t *res_beg, const wchar_t *res_end)
3323 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
3324 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
3325 MSVCP_basic_string_wchar_Pdif(end, beg), res_beg, res_end-res_beg);
3328 /* ?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 */
3329 /* ?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 */
3330 /* ?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 */
3331 /* ?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 */
3332 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr, 24)
3333 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr(basic_string_wchar *this,
3334 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str)
3336 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
3337 return basic_string_wchar_replace_cstr(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
3338 MSVCP_basic_string_wchar_Pdif(end, beg), str);
3341 /* ?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 */
3342 /* ?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 */
3343 /* ?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 */
3344 /* ?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 */
3345 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len, 28)
3346 basic_string_wchar* __thiscall basic_string_wchar_replace_iter_cstr_len(basic_string_wchar *this,
3347 String_iterator_wchar beg, String_iterator_wchar end, const wchar_t *str, MSVCP_size_t len)
3349 String_iterator_wchar begin = { this, basic_string_wchar_ptr(this) };
3350 return basic_string_wchar_replace_cstr_len(this, MSVCP_basic_string_wchar_Pdif(beg, begin),
3351 MSVCP_basic_string_wchar_Pdif(end, beg), str, len);
3354 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@@Z */
3355 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3356 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3357 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3358 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert, 12)
3359 basic_string_wchar* __thiscall basic_string_wchar_insert(basic_string_wchar *this,
3360 MSVCP_size_t off, const basic_string_wchar *str)
3362 return basic_string_wchar_replace(this, off, 0, str);
3365 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IABV12@II@Z */
3366 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3367 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3368 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3369 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr, 20)
3370 basic_string_wchar* __thiscall basic_string_wchar_insert_substr(
3371 basic_string_wchar *this, MSVCP_size_t off, const basic_string_wchar *str,
3372 MSVCP_size_t str_off, MSVCP_size_t str_count)
3374 return basic_string_wchar_replace_substr(this, off, 0, str, str_off, str_count);
3377 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_W@Z */
3378 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W@Z */
3379 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3380 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3381 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr, 12)
3382 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr(
3383 basic_string_wchar *this, MSVCP_size_t off, const wchar_t *str)
3385 return basic_string_wchar_replace_cstr(this, off, 0, str);
3388 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IPB_WI@Z */
3389 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_KPEB_W0@Z */
3390 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3391 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3392 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len, 16)
3393 basic_string_wchar* __thiscall basic_string_wchar_insert_cstr_len(basic_string_wchar *this,
3394 MSVCP_size_t off, const wchar_t *str, MSVCP_size_t str_len)
3396 return basic_string_wchar_replace_cstr_len(this, off, 0, str, str_len);
3399 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@II_W@Z */
3400 /* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEAV12@_K0_W@Z */
3401 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3402 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3403 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn, 16)
3404 basic_string_wchar* __thiscall basic_string_wchar_insert_chn(basic_string_wchar *this,
3405 MSVCP_size_t off, MSVCP_size_t count, wchar_t ch)
3407 return basic_string_wchar_replace_ch(this, off, 0, count, ch);
3410 /* ?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 */
3411 /* ?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 */
3412 /* ?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 */
3413 /* ?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 */
3414 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn, 20)
3415 void __thiscall basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
3416 String_iterator_wchar where, MSVCP_size_t count, wchar_t ch)
3418 String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) };
3419 MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(where, iter);
3421 basic_string_wchar_insert_chn(this, off, count, ch);
3424 /* ?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 */
3425 /* ?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 */
3426 /* ?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 */
3427 /* ?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 */
3428 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch, 20)
3429 String_iterator_wchar* __thiscall basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
3430 String_iterator_wchar *ret, String_iterator_wchar where, wchar_t ch)
3432 MSVCP_size_t off;
3434 ret->bstr = this;
3435 ret->pos = basic_string_wchar_ptr(this);
3436 off = MSVCP_basic_string_wchar_Pdif(where, *ret);
3438 basic_string_wchar_insert_chn(this, off, 1, ch);
3439 ret->pos = basic_string_wchar_ptr(this)+off;
3440 return ret;
3443 /* ?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 */
3444 /* ?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 */
3445 /* ?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 */
3446 /* ?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 */
3447 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_null, 16)
3448 String_iterator_wchar* __thiscall basic_string_wchar_insert_iter_null(basic_string_wchar *this,
3449 String_iterator_wchar *ret, String_iterator_wchar where)
3451 return basic_string_wchar_insert_iter_ch(this, ret, where, 0);
3454 /* ?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 */
3455 /* ?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 */
3456 /* ?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 */
3457 /* ?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 */
3458 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_beg_end, 28)
3459 void __thiscall basic_string_wchar_insert_iter_beg_end(basic_string_wchar *this,
3460 String_iterator_wchar where, String_iterator_wchar beg, String_iterator_wchar end)
3462 basic_string_wchar_replace_iter_iter(this, where, where, beg, end);
3465 /* ?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 */
3466 /* ?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 */
3467 /* ?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 */
3468 /* ?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 */
3469 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ptr_ptr, 20)
3470 void __thiscall basic_string_wchar_insert_iter_ptr_ptr(basic_string_wchar *this,
3471 String_iterator_wchar where, const wchar_t *beg, const wchar_t *end)
3473 basic_string_wchar_replace_iter_ptr_ptr(this, where, where, beg, end);
3476 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
3477 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
3478 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
3479 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
3480 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at, 8)
3481 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at(
3482 basic_string_wchar *this, MSVCP_size_t pos)
3484 TRACE("%p %lu\n", this, pos);
3486 assert(this->size >= pos);
3487 return basic_string_wchar_ptr(this)+pos;
3490 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
3491 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
3492 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
3493 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
3494 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_operator_at, 8)
3495 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_operator_at(
3496 const basic_string_wchar *this, MSVCP_size_t pos)
3498 TRACE("%p %lu\n", this, pos);
3500 assert(this->size >= pos);
3501 return basic_string_wchar_const_ptr(this)+pos;
3504 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WU_Size_type_nosscl@01@@Z */
3505 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_WU_Size_type_nosscl@01@@Z */
3506 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGU_Size_type_nosscl@01@@Z */
3507 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAGU_Size_type_nosscl@01@@Z */
3508 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at_noverify, 8)
3509 wchar_t* __thiscall MSVCP_basic_string_wchar_operator_at_noverify(
3510 basic_string_wchar *this, size_t_noverify pos)
3512 TRACE("%p %lu\n", this, pos.val);
3513 return basic_string_wchar_ptr(this)+pos.val;
3516 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WU_Size_type_nosscl@01@@Z */
3517 /* ??A?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_WU_Size_type_nosscl@01@@Z */
3518 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGU_Size_type_nosscl@01@@Z */
3519 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBGU_Size_type_nosscl@01@@Z */
3520 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_const_at_noverify, 8)
3521 const wchar_t* __thiscall MSVCP_basic_string_wchar_operator_const_at_noverify(
3522 const basic_string_wchar *this, size_t_noverify pos)
3524 TRACE("%p %lu\n", this, pos.val);
3525 return basic_string_wchar_const_ptr(this)+pos.val;
3528 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */
3529 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z */
3530 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
3531 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
3532 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at, 8)
3533 wchar_t* __thiscall MSVCP_basic_string_wchar_at(
3534 basic_string_wchar *this, MSVCP_size_t pos)
3536 TRACE("%p %lu\n", this, pos);
3538 if(this->size <= pos)
3539 MSVCP__String_base_Xran();
3541 return basic_string_wchar_ptr(this)+pos;
3544 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */
3545 /* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z */
3546 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
3547 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
3548 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_at, 8)
3549 const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at(
3550 const basic_string_wchar *this, MSVCP_size_t pos)
3552 TRACE("%p %lu\n", this, pos);
3554 if(this->size <= pos)
3555 MSVCP__String_base_Xran();
3557 return basic_string_wchar_const_ptr(this)+pos;
3560 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z */
3561 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z */
3562 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
3563 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
3564 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch, 12)
3565 void __thiscall MSVCP_basic_string_wchar_resize_ch(
3566 basic_string_wchar *this, MSVCP_size_t size, wchar_t ch)
3568 TRACE("%p %lu %c\n", this, size, ch);
3570 if(size <= this->size)
3571 MSVCP_basic_string_wchar_erase(this, size, this->size);
3572 else
3573 MSVCP_basic_string_wchar_append_len_ch(this, size-this->size, ch);
3576 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z */
3577 /* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z */
3578 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3579 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3580 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize, 8)
3581 void __thiscall MSVCP_basic_string_wchar_resize(
3582 basic_string_wchar *this, MSVCP_size_t size)
3584 MSVCP_basic_string_wchar_resize_ch(this, size, '\0');
3587 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
3588 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
3589 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
3590 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
3591 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear, 4)
3592 void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar *this)
3594 basic_string_wchar_eos(this, 0);
3597 /* ?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 */
3598 /* ?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 */
3599 /* ?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 */
3600 /* ?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 */
3601 /* ?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 */
3602 /* ?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 */
3603 /* ?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 */
3604 /* ?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 */
3605 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_begin, 8)
3606 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_begin(
3607 basic_string_wchar *this, String_iterator_wchar *ret)
3609 TRACE("%p\n", this);
3611 ret->bstr = this;
3612 ret->pos = basic_string_wchar_const_ptr(this);
3613 return ret;
3616 /* ?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 */
3617 /* ?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 */
3618 /* ?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 */
3619 /* ?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 */
3620 /* ?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 */
3621 /* ?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 */
3622 /* ?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 */
3623 /* ?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 */
3624 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_end, 8)
3625 String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_end(
3626 basic_string_wchar *this, String_iterator_wchar *ret)
3628 TRACE("%p\n", this);
3630 ret->bstr = this;
3631 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
3632 return ret;
3635 /* ?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 */
3636 /* ?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 */
3637 /* ?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 */
3638 /* ?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 */
3639 /* ?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 */
3640 /* ?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 */
3641 /* ?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 */
3642 /* ?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 */
3643 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rbegin, 8)
3644 String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rbegin(
3645 basic_string_wchar *this, String_reverse_iterator_wchar *ret)
3647 TRACE("%p\n", this);
3649 ret->bstr = this;
3650 ret->pos = basic_string_wchar_const_ptr(this)+this->size;
3651 return ret;
3654 /* ?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 */
3655 /* ?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 */
3656 /* ?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 */
3657 /* ?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 */
3658 /* ?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 */
3659 /* ?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 */
3660 /* ?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 */
3661 /* ?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 */
3662 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rend, 8)
3663 String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rend(
3664 basic_string_wchar *this, String_reverse_iterator_wchar *ret)
3666 TRACE("%p\n", this);
3668 ret->bstr = this;
3669 ret->pos = basic_string_wchar_const_ptr(this);
3670 return ret;
3673 /* _String_val class */
3674 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QAEXXZ */
3675 /* ??_F?$_String_val@DV?$allocator@D@std@@@std@@QEAAXXZ */
3676 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QAEXXZ */
3677 /* ??_F?$_String_val@GV?$allocator@G@std@@@std@@QEAAXXZ */
3678 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QAEXXZ */
3679 /* ??_F?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAXXZ */
3680 DEFINE_THISCALL_WRAPPER(_String_val_ctor, 4)
3681 void* __thiscall _String_val_ctor(void *this)
3683 TRACE("%p\n", this);
3684 return this;
3687 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IAE@V?$allocator@D@1@@Z */
3688 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@IEAA@V?$allocator@D@1@@Z */
3689 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IAE@V?$allocator@G@1@@Z */
3690 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@IEAA@V?$allocator@G@1@@Z */
3691 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z */
3692 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IEAA@V?$allocator@_W@1@@Z */
3693 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QAE@ABV01@@Z */
3694 /* ??0?$_String_val@DV?$allocator@D@std@@@std@@QEAA@AEBV01@@Z */
3695 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QAE@ABV01@@Z */
3696 /* ??0?$_String_val@GV?$allocator@G@std@@@std@@QEAA@AEBV01@@Z */
3697 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QAE@ABV01@@Z */
3698 /* ??0?$_String_val@_WV?$allocator@_W@std@@@std@@QEAA@AEBV01@@Z */
3699 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
3700 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QEAAAEAV01@AEBV01@@Z */
3701 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QAEAAV01@ABV01@@Z */
3702 /* ??4?$_String_val@GV?$allocator@G@std@@@std@@QEAAAEAV01@AEBV01@@Z */
3703 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QAEAAV01@ABV01@@Z */
3704 /* ??4?$_String_val@_WV?$allocator@_W@std@@@std@@QEAAAEAV01@AEBV01@@Z */
3705 /* ??4?$_String_val@DV?$allocator@D@std@@@std@@QAEAAV01@ABV01@@Z */
3706 DEFINE_THISCALL_WRAPPER(_String_val_null_ctor, 8)
3707 void* __thiscall _String_val_null_ctor(void *this, const void *misc)
3709 TRACE("%p %p\n", this, misc);
3710 return this;