2 * Copyright 2012 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
27 #include "wine/debug.h"
28 WINE_DEFAULT_DEBUG_CHANNEL(msvcp
);
31 #define FROZENW L'\xff'
33 /* _String_iterator<char> and _String_const_iterator<char> class */
36 } String_reverse_iterator_char
;
40 } String_reverse_iterator_wchar
;
47 /* ?_Xran@std@@YAXXZ */
48 void __cdecl
_Xran(void)
51 _Xout_of_range("invalid string position");
54 /* ?_Xlen@std@@YAXXZ */
55 void __cdecl
_Xlen(void)
58 _Xlength_error("string too long");
61 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
62 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
63 int CDECL
MSVCP_char_traits_char_compare(
64 const char *s1
, const char *s2
, size_t count
)
66 int ret
= memcmp(s1
, s2
, count
);
67 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
70 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
71 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
72 size_t CDECL
MSVCP_char_traits_char_length(const char *str
)
77 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
78 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
79 char* CDECL
MSVCP_char_traits_char__Copy_s(char *dest
,
80 size_t size
, const char *src
, size_t count
)
82 if(!dest
|| !src
|| size
<count
) {
85 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
89 return memcpy(dest
, src
, count
);
92 /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */
93 /* ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
94 char* CDECL
MSVCP_char_traits_char_copy(
95 char *dest
, const char *src
, size_t count
)
97 return MSVCP_char_traits_char__Copy_s(dest
, count
, src
, count
);
100 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
101 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
102 const char * CDECL
MSVCP_char_traits_char_find(
103 const char *str
, size_t range
, const char *c
)
105 return memchr(str
, *c
, range
);
108 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
109 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
110 char* CDECL
MSVCP_char_traits_char__Move_s(char *dest
,
111 size_t size
, const char *src
, size_t count
)
113 if(!dest
|| !src
|| size
<count
) {
116 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
120 return memmove(dest
, src
, count
);
123 /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */
124 /* ?move@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
125 char* CDECL
MSVCP_char_traits_char_move(
126 char *dest
, const char *src
, size_t count
)
128 return MSVCP_char_traits_char__Move_s(dest
, count
, src
, count
);
131 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
132 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
133 char* CDECL
MSVCP_char_traits_char_assignn(char *str
, size_t num
, char c
)
135 return memset(str
, c
, num
);
138 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
139 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
140 int CDECL
MSVCP_char_traits_wchar_compare(const wchar_t *s1
,
141 const wchar_t *s2
, size_t count
)
146 for (i
= 0; i
< count
&& !ret
; i
++) ret
= s1
[i
] - s2
[i
];
147 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
150 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
151 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
152 size_t CDECL
MSVCP_char_traits_wchar_length(const wchar_t *str
)
154 return wcslen((WCHAR
*)str
);
157 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
158 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
159 wchar_t* CDECL
MSVCP_char_traits_wchar__Copy_s(wchar_t *dest
,
160 size_t size
, const wchar_t *src
, size_t count
)
162 if(!dest
|| !src
|| size
<count
) {
165 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
169 return memcpy(dest
, src
, count
* sizeof(wchar_t));
172 /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
173 /* ?copy@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
174 wchar_t* CDECL
MSVCP_char_traits_wchar_copy(wchar_t *dest
,
175 const wchar_t *src
, size_t count
)
177 return MSVCP_char_traits_wchar__Copy_s(dest
, count
, src
, count
);
180 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
181 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
182 const wchar_t* CDECL
MSVCP_char_traits_wchar_find(
183 const wchar_t *str
, size_t range
, const wchar_t *c
)
187 for(i
=0; i
<range
; i
++)
194 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
195 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
196 wchar_t* CDECL
MSVCP_char_traits_wchar__Move_s(wchar_t *dest
,
197 size_t size
, const wchar_t *src
, size_t count
)
199 if(!dest
|| !src
|| size
<count
) {
202 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
206 return memmove(dest
, src
, count
* sizeof(WCHAR
));
209 /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
210 /* ?move@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
211 wchar_t* CDECL
MSVCP_char_traits_wchar_move(wchar_t *dest
,
212 const wchar_t *src
, size_t count
)
214 return MSVCP_char_traits_wchar__Move_s(dest
, count
, src
, count
);
217 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
218 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
219 wchar_t* CDECL
MSVCP_char_traits_wchar_assignn(wchar_t *str
,
220 size_t num
, wchar_t c
)
230 static bool basic_string_char_inside(
231 basic_string_char
*this, const char *ptr
)
233 return ptr
>=this->ptr
&& ptr
<this->ptr
+this->size
;
236 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
237 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
238 const size_t MSVCP_basic_string_char_npos
= -1;
240 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ@4DB */
241 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ@4DB */
242 const char basic_string_char_nullbyte
= '\0';
244 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ */
245 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ */
246 const char* __cdecl
basic_string_char__Nullstr(void)
248 return &basic_string_char_nullbyte
;
251 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEAAEPBD@Z */
252 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAAEAEPEBD@Z */
253 DEFINE_THISCALL_WRAPPER(basic_string_char__Refcnt
, 8)
254 unsigned char* __thiscall
basic_string_char__Refcnt(basic_string_char
*this, const char *ptr
)
256 TRACE("(%p %p)\n", this, ptr
);
257 return (unsigned char*)ptr
-1;
260 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
261 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
262 DEFINE_THISCALL_WRAPPER(basic_string_char__Eos
, 8)
263 void __thiscall
basic_string_char__Eos(basic_string_char
*this, size_t len
)
269 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
270 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
271 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear
, 4)
272 void __thiscall
MSVCP_basic_string_char_clear(basic_string_char
*this)
275 basic_string_char__Eos(this, 0);
278 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
279 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
280 DEFINE_THISCALL_WRAPPER(basic_string_char__Tidy
, 8)
281 void __thiscall
basic_string_char__Tidy(basic_string_char
*this, bool built
)
283 TRACE("(%p %d)\n", this, built
);
285 if(!built
|| !this->ptr
);
286 else if(!this->ptr
[-1] || this->ptr
[-1]==FROZEN
)
287 MSVCP_allocator_char_deallocate(NULL
, this->ptr
-1, this->res
+2);
291 memset(this, 0, sizeof(*this));
294 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAE_NI_N@Z */
295 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAA_N_K_N@Z */
296 DEFINE_THISCALL_WRAPPER(basic_string_char__Grow
, 12)
297 bool __thiscall
basic_string_char__Grow(basic_string_char
*this, size_t new_size
, bool trim
)
301 basic_string_char__Tidy(this, TRUE
);
303 basic_string_char__Eos(this, 0);
304 } else if(this->res
<new_size
|| trim
||
305 (this->ptr
&& this->ptr
[-1] && this->ptr
[-1]!=FROZEN
)) {
306 size_t new_res
= new_size
, len
= this->size
;
309 if(!trim
&& this->ptr
&& !this->ptr
[-1]) {
311 if(new_res
/3 < this->res
/2)
312 new_res
= this->res
+ this->res
/2;
315 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_res
+2);
318 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_size
+2);
321 ERR("Out of memory\n");
330 MSVCP_char_traits_char__Copy_s(ptr
+1, new_size
, this->ptr
, len
);
331 basic_string_char__Tidy(this, TRUE
);
334 basic_string_char__Eos(this, len
);
340 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
341 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
342 DEFINE_THISCALL_WRAPPER(basic_string_char__Split
, 4)
343 void __thiscall
basic_string_char__Split(basic_string_char
*this)
348 TRACE("(%p)\n", this);
350 if(!this->ptr
|| !this->ptr
[-1] || this->ptr
[-1]==FROZEN
)
355 basic_string_char__Tidy(this, TRUE
);
356 if(basic_string_char__Grow(this, len
, FALSE
)) {
358 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, ptr
, len
);
359 basic_string_char__Eos(this, len
);
363 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
364 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
365 DEFINE_THISCALL_WRAPPER(basic_string_char__Freeze
, 4)
366 void __thiscall
basic_string_char__Freeze(basic_string_char
*this)
368 TRACE("(%p)\n", this);
369 basic_string_char__Split(this);
371 this->ptr
[-1] = FROZEN
;
374 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
375 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
376 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy
, 8)
377 void __thiscall
basic_string_char__Copy(basic_string_char
*this, size_t copy_len
)
379 TRACE("%p %Iu\n", this, copy_len
);
381 if(!basic_string_char__Grow(this, copy_len
, TRUE
))
385 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPADPADI@Z */
386 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEADPEAD_K@Z */
387 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDPBDI@Z */
388 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDPEBD_K@Z */
389 char* __cdecl
basic_string_char__Psum(char *iter
, size_t add
)
391 TRACE("(%p %Iu)\n", iter
, add
);
392 return iter
? iter
+add
: iter
;
395 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
396 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
397 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase
, 12)
398 basic_string_char
* __thiscall
MSVCP_basic_string_char_erase(
399 basic_string_char
*this, size_t pos
, size_t len
)
401 TRACE("%p %Iu %Iu\n", this, pos
, len
);
406 if(len
> this->size
-pos
)
407 len
= this->size
-pos
;
410 basic_string_char__Split(this);
411 MSVCP_char_traits_char__Move_s(this->ptr
+pos
, this->res
-pos
,
412 this->ptr
+pos
+len
, this->size
-pos
-len
);
413 basic_string_char__Eos(this, this->size
-len
);
419 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD@Z */
420 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD@Z */
421 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_beg
, 8)
422 char* __thiscall
basic_string_char_erase_beg(basic_string_char
*this, char *beg
)
424 size_t pos
= beg
-this->ptr
;
425 MSVCP_basic_string_char_erase(this, pos
, 1);
426 return this->ptr
+pos
;
429 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
430 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
431 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr
, 16)
432 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_substr(
433 basic_string_char
*this, const basic_string_char
*assign
,
434 size_t pos
, size_t len
)
436 TRACE("%p %p %Iu %Iu\n", this, assign
, pos
, len
);
438 if(assign
->size
< pos
)
441 if(len
> assign
->size
-pos
)
442 len
= assign
->size
-pos
;
445 MSVCP_basic_string_char_erase(this, pos
+len
, MSVCP_basic_string_char_npos
);
446 MSVCP_basic_string_char_erase(this, 0, pos
);
447 } else if(basic_string_char__Grow(this, len
, FALSE
)) {
449 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, assign
->ptr
+pos
, len
);
450 basic_string_char__Eos(this, len
);
456 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
457 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
458 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len
, 12)
459 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_cstr_len(
460 basic_string_char
*this, const char *str
, size_t len
)
462 TRACE("%p %s %Iu\n", this, debugstr_an(str
, len
), len
);
464 if(basic_string_char_inside(this, str
))
465 return MSVCP_basic_string_char_assign_substr(this, this, str
-this->ptr
, len
);
466 else if(basic_string_char__Grow(this, len
, FALSE
)) {
467 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, str
, len
);
468 basic_string_char__Eos(this, len
);
474 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
475 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
476 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
477 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
478 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign
, 8)
479 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign(
480 basic_string_char
*this, const basic_string_char
*assign
)
482 return MSVCP_basic_string_char_assign_substr(this, assign
,
483 0, MSVCP_basic_string_char_npos
);
486 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
487 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
488 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
489 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
490 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr
, 8)
491 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_cstr(
492 basic_string_char
*this, const char *str
)
494 return MSVCP_basic_string_char_assign_cstr_len(this, str
,
495 MSVCP_char_traits_char_length(str
));
498 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
499 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
500 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch
, 8)
501 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_ch(
502 basic_string_char
*this, char ch
)
504 return MSVCP_basic_string_char_assign_cstr_len(this, &ch
, 1);
507 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
508 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
509 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn
, 12)
510 basic_string_char
* __thiscall
MSVCP_basic_string_char_assignn(
511 basic_string_char
*this, size_t count
, char ch
)
513 TRACE("%p %Iu %c\n", this, count
, ch
);
515 basic_string_char__Grow(this, count
, FALSE
);
516 MSVCP_char_traits_char_assignn(this->ptr
, count
, ch
);
517 basic_string_char__Eos(this, count
);
521 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
522 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
523 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr
, 12)
524 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_ptr_ptr(
525 basic_string_char
*this, const char *first
, const char *last
)
527 return MSVCP_basic_string_char_assign_cstr_len(this, first
, last
-first
);
530 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
531 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
532 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc
, 16)
533 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_len_alloc(
534 basic_string_char
*this, const char *str
, size_t len
, const void *alloc
)
536 TRACE("%p %s %Iu\n", this, debugstr_an(str
, len
), len
);
538 basic_string_char__Tidy(this, FALSE
);
539 MSVCP_basic_string_char_assign_cstr_len(this, str
, len
);
543 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
544 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
545 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len
, 12)
546 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_len(
547 basic_string_char
*this, const char *str
, size_t len
)
549 return MSVCP_basic_string_char_ctor_cstr_len_alloc(this, str
, len
, NULL
);
552 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
553 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
554 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc
, 20)
555 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_substr_alloc(
556 basic_string_char
*this, const basic_string_char
*assign
,
557 size_t pos
, size_t len
, const void *alloc
)
559 TRACE("%p %p %Iu %Iu\n", this, assign
, pos
, len
);
561 basic_string_char__Tidy(this, FALSE
);
562 MSVCP_basic_string_char_assign_substr(this, assign
, pos
, len
);
566 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
567 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
568 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc
, 12)
569 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_alloc(
570 basic_string_char
*this, const char *str
, const void *alloc
)
572 TRACE("%p %s\n", this, debugstr_a(str
));
574 basic_string_char__Tidy(this, FALSE
);
575 MSVCP_basic_string_char_assign_cstr(this, str
);
579 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
580 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
581 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr
, 8)
582 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr(
583 basic_string_char
*this, const char *str
)
585 return MSVCP_basic_string_char_ctor_cstr_alloc(this, str
, NULL
);
588 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
589 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
590 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc
, 16)
591 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char
*this,
592 size_t count
, char ch
, const void *alloc
)
594 TRACE("%p %Iu %c\n", this, count
, ch
);
596 basic_string_char__Tidy(this, FALSE
);
597 MSVCP_basic_string_char_assignn(this, count
, ch
);
601 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
602 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
603 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor
, 4)
604 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor(basic_string_char
*this)
608 basic_string_char__Tidy(this, FALSE
);
612 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
613 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
614 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc
, 8)
615 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_alloc(
616 basic_string_char
*this, const void *alloc
)
618 TRACE("%p %p\n", this, alloc
);
620 basic_string_char__Tidy(this, FALSE
);
624 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
625 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
626 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor
, 8)
627 basic_string_char
* __thiscall
MSVCP_basic_string_char_copy_ctor(
628 basic_string_char
*this, const basic_string_char
*copy
)
630 TRACE("%p %p\n", this, copy
);
632 basic_string_char__Tidy(this, FALSE
);
633 MSVCP_basic_string_char_assign(this, copy
);
637 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
638 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
639 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor
, 4)
640 void __thiscall
MSVCP_basic_string_char_dtor(basic_string_char
*this)
643 basic_string_char__Tidy(this, TRUE
);
646 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
647 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
648 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len
, 20)
649 int __thiscall
MSVCP_basic_string_char_compare_substr_cstr_len(
650 const basic_string_char
*this, size_t pos
, size_t num
,
651 const char *str
, size_t count
)
655 TRACE("%p %Iu %Iu %s %Iu\n", this, pos
, num
, debugstr_an(str
, count
), count
);
660 if(num
> this->size
-pos
)
661 num
= this->size
-pos
;
663 ans
= MSVCP_char_traits_char_compare(this->ptr
+pos
,
664 str
, num
>count
? count
: num
);
675 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
676 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
677 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr
, 8)
678 int __thiscall
MSVCP_basic_string_char_compare_cstr(
679 const basic_string_char
*this, const char *str
)
681 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
682 str
, MSVCP_char_traits_char_length(str
));
685 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
686 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
687 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr
, 24)
688 int __thiscall
MSVCP_basic_string_char_compare_substr_substr(
689 const basic_string_char
*this, size_t pos
, size_t num
,
690 const basic_string_char
*compare
, size_t off
, size_t count
)
692 TRACE("%p %Iu %Iu %p %Iu %Iu\n", this, pos
, num
, compare
, off
, count
);
694 if(compare
->size
< off
)
697 if(count
> compare
->size
-off
)
698 count
= compare
->size
-off
;
700 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
701 compare
->ptr
+off
, count
);
704 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
705 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
706 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr
, 16)
707 int __thiscall
MSVCP_basic_string_char_compare_substr(
708 const basic_string_char
*this, size_t pos
, size_t num
,
709 const basic_string_char
*compare
)
711 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
712 compare
->ptr
, compare
->size
);
715 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
716 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
717 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare
, 8)
718 int __thiscall
MSVCP_basic_string_char_compare(
719 const basic_string_char
*this, const basic_string_char
*compare
)
721 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
722 compare
->ptr
, compare
->size
);
725 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
726 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
727 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr
, 16)
728 int __thiscall
MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char
*this,
729 size_t pos
, size_t num
, const char *str
)
731 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
732 str
, MSVCP_char_traits_char_length(str
));
735 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
736 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
737 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
738 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
739 bool __cdecl
MSVCP_basic_string_char_equal(
740 const basic_string_char
*left
, const basic_string_char
*right
)
742 return MSVCP_basic_string_char_compare(left
, right
) == 0;
745 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
746 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
747 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
748 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
749 bool __cdecl
MSVCP_basic_string_char_equal_str_cstr(
750 const basic_string_char
*left
, const char *right
)
752 return MSVCP_basic_string_char_compare_cstr(left
, right
) == 0;
755 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
756 /* ??$?8DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
757 /* ??8std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
758 /* ??8std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
759 bool __cdecl
MSVCP_basic_string_char_equal_cstr_str(
760 const char *left
, const basic_string_char
*right
)
762 return MSVCP_basic_string_char_compare_cstr(right
, left
) == 0;
765 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
766 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
767 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
768 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
769 bool __cdecl
MSVCP_basic_string_char_not_equal(
770 const basic_string_char
*left
, const basic_string_char
*right
)
772 return MSVCP_basic_string_char_compare(left
, right
) != 0;
775 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
776 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
777 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
778 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
779 bool __cdecl
MSVCP_basic_string_char_not_equal_str_cstr(
780 const basic_string_char
*left
, const char *right
)
782 return MSVCP_basic_string_char_compare_cstr(left
, right
) != 0;
785 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
786 /* ??$?9DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
787 /* ??9std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
788 /* ??9std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
789 bool __cdecl
MSVCP_basic_string_char_not_equal_cstr_str(
790 const char *left
, const basic_string_char
*right
)
792 return MSVCP_basic_string_char_compare_cstr(right
, left
) != 0;
795 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
796 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
797 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
798 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
799 bool __cdecl
MSVCP_basic_string_char_lower(
800 const basic_string_char
*left
, const basic_string_char
*right
)
802 return MSVCP_basic_string_char_compare(left
, right
) < 0;
805 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
806 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
807 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
808 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
809 bool __cdecl
MSVCP_basic_string_char_lower_bstr_cstr(
810 const basic_string_char
*left
, const char *right
)
812 return MSVCP_basic_string_char_compare_cstr(left
, right
) < 0;
815 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
816 /* ??$?MDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
817 /* ??Mstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
818 /* ??Mstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
819 bool __cdecl
MSVCP_basic_string_char_lower_cstr_bstr(
820 const char *left
, const basic_string_char
*right
)
822 return MSVCP_basic_string_char_compare_cstr(right
, left
) > 0;
825 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
826 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
827 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
828 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
829 bool __cdecl
MSVCP_basic_string_char_leq(
830 const basic_string_char
*left
, const basic_string_char
*right
)
832 return MSVCP_basic_string_char_compare(left
, right
) <= 0;
835 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
836 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
837 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
838 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
839 bool __cdecl
MSVCP_basic_string_char_leq_bstr_cstr(
840 const basic_string_char
*left
, const char *right
)
842 return MSVCP_basic_string_char_compare_cstr(left
, right
) <= 0;
845 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
846 /* ??$?NDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
847 /* ??Nstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
848 /* ??Nstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
849 bool __cdecl
MSVCP_basic_string_char_leq_cstr_bstr(
850 const char *left
, const basic_string_char
*right
)
852 return MSVCP_basic_string_char_compare_cstr(right
, left
) >= 0;
855 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
856 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
857 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
858 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
859 bool __cdecl
MSVCP_basic_string_char_greater(
860 const basic_string_char
*left
, const basic_string_char
*right
)
862 return MSVCP_basic_string_char_compare(left
, right
) > 0;
865 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
866 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
867 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
868 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
869 bool __cdecl
MSVCP_basic_string_char_greater_bstr_cstr(
870 const basic_string_char
*left
, const char *right
)
872 return MSVCP_basic_string_char_compare_cstr(left
, right
) > 0;
875 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
876 /* ??$?ODU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
877 /* ??Ostd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
878 /* ??Ostd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
879 bool __cdecl
MSVCP_basic_string_char_greater_cstr_bstr(
880 const char *left
, const basic_string_char
*right
)
882 return MSVCP_basic_string_char_compare_cstr(right
, left
) < 0;
885 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
886 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
887 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
888 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
889 bool __cdecl
MSVCP_basic_string_char_geq(
890 const basic_string_char
*left
, const basic_string_char
*right
)
892 return MSVCP_basic_string_char_compare(left
, right
) >= 0;
895 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
896 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
897 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
898 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
899 bool __cdecl
MSVCP_basic_string_char_geq_bstr_cstr(
900 const basic_string_char
*left
, const char *right
)
902 return MSVCP_basic_string_char_compare_cstr(left
, right
) >= 0;
905 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
906 /* ??$?PDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
907 /* ??Pstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
908 /* ??Pstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
909 bool __cdecl
MSVCP_basic_string_char_geq_cstr_bstr(
910 const char *left
, const basic_string_char
*right
)
912 return MSVCP_basic_string_char_compare_cstr(right
, left
) <= 0;
915 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
916 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
917 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr
, 16)
918 size_t __thiscall
MSVCP_basic_string_char_find_cstr_substr(
919 const basic_string_char
*this, const char *find
, size_t pos
, size_t len
)
923 TRACE("%p %s %Iu %Iu\n", this, debugstr_an(find
, len
), pos
, len
);
925 if(len
==0 && pos
<=this->size
)
927 if(pos
>=this->size
|| len
>this->size
)
928 return MSVCP_basic_string_char_npos
;
930 end
= this->ptr
+this->size
-len
+1;
931 for(p
=this->ptr
+pos
; p
<end
; p
++) {
932 p
= MSVCP_char_traits_char_find(p
, end
-p
, find
);
936 if(!MSVCP_char_traits_char_compare(p
, find
, len
))
940 return MSVCP_basic_string_char_npos
;
943 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
944 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
945 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off
, 12)
946 size_t __thiscall
MSVCP_basic_string_char_find_off(
947 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
949 return MSVCP_basic_string_char_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
952 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
953 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
954 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch
, 12)
955 size_t __thiscall
MSVCP_basic_string_char_find_ch(
956 const basic_string_char
*this, char ch
, size_t pos
)
958 return MSVCP_basic_string_char_find_cstr_substr(this, &ch
, pos
, 1);
961 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
962 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
963 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off
, 12)
964 size_t __thiscall
MSVCP_basic_string_char_find_cstr_off(
965 const basic_string_char
*this, const char *find
, size_t pos
)
967 return MSVCP_basic_string_char_find_cstr_substr(this, find
, pos
,
968 MSVCP_char_traits_char_length(find
));
971 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
972 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
973 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr
, 16)
974 size_t __thiscall
MSVCP_basic_string_char_rfind_cstr_substr(
975 const basic_string_char
*this, const char *find
, size_t pos
, size_t len
)
979 TRACE("%p %s %Iu %Iu\n", this, debugstr_an(find
, len
), pos
, len
);
982 return pos
<this->size
? pos
: this->size
;
985 return MSVCP_basic_string_char_npos
;
987 if(pos
> this->size
-len
)
988 pos
= this->size
-len
;
990 for(p
=end
+pos
; p
>=end
; p
--) {
991 if(*p
==*find
&& !MSVCP_char_traits_char_compare(p
, find
, len
))
995 return MSVCP_basic_string_char_npos
;
998 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
999 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1000 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off
, 12)
1001 size_t __thiscall
MSVCP_basic_string_char_rfind_off(
1002 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1004 return MSVCP_basic_string_char_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
1007 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1008 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1009 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch
, 12)
1010 size_t __thiscall
MSVCP_basic_string_char_rfind_ch(
1011 const basic_string_char
*this, char ch
, size_t pos
)
1013 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch
, pos
, 1);
1016 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1017 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1018 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off
, 12)
1019 size_t __thiscall
MSVCP_basic_string_char_rfind_cstr_off(
1020 const basic_string_char
*this, const char *find
, size_t pos
)
1022 return MSVCP_basic_string_char_rfind_cstr_substr(this, find
, pos
,
1023 MSVCP_char_traits_char_length(find
));
1026 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1027 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1028 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr
, 16)
1029 size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1030 const basic_string_char
*this, const char *find
, size_t off
, size_t len
)
1032 const char *p
, *end
;
1034 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
1036 if(off
<this->size
) {
1037 end
= this->ptr
+this->size
;
1038 for(p
=this->ptr
+off
; p
<end
; p
++)
1039 if(!MSVCP_char_traits_char_find(find
, len
, p
))
1043 return MSVCP_basic_string_char_npos
;
1046 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1047 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1048 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of
, 12)
1049 size_t __thiscall
MSVCP_basic_string_char_find_first_not_of(
1050 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1052 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1053 find
->ptr
, off
, find
->size
);
1056 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1057 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1058 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch
, 12)
1059 size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_ch(
1060 const basic_string_char
*this, char ch
, size_t off
)
1062 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
1065 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1066 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1067 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr
, 12)
1068 size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_cstr(
1069 const basic_string_char
*this, const char *find
, size_t off
)
1071 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1072 this, find
, off
, MSVCP_char_traits_char_length(find
));
1075 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1076 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1077 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr
, 16)
1078 size_t __thiscall
MSVCP_basic_string_char_find_first_of_cstr_substr(
1079 const basic_string_char
*this, const char *find
, size_t off
, size_t len
)
1081 const char *p
, *end
;
1083 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
1085 if(len
>0 && off
<this->size
) {
1086 end
= this->ptr
+this->size
;
1087 for(p
=this->ptr
+off
; p
<end
; p
++)
1088 if(MSVCP_char_traits_char_find(find
, len
, p
))
1092 return MSVCP_basic_string_char_npos
;
1095 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1096 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1097 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of
, 12)
1098 size_t __thiscall
MSVCP_basic_string_char_find_first_of(
1099 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1101 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1102 find
->ptr
, off
, find
->size
);
1105 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1106 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1107 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch
, 12)
1108 size_t __thiscall
MSVCP_basic_string_char_find_first_of_ch(
1109 const basic_string_char
*this, char ch
, size_t off
)
1111 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch
, off
, 1);
1114 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1115 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1116 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr
, 12)
1117 size_t __thiscall
MSVCP_basic_string_char_find_first_of_cstr(
1118 const basic_string_char
*this, const char *find
, size_t off
)
1120 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1121 this, find
, off
, MSVCP_char_traits_char_length(find
));
1124 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1125 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1126 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr
, 16)
1127 size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1128 const basic_string_char
*this, const char *find
, size_t off
, size_t len
)
1130 const char *p
, *beg
;
1132 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
1134 if(len
>0 && this->size
>0) {
1135 if(off
>= this->size
)
1139 for(p
=beg
+off
; p
>=beg
; p
--)
1140 if(!MSVCP_char_traits_char_find(find
, len
, p
))
1144 return MSVCP_basic_string_char_npos
;
1147 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1148 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1149 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of
, 12)
1150 size_t __thiscall
MSVCP_basic_string_char_find_last_not_of(
1151 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1153 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1154 find
->ptr
, off
, find
->size
);
1157 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1158 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1159 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch
, 12)
1160 size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_ch(
1161 const basic_string_char
*this, char ch
, size_t off
)
1163 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
1166 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1167 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1168 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr
, 12)
1169 size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_cstr(
1170 const basic_string_char
*this, const char *find
, size_t off
)
1172 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1173 this, find
, off
, MSVCP_char_traits_char_length(find
));
1176 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1177 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1178 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr
, 16)
1179 size_t __thiscall
MSVCP_basic_string_char_find_last_of_cstr_substr(
1180 const basic_string_char
*this, const char *find
, size_t off
, size_t len
)
1182 const char *p
, *beg
;
1184 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
1186 if(len
>0 && this->size
>0) {
1187 if(off
>= this->size
)
1191 for(p
=beg
+off
; p
>=beg
; p
--)
1192 if(MSVCP_char_traits_char_find(find
, len
, p
))
1196 return MSVCP_basic_string_char_npos
;
1199 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1200 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1201 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of
, 12)
1202 size_t __thiscall
MSVCP_basic_string_char_find_last_of(
1203 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1205 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1206 find
->ptr
, off
, find
->size
);
1209 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1210 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1211 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch
, 12)
1212 size_t __thiscall
MSVCP_basic_string_char_find_last_of_ch(
1213 const basic_string_char
*this, char ch
, size_t off
)
1215 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch
, off
, 1);
1218 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1219 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1220 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr
, 12)
1221 size_t __thiscall
MSVCP_basic_string_char_find_last_of_cstr(
1222 const basic_string_char
*this, const char *find
, size_t off
)
1224 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1225 this, find
, off
, MSVCP_char_traits_char_length(find
));
1228 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1229 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1230 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr
, 16)
1231 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_substr(basic_string_char
*this,
1232 const basic_string_char
*append
, size_t offset
, size_t count
)
1234 TRACE("%p %p %Iu %Iu\n", this, append
, offset
, count
);
1236 if(append
->size
< offset
)
1239 if(count
> append
->size
-offset
)
1240 count
= append
->size
-offset
;
1242 if(MSVCP_basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1245 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1247 MSVCP_char_traits_char__Copy_s(this->ptr
+this->size
, this->res
-this->size
,
1248 append
->ptr
+offset
, count
);
1249 basic_string_char__Eos(this, this->size
+count
);
1255 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1256 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1257 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len
, 12)
1258 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_cstr_len(
1259 basic_string_char
*this, const char *append
, size_t count
)
1261 TRACE("%p %s %Iu\n", this, debugstr_an(append
, count
), count
);
1263 if(basic_string_char_inside(this, append
))
1264 return MSVCP_basic_string_char_append_substr(this, this, append
-this->ptr
, count
);
1266 if(MSVCP_basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1269 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1270 MSVCP_char_traits_char__Copy_s(this->ptr
+this->size
,
1271 this->res
-this->size
, append
, count
);
1272 basic_string_char__Eos(this, this->size
+count
);
1278 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1279 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1280 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch
, 12)
1281 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_len_ch(
1282 basic_string_char
*this, size_t count
, char ch
)
1284 TRACE("%p %Iu %c\n", this, count
, ch
);
1286 if(MSVCP_basic_string_char_npos
-this->size
<= count
)
1289 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1290 MSVCP_char_traits_char_assignn(this->ptr
+this->size
, count
, ch
);
1291 basic_string_char__Eos(this, this->size
+count
);
1297 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1298 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1299 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1300 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1301 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append
, 8)
1302 basic_string_char
* __thiscall
MSVCP_basic_string_char_append(
1303 basic_string_char
*this, const basic_string_char
*append
)
1305 return MSVCP_basic_string_char_append_substr(this, append
,
1306 0, MSVCP_basic_string_char_npos
);
1309 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1310 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1311 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch
, 8)
1312 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_ch(
1313 basic_string_char
*this, char ch
)
1315 return MSVCP_basic_string_char_append_len_ch(this, 1, ch
);
1318 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1319 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1320 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end
, 12)
1321 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_beg_end(
1322 basic_string_char
*this, const char *beg
, const char *end
)
1324 return MSVCP_basic_string_char_append_cstr_len(this, beg
, end
-beg
);
1327 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1328 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1329 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1330 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1331 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr
, 8)
1332 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_cstr(
1333 basic_string_char
*this, const char *append
)
1335 return MSVCP_basic_string_char_append_cstr_len(this, append
,
1336 MSVCP_char_traits_char_length(append
));
1338 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1339 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1340 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1341 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1342 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate(basic_string_char
*ret
,
1343 const basic_string_char
*left
, const basic_string_char
*right
)
1345 TRACE("%p %p\n", left
, right
);
1347 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1348 MSVCP_basic_string_char_append(ret
, right
);
1352 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1353 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1354 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1355 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1356 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char
*ret
,
1357 const basic_string_char
*left
, char right
)
1359 TRACE("%p %c\n", left
, right
);
1361 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1362 MSVCP_basic_string_char_append_ch(ret
, right
);
1366 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1367 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1368 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1369 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1370 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char
*ret
,
1371 const basic_string_char
*left
, const char *right
)
1373 TRACE("%p %s\n", left
, debugstr_a(right
));
1375 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1376 MSVCP_basic_string_char_append_cstr(ret
, right
);
1380 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1381 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1382 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1383 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1384 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char
*ret
,
1385 char left
, const basic_string_char
*right
)
1387 TRACE("%c %p\n", left
, right
);
1389 MSVCP_basic_string_char_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
1390 MSVCP_basic_string_char_append(ret
, right
);
1394 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1395 /* ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1396 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1397 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1398 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char
*ret
,
1399 const char *left
, const basic_string_char
*right
)
1401 TRACE("%s %p\n", debugstr_a(left
), right
);
1403 MSVCP_basic_string_char_ctor_cstr_alloc(ret
, left
, NULL
);
1404 MSVCP_basic_string_char_append(ret
, right
);
1408 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1409 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1410 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at
, 8)
1411 char* __thiscall
MSVCP_basic_string_char_operator_at(
1412 basic_string_char
*this, size_t pos
)
1414 TRACE("%p %Iu\n", this, pos
);
1416 if(!this->ptr
|| pos
>this->size
)
1417 return (char*)basic_string_char__Nullstr();
1419 basic_string_char__Freeze(this);
1420 return this->ptr
+pos
;
1423 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1424 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1425 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at_const
, 8)
1426 const char* __thiscall
MSVCP_basic_string_char_operator_at_const(
1427 const basic_string_char
*this, size_t pos
)
1429 TRACE("%p %Iu\n", this, pos
);
1432 return basic_string_char__Nullstr();
1433 return this->ptr
+pos
;
1436 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1437 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1438 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1439 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1440 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at
, 8)
1441 char* __thiscall
MSVCP_basic_string_char_at(
1442 basic_string_char
*this, size_t pos
)
1444 TRACE("%p %Iu\n", this, pos
);
1446 if(this->size
<= pos
)
1449 return this->ptr
+pos
;
1452 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1453 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1454 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len
, 20)
1455 basic_string_char
* __thiscall
basic_string_char_replace_cstr_len(basic_string_char
*this,
1456 size_t off
, size_t len
, const char *str
, size_t str_len
)
1458 size_t inside_pos
= -1;
1459 char *ptr
= this->ptr
;
1461 TRACE("%p %Iu %Iu %p %Iu\n", this, off
, len
, str
, str_len
);
1463 if(this->size
< off
)
1466 if(len
> this->size
-off
)
1467 len
= this->size
-off
;
1469 if(MSVCP_basic_string_char_npos
-str_len
<= this->size
-len
)
1472 if(basic_string_char_inside(this, str
))
1473 inside_pos
= str
-ptr
;
1475 if(this->size
-len
+str_len
)
1476 basic_string_char__Grow(this, this->size
-len
+str_len
, FALSE
);
1479 if(inside_pos
== -1) {
1480 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1481 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
1482 } else if(len
>= str_len
) {
1483 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
1484 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1488 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1490 if(inside_pos
< off
+len
) {
1491 size
= off
+len
-inside_pos
;
1494 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
1500 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
1504 basic_string_char__Eos(this, this->size
-len
+str_len
);
1508 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
1509 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
1510 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr
, 24)
1511 basic_string_char
* __thiscall
basic_string_char_replace_substr(basic_string_char
*this, size_t off
,
1512 size_t len
, const basic_string_char
*str
, size_t str_off
, size_t str_len
)
1514 if(str
->size
< str_off
)
1517 if(str_len
> str
->size
-str_off
)
1518 str_len
= str
->size
-str_off
;
1520 return basic_string_char_replace_cstr_len(this, off
, len
,
1521 str
->ptr
+str_off
, str_len
);
1524 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
1525 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
1526 DEFINE_THISCALL_WRAPPER(basic_string_char_replace
, 16)
1527 basic_string_char
* __thiscall
basic_string_char_replace(basic_string_char
*this,
1528 size_t off
, size_t len
, const basic_string_char
*str
)
1530 return basic_string_char_replace_cstr_len(this, off
, len
,
1531 str
->ptr
, str
->size
);
1534 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
1535 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
1536 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch
, 20)
1537 basic_string_char
* __thiscall
basic_string_char_replace_ch(basic_string_char
*this,
1538 size_t off
, size_t len
, size_t count
, char ch
)
1542 TRACE("%p %Iu %Iu %Iu %c\n", this, off
, len
, count
, ch
);
1544 if(this->size
< off
)
1547 if(len
> this->size
-off
)
1548 len
= this->size
-off
;
1550 if(MSVCP_basic_string_char_npos
-count
<= this->size
-len
)
1553 if(this->size
-len
+count
)
1554 basic_string_char__Grow(this, this->size
-len
+count
, FALSE
);
1557 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1558 MSVCP_char_traits_char_assignn(ptr
+off
, count
, ch
);
1559 basic_string_char__Eos(this, this->size
-len
+count
);
1564 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
1565 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
1566 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr
, 16)
1567 basic_string_char
* __thiscall
basic_string_char_replace_cstr(basic_string_char
*this,
1568 size_t off
, size_t len
, const char *str
)
1570 return basic_string_char_replace_cstr_len(this, off
, len
, str
,
1571 MSVCP_char_traits_char_length(str
));
1574 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
1575 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
1576 DEFINE_THISCALL_WRAPPER(basic_string_char_insert
, 12)
1577 basic_string_char
* __thiscall
basic_string_char_insert(basic_string_char
*this,
1578 size_t off
, const basic_string_char
*str
)
1580 return basic_string_char_replace(this, off
, 0, str
);
1583 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
1584 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
1585 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr
, 20)
1586 basic_string_char
* __thiscall
basic_string_char_insert_substr(
1587 basic_string_char
*this, size_t off
, const basic_string_char
*str
,
1588 size_t str_off
, size_t str_count
)
1590 return basic_string_char_replace_substr(this, off
, 0, str
, str_off
, str_count
);
1593 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
1594 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
1595 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr
, 12)
1596 basic_string_char
* __thiscall
basic_string_char_insert_cstr(
1597 basic_string_char
*this, size_t off
, const char *str
)
1599 return basic_string_char_replace_cstr(this, off
, 0, str
);
1602 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
1603 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
1604 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len
, 16)
1605 basic_string_char
* __thiscall
basic_string_char_insert_cstr_len(basic_string_char
*this,
1606 size_t off
, const char *str
, size_t str_len
)
1608 return basic_string_char_replace_cstr_len(this, off
, 0, str
, str_len
);
1611 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
1612 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
1613 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn
, 16)
1614 basic_string_char
* __thiscall
basic_string_char_insert_chn(basic_string_char
*this,
1615 size_t off
, size_t count
, char ch
)
1617 return basic_string_char_replace_ch(this, off
, 0, count
, ch
);
1620 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
1621 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
1622 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch
, 12)
1623 void __thiscall
MSVCP_basic_string_char_resize_ch(
1624 basic_string_char
*this, size_t size
, char ch
)
1626 TRACE("%p %Iu %c\n", this, size
, ch
);
1628 if(size
<= this->size
)
1629 MSVCP_basic_string_char_erase(this, size
, this->size
);
1631 MSVCP_basic_string_char_append_len_ch(this, size
-this->size
, ch
);
1634 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1635 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1636 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize
, 8)
1637 void __thiscall
MSVCP_basic_string_char_resize(
1638 basic_string_char
*this, size_t size
)
1640 MSVCP_basic_string_char_resize_ch(this, size
, '\0');
1643 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1644 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1645 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1646 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1647 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str
, 4)
1648 const char* __thiscall
MSVCP_basic_string_char_c_str(const basic_string_char
*this)
1650 TRACE("%p\n", this);
1651 return this->ptr
? this->ptr
: basic_string_char__Nullstr();
1654 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1655 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1656 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1657 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1658 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length
, 4)
1659 size_t __thiscall
MSVCP_basic_string_char_length(const basic_string_char
*this)
1661 TRACE("%p\n", this);
1665 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1666 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1667 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size
, 4)
1668 size_t __thiscall
basic_string_char_max_size(const basic_string_char
*this)
1670 TRACE("%p\n", this);
1671 return MSVCP_allocator_char_max_size(NULL
)-1;
1674 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1675 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1676 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity
, 4)
1677 size_t __thiscall
MSVCP_basic_string_char_capacity(basic_string_char
*this)
1679 TRACE("%p\n", this);
1683 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1684 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1685 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve
, 8)
1686 void __thiscall
MSVCP_basic_string_char_reserve(basic_string_char
*this, size_t size
)
1690 TRACE("%p %Iu\n", this, size
);
1696 if(basic_string_char__Grow(this, size
, FALSE
))
1697 basic_string_char__Eos(this, len
);
1700 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1701 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1702 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty
, 4)
1703 bool __thiscall
MSVCP_basic_string_char_empty(basic_string_char
*this)
1705 TRACE("%p\n", this);
1706 return this->size
== 0;
1709 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1710 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1711 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap
, 8)
1712 void __thiscall
MSVCP_basic_string_char_swap(basic_string_char
*this, basic_string_char
*str
)
1714 basic_string_char tmp
;
1715 TRACE("%p %p\n", this, str
);
1722 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1723 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1724 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr
, 16)
1725 basic_string_char
* __thiscall
MSVCP_basic_string_char_substr(basic_string_char
*this,
1726 basic_string_char
*ret
, size_t off
, size_t len
)
1728 TRACE("%p %Iu %Iu\n", this, off
, len
);
1730 MSVCP_basic_string_char_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
1734 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
1735 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
1736 DEFINE_THISCALL_WRAPPER(basic_string_char_copy
, 16)
1737 size_t __thiscall
basic_string_char_copy(const basic_string_char
*this,
1738 char *dest
, size_t count
, size_t off
)
1740 TRACE("%p %p %Iu %Iu\n", this, dest
, count
, off
);
1742 if(off
> this->size
)
1744 if(count
> this->size
-off
)
1745 count
= this->size
-off
;
1747 MSVCP_char_traits_char__Copy_s(dest
, count
, this->ptr
+off
, count
);
1751 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
1752 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
1753 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator
, 8)
1754 allocator
* __thiscall
basic_string_char_get_allocator(const basic_string_char
*this, allocator
*ret
)
1756 TRACE("%p\n", this);
1760 static bool basic_string_wchar_inside(
1761 basic_string_wchar
*this, const wchar_t *ptr
)
1763 return ptr
>=this->ptr
&& ptr
<this->ptr
+this->size
;
1766 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
1767 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
1768 const size_t MSVCP_basic_string_wchar_npos
= -1;
1770 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ@4GB */
1771 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ@4GB */
1772 const wchar_t basic_string_wchar_nullbyte
= '\0';
1774 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ */
1775 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ */
1776 const wchar_t* __cdecl
basic_string_wchar__Nullstr(void)
1778 return &basic_string_wchar_nullbyte
;
1781 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEAAEPBG@Z */
1782 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAAEAEPEBG@Z */
1783 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Refcnt
, 8)
1784 unsigned short* __thiscall
basic_string_wchar__Refcnt(basic_string_wchar
*this, const wchar_t *ptr
)
1786 TRACE("(%p %p)\n", this, ptr
);
1787 return (unsigned short*)ptr
-1;
1790 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1791 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1792 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Eos
, 8)
1793 void __thiscall
basic_string_wchar__Eos(basic_string_wchar
*this, size_t len
)
1799 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
1800 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
1801 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
1802 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
1803 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear
, 4)
1804 void __thiscall
MSVCP_basic_string_wchar_clear(basic_string_wchar
*this)
1807 basic_string_wchar__Eos(this, 0);
1810 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEX_N@Z */
1811 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_N@Z */
1812 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Tidy
, 8)
1813 void __thiscall
basic_string_wchar__Tidy(basic_string_wchar
*this, bool built
)
1815 TRACE("(%p %d)\n", this, built
);
1817 if(!built
|| !this->ptr
);
1818 else if(!this->ptr
[-1] || this->ptr
[-1]==FROZENW
)
1819 MSVCP_allocator_wchar_deallocate(NULL
, this->ptr
-1, this->res
+2);
1823 memset(this, 0, sizeof(*this));
1826 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAE_NI_N@Z */
1827 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAA_N_K_N@Z */
1828 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Grow
, 12)
1829 bool __thiscall
basic_string_wchar__Grow(basic_string_wchar
*this, size_t new_size
, bool trim
)
1833 basic_string_wchar__Tidy(this, TRUE
);
1835 basic_string_wchar__Eos(this, 0);
1836 } else if(this->res
<new_size
|| trim
||
1837 (this->ptr
&& this->ptr
[-1] && this->ptr
[-1]!=FROZENW
)) {
1838 size_t new_res
= new_size
, len
= this->size
;
1841 if(!trim
&& this->ptr
&& !this->ptr
[-1]) {
1843 if(new_res
/3 < this->res
/2)
1844 new_res
= this->res
+ this->res
/2;
1847 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_res
+2);
1850 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_size
+2);
1853 ERR("Out of memory\n");
1862 MSVCP_char_traits_wchar__Copy_s(ptr
+1, new_size
, this->ptr
, len
);
1863 basic_string_wchar__Tidy(this, TRUE
);
1865 this->res
= new_res
;
1866 basic_string_wchar__Eos(this, len
);
1872 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1873 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1874 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Split
, 4)
1875 void __thiscall
basic_string_wchar__Split(basic_string_wchar
*this)
1880 TRACE("(%p)\n", this);
1882 if(!this->ptr
|| !this->ptr
[-1] || this->ptr
[-1]==FROZENW
)
1887 basic_string_wchar__Tidy(this, TRUE
);
1888 if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1890 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
, ptr
, len
);
1891 basic_string_wchar__Eos(this, len
);
1895 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1896 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1897 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Freeze
, 4)
1898 void __thiscall
basic_string_wchar__Freeze(basic_string_wchar
*this)
1900 TRACE("(%p)\n", this);
1901 basic_string_wchar__Split(this);
1903 this->ptr
[-1] = FROZENW
;
1906 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1907 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1908 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy
, 8)
1909 void __thiscall
basic_string_wchar__Copy(basic_string_wchar
*this, size_t copy_len
)
1911 TRACE("%p %Iu\n", this, copy_len
);
1913 if(!basic_string_wchar__Grow(this, copy_len
, TRUE
))
1917 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPAGPAGI@Z */
1918 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEAGPEAG_K@Z */
1919 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGPBGI@Z */
1920 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGPEBG_K@Z */
1921 wchar_t* __cdecl
basic_string_wchar__Psum(wchar_t *iter
, size_t add
)
1923 TRACE("(%p %Iu)\n", iter
, add
);
1924 return iter
? iter
+add
: iter
;
1927 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
1928 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
1929 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase
, 12)
1930 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_erase(
1931 basic_string_wchar
*this, size_t pos
, size_t len
)
1933 TRACE("%p %Iu %Iu\n", this, pos
, len
);
1935 if(pos
> this->size
)
1938 if(len
> this->size
-pos
)
1939 len
= this->size
-pos
;
1942 basic_string_wchar__Split(this);
1943 MSVCP_char_traits_wchar__Move_s(this->ptr
+pos
, this->res
-pos
,
1944 this->ptr
+pos
+len
, this->size
-pos
-len
);
1945 basic_string_wchar__Eos(this, this->size
-len
);
1951 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG@Z */
1952 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG@Z */
1953 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_beg
, 8)
1954 wchar_t* __thiscall
basic_string_wchar_erase_beg(basic_string_wchar
*this, wchar_t *beg
)
1956 size_t pos
= beg
-this->ptr
;
1957 MSVCP_basic_string_wchar_erase(this, pos
, 1);
1958 return this->ptr
+pos
;
1961 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
1962 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1963 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr
, 16)
1964 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_substr(
1965 basic_string_wchar
*this, const basic_string_wchar
*assign
,
1966 size_t pos
, size_t len
)
1968 TRACE("%p %p %Iu %Iu\n", this, assign
, pos
, len
);
1970 if(assign
->size
< pos
)
1973 if(len
> assign
->size
-pos
)
1974 len
= assign
->size
-pos
;
1976 if(this == assign
) {
1977 MSVCP_basic_string_wchar_erase(this, pos
+len
, MSVCP_basic_string_wchar_npos
);
1978 MSVCP_basic_string_wchar_erase(this, 0, pos
);
1979 } else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1981 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
,
1982 assign
->ptr
+pos
, len
);
1983 basic_string_wchar__Eos(this, len
);
1989 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
1990 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
1991 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len
, 12)
1992 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_cstr_len(
1993 basic_string_wchar
*this, const wchar_t *str
, size_t len
)
1995 TRACE("%p %s %Iu\n", this, debugstr_wn(str
, len
), len
);
1997 if(basic_string_wchar_inside(this, str
))
1998 return MSVCP_basic_string_wchar_assign_substr(this, this, str
-this->ptr
, len
);
1999 else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
2000 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
, str
, len
);
2001 basic_string_wchar__Eos(this, len
);
2007 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2008 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2009 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2010 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2011 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign
, 8)
2012 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign(
2013 basic_string_wchar
*this, const basic_string_wchar
*assign
)
2015 return MSVCP_basic_string_wchar_assign_substr(this, assign
,
2016 0, MSVCP_basic_string_wchar_npos
);
2019 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2020 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2021 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2022 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2023 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr
, 8)
2024 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_cstr(
2025 basic_string_wchar
*this, const wchar_t *str
)
2027 return MSVCP_basic_string_wchar_assign_cstr_len(this, str
,
2028 MSVCP_char_traits_wchar_length(str
));
2031 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2032 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2033 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch
, 8)
2034 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_ch(
2035 basic_string_wchar
*this, wchar_t ch
)
2037 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch
, 1);
2040 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2041 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2042 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn
, 12)
2043 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assignn(
2044 basic_string_wchar
*this, size_t count
, wchar_t ch
)
2046 TRACE("%p %Iu %c\n", this, count
, ch
);
2048 basic_string_wchar__Grow(this, count
, FALSE
);
2049 MSVCP_char_traits_wchar_assignn(this->ptr
, count
, ch
);
2050 basic_string_wchar__Eos(this, count
);
2054 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2055 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2056 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr
, 12)
2057 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_ptr_ptr(
2058 basic_string_wchar
*this, const wchar_t *first
, const wchar_t *last
)
2060 return MSVCP_basic_string_wchar_assign_cstr_len(this, first
, last
-first
);
2063 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2064 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2065 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc
, 16)
2066 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2067 basic_string_wchar
*this, const wchar_t *str
, size_t len
, const void *alloc
)
2069 TRACE("%p %s %Iu\n", this, debugstr_wn(str
, len
), len
);
2071 basic_string_wchar__Tidy(this, FALSE
);
2072 MSVCP_basic_string_wchar_assign_cstr_len(this, str
, len
);
2076 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2077 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2078 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2079 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2080 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len
, 12)
2081 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_len(
2082 basic_string_wchar
*this, const wchar_t *str
, size_t len
)
2084 return MSVCP_basic_string_wchar_ctor_cstr_len_alloc(this, str
, len
, NULL
);
2087 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2088 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2089 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc
, 20)
2090 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_substr_alloc(
2091 basic_string_wchar
*this, const basic_string_wchar
*assign
,
2092 size_t pos
, size_t len
, const void *alloc
)
2094 TRACE("%p %p %Iu %Iu\n", this, assign
, pos
, len
);
2096 basic_string_wchar__Tidy(this, FALSE
);
2097 MSVCP_basic_string_wchar_assign_substr(this, assign
, pos
, len
);
2101 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2102 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2103 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc
, 12)
2104 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_alloc(
2105 basic_string_wchar
*this, const wchar_t *str
, const void *alloc
)
2107 TRACE("%p %s\n", this, debugstr_w(str
));
2109 basic_string_wchar__Tidy(this, FALSE
);
2110 MSVCP_basic_string_wchar_assign_cstr(this, str
);
2114 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2115 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2116 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2117 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2118 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr
, 8)
2119 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr(
2120 basic_string_wchar
*this, const wchar_t *str
)
2122 return MSVCP_basic_string_wchar_ctor_cstr_alloc(this, str
, NULL
);
2125 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2126 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2127 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc
, 16)
2128 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar
*this,
2129 size_t count
, wchar_t ch
, const void *alloc
)
2131 TRACE("%p %Iu %c\n", this, count
, ch
);
2133 basic_string_wchar__Tidy(this, FALSE
);
2134 MSVCP_basic_string_wchar_assignn(this, count
, ch
);
2138 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
2139 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
2140 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor
, 4)
2141 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor(basic_string_wchar
*this)
2143 TRACE("%p\n", this);
2145 basic_string_wchar__Tidy(this, FALSE
);
2149 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2150 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2151 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc
, 8)
2152 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_alloc(
2153 basic_string_wchar
*this, const void *alloc
)
2155 TRACE("%p %p\n", this, alloc
);
2157 basic_string_wchar__Tidy(this, FALSE
);
2161 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2162 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2163 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy_ctor
, 8)
2164 basic_string_wchar
* __thiscall
basic_string_wchar_copy_ctor(
2165 basic_string_wchar
*this, const basic_string_wchar
*copy
)
2167 TRACE("%p %p\n", this, copy
);
2169 basic_string_wchar__Tidy(this, FALSE
);
2170 MSVCP_basic_string_wchar_assign(this, copy
);
2174 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2175 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2176 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor
, 4)
2177 void __thiscall
MSVCP_basic_string_wchar_dtor(basic_string_wchar
*this)
2179 TRACE("%p\n", this);
2180 basic_string_wchar__Tidy(this, TRUE
);
2183 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
2184 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
2185 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len
, 20)
2186 int __thiscall
MSVCP_basic_string_wchar_compare_substr_cstr_len(
2187 const basic_string_wchar
*this, size_t pos
, size_t num
,
2188 const wchar_t *str
, size_t count
)
2192 TRACE("%p %Iu %Iu %s %Iu\n", this, pos
, num
, debugstr_wn(str
, count
), count
);
2194 if(this->size
< pos
)
2197 if(num
> this->size
-pos
)
2198 num
= this->size
-pos
;
2200 ans
= MSVCP_char_traits_wchar_compare(this->ptr
+pos
,
2201 str
, num
>count
? count
: num
);
2207 else if(num
< count
)
2212 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
2213 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
2214 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr
, 8)
2215 int __thiscall
MSVCP_basic_string_wchar_compare_cstr(
2216 const basic_string_wchar
*this, const wchar_t *str
)
2218 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2219 str
, MSVCP_char_traits_wchar_length(str
));
2222 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
2223 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
2224 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr
, 24)
2225 int __thiscall
MSVCP_basic_string_wchar_compare_substr_substr(
2226 const basic_string_wchar
*this, size_t pos
, size_t num
,
2227 const basic_string_wchar
*compare
, size_t off
, size_t count
)
2229 TRACE("%p %Iu %Iu %p %Iu %Iu\n", this, pos
, num
, compare
, off
, count
);
2231 if(compare
->size
< off
)
2234 if(count
> compare
->size
-off
)
2235 count
= compare
->size
-off
;
2237 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2238 compare
->ptr
+off
, count
);
2241 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
2242 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
2243 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr
, 16)
2244 int __thiscall
MSVCP_basic_string_wchar_compare_substr(
2245 const basic_string_wchar
*this, size_t pos
, size_t num
,
2246 const basic_string_wchar
*compare
)
2248 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2249 compare
->ptr
, compare
->size
);
2252 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
2253 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
2254 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare
, 8)
2255 int __thiscall
MSVCP_basic_string_wchar_compare(
2256 const basic_string_wchar
*this, const basic_string_wchar
*compare
)
2258 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2259 compare
->ptr
, compare
->size
);
2262 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
2263 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
2264 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr
, 16)
2265 int __thiscall
MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar
*this,
2266 size_t pos
, size_t num
, const wchar_t *str
)
2268 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2269 str
, MSVCP_char_traits_wchar_length(str
));
2272 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2273 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2274 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2275 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2276 bool __cdecl
MSVCP_basic_string_wchar_equal(
2277 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2279 return MSVCP_basic_string_wchar_compare(left
, right
) == 0;
2282 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2283 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2284 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2285 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2286 bool __cdecl
MSVCP_basic_string_wchar_equal_str_cstr(
2287 const basic_string_wchar
*left
, const wchar_t *right
)
2289 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) == 0;
2292 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2293 /* ??$?8GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2294 /* ??8std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2295 /* ??8std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2296 bool __cdecl
MSVCP_basic_string_wchar_equal_cstr_str(
2297 const wchar_t *left
, const basic_string_wchar
*right
)
2299 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) == 0;
2302 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2303 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2304 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2305 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2306 bool __cdecl
MSVCP_basic_string_wchar_not_equal(
2307 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2309 return MSVCP_basic_string_wchar_compare(left
, right
) != 0;
2312 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2313 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2314 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2315 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2316 bool __cdecl
MSVCP_basic_string_wchar_not_equal_str_cstr(
2317 const basic_string_wchar
*left
, const wchar_t *right
)
2319 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) != 0;
2322 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2323 /* ??$?9GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2324 /* ??9std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2325 /* ??9std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2326 bool __cdecl
MSVCP_basic_string_wchar_not_equal_cstr_str(
2327 const wchar_t *left
, const basic_string_wchar
*right
)
2329 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) != 0;
2332 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2333 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2334 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2335 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2336 bool __cdecl
MSVCP_basic_string_wchar_lower(
2337 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2339 return MSVCP_basic_string_wchar_compare(left
, right
) < 0;
2342 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2343 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2344 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2345 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2346 bool __cdecl
MSVCP_basic_string_wchar_lower_bstr_cstr(
2347 const basic_string_wchar
*left
, const wchar_t *right
)
2349 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) < 0;
2352 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2353 /* ??$?MGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2354 /* ??Mstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2355 /* ??Mstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2356 bool __cdecl
MSVCP_basic_string_wchar_lower_cstr_bstr(
2357 const wchar_t *left
, const basic_string_wchar
*right
)
2359 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) > 0;
2362 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2363 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2364 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2365 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2366 bool __cdecl
MSVCP_basic_string_wchar_leq(
2367 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2369 return MSVCP_basic_string_wchar_compare(left
, right
) <= 0;
2372 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2373 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2374 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2375 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2376 bool __cdecl
MSVCP_basic_string_wchar_leq_bstr_cstr(
2377 const basic_string_wchar
*left
, const wchar_t *right
)
2379 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) <= 0;
2382 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2383 /* ??$?NGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2384 /* ??Nstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2385 /* ??Nstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2386 bool __cdecl
MSVCP_basic_string_wchar_leq_cstr_bstr(
2387 const wchar_t *left
, const basic_string_wchar
*right
)
2389 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) >= 0;
2392 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2393 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2394 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2395 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2396 bool __cdecl
MSVCP_basic_string_wchar_greater(
2397 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2399 return MSVCP_basic_string_wchar_compare(left
, right
) > 0;
2402 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2403 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2404 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2405 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2406 bool __cdecl
MSVCP_basic_string_wchar_greater_bstr_cstr(
2407 const basic_string_wchar
*left
, const wchar_t *right
)
2409 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) > 0;
2412 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2413 /* ??$?OGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2414 /* ??Ostd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2415 /* ??Ostd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2416 bool __cdecl
MSVCP_basic_string_wchar_greater_cstr_bstr(
2417 const wchar_t *left
, const basic_string_wchar
*right
)
2419 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) < 0;
2422 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2423 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2424 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2425 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2426 bool __cdecl
MSVCP_basic_string_wchar_geq(
2427 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2429 return MSVCP_basic_string_wchar_compare(left
, right
) >= 0;
2432 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2433 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2434 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2435 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2436 bool __cdecl
MSVCP_basic_string_wchar_geq_bstr_cstr(
2437 const basic_string_wchar
*left
, const wchar_t *right
)
2439 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) >= 0;
2442 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2443 /* ??$?PGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2444 /* ??Pstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2445 /* ??Pstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2446 bool __cdecl
MSVCP_basic_string_wchar_geq_cstr_bstr(
2447 const wchar_t *left
, const basic_string_wchar
*right
)
2449 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) <= 0;
2452 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2453 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2454 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr
, 16)
2455 size_t __thiscall
MSVCP_basic_string_wchar_find_cstr_substr(
2456 const basic_string_wchar
*this, const wchar_t *find
, size_t pos
, size_t len
)
2458 const wchar_t *p
, *end
;
2460 TRACE("%p %s %Iu %Iu\n", this, debugstr_wn(find
, len
), pos
, len
);
2462 if(len
==0 && pos
<=this->size
)
2464 if(pos
>=this->size
|| len
>this->size
)
2465 return MSVCP_basic_string_wchar_npos
;
2467 end
= this->ptr
+this->size
-len
+1;
2468 for(p
=this->ptr
+pos
; p
<end
; p
++) {
2469 p
= MSVCP_char_traits_wchar_find(p
, end
-p
, find
);
2473 if(!MSVCP_char_traits_wchar_compare(p
, find
, len
))
2477 return MSVCP_basic_string_wchar_npos
;
2480 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2481 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2482 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off
, 12)
2483 size_t __thiscall
MSVCP_basic_string_wchar_find_off(
2484 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2486 return MSVCP_basic_string_wchar_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
2489 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2490 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2491 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch
, 12)
2492 size_t __thiscall
MSVCP_basic_string_wchar_find_ch(
2493 const basic_string_wchar
*this, wchar_t ch
, size_t pos
)
2495 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch
, pos
, 1);
2498 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2499 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2500 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off
, 12)
2501 size_t __thiscall
MSVCP_basic_string_wchar_find_cstr_off(
2502 const basic_string_wchar
*this, const wchar_t *find
, size_t pos
)
2504 return MSVCP_basic_string_wchar_find_cstr_substr(this, find
, pos
,
2505 MSVCP_char_traits_wchar_length(find
));
2508 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2509 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2510 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr
, 16)
2511 size_t __thiscall
MSVCP_basic_string_wchar_rfind_cstr_substr(
2512 const basic_string_wchar
*this, const wchar_t *find
, size_t pos
, size_t len
)
2514 const wchar_t *p
, *end
;
2516 TRACE("%p %s %Iu %Iu\n", this, debugstr_wn(find
, len
), pos
, len
);
2519 return pos
<this->size
? pos
: this->size
;
2521 if(len
> this->size
)
2522 return MSVCP_basic_string_wchar_npos
;
2524 if(pos
> this->size
-len
)
2525 pos
= this->size
-len
;
2527 for(p
=end
+pos
; p
>=end
; p
--) {
2528 if(*p
==*find
&& !MSVCP_char_traits_wchar_compare(p
, find
, len
))
2532 return MSVCP_basic_string_wchar_npos
;
2535 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2536 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2537 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off
, 12)
2538 size_t __thiscall
MSVCP_basic_string_wchar_rfind_off(
2539 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2541 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
2544 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2545 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2546 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch
, 12)
2547 size_t __thiscall
MSVCP_basic_string_wchar_rfind_ch(
2548 const basic_string_wchar
*this, wchar_t ch
, size_t pos
)
2550 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch
, pos
, 1);
2553 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2554 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2555 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off
, 12)
2556 size_t __thiscall
MSVCP_basic_string_wchar_rfind_cstr_off(
2557 const basic_string_wchar
*this, const wchar_t *find
, size_t pos
)
2559 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find
, pos
,
2560 MSVCP_char_traits_wchar_length(find
));
2563 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2564 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2565 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr
, 16)
2566 size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2567 const basic_string_wchar
*this, const wchar_t *find
, size_t off
, size_t len
)
2569 const wchar_t *p
, *end
;
2571 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
2573 if(off
<this->size
) {
2574 end
= this->ptr
+this->size
;
2575 for(p
=this->ptr
+off
; p
<end
; p
++)
2576 if(!MSVCP_char_traits_wchar_find(find
, len
, p
))
2580 return MSVCP_basic_string_wchar_npos
;
2583 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2584 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2585 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of
, 12)
2586 size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of(
2587 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2589 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
2590 find
->ptr
, off
, find
->size
);
2593 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2594 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2595 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch
, 12)
2596 size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_ch(
2597 const basic_string_wchar
*this, wchar_t ch
, size_t off
)
2599 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
2602 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2603 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2604 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr
, 12)
2605 size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_cstr(
2606 const basic_string_wchar
*this, const wchar_t *find
, size_t off
)
2608 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2609 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2612 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2613 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2614 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr
, 16)
2615 size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2616 const basic_string_wchar
*this, const wchar_t *find
, size_t off
, size_t len
)
2618 const wchar_t *p
, *end
;
2620 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
2622 if(len
>0 && off
<this->size
) {
2623 end
= this->ptr
+this->size
;
2624 for(p
=this->ptr
+off
; p
<end
; p
++)
2625 if(MSVCP_char_traits_wchar_find(find
, len
, p
))
2629 return MSVCP_basic_string_wchar_npos
;
2632 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2633 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2634 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of
, 12)
2635 size_t __thiscall
MSVCP_basic_string_wchar_find_first_of(
2636 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2638 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
2639 find
->ptr
, off
, find
->size
);
2642 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2643 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2644 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch
, 12)
2645 size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_ch(
2646 const basic_string_wchar
*this, wchar_t ch
, size_t off
)
2648 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch
, off
, 1);
2651 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2652 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2653 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr
, 12)
2654 size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_cstr(
2655 const basic_string_wchar
*this, const wchar_t *find
, size_t off
)
2657 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2658 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2661 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2662 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2663 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr
, 16)
2664 size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
2665 const basic_string_wchar
*this, const wchar_t *find
, size_t off
, size_t len
)
2667 const wchar_t *p
, *beg
;
2669 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
2671 if(len
>0 && this->size
>0) {
2672 if(off
>= this->size
)
2676 for(p
=beg
+off
; p
>=beg
; p
--)
2677 if(!MSVCP_char_traits_wchar_find(find
, len
, p
))
2681 return MSVCP_basic_string_wchar_npos
;
2684 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2685 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2686 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of
, 12)
2687 size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of(
2688 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2690 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
2691 find
->ptr
, off
, find
->size
);
2694 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2695 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2696 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch
, 12)
2697 size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_ch(
2698 const basic_string_wchar
*this, wchar_t ch
, size_t off
)
2700 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
2703 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2704 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2705 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr
, 12)
2706 size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_cstr(
2707 const basic_string_wchar
*this, const wchar_t *find
, size_t off
)
2709 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
2710 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2713 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2714 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2715 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr
, 16)
2716 size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_cstr_substr(
2717 const basic_string_wchar
*this, const wchar_t *find
, size_t off
, size_t len
)
2719 const wchar_t *p
, *beg
;
2721 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
2723 if(len
>0 && this->size
>0) {
2724 if(off
>= this->size
)
2728 for(p
=beg
+off
; p
>=beg
; p
--)
2729 if(MSVCP_char_traits_wchar_find(find
, len
, p
))
2733 return MSVCP_basic_string_wchar_npos
;
2736 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2737 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2738 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of
, 12)
2739 size_t __thiscall
MSVCP_basic_string_wchar_find_last_of(
2740 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2742 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
2743 find
->ptr
, off
, find
->size
);
2746 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2747 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2748 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch
, 12)
2749 size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_ch(
2750 const basic_string_wchar
*this, wchar_t ch
, size_t off
)
2752 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch
, off
, 1);
2755 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2756 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2757 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr
, 12)
2758 size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_cstr(
2759 const basic_string_wchar
*this, const wchar_t *find
, size_t off
)
2761 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
2762 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2765 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2766 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2767 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr
, 16)
2768 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_substr(basic_string_wchar
*this,
2769 const basic_string_wchar
*append
, size_t offset
, size_t count
)
2771 TRACE("%p %p %Iu %Iu\n", this, append
, offset
, count
);
2773 if(append
->size
< offset
)
2776 if(count
> append
->size
-offset
)
2777 count
= append
->size
-offset
;
2779 if(MSVCP_basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2782 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2784 MSVCP_char_traits_wchar__Copy_s(this->ptr
+this->size
, this->res
-this->size
,
2785 append
->ptr
+offset
, count
);
2786 basic_string_wchar__Eos(this, this->size
+count
);
2792 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2793 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2794 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len
, 12)
2795 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_cstr_len(
2796 basic_string_wchar
*this, const wchar_t *append
, size_t count
)
2798 TRACE("%p %s %Iu\n", this, debugstr_wn(append
, count
), count
);
2800 if(basic_string_wchar_inside(this, append
))
2801 return MSVCP_basic_string_wchar_append_substr(this, this, append
-this->ptr
, count
);
2803 if(MSVCP_basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2806 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2807 MSVCP_char_traits_wchar__Copy_s(this->ptr
+this->size
,
2808 this->res
-this->size
, append
, count
);
2809 basic_string_wchar__Eos(this, this->size
+count
);
2815 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2816 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2817 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch
, 12)
2818 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_len_ch(
2819 basic_string_wchar
*this, size_t count
, wchar_t ch
)
2821 TRACE("%p %Iu %c\n", this, count
, ch
);
2823 if(MSVCP_basic_string_wchar_npos
-this->size
<= count
)
2826 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2827 MSVCP_char_traits_wchar_assignn(this->ptr
+this->size
, count
, ch
);
2828 basic_string_wchar__Eos(this, this->size
+count
);
2834 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2835 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2836 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2837 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2838 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append
, 8)
2839 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append(
2840 basic_string_wchar
*this, const basic_string_wchar
*append
)
2842 return MSVCP_basic_string_wchar_append_substr(this, append
,
2843 0, MSVCP_basic_string_wchar_npos
);
2846 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2847 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2848 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch
, 8)
2849 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_ch(
2850 basic_string_wchar
*this, wchar_t ch
)
2852 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch
);
2855 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2856 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2857 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end
, 12)
2858 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_beg_end(
2859 basic_string_wchar
*this, const wchar_t *beg
, const wchar_t *end
)
2861 return MSVCP_basic_string_wchar_append_cstr_len(this, beg
, end
-beg
);
2864 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2865 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2866 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2867 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2868 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr
, 8)
2869 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_cstr(
2870 basic_string_wchar
*this, const wchar_t *append
)
2872 return MSVCP_basic_string_wchar_append_cstr_len(this, append
,
2873 MSVCP_char_traits_wchar_length(append
));
2875 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
2876 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
2877 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
2878 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
2879 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate(basic_string_wchar
*ret
,
2880 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2882 TRACE("%p %p\n", left
, right
);
2884 basic_string_wchar_copy_ctor(ret
, left
);
2885 MSVCP_basic_string_wchar_append(ret
, right
);
2889 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
2890 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
2891 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
2892 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
2893 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_bstr_ch(basic_string_wchar
*ret
,
2894 const basic_string_wchar
*left
, wchar_t right
)
2896 TRACE("%p %c\n", left
, right
);
2898 basic_string_wchar_copy_ctor(ret
, left
);
2899 MSVCP_basic_string_wchar_append_ch(ret
, right
);
2903 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
2904 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
2905 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
2906 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
2907 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar
*ret
,
2908 const basic_string_wchar
*left
, const wchar_t *right
)
2910 TRACE("%p %s\n", left
, debugstr_w(right
));
2912 basic_string_wchar_copy_ctor(ret
, left
);
2913 MSVCP_basic_string_wchar_append_cstr(ret
, right
);
2917 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
2918 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
2919 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
2920 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
2921 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_ch_bstr(basic_string_wchar
*ret
,
2922 wchar_t left
, const basic_string_wchar
*right
)
2924 TRACE("%c %p\n", left
, right
);
2926 MSVCP_basic_string_wchar_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
2927 MSVCP_basic_string_wchar_append(ret
, right
);
2931 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
2932 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2933 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
2934 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2935 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar
*ret
,
2936 const wchar_t *left
, const basic_string_wchar
*right
)
2938 TRACE("%s %p\n", debugstr_w(left
), right
);
2940 MSVCP_basic_string_wchar_ctor_cstr_alloc(ret
, left
, NULL
);
2941 MSVCP_basic_string_wchar_append(ret
, right
);
2945 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2946 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2947 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at
, 8)
2948 wchar_t* __thiscall
MSVCP_basic_string_wchar_operator_at(
2949 basic_string_wchar
*this, size_t pos
)
2951 TRACE("%p %Iu\n", this, pos
);
2953 if(!this->ptr
|| pos
>this->size
)
2954 return (wchar_t*)basic_string_wchar__Nullstr();
2956 basic_string_wchar__Freeze(this);
2957 return this->ptr
+pos
;
2960 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2961 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2962 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at_const
, 8)
2963 const wchar_t* __thiscall
MSVCP_basic_string_wchar_operator_at_const(
2964 const basic_string_wchar
*this, size_t pos
)
2966 TRACE("%p %Iu\n", this, pos
);
2969 return basic_string_wchar__Nullstr();
2970 return this->ptr
+pos
;
2973 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2974 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2975 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2976 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2977 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at
, 8)
2978 wchar_t* __thiscall
MSVCP_basic_string_wchar_at(
2979 basic_string_wchar
*this, size_t pos
)
2981 TRACE("%p %Iu\n", this, pos
);
2983 if(this->size
<= pos
)
2986 return this->ptr
+pos
;
2989 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
2990 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
2991 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len
, 20)
2992 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr_len(basic_string_wchar
*this,
2993 size_t off
, size_t len
, const wchar_t *str
, size_t str_len
)
2995 size_t inside_pos
= -1;
2996 wchar_t *ptr
= this->ptr
;
2998 TRACE("%p %Iu %Iu %p %Iu\n", this, off
, len
, str
, str_len
);
3000 if(this->size
< off
)
3003 if(len
> this->size
-off
)
3004 len
= this->size
-off
;
3006 if(MSVCP_basic_string_wchar_npos
-str_len
<= this->size
-len
)
3009 if(basic_string_wchar_inside(this, str
))
3010 inside_pos
= str
-ptr
;
3012 if(this->size
-len
+str_len
)
3013 basic_string_wchar__Grow(this, this->size
-len
+str_len
, FALSE
);
3016 if(inside_pos
== -1) {
3017 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3018 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
3019 } else if(len
>= str_len
) {
3020 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
3021 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3025 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3027 if(inside_pos
< off
+len
) {
3028 size
= off
+len
-inside_pos
;
3031 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
3037 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
3041 basic_string_wchar__Eos(this, this->size
-len
+str_len
);
3045 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3046 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3047 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr
, 24)
3048 basic_string_wchar
* __thiscall
basic_string_wchar_replace_substr(basic_string_wchar
*this, size_t off
,
3049 size_t len
, const basic_string_wchar
*str
, size_t str_off
, size_t str_len
)
3051 if(str
->size
< str_off
)
3054 if(str_len
> str
->size
-str_off
)
3055 str_len
= str
->size
-str_off
;
3057 return basic_string_wchar_replace_cstr_len(this, off
, len
,
3058 str
->ptr
+str_off
, str_len
);
3061 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3062 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3063 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace
, 16)
3064 basic_string_wchar
* __thiscall
basic_string_wchar_replace(basic_string_wchar
*this,
3065 size_t off
, size_t len
, const basic_string_wchar
*str
)
3067 return basic_string_wchar_replace_cstr_len(this, off
, len
,
3068 str
->ptr
, str
->size
);
3071 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3072 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3073 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch
, 20)
3074 basic_string_wchar
* __thiscall
basic_string_wchar_replace_ch(basic_string_wchar
*this,
3075 size_t off
, size_t len
, size_t count
, wchar_t ch
)
3079 TRACE("%p %Iu %Iu %Iu %c\n", this, off
, len
, count
, ch
);
3081 if(this->size
< off
)
3084 if(len
> this->size
-off
)
3085 len
= this->size
-off
;
3087 if(MSVCP_basic_string_wchar_npos
-count
<= this->size
-len
)
3090 if(this->size
-len
+count
)
3091 basic_string_wchar__Grow(this, this->size
-len
+count
, FALSE
);
3094 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3095 MSVCP_char_traits_wchar_assignn(ptr
+off
, count
, ch
);
3096 basic_string_wchar__Eos(this, this->size
-len
+count
);
3101 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3102 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3103 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr
, 16)
3104 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr(basic_string_wchar
*this,
3105 size_t off
, size_t len
, const wchar_t *str
)
3107 return basic_string_wchar_replace_cstr_len(this, off
, len
, str
,
3108 MSVCP_char_traits_wchar_length(str
));
3111 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3112 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3113 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert
, 12)
3114 basic_string_wchar
* __thiscall
basic_string_wchar_insert(basic_string_wchar
*this,
3115 size_t off
, const basic_string_wchar
*str
)
3117 return basic_string_wchar_replace(this, off
, 0, str
);
3120 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3121 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3122 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr
, 20)
3123 basic_string_wchar
* __thiscall
basic_string_wchar_insert_substr(
3124 basic_string_wchar
*this, size_t off
, const basic_string_wchar
*str
,
3125 size_t str_off
, size_t str_count
)
3127 return basic_string_wchar_replace_substr(this, off
, 0, str
, str_off
, str_count
);
3130 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3131 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3132 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr
, 12)
3133 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr(
3134 basic_string_wchar
*this, size_t off
, const wchar_t *str
)
3136 return basic_string_wchar_replace_cstr(this, off
, 0, str
);
3139 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3140 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3141 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len
, 16)
3142 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr_len(basic_string_wchar
*this,
3143 size_t off
, const wchar_t *str
, size_t str_len
)
3145 return basic_string_wchar_replace_cstr_len(this, off
, 0, str
, str_len
);
3148 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3149 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3150 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn
, 16)
3151 basic_string_wchar
* __thiscall
basic_string_wchar_insert_chn(basic_string_wchar
*this,
3152 size_t off
, size_t count
, wchar_t ch
)
3154 return basic_string_wchar_replace_ch(this, off
, 0, count
, ch
);
3157 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
3158 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
3159 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch
, 12)
3160 void __thiscall
MSVCP_basic_string_wchar_resize_ch(
3161 basic_string_wchar
*this, size_t size
, wchar_t ch
)
3163 TRACE("%p %Iu %c\n", this, size
, ch
);
3165 if(size
<= this->size
)
3166 MSVCP_basic_string_wchar_erase(this, size
, this->size
);
3168 MSVCP_basic_string_wchar_append_len_ch(this, size
-this->size
, ch
);
3171 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3172 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3173 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize
, 8)
3174 void __thiscall
MSVCP_basic_string_wchar_resize(
3175 basic_string_wchar
*this, size_t size
)
3177 MSVCP_basic_string_wchar_resize_ch(this, size
, '\0');
3180 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3181 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3182 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3183 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3184 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str
, 4)
3185 const wchar_t* __thiscall
MSVCP_basic_string_wchar_c_str(const basic_string_wchar
*this)
3187 TRACE("%p\n", this);
3188 return this->ptr
? this->ptr
: basic_string_wchar__Nullstr();
3191 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3192 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3193 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3194 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3195 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length
, 4)
3196 size_t __thiscall
MSVCP_basic_string_wchar_length(const basic_string_wchar
*this)
3198 TRACE("%p\n", this);
3202 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3203 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3204 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size
, 4)
3205 size_t __thiscall
basic_string_wchar_max_size(const basic_string_wchar
*this)
3207 TRACE("%p\n", this);
3208 return MSVCP_allocator_wchar_max_size(NULL
)-1;
3211 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3212 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3213 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity
, 4)
3214 size_t __thiscall
MSVCP_basic_string_wchar_capacity(basic_string_wchar
*this)
3216 TRACE("%p\n", this);
3220 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3221 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3222 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve
, 8)
3223 void __thiscall
MSVCP_basic_string_wchar_reserve(basic_string_wchar
*this, size_t size
)
3227 TRACE("%p %Iu\n", this, size
);
3233 if(basic_string_wchar__Grow(this, size
, FALSE
))
3234 basic_string_wchar__Eos(this, len
);
3237 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
3238 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
3239 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty
, 4)
3240 bool __thiscall
MSVCP_basic_string_wchar_empty(basic_string_wchar
*this)
3242 TRACE("%p\n", this);
3243 return this->size
== 0;
3246 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
3247 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
3248 DEFINE_THISCALL_WRAPPER(basic_string_wchar_swap
, 8)
3249 void __thiscall
basic_string_wchar_swap(basic_string_wchar
*this, basic_string_wchar
*str
)
3251 basic_string_wchar tmp
;
3252 TRACE("%p %p\n", this, str
);
3259 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
3260 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
3261 DEFINE_THISCALL_WRAPPER(basic_string_wchar_substr
, 16)
3262 basic_string_wchar
* __thiscall
basic_string_wchar_substr(basic_string_wchar
*this,
3263 basic_string_wchar
*ret
, size_t off
, size_t len
)
3265 TRACE("%p %Iu %Iu\n", this, off
, len
);
3267 MSVCP_basic_string_wchar_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
3271 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
3272 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
3273 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy
, 16)
3274 size_t __thiscall
basic_string_wchar_copy(const basic_string_wchar
*this,
3275 wchar_t *dest
, size_t count
, size_t off
)
3277 TRACE("%p %p %Iu %Iu\n", this, dest
, count
, off
);
3279 if(off
> this->size
)
3281 if(count
> this->size
-off
)
3282 count
= this->size
-off
;
3284 MSVCP_char_traits_wchar__Copy_s(dest
, count
, this->ptr
+off
, count
);
3288 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
3289 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
3290 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator
, 8)
3291 allocator
* __thiscall
basic_string_wchar_get_allocator(const basic_string_wchar
*this, allocator
*ret
)
3293 TRACE("%p\n", this);
3297 /* Old iterator functions */
3299 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAIPBD0@Z */
3300 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CA_KPEBD0@Z */
3301 size_t __cdecl
basic_string_char__Pdif(const char *i1
, const char *i2
)
3303 TRACE("(%p %p)\n", i1
, i2
);
3304 return !i1
? 0 : i1
-i2
;
3307 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD0@Z */
3308 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD0@Z */
3309 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter
, 12)
3310 char* __thiscall
basic_string_char_erase_iter(basic_string_char
*this, char *beg
, char *end
)
3312 size_t pos
= basic_string_char__Pdif(beg
, this->ptr
);
3313 MSVCP_basic_string_char_erase(this, pos
, basic_string_char__Pdif(end
, beg
));
3314 return basic_string_char__Psum(this->ptr
, pos
);
3317 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD1@Z */
3318 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD1@Z */
3319 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter
, 20)
3320 basic_string_char
* __thiscall
basic_string_char_replace_iter_iter(basic_string_char
*this,
3321 char *beg1
, char *end1
, const char *beg2
, const char *end2
)
3323 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg1
, this->ptr
),
3324 basic_string_char__Pdif(end1
, beg1
), beg2
, basic_string_char__Pdif(end2
, beg2
));
3327 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ABV12@@Z */
3328 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0AEBV12@@Z */
3329 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr
, 16)
3330 basic_string_char
* __thiscall
basic_string_char_replace_iter_bstr(basic_string_char
*this,
3331 char *beg
, char *end
, const basic_string_char
*str
)
3333 return basic_string_char_replace(this, basic_string_char__Pdif(beg
, this->ptr
),
3334 basic_string_char__Pdif(end
, beg
), str
);
3337 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ID@Z */
3338 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0_KD@Z */
3339 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_chn
, 20)
3340 basic_string_char
* __thiscall
basic_string_char_replace_iter_chn(basic_string_char
*this,
3341 char *beg
, char *end
, size_t count
, char ch
)
3343 return basic_string_char_replace_ch(this, basic_string_char__Pdif(beg
, this->ptr
),
3344 basic_string_char__Pdif(end
, beg
), count
, ch
);
3347 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD@Z */
3348 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD@Z */
3349 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr
, 16)
3350 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr(basic_string_char
*this,
3351 char *beg
, char *end
, const char *str
)
3353 return basic_string_char_replace_cstr(this, basic_string_char__Pdif(beg
, this->ptr
),
3354 basic_string_char__Pdif(end
, beg
), str
);
3357 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBDI@Z */
3358 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD_K@Z */
3359 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len
, 20)
3360 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr_len(basic_string_char
*this,
3361 char *beg
, char *end
, const char *str
, size_t len
)
3363 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg
, this->ptr
),
3364 basic_string_char__Pdif(end
, beg
), str
, len
);
3367 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADID@Z */
3368 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEAD_KD@Z */
3369 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn
, 16)
3370 void __thiscall
basic_string_char_insert_iter_chn(basic_string_char
*this,
3371 char *pos
, size_t n
, char ch
)
3373 basic_string_char_insert_chn(this, basic_string_char__Pdif(pos
, this->ptr
), n
, ch
);
3376 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPADD@Z */
3377 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEADD@Z */
3378 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch
, 12)
3379 char* __thiscall
basic_string_char_insert_iter_ch(basic_string_char
*this, char *pos
, char ch
)
3381 size_t off
= basic_string_char__Pdif(pos
, this->ptr
);
3382 basic_string_char_insert_chn(this, off
, 1, ch
);
3383 return basic_string_char__Psum(this->ptr
, off
);
3386 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
3387 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
3388 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
3389 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
3390 DEFINE_THISCALL_WRAPPER(basic_string_char_begin
, 4)
3391 char* __thiscall
basic_string_char_begin(basic_string_char
*this)
3393 TRACE("(%p)\n", this);
3394 basic_string_char__Freeze(this);
3398 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
3399 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
3400 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
3401 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
3402 DEFINE_THISCALL_WRAPPER(basic_string_char_end
, 4)
3403 char* __thiscall
basic_string_char_end(basic_string_char
*this)
3405 TRACE("(%p)\n", this);
3406 basic_string_char__Freeze(this);
3407 return this->ptr
+this->size
;
3410 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
3411 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
3412 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
3413 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
3414 DEFINE_THISCALL_WRAPPER(basic_string_char_rbegin
, 8)
3415 String_reverse_iterator_char
* __thiscall
basic_string_char_rbegin(
3416 basic_string_char
*this, String_reverse_iterator_char
*ret
)
3418 TRACE("(%p %p)\n", this, ret
);
3419 ret
->ptr
= basic_string_char_end(this);
3423 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
3424 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
3425 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
3426 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
3427 DEFINE_THISCALL_WRAPPER(basic_string_char_rend
, 8)
3428 String_reverse_iterator_char
* __thiscall
basic_string_char_rend(
3429 basic_string_char
*this, String_reverse_iterator_char
*ret
)
3431 TRACE("(%p %p)\n", this, ret
);
3432 ret
->ptr
= basic_string_char_begin(this);
3436 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0ABV?$allocator@D@1@@Z */
3437 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0AEBV?$allocator@D@1@@Z */
3438 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter
, 16)
3439 basic_string_char
* __thiscall
basic_string_char_ctor_iter(basic_string_char
*this,
3440 const char *first
, const char *last
, allocator
*alloc
)
3442 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
3444 basic_string_char__Tidy(this, FALSE
);
3445 MSVCP_basic_string_char_assign_cstr_len(this, first
, basic_string_char__Pdif(last
, first
));
3449 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADPBD1@Z */
3450 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEADPEBD1@Z */
3451 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter
, 16)
3452 void __thiscall
basic_string_char_insert_iter(basic_string_char
*this,
3453 char *pos
, const char *beg
, const char *end
)
3455 basic_string_char_insert_cstr_len(this, basic_string_char__Pdif(pos
, this->ptr
),
3456 beg
, basic_string_char__Pdif(end
, beg
));
3459 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAIPBG0@Z */
3460 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CA_KPEBG0@Z */
3461 size_t __cdecl
basic_string_wchar__Pdif(const wchar_t *i1
, const wchar_t *i2
)
3463 TRACE("(%p %p)\n", i1
, i2
);
3464 return !i1
? 0 : i1
-i2
;
3467 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG0@Z */
3468 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG0@Z */
3469 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter
, 12)
3470 wchar_t* __thiscall
basic_string_wchar_erase_iter(basic_string_wchar
*this, wchar_t *beg
, wchar_t *end
)
3472 size_t pos
= basic_string_wchar__Pdif(beg
, this->ptr
);
3473 MSVCP_basic_string_wchar_erase(this, pos
, basic_string_wchar__Pdif(end
, beg
));
3474 return basic_string_wchar__Psum(this->ptr
, pos
);
3477 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0ABV?$allocator@G@1@@Z */
3478 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0AEBV?$allocator@G@1@@Z */
3479 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter
, 16)
3480 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_iter(basic_string_wchar
*this,
3481 const wchar_t *first
, const wchar_t *last
, allocator
*alloc
)
3483 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
3485 basic_string_wchar__Tidy(this, FALSE
);
3486 MSVCP_basic_string_wchar_assign_cstr_len(this, first
, basic_string_wchar__Pdif(last
, first
));
3490 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG1@Z */
3491 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG1@Z */
3492 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter
, 20)
3493 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_iter(basic_string_wchar
*this,
3494 wchar_t *beg1
, wchar_t *end1
, const wchar_t *beg2
, const wchar_t *end2
)
3496 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg1
, this->ptr
),
3497 basic_string_wchar__Pdif(end1
, beg1
), beg2
, basic_string_wchar__Pdif(end2
, beg2
));
3500 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0ABV12@@Z */
3501 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0AEBV12@@Z */
3502 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr
, 16)
3503 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_bstr(basic_string_wchar
*this,
3504 wchar_t *beg
, wchar_t *end
, const basic_string_wchar
*str
)
3506 return basic_string_wchar_replace(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3507 basic_string_wchar__Pdif(end
, beg
), str
);
3510 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0IG@Z */
3511 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0_KG@Z */
3512 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_chn
, 20)
3513 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_chn(basic_string_wchar
*this,
3514 wchar_t *beg
, wchar_t *end
, size_t count
, wchar_t ch
)
3516 return basic_string_wchar_replace_ch(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3517 basic_string_wchar__Pdif(end
, beg
), count
, ch
);
3520 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG@Z */
3521 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG@Z */
3522 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr
, 16)
3523 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr(basic_string_wchar
*this,
3524 wchar_t *beg
, wchar_t *end
, const wchar_t *str
)
3526 return basic_string_wchar_replace_cstr(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3527 basic_string_wchar__Pdif(end
, beg
), str
);
3530 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBGI@Z */
3531 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG_K@Z */
3532 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len
, 20)
3533 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr_len(basic_string_wchar
*this,
3534 wchar_t *beg
, wchar_t *end
, const wchar_t *str
, size_t len
)
3536 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3537 basic_string_wchar__Pdif(end
, beg
), str
, len
);
3540 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGIG@Z */
3541 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAG_KG@Z */
3542 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn
, 16)
3543 void __thiscall
basic_string_wchar_insert_iter_chn(basic_string_wchar
*this,
3544 wchar_t *pos
, size_t n
, wchar_t ch
)
3546 basic_string_wchar_insert_chn(this, basic_string_wchar__Pdif(pos
, this->ptr
), n
, ch
);
3549 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAGG@Z */
3550 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAGG@Z */
3551 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch
, 12)
3552 wchar_t* __thiscall
basic_string_wchar_insert_iter_ch(basic_string_wchar
*this, wchar_t *pos
, wchar_t ch
)
3554 size_t off
= basic_string_wchar__Pdif(pos
, this->ptr
);
3555 basic_string_wchar_insert_chn(this, off
, 1, ch
);
3556 return basic_string_wchar__Psum(this->ptr
, off
);
3559 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3560 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3561 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3562 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3563 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin
, 4)
3564 wchar_t* __thiscall
basic_string_wchar_begin(basic_string_wchar
*this)
3566 TRACE("(%p)\n", this);
3567 basic_string_wchar__Freeze(this);
3571 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3572 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3573 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3574 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3575 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end
, 4)
3576 wchar_t* __thiscall
basic_string_wchar_end(basic_string_wchar
*this)
3578 TRACE("(%p)\n", this);
3579 basic_string_wchar__Freeze(this);
3580 return this->ptr
+this->size
;
3583 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3584 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3585 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3586 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3587 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rbegin
, 8)
3588 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rbegin(
3589 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3591 TRACE("(%p %p)\n", this, ret
);
3592 ret
->ptr
= basic_string_wchar_end(this);
3596 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3597 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3598 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3599 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3600 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rend
, 8)
3601 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rend(
3602 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3604 TRACE("(%p %p)\n", this, ret
);
3605 ret
->ptr
= basic_string_wchar_begin(this);
3609 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGPBG1@Z */
3610 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAGPEBG1@Z */
3611 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter
, 16)
3612 void __thiscall
basic_string_wchar_insert_iter(basic_string_wchar
*this,
3613 wchar_t *pos
, const wchar_t *beg
, const wchar_t *end
)
3615 basic_string_wchar_insert_cstr_len(this, basic_string_wchar__Pdif(pos
, this->ptr
),
3616 beg
, basic_string_wchar__Pdif(end
, beg
));