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
);
32 /* _String_iterator<char> and _String_const_iterator<char> class */
35 } String_reverse_iterator_char
;
39 } String_reverse_iterator_wchar
;
46 /* ?_Xran@std@@YAXXZ */
47 void __cdecl
_Xran(void)
50 _Xout_of_range("invalid string position");
53 /* ?_Xlen@std@@YAXXZ */
54 void __cdecl
_Xlen(void)
57 _Xlength_error("string too long");
60 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
61 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
62 int CDECL
MSVCP_char_traits_char_compare(
63 const char *s1
, const char *s2
, size_t count
)
65 int ret
= memcmp(s1
, s2
, count
);
66 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
69 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
70 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
71 size_t CDECL
MSVCP_char_traits_char_length(const char *str
)
76 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
77 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
78 char* CDECL
MSVCP_char_traits_char__Copy_s(char *dest
,
79 size_t size
, const char *src
, size_t count
)
81 if(!dest
|| !src
|| size
<count
) {
84 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
88 return memcpy(dest
, src
, count
);
91 /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */
92 /* ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
93 char* CDECL
MSVCP_char_traits_char_copy(
94 char *dest
, const char *src
, size_t count
)
96 return MSVCP_char_traits_char__Copy_s(dest
, count
, src
, count
);
99 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
100 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
101 const char * CDECL
MSVCP_char_traits_char_find(
102 const char *str
, size_t range
, const char *c
)
104 return memchr(str
, *c
, range
);
107 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
108 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
109 char* CDECL
MSVCP_char_traits_char__Move_s(char *dest
,
110 size_t size
, const char *src
, size_t count
)
112 if(!dest
|| !src
|| size
<count
) {
115 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
119 return memmove(dest
, src
, count
);
122 /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */
123 /* ?move@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
124 char* CDECL
MSVCP_char_traits_char_move(
125 char *dest
, const char *src
, size_t count
)
127 return MSVCP_char_traits_char__Move_s(dest
, count
, src
, count
);
130 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
131 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
132 char* CDECL
MSVCP_char_traits_char_assignn(char *str
, size_t num
, char c
)
134 return memset(str
, c
, num
);
137 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
138 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
139 int CDECL
MSVCP_char_traits_wchar_compare(const wchar_t *s1
,
140 const wchar_t *s2
, size_t count
)
145 for (i
= 0; i
< count
&& !ret
; i
++) ret
= s1
[i
] - s2
[i
];
146 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
149 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
150 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
151 size_t CDECL
MSVCP_char_traits_wchar_length(const wchar_t *str
)
153 return wcslen((WCHAR
*)str
);
156 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
157 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
158 wchar_t* CDECL
MSVCP_char_traits_wchar__Copy_s(wchar_t *dest
,
159 size_t size
, const wchar_t *src
, size_t count
)
161 if(!dest
|| !src
|| size
<count
) {
164 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
168 return memcpy(dest
, src
, count
* sizeof(wchar_t));
171 /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
172 /* ?copy@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
173 wchar_t* CDECL
MSVCP_char_traits_wchar_copy(wchar_t *dest
,
174 const wchar_t *src
, size_t count
)
176 return MSVCP_char_traits_wchar__Copy_s(dest
, count
, src
, count
);
179 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
180 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
181 const wchar_t* CDECL
MSVCP_char_traits_wchar_find(
182 const wchar_t *str
, size_t range
, const wchar_t *c
)
186 for(i
=0; i
<range
; i
++)
193 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
194 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
195 wchar_t* CDECL
MSVCP_char_traits_wchar__Move_s(wchar_t *dest
,
196 size_t size
, const wchar_t *src
, size_t count
)
198 if(!dest
|| !src
|| size
<count
) {
201 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
205 return memmove(dest
, src
, count
* sizeof(WCHAR
));
208 /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
209 /* ?move@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
210 wchar_t* CDECL
MSVCP_char_traits_wchar_move(wchar_t *dest
,
211 const wchar_t *src
, size_t count
)
213 return MSVCP_char_traits_wchar__Move_s(dest
, count
, src
, count
);
216 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
217 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
218 wchar_t* CDECL
MSVCP_char_traits_wchar_assignn(wchar_t *str
,
219 size_t num
, wchar_t c
)
229 static bool basic_string_char_inside(
230 basic_string_char
*this, const char *ptr
)
232 return ptr
>=this->ptr
&& ptr
<this->ptr
+this->size
;
235 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
236 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
237 const size_t MSVCP_basic_string_char_npos
= -1;
239 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ@4DB */
240 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ@4DB */
241 const char basic_string_char_nullbyte
= '\0';
243 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ */
244 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ */
245 const char* __cdecl
basic_string_char__Nullstr(void)
247 return &basic_string_char_nullbyte
;
250 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEAAEPBD@Z */
251 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAAEAEPEBD@Z */
252 DEFINE_THISCALL_WRAPPER(basic_string_char__Refcnt
, 8)
253 unsigned char* __thiscall
basic_string_char__Refcnt(basic_string_char
*this, const char *ptr
)
255 TRACE("(%p %p)\n", this, ptr
);
256 return (unsigned char*)ptr
-1;
259 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
260 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
261 DEFINE_THISCALL_WRAPPER(basic_string_char__Eos
, 8)
262 void __thiscall
basic_string_char__Eos(basic_string_char
*this, size_t len
)
268 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
269 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
270 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear
, 4)
271 void __thiscall
MSVCP_basic_string_char_clear(basic_string_char
*this)
274 basic_string_char__Eos(this, 0);
277 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
278 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
279 DEFINE_THISCALL_WRAPPER(basic_string_char__Tidy
, 8)
280 void __thiscall
basic_string_char__Tidy(basic_string_char
*this, bool built
)
282 TRACE("(%p %d)\n", this, built
);
284 if(!built
|| !this->ptr
);
285 else if(!this->ptr
[-1] || (unsigned char)this->ptr
[-1]==FROZEN
)
286 MSVCP_allocator_char_deallocate(NULL
, this->ptr
-1, this->res
+2);
290 memset(this, 0, sizeof(*this));
293 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAE_NI_N@Z */
294 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAA_N_K_N@Z */
295 DEFINE_THISCALL_WRAPPER(basic_string_char__Grow
, 12)
296 bool __thiscall
basic_string_char__Grow(basic_string_char
*this, size_t new_size
, bool trim
)
300 basic_string_char__Tidy(this, TRUE
);
302 basic_string_char__Eos(this, 0);
303 } else if(this->res
<new_size
|| trim
||
304 (this->ptr
&& this->ptr
[-1] && (unsigned char)this->ptr
[-1]!=FROZEN
)) {
305 size_t new_res
= new_size
, len
= this->size
;
308 if(!trim
&& this->ptr
&& !this->ptr
[-1]) {
310 if(new_res
/3 < this->res
/2)
311 new_res
= this->res
+ this->res
/2;
314 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_res
+2);
317 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_size
+2);
320 ERR("Out of memory\n");
329 MSVCP_char_traits_char__Copy_s(ptr
+1, new_size
, this->ptr
, len
);
330 basic_string_char__Tidy(this, TRUE
);
333 basic_string_char__Eos(this, len
);
339 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
340 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
341 DEFINE_THISCALL_WRAPPER(basic_string_char__Split
, 4)
342 void __thiscall
basic_string_char__Split(basic_string_char
*this)
347 TRACE("(%p)\n", this);
349 if(!this->ptr
|| !this->ptr
[-1] || (unsigned char)this->ptr
[-1]==FROZEN
)
354 basic_string_char__Tidy(this, TRUE
);
355 if(basic_string_char__Grow(this, len
, FALSE
)) {
357 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, ptr
, len
);
358 basic_string_char__Eos(this, len
);
362 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
363 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
364 DEFINE_THISCALL_WRAPPER(basic_string_char__Freeze
, 4)
365 void __thiscall
basic_string_char__Freeze(basic_string_char
*this)
367 TRACE("(%p)\n", this);
368 basic_string_char__Split(this);
370 this->ptr
[-1] = FROZEN
;
373 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
374 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
375 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy
, 8)
376 void __thiscall
basic_string_char__Copy(basic_string_char
*this, size_t copy_len
)
378 TRACE("%p %Iu\n", this, copy_len
);
380 if(!basic_string_char__Grow(this, copy_len
, TRUE
))
384 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPADPADI@Z */
385 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEADPEAD_K@Z */
386 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDPBDI@Z */
387 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDPEBD_K@Z */
388 char* __cdecl
basic_string_char__Psum(char *iter
, size_t add
)
390 TRACE("(%p %Iu)\n", iter
, add
);
391 return iter
? iter
+add
: iter
;
394 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
395 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
396 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase
, 12)
397 basic_string_char
* __thiscall
MSVCP_basic_string_char_erase(
398 basic_string_char
*this, size_t pos
, size_t len
)
400 TRACE("%p %Iu %Iu\n", this, pos
, len
);
405 if(len
> this->size
-pos
)
406 len
= this->size
-pos
;
409 basic_string_char__Split(this);
410 MSVCP_char_traits_char__Move_s(this->ptr
+pos
, this->res
-pos
,
411 this->ptr
+pos
+len
, this->size
-pos
-len
);
412 basic_string_char__Eos(this, this->size
-len
);
418 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD@Z */
419 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD@Z */
420 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_beg
, 8)
421 char* __thiscall
basic_string_char_erase_beg(basic_string_char
*this, char *beg
)
423 size_t pos
= beg
-this->ptr
;
424 MSVCP_basic_string_char_erase(this, pos
, 1);
425 return this->ptr
+pos
;
428 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
429 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
430 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr
, 16)
431 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_substr(
432 basic_string_char
*this, const basic_string_char
*assign
,
433 size_t pos
, size_t len
)
435 TRACE("%p %p %Iu %Iu\n", this, assign
, pos
, len
);
437 if(assign
->size
< pos
)
440 if(len
> assign
->size
-pos
)
441 len
= assign
->size
-pos
;
444 MSVCP_basic_string_char_erase(this, pos
+len
, MSVCP_basic_string_char_npos
);
445 MSVCP_basic_string_char_erase(this, 0, pos
);
446 } else if(basic_string_char__Grow(this, len
, FALSE
)) {
448 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, assign
->ptr
+pos
, len
);
449 basic_string_char__Eos(this, len
);
455 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
456 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
457 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len
, 12)
458 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_cstr_len(
459 basic_string_char
*this, const char *str
, size_t len
)
461 TRACE("%p %s %Iu\n", this, debugstr_an(str
, len
), len
);
463 if(basic_string_char_inside(this, str
))
464 return MSVCP_basic_string_char_assign_substr(this, this, str
-this->ptr
, len
);
465 else if(basic_string_char__Grow(this, len
, FALSE
)) {
466 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, str
, len
);
467 basic_string_char__Eos(this, len
);
473 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
474 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
475 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
476 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
477 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign
, 8)
478 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign(
479 basic_string_char
*this, const basic_string_char
*assign
)
481 return MSVCP_basic_string_char_assign_substr(this, assign
,
482 0, MSVCP_basic_string_char_npos
);
485 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
486 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
487 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
488 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
489 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr
, 8)
490 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_cstr(
491 basic_string_char
*this, const char *str
)
493 return MSVCP_basic_string_char_assign_cstr_len(this, str
,
494 MSVCP_char_traits_char_length(str
));
497 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
498 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
499 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch
, 8)
500 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_ch(
501 basic_string_char
*this, char ch
)
503 return MSVCP_basic_string_char_assign_cstr_len(this, &ch
, 1);
506 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
507 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
508 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn
, 12)
509 basic_string_char
* __thiscall
MSVCP_basic_string_char_assignn(
510 basic_string_char
*this, size_t count
, char ch
)
512 TRACE("%p %Iu %c\n", this, count
, ch
);
514 basic_string_char__Grow(this, count
, FALSE
);
515 MSVCP_char_traits_char_assignn(this->ptr
, count
, ch
);
516 basic_string_char__Eos(this, count
);
520 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
521 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
522 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr
, 12)
523 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_ptr_ptr(
524 basic_string_char
*this, const char *first
, const char *last
)
526 return MSVCP_basic_string_char_assign_cstr_len(this, first
, last
-first
);
529 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
530 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
531 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc
, 16)
532 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_len_alloc(
533 basic_string_char
*this, const char *str
, size_t len
, const void *alloc
)
535 TRACE("%p %s %Iu\n", this, debugstr_an(str
, len
), len
);
537 basic_string_char__Tidy(this, FALSE
);
538 MSVCP_basic_string_char_assign_cstr_len(this, str
, len
);
542 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
543 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
544 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len
, 12)
545 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_len(
546 basic_string_char
*this, const char *str
, size_t len
)
548 return MSVCP_basic_string_char_ctor_cstr_len_alloc(this, str
, len
, NULL
);
551 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
552 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
553 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc
, 20)
554 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_substr_alloc(
555 basic_string_char
*this, const basic_string_char
*assign
,
556 size_t pos
, size_t len
, const void *alloc
)
558 TRACE("%p %p %Iu %Iu\n", this, assign
, pos
, len
);
560 basic_string_char__Tidy(this, FALSE
);
561 MSVCP_basic_string_char_assign_substr(this, assign
, pos
, len
);
565 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
566 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
567 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc
, 12)
568 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_alloc(
569 basic_string_char
*this, const char *str
, const void *alloc
)
571 TRACE("%p %s\n", this, debugstr_a(str
));
573 basic_string_char__Tidy(this, FALSE
);
574 MSVCP_basic_string_char_assign_cstr(this, str
);
578 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
579 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
580 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr
, 8)
581 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr(
582 basic_string_char
*this, const char *str
)
584 return MSVCP_basic_string_char_ctor_cstr_alloc(this, str
, NULL
);
587 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
588 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
589 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc
, 16)
590 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char
*this,
591 size_t count
, char ch
, const void *alloc
)
593 TRACE("%p %Iu %c\n", this, count
, ch
);
595 basic_string_char__Tidy(this, FALSE
);
596 MSVCP_basic_string_char_assignn(this, count
, ch
);
600 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
601 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
602 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor
, 4)
603 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor(basic_string_char
*this)
607 basic_string_char__Tidy(this, FALSE
);
611 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
612 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
613 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc
, 8)
614 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_alloc(
615 basic_string_char
*this, const void *alloc
)
617 TRACE("%p %p\n", this, alloc
);
619 basic_string_char__Tidy(this, FALSE
);
623 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
624 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
625 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor
, 8)
626 basic_string_char
* __thiscall
MSVCP_basic_string_char_copy_ctor(
627 basic_string_char
*this, const basic_string_char
*copy
)
629 TRACE("%p %p\n", this, copy
);
631 basic_string_char__Tidy(this, FALSE
);
632 MSVCP_basic_string_char_assign(this, copy
);
636 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
637 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
638 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor
, 4)
639 void __thiscall
MSVCP_basic_string_char_dtor(basic_string_char
*this)
642 basic_string_char__Tidy(this, TRUE
);
645 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
646 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
647 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len
, 20)
648 int __thiscall
MSVCP_basic_string_char_compare_substr_cstr_len(
649 const basic_string_char
*this, size_t pos
, size_t num
,
650 const char *str
, size_t count
)
654 TRACE("%p %Iu %Iu %s %Iu\n", this, pos
, num
, debugstr_an(str
, count
), count
);
659 if(num
> this->size
-pos
)
660 num
= this->size
-pos
;
662 ans
= MSVCP_char_traits_char_compare(this->ptr
+pos
,
663 str
, num
>count
? count
: num
);
674 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
675 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
676 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr
, 8)
677 int __thiscall
MSVCP_basic_string_char_compare_cstr(
678 const basic_string_char
*this, const char *str
)
680 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
681 str
, MSVCP_char_traits_char_length(str
));
684 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
685 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
686 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr
, 24)
687 int __thiscall
MSVCP_basic_string_char_compare_substr_substr(
688 const basic_string_char
*this, size_t pos
, size_t num
,
689 const basic_string_char
*compare
, size_t off
, size_t count
)
691 TRACE("%p %Iu %Iu %p %Iu %Iu\n", this, pos
, num
, compare
, off
, count
);
693 if(compare
->size
< off
)
696 if(count
> compare
->size
-off
)
697 count
= compare
->size
-off
;
699 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
700 compare
->ptr
+off
, count
);
703 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
704 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
705 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr
, 16)
706 int __thiscall
MSVCP_basic_string_char_compare_substr(
707 const basic_string_char
*this, size_t pos
, size_t num
,
708 const basic_string_char
*compare
)
710 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
711 compare
->ptr
, compare
->size
);
714 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
715 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
716 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare
, 8)
717 int __thiscall
MSVCP_basic_string_char_compare(
718 const basic_string_char
*this, const basic_string_char
*compare
)
720 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
721 compare
->ptr
, compare
->size
);
724 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
725 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
726 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr
, 16)
727 int __thiscall
MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char
*this,
728 size_t pos
, size_t num
, const char *str
)
730 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
731 str
, MSVCP_char_traits_char_length(str
));
734 /* ??$?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 */
735 /* ??$?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 */
736 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
737 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
738 bool __cdecl
MSVCP_basic_string_char_equal(
739 const basic_string_char
*left
, const basic_string_char
*right
)
741 return MSVCP_basic_string_char_compare(left
, right
) == 0;
744 /* ??$?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 */
745 /* ??$?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 */
746 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
747 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
748 bool __cdecl
MSVCP_basic_string_char_equal_str_cstr(
749 const basic_string_char
*left
, const char *right
)
751 return MSVCP_basic_string_char_compare_cstr(left
, right
) == 0;
754 /* ??$?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 */
755 /* ??$?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 */
756 /* ??8std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
757 /* ??8std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
758 bool __cdecl
MSVCP_basic_string_char_equal_cstr_str(
759 const char *left
, const basic_string_char
*right
)
761 return MSVCP_basic_string_char_compare_cstr(right
, left
) == 0;
764 /* ??$?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 */
765 /* ??$?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 */
766 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
767 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
768 bool __cdecl
MSVCP_basic_string_char_not_equal(
769 const basic_string_char
*left
, const basic_string_char
*right
)
771 return MSVCP_basic_string_char_compare(left
, right
) != 0;
774 /* ??$?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 */
775 /* ??$?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 */
776 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
777 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
778 bool __cdecl
MSVCP_basic_string_char_not_equal_str_cstr(
779 const basic_string_char
*left
, const char *right
)
781 return MSVCP_basic_string_char_compare_cstr(left
, right
) != 0;
784 /* ??$?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 */
785 /* ??$?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 */
786 /* ??9std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
787 /* ??9std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
788 bool __cdecl
MSVCP_basic_string_char_not_equal_cstr_str(
789 const char *left
, const basic_string_char
*right
)
791 return MSVCP_basic_string_char_compare_cstr(right
, left
) != 0;
794 /* ??$?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 */
795 /* ??$?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 */
796 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
797 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
798 bool __cdecl
MSVCP_basic_string_char_lower(
799 const basic_string_char
*left
, const basic_string_char
*right
)
801 return MSVCP_basic_string_char_compare(left
, right
) < 0;
804 /* ??$?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 */
805 /* ??$?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 */
806 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
807 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
808 bool __cdecl
MSVCP_basic_string_char_lower_bstr_cstr(
809 const basic_string_char
*left
, const char *right
)
811 return MSVCP_basic_string_char_compare_cstr(left
, right
) < 0;
814 /* ??$?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 */
815 /* ??$?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 */
816 /* ??Mstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
817 /* ??Mstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
818 bool __cdecl
MSVCP_basic_string_char_lower_cstr_bstr(
819 const char *left
, const basic_string_char
*right
)
821 return MSVCP_basic_string_char_compare_cstr(right
, left
) > 0;
824 /* ??$?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 */
825 /* ??$?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 */
826 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
827 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
828 bool __cdecl
MSVCP_basic_string_char_leq(
829 const basic_string_char
*left
, const basic_string_char
*right
)
831 return MSVCP_basic_string_char_compare(left
, right
) <= 0;
834 /* ??$?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 */
835 /* ??$?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 */
836 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
837 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
838 bool __cdecl
MSVCP_basic_string_char_leq_bstr_cstr(
839 const basic_string_char
*left
, const char *right
)
841 return MSVCP_basic_string_char_compare_cstr(left
, right
) <= 0;
844 /* ??$?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 */
845 /* ??$?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 */
846 /* ??Nstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
847 /* ??Nstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
848 bool __cdecl
MSVCP_basic_string_char_leq_cstr_bstr(
849 const char *left
, const basic_string_char
*right
)
851 return MSVCP_basic_string_char_compare_cstr(right
, left
) >= 0;
854 /* ??$?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 */
855 /* ??$?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 */
856 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
857 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
858 bool __cdecl
MSVCP_basic_string_char_greater(
859 const basic_string_char
*left
, const basic_string_char
*right
)
861 return MSVCP_basic_string_char_compare(left
, right
) > 0;
864 /* ??$?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 */
865 /* ??$?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 */
866 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
867 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
868 bool __cdecl
MSVCP_basic_string_char_greater_bstr_cstr(
869 const basic_string_char
*left
, const char *right
)
871 return MSVCP_basic_string_char_compare_cstr(left
, right
) > 0;
874 /* ??$?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 */
875 /* ??$?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 */
876 /* ??Ostd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
877 /* ??Ostd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
878 bool __cdecl
MSVCP_basic_string_char_greater_cstr_bstr(
879 const char *left
, const basic_string_char
*right
)
881 return MSVCP_basic_string_char_compare_cstr(right
, left
) < 0;
884 /* ??$?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 */
885 /* ??$?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 */
886 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
887 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
888 bool __cdecl
MSVCP_basic_string_char_geq(
889 const basic_string_char
*left
, const basic_string_char
*right
)
891 return MSVCP_basic_string_char_compare(left
, right
) >= 0;
894 /* ??$?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 */
895 /* ??$?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 */
896 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
897 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
898 bool __cdecl
MSVCP_basic_string_char_geq_bstr_cstr(
899 const basic_string_char
*left
, const char *right
)
901 return MSVCP_basic_string_char_compare_cstr(left
, right
) >= 0;
904 /* ??$?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 */
905 /* ??$?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 */
906 /* ??Pstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
907 /* ??Pstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
908 bool __cdecl
MSVCP_basic_string_char_geq_cstr_bstr(
909 const char *left
, const basic_string_char
*right
)
911 return MSVCP_basic_string_char_compare_cstr(right
, left
) <= 0;
914 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
915 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
916 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr
, 16)
917 size_t __thiscall
MSVCP_basic_string_char_find_cstr_substr(
918 const basic_string_char
*this, const char *find
, size_t pos
, size_t len
)
922 TRACE("%p %s %Iu %Iu\n", this, debugstr_an(find
, len
), pos
, len
);
924 if(len
==0 && pos
<=this->size
)
926 if(pos
>=this->size
|| len
>this->size
)
927 return MSVCP_basic_string_char_npos
;
929 end
= this->ptr
+this->size
-len
+1;
930 for(p
=this->ptr
+pos
; p
<end
; p
++) {
931 p
= MSVCP_char_traits_char_find(p
, end
-p
, find
);
935 if(!MSVCP_char_traits_char_compare(p
, find
, len
))
939 return MSVCP_basic_string_char_npos
;
942 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
943 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
944 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off
, 12)
945 size_t __thiscall
MSVCP_basic_string_char_find_off(
946 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
948 return MSVCP_basic_string_char_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
951 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
952 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
953 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch
, 12)
954 size_t __thiscall
MSVCP_basic_string_char_find_ch(
955 const basic_string_char
*this, char ch
, size_t pos
)
957 return MSVCP_basic_string_char_find_cstr_substr(this, &ch
, pos
, 1);
960 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
961 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
962 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off
, 12)
963 size_t __thiscall
MSVCP_basic_string_char_find_cstr_off(
964 const basic_string_char
*this, const char *find
, size_t pos
)
966 return MSVCP_basic_string_char_find_cstr_substr(this, find
, pos
,
967 MSVCP_char_traits_char_length(find
));
970 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
971 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
972 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr
, 16)
973 size_t __thiscall
MSVCP_basic_string_char_rfind_cstr_substr(
974 const basic_string_char
*this, const char *find
, size_t pos
, size_t len
)
978 TRACE("%p %s %Iu %Iu\n", this, debugstr_an(find
, len
), pos
, len
);
981 return pos
<this->size
? pos
: this->size
;
984 return MSVCP_basic_string_char_npos
;
986 if(pos
> this->size
-len
)
987 pos
= this->size
-len
;
989 for(p
=end
+pos
; p
>=end
; p
--) {
990 if(*p
==*find
&& !MSVCP_char_traits_char_compare(p
, find
, len
))
994 return MSVCP_basic_string_char_npos
;
997 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
998 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
999 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off
, 12)
1000 size_t __thiscall
MSVCP_basic_string_char_rfind_off(
1001 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1003 return MSVCP_basic_string_char_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
1006 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1007 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1008 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch
, 12)
1009 size_t __thiscall
MSVCP_basic_string_char_rfind_ch(
1010 const basic_string_char
*this, char ch
, size_t pos
)
1012 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch
, pos
, 1);
1015 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1016 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1017 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off
, 12)
1018 size_t __thiscall
MSVCP_basic_string_char_rfind_cstr_off(
1019 const basic_string_char
*this, const char *find
, size_t pos
)
1021 return MSVCP_basic_string_char_rfind_cstr_substr(this, find
, pos
,
1022 MSVCP_char_traits_char_length(find
));
1025 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1026 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1027 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr
, 16)
1028 size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1029 const basic_string_char
*this, const char *find
, size_t off
, size_t len
)
1031 const char *p
, *end
;
1033 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
1035 if(off
<this->size
) {
1036 end
= this->ptr
+this->size
;
1037 for(p
=this->ptr
+off
; p
<end
; p
++)
1038 if(!MSVCP_char_traits_char_find(find
, len
, p
))
1042 return MSVCP_basic_string_char_npos
;
1045 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1046 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1047 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of
, 12)
1048 size_t __thiscall
MSVCP_basic_string_char_find_first_not_of(
1049 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1051 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1052 find
->ptr
, off
, find
->size
);
1055 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1056 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1057 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch
, 12)
1058 size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_ch(
1059 const basic_string_char
*this, char ch
, size_t off
)
1061 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
1064 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1065 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1066 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr
, 12)
1067 size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_cstr(
1068 const basic_string_char
*this, const char *find
, size_t off
)
1070 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1071 this, find
, off
, MSVCP_char_traits_char_length(find
));
1074 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1075 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1076 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr
, 16)
1077 size_t __thiscall
MSVCP_basic_string_char_find_first_of_cstr_substr(
1078 const basic_string_char
*this, const char *find
, size_t off
, size_t len
)
1080 const char *p
, *end
;
1082 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
1084 if(len
>0 && off
<this->size
) {
1085 end
= this->ptr
+this->size
;
1086 for(p
=this->ptr
+off
; p
<end
; p
++)
1087 if(MSVCP_char_traits_char_find(find
, len
, p
))
1091 return MSVCP_basic_string_char_npos
;
1094 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1095 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1096 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of
, 12)
1097 size_t __thiscall
MSVCP_basic_string_char_find_first_of(
1098 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1100 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1101 find
->ptr
, off
, find
->size
);
1104 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1105 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1106 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch
, 12)
1107 size_t __thiscall
MSVCP_basic_string_char_find_first_of_ch(
1108 const basic_string_char
*this, char ch
, size_t off
)
1110 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch
, off
, 1);
1113 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1114 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1115 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr
, 12)
1116 size_t __thiscall
MSVCP_basic_string_char_find_first_of_cstr(
1117 const basic_string_char
*this, const char *find
, size_t off
)
1119 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1120 this, find
, off
, MSVCP_char_traits_char_length(find
));
1123 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1124 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1125 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr
, 16)
1126 size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1127 const basic_string_char
*this, const char *find
, size_t off
, size_t len
)
1129 const char *p
, *beg
;
1131 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
1133 if(len
>0 && this->size
>0) {
1134 if(off
>= this->size
)
1138 for(p
=beg
+off
; p
>=beg
; p
--)
1139 if(!MSVCP_char_traits_char_find(find
, len
, p
))
1143 return MSVCP_basic_string_char_npos
;
1146 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1147 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1148 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of
, 12)
1149 size_t __thiscall
MSVCP_basic_string_char_find_last_not_of(
1150 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1152 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1153 find
->ptr
, off
, find
->size
);
1156 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1157 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1158 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch
, 12)
1159 size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_ch(
1160 const basic_string_char
*this, char ch
, size_t off
)
1162 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
1165 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1166 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1167 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr
, 12)
1168 size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_cstr(
1169 const basic_string_char
*this, const char *find
, size_t off
)
1171 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1172 this, find
, off
, MSVCP_char_traits_char_length(find
));
1175 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1176 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1177 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr
, 16)
1178 size_t __thiscall
MSVCP_basic_string_char_find_last_of_cstr_substr(
1179 const basic_string_char
*this, const char *find
, size_t off
, size_t len
)
1181 const char *p
, *beg
;
1183 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
1185 if(len
>0 && this->size
>0) {
1186 if(off
>= this->size
)
1190 for(p
=beg
+off
; p
>=beg
; p
--)
1191 if(MSVCP_char_traits_char_find(find
, len
, p
))
1195 return MSVCP_basic_string_char_npos
;
1198 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1199 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1200 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of
, 12)
1201 size_t __thiscall
MSVCP_basic_string_char_find_last_of(
1202 const basic_string_char
*this, const basic_string_char
*find
, size_t off
)
1204 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1205 find
->ptr
, off
, find
->size
);
1208 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1209 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1210 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch
, 12)
1211 size_t __thiscall
MSVCP_basic_string_char_find_last_of_ch(
1212 const basic_string_char
*this, char ch
, size_t off
)
1214 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch
, off
, 1);
1217 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1218 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1219 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr
, 12)
1220 size_t __thiscall
MSVCP_basic_string_char_find_last_of_cstr(
1221 const basic_string_char
*this, const char *find
, size_t off
)
1223 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1224 this, find
, off
, MSVCP_char_traits_char_length(find
));
1227 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1228 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1229 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr
, 16)
1230 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_substr(basic_string_char
*this,
1231 const basic_string_char
*append
, size_t offset
, size_t count
)
1233 TRACE("%p %p %Iu %Iu\n", this, append
, offset
, count
);
1235 if(append
->size
< offset
)
1238 if(count
> append
->size
-offset
)
1239 count
= append
->size
-offset
;
1241 if(MSVCP_basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1244 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1246 MSVCP_char_traits_char__Copy_s(this->ptr
+this->size
, this->res
-this->size
,
1247 append
->ptr
+offset
, count
);
1248 basic_string_char__Eos(this, this->size
+count
);
1254 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1255 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1256 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len
, 12)
1257 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_cstr_len(
1258 basic_string_char
*this, const char *append
, size_t count
)
1260 TRACE("%p %s %Iu\n", this, debugstr_an(append
, count
), count
);
1262 if(basic_string_char_inside(this, append
))
1263 return MSVCP_basic_string_char_append_substr(this, this, append
-this->ptr
, count
);
1265 if(MSVCP_basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1268 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1269 MSVCP_char_traits_char__Copy_s(this->ptr
+this->size
,
1270 this->res
-this->size
, append
, count
);
1271 basic_string_char__Eos(this, this->size
+count
);
1277 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1278 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1279 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch
, 12)
1280 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_len_ch(
1281 basic_string_char
*this, size_t count
, char ch
)
1283 TRACE("%p %Iu %c\n", this, count
, ch
);
1285 if(MSVCP_basic_string_char_npos
-this->size
<= count
)
1288 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1289 MSVCP_char_traits_char_assignn(this->ptr
+this->size
, count
, ch
);
1290 basic_string_char__Eos(this, this->size
+count
);
1296 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1297 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1298 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1299 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1300 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append
, 8)
1301 basic_string_char
* __thiscall
MSVCP_basic_string_char_append(
1302 basic_string_char
*this, const basic_string_char
*append
)
1304 return MSVCP_basic_string_char_append_substr(this, append
,
1305 0, MSVCP_basic_string_char_npos
);
1308 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1309 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1310 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch
, 8)
1311 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_ch(
1312 basic_string_char
*this, char ch
)
1314 return MSVCP_basic_string_char_append_len_ch(this, 1, ch
);
1317 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1318 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1319 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end
, 12)
1320 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_beg_end(
1321 basic_string_char
*this, const char *beg
, const char *end
)
1323 return MSVCP_basic_string_char_append_cstr_len(this, beg
, end
-beg
);
1326 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1327 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1328 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1329 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1330 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr
, 8)
1331 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_cstr(
1332 basic_string_char
*this, const char *append
)
1334 return MSVCP_basic_string_char_append_cstr_len(this, append
,
1335 MSVCP_char_traits_char_length(append
));
1337 /* ??$?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 */
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@AEBV10@0@Z */
1339 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1340 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1341 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate(basic_string_char
*ret
,
1342 const basic_string_char
*left
, const basic_string_char
*right
)
1344 TRACE("%p %p\n", left
, right
);
1346 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1347 MSVCP_basic_string_char_append(ret
, right
);
1351 /* ??$?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 */
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@AEBV10@D@Z */
1353 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1354 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1355 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char
*ret
,
1356 const basic_string_char
*left
, char right
)
1358 TRACE("%p %c\n", left
, right
);
1360 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1361 MSVCP_basic_string_char_append_ch(ret
, right
);
1365 /* ??$?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 */
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@AEBV10@PEBD@Z */
1367 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1368 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1369 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char
*ret
,
1370 const basic_string_char
*left
, const char *right
)
1372 TRACE("%p %s\n", left
, debugstr_a(right
));
1374 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1375 MSVCP_basic_string_char_append_cstr(ret
, right
);
1379 /* ??$?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 */
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@DAEBV10@@Z */
1381 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1382 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1383 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char
*ret
,
1384 char left
, const basic_string_char
*right
)
1386 TRACE("%c %p\n", left
, right
);
1388 MSVCP_basic_string_char_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
1389 MSVCP_basic_string_char_append(ret
, right
);
1393 /* ??$?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 */
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@PEBDAEBV10@@Z */
1395 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1396 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1397 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char
*ret
,
1398 const char *left
, const basic_string_char
*right
)
1400 TRACE("%s %p\n", debugstr_a(left
), right
);
1402 MSVCP_basic_string_char_ctor_cstr_alloc(ret
, left
, NULL
);
1403 MSVCP_basic_string_char_append(ret
, right
);
1407 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1408 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1409 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at
, 8)
1410 char* __thiscall
MSVCP_basic_string_char_operator_at(
1411 basic_string_char
*this, size_t pos
)
1413 TRACE("%p %Iu\n", this, pos
);
1415 if(!this->ptr
|| pos
>this->size
)
1416 return (char*)basic_string_char__Nullstr();
1418 basic_string_char__Freeze(this);
1419 return this->ptr
+pos
;
1422 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1423 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1424 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at_const
, 8)
1425 const char* __thiscall
MSVCP_basic_string_char_operator_at_const(
1426 const basic_string_char
*this, size_t pos
)
1428 TRACE("%p %Iu\n", this, pos
);
1431 return basic_string_char__Nullstr();
1432 return this->ptr
+pos
;
1435 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1436 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1437 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1438 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1439 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at
, 8)
1440 char* __thiscall
MSVCP_basic_string_char_at(
1441 basic_string_char
*this, size_t pos
)
1443 TRACE("%p %Iu\n", this, pos
);
1445 if(this->size
<= pos
)
1448 return this->ptr
+pos
;
1451 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1452 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1453 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len
, 20)
1454 basic_string_char
* __thiscall
basic_string_char_replace_cstr_len(basic_string_char
*this,
1455 size_t off
, size_t len
, const char *str
, size_t str_len
)
1457 size_t inside_pos
= -1;
1458 char *ptr
= this->ptr
;
1460 TRACE("%p %Iu %Iu %p %Iu\n", this, off
, len
, str
, str_len
);
1462 if(this->size
< off
)
1465 if(len
> this->size
-off
)
1466 len
= this->size
-off
;
1468 if(MSVCP_basic_string_char_npos
-str_len
<= this->size
-len
)
1471 if(basic_string_char_inside(this, str
))
1472 inside_pos
= str
-ptr
;
1474 if(this->size
-len
+str_len
)
1475 basic_string_char__Grow(this, this->size
-len
+str_len
, FALSE
);
1478 if(inside_pos
== -1) {
1479 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1480 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
1481 } else if(len
>= str_len
) {
1482 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
1483 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1487 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1489 if(inside_pos
< off
+len
) {
1490 size
= off
+len
-inside_pos
;
1493 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
1499 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
1503 basic_string_char__Eos(this, this->size
-len
+str_len
);
1507 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
1508 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
1509 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr
, 24)
1510 basic_string_char
* __thiscall
basic_string_char_replace_substr(basic_string_char
*this, size_t off
,
1511 size_t len
, const basic_string_char
*str
, size_t str_off
, size_t str_len
)
1513 if(str
->size
< str_off
)
1516 if(str_len
> str
->size
-str_off
)
1517 str_len
= str
->size
-str_off
;
1519 return basic_string_char_replace_cstr_len(this, off
, len
,
1520 str
->ptr
+str_off
, str_len
);
1523 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
1524 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
1525 DEFINE_THISCALL_WRAPPER(basic_string_char_replace
, 16)
1526 basic_string_char
* __thiscall
basic_string_char_replace(basic_string_char
*this,
1527 size_t off
, size_t len
, const basic_string_char
*str
)
1529 return basic_string_char_replace_cstr_len(this, off
, len
,
1530 str
->ptr
, str
->size
);
1533 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
1534 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
1535 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch
, 20)
1536 basic_string_char
* __thiscall
basic_string_char_replace_ch(basic_string_char
*this,
1537 size_t off
, size_t len
, size_t count
, char ch
)
1541 TRACE("%p %Iu %Iu %Iu %c\n", this, off
, len
, count
, ch
);
1543 if(this->size
< off
)
1546 if(len
> this->size
-off
)
1547 len
= this->size
-off
;
1549 if(MSVCP_basic_string_char_npos
-count
<= this->size
-len
)
1552 if(this->size
-len
+count
)
1553 basic_string_char__Grow(this, this->size
-len
+count
, FALSE
);
1556 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1557 MSVCP_char_traits_char_assignn(ptr
+off
, count
, ch
);
1558 basic_string_char__Eos(this, this->size
-len
+count
);
1563 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
1564 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
1565 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr
, 16)
1566 basic_string_char
* __thiscall
basic_string_char_replace_cstr(basic_string_char
*this,
1567 size_t off
, size_t len
, const char *str
)
1569 return basic_string_char_replace_cstr_len(this, off
, len
, str
,
1570 MSVCP_char_traits_char_length(str
));
1573 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
1574 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
1575 DEFINE_THISCALL_WRAPPER(basic_string_char_insert
, 12)
1576 basic_string_char
* __thiscall
basic_string_char_insert(basic_string_char
*this,
1577 size_t off
, const basic_string_char
*str
)
1579 return basic_string_char_replace(this, off
, 0, str
);
1582 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
1583 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
1584 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr
, 20)
1585 basic_string_char
* __thiscall
basic_string_char_insert_substr(
1586 basic_string_char
*this, size_t off
, const basic_string_char
*str
,
1587 size_t str_off
, size_t str_count
)
1589 return basic_string_char_replace_substr(this, off
, 0, str
, str_off
, str_count
);
1592 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
1593 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
1594 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr
, 12)
1595 basic_string_char
* __thiscall
basic_string_char_insert_cstr(
1596 basic_string_char
*this, size_t off
, const char *str
)
1598 return basic_string_char_replace_cstr(this, off
, 0, str
);
1601 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
1602 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
1603 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len
, 16)
1604 basic_string_char
* __thiscall
basic_string_char_insert_cstr_len(basic_string_char
*this,
1605 size_t off
, const char *str
, size_t str_len
)
1607 return basic_string_char_replace_cstr_len(this, off
, 0, str
, str_len
);
1610 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
1611 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
1612 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn
, 16)
1613 basic_string_char
* __thiscall
basic_string_char_insert_chn(basic_string_char
*this,
1614 size_t off
, size_t count
, char ch
)
1616 return basic_string_char_replace_ch(this, off
, 0, count
, ch
);
1619 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
1620 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
1621 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch
, 12)
1622 void __thiscall
MSVCP_basic_string_char_resize_ch(
1623 basic_string_char
*this, size_t size
, char ch
)
1625 TRACE("%p %Iu %c\n", this, size
, ch
);
1627 if(size
<= this->size
)
1628 MSVCP_basic_string_char_erase(this, size
, this->size
);
1630 MSVCP_basic_string_char_append_len_ch(this, size
-this->size
, ch
);
1633 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1634 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1635 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize
, 8)
1636 void __thiscall
MSVCP_basic_string_char_resize(
1637 basic_string_char
*this, size_t size
)
1639 MSVCP_basic_string_char_resize_ch(this, size
, '\0');
1642 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1643 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1644 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1645 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1646 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str
, 4)
1647 const char* __thiscall
MSVCP_basic_string_char_c_str(const basic_string_char
*this)
1649 TRACE("%p\n", this);
1650 return this->ptr
? this->ptr
: basic_string_char__Nullstr();
1653 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1654 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1655 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1656 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1657 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length
, 4)
1658 size_t __thiscall
MSVCP_basic_string_char_length(const basic_string_char
*this)
1660 TRACE("%p\n", this);
1664 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1665 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1666 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size
, 4)
1667 size_t __thiscall
basic_string_char_max_size(const basic_string_char
*this)
1669 TRACE("%p\n", this);
1670 return MSVCP_allocator_char_max_size(NULL
)-1;
1673 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1674 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1675 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity
, 4)
1676 size_t __thiscall
MSVCP_basic_string_char_capacity(basic_string_char
*this)
1678 TRACE("%p\n", this);
1682 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1683 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1684 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve
, 8)
1685 void __thiscall
MSVCP_basic_string_char_reserve(basic_string_char
*this, size_t size
)
1689 TRACE("%p %Iu\n", this, size
);
1695 if(basic_string_char__Grow(this, size
, FALSE
))
1696 basic_string_char__Eos(this, len
);
1699 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1700 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1701 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty
, 4)
1702 bool __thiscall
MSVCP_basic_string_char_empty(basic_string_char
*this)
1704 TRACE("%p\n", this);
1705 return this->size
== 0;
1708 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1709 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1710 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap
, 8)
1711 void __thiscall
MSVCP_basic_string_char_swap(basic_string_char
*this, basic_string_char
*str
)
1713 basic_string_char tmp
;
1714 TRACE("%p %p\n", this, str
);
1721 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1722 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1723 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr
, 16)
1724 basic_string_char
* __thiscall
MSVCP_basic_string_char_substr(basic_string_char
*this,
1725 basic_string_char
*ret
, size_t off
, size_t len
)
1727 TRACE("%p %Iu %Iu\n", this, off
, len
);
1729 MSVCP_basic_string_char_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
1733 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
1734 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
1735 DEFINE_THISCALL_WRAPPER(basic_string_char_copy
, 16)
1736 size_t __thiscall
basic_string_char_copy(const basic_string_char
*this,
1737 char *dest
, size_t count
, size_t off
)
1739 TRACE("%p %p %Iu %Iu\n", this, dest
, count
, off
);
1741 if(off
> this->size
)
1743 if(count
> this->size
-off
)
1744 count
= this->size
-off
;
1746 MSVCP_char_traits_char__Copy_s(dest
, count
, this->ptr
+off
, count
);
1750 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
1751 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
1752 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator
, 8)
1753 allocator
* __thiscall
basic_string_char_get_allocator(const basic_string_char
*this, allocator
*ret
)
1755 TRACE("%p\n", this);
1759 static bool basic_string_wchar_inside(
1760 basic_string_wchar
*this, const wchar_t *ptr
)
1762 return ptr
>=this->ptr
&& ptr
<this->ptr
+this->size
;
1765 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
1766 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
1767 const size_t MSVCP_basic_string_wchar_npos
= -1;
1769 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ@4GB */
1770 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ@4GB */
1771 const wchar_t basic_string_wchar_nullbyte
= '\0';
1773 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ */
1774 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ */
1775 const wchar_t* __cdecl
basic_string_wchar__Nullstr(void)
1777 return &basic_string_wchar_nullbyte
;
1780 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEAAEPBG@Z */
1781 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAAEAEPEBG@Z */
1782 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Refcnt
, 8)
1783 unsigned short* __thiscall
basic_string_wchar__Refcnt(basic_string_wchar
*this, const wchar_t *ptr
)
1785 TRACE("(%p %p)\n", this, ptr
);
1786 return (unsigned short*)ptr
-1;
1789 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1790 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1791 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Eos
, 8)
1792 void __thiscall
basic_string_wchar__Eos(basic_string_wchar
*this, size_t len
)
1798 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
1799 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
1800 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
1801 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
1802 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear
, 4)
1803 void __thiscall
MSVCP_basic_string_wchar_clear(basic_string_wchar
*this)
1806 basic_string_wchar__Eos(this, 0);
1809 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEX_N@Z */
1810 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_N@Z */
1811 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Tidy
, 8)
1812 void __thiscall
basic_string_wchar__Tidy(basic_string_wchar
*this, bool built
)
1814 TRACE("(%p %d)\n", this, built
);
1816 if(!built
|| !this->ptr
);
1817 else if(!this->ptr
[-1] || (unsigned short)this->ptr
[-1]==FROZEN
)
1818 MSVCP_allocator_wchar_deallocate(NULL
, this->ptr
-1, this->res
+2);
1822 memset(this, 0, sizeof(*this));
1825 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAE_NI_N@Z */
1826 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAA_N_K_N@Z */
1827 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Grow
, 12)
1828 bool __thiscall
basic_string_wchar__Grow(basic_string_wchar
*this, size_t new_size
, bool trim
)
1832 basic_string_wchar__Tidy(this, TRUE
);
1834 basic_string_wchar__Eos(this, 0);
1835 } else if(this->res
<new_size
|| trim
||
1836 (this->ptr
&& this->ptr
[-1] && (unsigned short)this->ptr
[-1]!=FROZEN
)) {
1837 size_t new_res
= new_size
, len
= this->size
;
1840 if(!trim
&& this->ptr
&& !this->ptr
[-1]) {
1842 if(new_res
/3 < this->res
/2)
1843 new_res
= this->res
+ this->res
/2;
1846 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_res
+2);
1849 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_size
+2);
1852 ERR("Out of memory\n");
1861 MSVCP_char_traits_wchar__Copy_s(ptr
+1, new_size
, this->ptr
, len
);
1862 basic_string_wchar__Tidy(this, TRUE
);
1864 this->res
= new_res
;
1865 basic_string_wchar__Eos(this, len
);
1871 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1872 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1873 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Split
, 4)
1874 void __thiscall
basic_string_wchar__Split(basic_string_wchar
*this)
1879 TRACE("(%p)\n", this);
1881 if(!this->ptr
|| !this->ptr
[-1] || (unsigned short)this->ptr
[-1]==FROZEN
)
1886 basic_string_wchar__Tidy(this, TRUE
);
1887 if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1889 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
, ptr
, len
);
1890 basic_string_wchar__Eos(this, len
);
1894 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1895 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1896 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Freeze
, 4)
1897 void __thiscall
basic_string_wchar__Freeze(basic_string_wchar
*this)
1899 TRACE("(%p)\n", this);
1900 basic_string_wchar__Split(this);
1902 this->ptr
[-1] = FROZEN
;
1905 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1906 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1907 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy
, 8)
1908 void __thiscall
basic_string_wchar__Copy(basic_string_wchar
*this, size_t copy_len
)
1910 TRACE("%p %Iu\n", this, copy_len
);
1912 if(!basic_string_wchar__Grow(this, copy_len
, TRUE
))
1916 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPAGPAGI@Z */
1917 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEAGPEAG_K@Z */
1918 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGPBGI@Z */
1919 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGPEBG_K@Z */
1920 wchar_t* __cdecl
basic_string_wchar__Psum(wchar_t *iter
, size_t add
)
1922 TRACE("(%p %Iu)\n", iter
, add
);
1923 return iter
? iter
+add
: iter
;
1926 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
1927 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
1928 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase
, 12)
1929 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_erase(
1930 basic_string_wchar
*this, size_t pos
, size_t len
)
1932 TRACE("%p %Iu %Iu\n", this, pos
, len
);
1934 if(pos
> this->size
)
1937 if(len
> this->size
-pos
)
1938 len
= this->size
-pos
;
1941 basic_string_wchar__Split(this);
1942 MSVCP_char_traits_wchar__Move_s(this->ptr
+pos
, this->res
-pos
,
1943 this->ptr
+pos
+len
, this->size
-pos
-len
);
1944 basic_string_wchar__Eos(this, this->size
-len
);
1950 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG@Z */
1951 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG@Z */
1952 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_beg
, 8)
1953 wchar_t* __thiscall
basic_string_wchar_erase_beg(basic_string_wchar
*this, wchar_t *beg
)
1955 size_t pos
= beg
-this->ptr
;
1956 MSVCP_basic_string_wchar_erase(this, pos
, 1);
1957 return this->ptr
+pos
;
1960 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
1961 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1962 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr
, 16)
1963 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_substr(
1964 basic_string_wchar
*this, const basic_string_wchar
*assign
,
1965 size_t pos
, size_t len
)
1967 TRACE("%p %p %Iu %Iu\n", this, assign
, pos
, len
);
1969 if(assign
->size
< pos
)
1972 if(len
> assign
->size
-pos
)
1973 len
= assign
->size
-pos
;
1975 if(this == assign
) {
1976 MSVCP_basic_string_wchar_erase(this, pos
+len
, MSVCP_basic_string_wchar_npos
);
1977 MSVCP_basic_string_wchar_erase(this, 0, pos
);
1978 } else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1980 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
,
1981 assign
->ptr
+pos
, len
);
1982 basic_string_wchar__Eos(this, len
);
1988 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
1989 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
1990 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len
, 12)
1991 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_cstr_len(
1992 basic_string_wchar
*this, const wchar_t *str
, size_t len
)
1994 TRACE("%p %s %Iu\n", this, debugstr_wn(str
, len
), len
);
1996 if(basic_string_wchar_inside(this, str
))
1997 return MSVCP_basic_string_wchar_assign_substr(this, this, str
-this->ptr
, len
);
1998 else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1999 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
, str
, len
);
2000 basic_string_wchar__Eos(this, len
);
2006 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2007 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2008 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2009 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2010 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign
, 8)
2011 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign(
2012 basic_string_wchar
*this, const basic_string_wchar
*assign
)
2014 return MSVCP_basic_string_wchar_assign_substr(this, assign
,
2015 0, MSVCP_basic_string_wchar_npos
);
2018 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2019 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2020 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2021 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2022 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr
, 8)
2023 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_cstr(
2024 basic_string_wchar
*this, const wchar_t *str
)
2026 return MSVCP_basic_string_wchar_assign_cstr_len(this, str
,
2027 MSVCP_char_traits_wchar_length(str
));
2030 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2031 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2032 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch
, 8)
2033 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_ch(
2034 basic_string_wchar
*this, wchar_t ch
)
2036 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch
, 1);
2039 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2040 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2041 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn
, 12)
2042 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assignn(
2043 basic_string_wchar
*this, size_t count
, wchar_t ch
)
2045 TRACE("%p %Iu %c\n", this, count
, ch
);
2047 basic_string_wchar__Grow(this, count
, FALSE
);
2048 MSVCP_char_traits_wchar_assignn(this->ptr
, count
, ch
);
2049 basic_string_wchar__Eos(this, count
);
2053 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2054 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2055 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr
, 12)
2056 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_ptr_ptr(
2057 basic_string_wchar
*this, const wchar_t *first
, const wchar_t *last
)
2059 return MSVCP_basic_string_wchar_assign_cstr_len(this, first
, last
-first
);
2062 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2063 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2064 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc
, 16)
2065 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2066 basic_string_wchar
*this, const wchar_t *str
, size_t len
, const void *alloc
)
2068 TRACE("%p %s %Iu\n", this, debugstr_wn(str
, len
), len
);
2070 basic_string_wchar__Tidy(this, FALSE
);
2071 MSVCP_basic_string_wchar_assign_cstr_len(this, str
, len
);
2075 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2076 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2077 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2078 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2079 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len
, 12)
2080 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_len(
2081 basic_string_wchar
*this, const wchar_t *str
, size_t len
)
2083 return MSVCP_basic_string_wchar_ctor_cstr_len_alloc(this, str
, len
, NULL
);
2086 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2087 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2088 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc
, 20)
2089 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_substr_alloc(
2090 basic_string_wchar
*this, const basic_string_wchar
*assign
,
2091 size_t pos
, size_t len
, const void *alloc
)
2093 TRACE("%p %p %Iu %Iu\n", this, assign
, pos
, len
);
2095 basic_string_wchar__Tidy(this, FALSE
);
2096 MSVCP_basic_string_wchar_assign_substr(this, assign
, pos
, len
);
2100 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2101 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2102 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc
, 12)
2103 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_alloc(
2104 basic_string_wchar
*this, const wchar_t *str
, const void *alloc
)
2106 TRACE("%p %s\n", this, debugstr_w(str
));
2108 basic_string_wchar__Tidy(this, FALSE
);
2109 MSVCP_basic_string_wchar_assign_cstr(this, str
);
2113 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2114 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2115 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2116 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2117 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr
, 8)
2118 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr(
2119 basic_string_wchar
*this, const wchar_t *str
)
2121 return MSVCP_basic_string_wchar_ctor_cstr_alloc(this, str
, NULL
);
2124 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2125 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2126 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc
, 16)
2127 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar
*this,
2128 size_t count
, wchar_t ch
, const void *alloc
)
2130 TRACE("%p %Iu %c\n", this, count
, ch
);
2132 basic_string_wchar__Tidy(this, FALSE
);
2133 MSVCP_basic_string_wchar_assignn(this, count
, ch
);
2137 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
2138 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
2139 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor
, 4)
2140 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor(basic_string_wchar
*this)
2142 TRACE("%p\n", this);
2144 basic_string_wchar__Tidy(this, FALSE
);
2148 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2149 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2150 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc
, 8)
2151 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_alloc(
2152 basic_string_wchar
*this, const void *alloc
)
2154 TRACE("%p %p\n", this, alloc
);
2156 basic_string_wchar__Tidy(this, FALSE
);
2160 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2161 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2162 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy_ctor
, 8)
2163 basic_string_wchar
* __thiscall
basic_string_wchar_copy_ctor(
2164 basic_string_wchar
*this, const basic_string_wchar
*copy
)
2166 TRACE("%p %p\n", this, copy
);
2168 basic_string_wchar__Tidy(this, FALSE
);
2169 MSVCP_basic_string_wchar_assign(this, copy
);
2173 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2174 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2175 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor
, 4)
2176 void __thiscall
MSVCP_basic_string_wchar_dtor(basic_string_wchar
*this)
2178 TRACE("%p\n", this);
2179 basic_string_wchar__Tidy(this, TRUE
);
2182 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
2183 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
2184 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len
, 20)
2185 int __thiscall
MSVCP_basic_string_wchar_compare_substr_cstr_len(
2186 const basic_string_wchar
*this, size_t pos
, size_t num
,
2187 const wchar_t *str
, size_t count
)
2191 TRACE("%p %Iu %Iu %s %Iu\n", this, pos
, num
, debugstr_wn(str
, count
), count
);
2193 if(this->size
< pos
)
2196 if(num
> this->size
-pos
)
2197 num
= this->size
-pos
;
2199 ans
= MSVCP_char_traits_wchar_compare(this->ptr
+pos
,
2200 str
, num
>count
? count
: num
);
2206 else if(num
< count
)
2211 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
2212 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
2213 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr
, 8)
2214 int __thiscall
MSVCP_basic_string_wchar_compare_cstr(
2215 const basic_string_wchar
*this, const wchar_t *str
)
2217 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2218 str
, MSVCP_char_traits_wchar_length(str
));
2221 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
2222 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
2223 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr
, 24)
2224 int __thiscall
MSVCP_basic_string_wchar_compare_substr_substr(
2225 const basic_string_wchar
*this, size_t pos
, size_t num
,
2226 const basic_string_wchar
*compare
, size_t off
, size_t count
)
2228 TRACE("%p %Iu %Iu %p %Iu %Iu\n", this, pos
, num
, compare
, off
, count
);
2230 if(compare
->size
< off
)
2233 if(count
> compare
->size
-off
)
2234 count
= compare
->size
-off
;
2236 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2237 compare
->ptr
+off
, count
);
2240 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
2241 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
2242 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr
, 16)
2243 int __thiscall
MSVCP_basic_string_wchar_compare_substr(
2244 const basic_string_wchar
*this, size_t pos
, size_t num
,
2245 const basic_string_wchar
*compare
)
2247 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2248 compare
->ptr
, compare
->size
);
2251 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
2252 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
2253 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare
, 8)
2254 int __thiscall
MSVCP_basic_string_wchar_compare(
2255 const basic_string_wchar
*this, const basic_string_wchar
*compare
)
2257 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2258 compare
->ptr
, compare
->size
);
2261 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
2262 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
2263 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr
, 16)
2264 int __thiscall
MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar
*this,
2265 size_t pos
, size_t num
, const wchar_t *str
)
2267 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2268 str
, MSVCP_char_traits_wchar_length(str
));
2271 /* ??$?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 */
2272 /* ??$?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 */
2273 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2274 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2275 bool __cdecl
MSVCP_basic_string_wchar_equal(
2276 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2278 return MSVCP_basic_string_wchar_compare(left
, right
) == 0;
2281 /* ??$?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 */
2282 /* ??$?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 */
2283 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2284 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2285 bool __cdecl
MSVCP_basic_string_wchar_equal_str_cstr(
2286 const basic_string_wchar
*left
, const wchar_t *right
)
2288 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) == 0;
2291 /* ??$?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 */
2292 /* ??$?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 */
2293 /* ??8std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2294 /* ??8std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2295 bool __cdecl
MSVCP_basic_string_wchar_equal_cstr_str(
2296 const wchar_t *left
, const basic_string_wchar
*right
)
2298 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) == 0;
2301 /* ??$?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 */
2302 /* ??$?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 */
2303 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2304 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2305 bool __cdecl
MSVCP_basic_string_wchar_not_equal(
2306 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2308 return MSVCP_basic_string_wchar_compare(left
, right
) != 0;
2311 /* ??$?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 */
2312 /* ??$?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 */
2313 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2314 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2315 bool __cdecl
MSVCP_basic_string_wchar_not_equal_str_cstr(
2316 const basic_string_wchar
*left
, const wchar_t *right
)
2318 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) != 0;
2321 /* ??$?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 */
2322 /* ??$?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 */
2323 /* ??9std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2324 /* ??9std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2325 bool __cdecl
MSVCP_basic_string_wchar_not_equal_cstr_str(
2326 const wchar_t *left
, const basic_string_wchar
*right
)
2328 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) != 0;
2331 /* ??$?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 */
2332 /* ??$?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 */
2333 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2334 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2335 bool __cdecl
MSVCP_basic_string_wchar_lower(
2336 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2338 return MSVCP_basic_string_wchar_compare(left
, right
) < 0;
2341 /* ??$?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 */
2342 /* ??$?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 */
2343 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2344 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2345 bool __cdecl
MSVCP_basic_string_wchar_lower_bstr_cstr(
2346 const basic_string_wchar
*left
, const wchar_t *right
)
2348 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) < 0;
2351 /* ??$?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 */
2352 /* ??$?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 */
2353 /* ??Mstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2354 /* ??Mstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2355 bool __cdecl
MSVCP_basic_string_wchar_lower_cstr_bstr(
2356 const wchar_t *left
, const basic_string_wchar
*right
)
2358 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) > 0;
2361 /* ??$?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 */
2362 /* ??$?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 */
2363 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2364 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2365 bool __cdecl
MSVCP_basic_string_wchar_leq(
2366 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2368 return MSVCP_basic_string_wchar_compare(left
, right
) <= 0;
2371 /* ??$?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 */
2372 /* ??$?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 */
2373 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2374 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2375 bool __cdecl
MSVCP_basic_string_wchar_leq_bstr_cstr(
2376 const basic_string_wchar
*left
, const wchar_t *right
)
2378 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) <= 0;
2381 /* ??$?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 */
2382 /* ??$?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 */
2383 /* ??Nstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2384 /* ??Nstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2385 bool __cdecl
MSVCP_basic_string_wchar_leq_cstr_bstr(
2386 const wchar_t *left
, const basic_string_wchar
*right
)
2388 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) >= 0;
2391 /* ??$?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 */
2392 /* ??$?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 */
2393 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2394 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2395 bool __cdecl
MSVCP_basic_string_wchar_greater(
2396 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2398 return MSVCP_basic_string_wchar_compare(left
, right
) > 0;
2401 /* ??$?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 */
2402 /* ??$?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 */
2403 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2404 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2405 bool __cdecl
MSVCP_basic_string_wchar_greater_bstr_cstr(
2406 const basic_string_wchar
*left
, const wchar_t *right
)
2408 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) > 0;
2411 /* ??$?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 */
2412 /* ??$?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 */
2413 /* ??Ostd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2414 /* ??Ostd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2415 bool __cdecl
MSVCP_basic_string_wchar_greater_cstr_bstr(
2416 const wchar_t *left
, const basic_string_wchar
*right
)
2418 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) < 0;
2421 /* ??$?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 */
2422 /* ??$?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 */
2423 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2424 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2425 bool __cdecl
MSVCP_basic_string_wchar_geq(
2426 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2428 return MSVCP_basic_string_wchar_compare(left
, right
) >= 0;
2431 /* ??$?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 */
2432 /* ??$?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 */
2433 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2434 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2435 bool __cdecl
MSVCP_basic_string_wchar_geq_bstr_cstr(
2436 const basic_string_wchar
*left
, const wchar_t *right
)
2438 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) >= 0;
2441 /* ??$?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 */
2442 /* ??$?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 */
2443 /* ??Pstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2444 /* ??Pstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2445 bool __cdecl
MSVCP_basic_string_wchar_geq_cstr_bstr(
2446 const wchar_t *left
, const basic_string_wchar
*right
)
2448 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) <= 0;
2451 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2452 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2453 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr
, 16)
2454 size_t __thiscall
MSVCP_basic_string_wchar_find_cstr_substr(
2455 const basic_string_wchar
*this, const wchar_t *find
, size_t pos
, size_t len
)
2457 const wchar_t *p
, *end
;
2459 TRACE("%p %s %Iu %Iu\n", this, debugstr_wn(find
, len
), pos
, len
);
2461 if(len
==0 && pos
<=this->size
)
2463 if(pos
>=this->size
|| len
>this->size
)
2464 return MSVCP_basic_string_wchar_npos
;
2466 end
= this->ptr
+this->size
-len
+1;
2467 for(p
=this->ptr
+pos
; p
<end
; p
++) {
2468 p
= MSVCP_char_traits_wchar_find(p
, end
-p
, find
);
2472 if(!MSVCP_char_traits_wchar_compare(p
, find
, len
))
2476 return MSVCP_basic_string_wchar_npos
;
2479 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2480 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2481 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off
, 12)
2482 size_t __thiscall
MSVCP_basic_string_wchar_find_off(
2483 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2485 return MSVCP_basic_string_wchar_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
2488 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2489 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2490 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch
, 12)
2491 size_t __thiscall
MSVCP_basic_string_wchar_find_ch(
2492 const basic_string_wchar
*this, wchar_t ch
, size_t pos
)
2494 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch
, pos
, 1);
2497 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2498 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2499 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off
, 12)
2500 size_t __thiscall
MSVCP_basic_string_wchar_find_cstr_off(
2501 const basic_string_wchar
*this, const wchar_t *find
, size_t pos
)
2503 return MSVCP_basic_string_wchar_find_cstr_substr(this, find
, pos
,
2504 MSVCP_char_traits_wchar_length(find
));
2507 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2508 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2509 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr
, 16)
2510 size_t __thiscall
MSVCP_basic_string_wchar_rfind_cstr_substr(
2511 const basic_string_wchar
*this, const wchar_t *find
, size_t pos
, size_t len
)
2513 const wchar_t *p
, *end
;
2515 TRACE("%p %s %Iu %Iu\n", this, debugstr_wn(find
, len
), pos
, len
);
2518 return pos
<this->size
? pos
: this->size
;
2520 if(len
> this->size
)
2521 return MSVCP_basic_string_wchar_npos
;
2523 if(pos
> this->size
-len
)
2524 pos
= this->size
-len
;
2526 for(p
=end
+pos
; p
>=end
; p
--) {
2527 if(*p
==*find
&& !MSVCP_char_traits_wchar_compare(p
, find
, len
))
2531 return MSVCP_basic_string_wchar_npos
;
2534 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2535 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2536 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off
, 12)
2537 size_t __thiscall
MSVCP_basic_string_wchar_rfind_off(
2538 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2540 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
2543 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2544 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2545 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch
, 12)
2546 size_t __thiscall
MSVCP_basic_string_wchar_rfind_ch(
2547 const basic_string_wchar
*this, wchar_t ch
, size_t pos
)
2549 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch
, pos
, 1);
2552 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2553 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2554 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off
, 12)
2555 size_t __thiscall
MSVCP_basic_string_wchar_rfind_cstr_off(
2556 const basic_string_wchar
*this, const wchar_t *find
, size_t pos
)
2558 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find
, pos
,
2559 MSVCP_char_traits_wchar_length(find
));
2562 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2563 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2564 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr
, 16)
2565 size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2566 const basic_string_wchar
*this, const wchar_t *find
, size_t off
, size_t len
)
2568 const wchar_t *p
, *end
;
2570 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
2572 if(off
<this->size
) {
2573 end
= this->ptr
+this->size
;
2574 for(p
=this->ptr
+off
; p
<end
; p
++)
2575 if(!MSVCP_char_traits_wchar_find(find
, len
, p
))
2579 return MSVCP_basic_string_wchar_npos
;
2582 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2583 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2584 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of
, 12)
2585 size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of(
2586 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2588 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
2589 find
->ptr
, off
, find
->size
);
2592 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2593 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2594 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch
, 12)
2595 size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_ch(
2596 const basic_string_wchar
*this, wchar_t ch
, size_t off
)
2598 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
2601 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2602 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2603 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr
, 12)
2604 size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_cstr(
2605 const basic_string_wchar
*this, const wchar_t *find
, size_t off
)
2607 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2608 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2611 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2612 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2613 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr
, 16)
2614 size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2615 const basic_string_wchar
*this, const wchar_t *find
, size_t off
, size_t len
)
2617 const wchar_t *p
, *end
;
2619 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
2621 if(len
>0 && off
<this->size
) {
2622 end
= this->ptr
+this->size
;
2623 for(p
=this->ptr
+off
; p
<end
; p
++)
2624 if(MSVCP_char_traits_wchar_find(find
, len
, p
))
2628 return MSVCP_basic_string_wchar_npos
;
2631 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2632 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2633 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of
, 12)
2634 size_t __thiscall
MSVCP_basic_string_wchar_find_first_of(
2635 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2637 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
2638 find
->ptr
, off
, find
->size
);
2641 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2642 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2643 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch
, 12)
2644 size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_ch(
2645 const basic_string_wchar
*this, wchar_t ch
, size_t off
)
2647 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch
, off
, 1);
2650 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2651 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2652 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr
, 12)
2653 size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_cstr(
2654 const basic_string_wchar
*this, const wchar_t *find
, size_t off
)
2656 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2657 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2660 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2661 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2662 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr
, 16)
2663 size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
2664 const basic_string_wchar
*this, const wchar_t *find
, size_t off
, size_t len
)
2666 const wchar_t *p
, *beg
;
2668 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
2670 if(len
>0 && this->size
>0) {
2671 if(off
>= this->size
)
2675 for(p
=beg
+off
; p
>=beg
; p
--)
2676 if(!MSVCP_char_traits_wchar_find(find
, len
, p
))
2680 return MSVCP_basic_string_wchar_npos
;
2683 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2684 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2685 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of
, 12)
2686 size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of(
2687 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2689 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
2690 find
->ptr
, off
, find
->size
);
2693 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2694 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2695 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch
, 12)
2696 size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_ch(
2697 const basic_string_wchar
*this, wchar_t ch
, size_t off
)
2699 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
2702 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2703 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2704 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr
, 12)
2705 size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_cstr(
2706 const basic_string_wchar
*this, const wchar_t *find
, size_t off
)
2708 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
2709 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2712 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2713 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2714 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr
, 16)
2715 size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_cstr_substr(
2716 const basic_string_wchar
*this, const wchar_t *find
, size_t off
, size_t len
)
2718 const wchar_t *p
, *beg
;
2720 TRACE("%p %p %Iu %Iu\n", this, find
, off
, len
);
2722 if(len
>0 && this->size
>0) {
2723 if(off
>= this->size
)
2727 for(p
=beg
+off
; p
>=beg
; p
--)
2728 if(MSVCP_char_traits_wchar_find(find
, len
, p
))
2732 return MSVCP_basic_string_wchar_npos
;
2735 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2736 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2737 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of
, 12)
2738 size_t __thiscall
MSVCP_basic_string_wchar_find_last_of(
2739 const basic_string_wchar
*this, const basic_string_wchar
*find
, size_t off
)
2741 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
2742 find
->ptr
, off
, find
->size
);
2745 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2746 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2747 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch
, 12)
2748 size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_ch(
2749 const basic_string_wchar
*this, wchar_t ch
, size_t off
)
2751 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch
, off
, 1);
2754 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2755 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2756 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr
, 12)
2757 size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_cstr(
2758 const basic_string_wchar
*this, const wchar_t *find
, size_t off
)
2760 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
2761 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2764 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2765 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2766 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr
, 16)
2767 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_substr(basic_string_wchar
*this,
2768 const basic_string_wchar
*append
, size_t offset
, size_t count
)
2770 TRACE("%p %p %Iu %Iu\n", this, append
, offset
, count
);
2772 if(append
->size
< offset
)
2775 if(count
> append
->size
-offset
)
2776 count
= append
->size
-offset
;
2778 if(MSVCP_basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2781 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2783 MSVCP_char_traits_wchar__Copy_s(this->ptr
+this->size
, this->res
-this->size
,
2784 append
->ptr
+offset
, count
);
2785 basic_string_wchar__Eos(this, this->size
+count
);
2791 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2792 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2793 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len
, 12)
2794 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_cstr_len(
2795 basic_string_wchar
*this, const wchar_t *append
, size_t count
)
2797 TRACE("%p %s %Iu\n", this, debugstr_wn(append
, count
), count
);
2799 if(basic_string_wchar_inside(this, append
))
2800 return MSVCP_basic_string_wchar_append_substr(this, this, append
-this->ptr
, count
);
2802 if(MSVCP_basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2805 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2806 MSVCP_char_traits_wchar__Copy_s(this->ptr
+this->size
,
2807 this->res
-this->size
, append
, count
);
2808 basic_string_wchar__Eos(this, this->size
+count
);
2814 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2815 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2816 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch
, 12)
2817 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_len_ch(
2818 basic_string_wchar
*this, size_t count
, wchar_t ch
)
2820 TRACE("%p %Iu %c\n", this, count
, ch
);
2822 if(MSVCP_basic_string_wchar_npos
-this->size
<= count
)
2825 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2826 MSVCP_char_traits_wchar_assignn(this->ptr
+this->size
, count
, ch
);
2827 basic_string_wchar__Eos(this, this->size
+count
);
2833 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2834 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2835 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2836 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2837 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append
, 8)
2838 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append(
2839 basic_string_wchar
*this, const basic_string_wchar
*append
)
2841 return MSVCP_basic_string_wchar_append_substr(this, append
,
2842 0, MSVCP_basic_string_wchar_npos
);
2845 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2846 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2847 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch
, 8)
2848 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_ch(
2849 basic_string_wchar
*this, wchar_t ch
)
2851 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch
);
2854 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2855 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2856 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end
, 12)
2857 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_beg_end(
2858 basic_string_wchar
*this, const wchar_t *beg
, const wchar_t *end
)
2860 return MSVCP_basic_string_wchar_append_cstr_len(this, beg
, end
-beg
);
2863 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2864 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2865 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2866 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2867 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr
, 8)
2868 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_cstr(
2869 basic_string_wchar
*this, const wchar_t *append
)
2871 return MSVCP_basic_string_wchar_append_cstr_len(this, append
,
2872 MSVCP_char_traits_wchar_length(append
));
2874 /* ??$?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 */
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@AEBV10@0@Z */
2876 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
2877 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
2878 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate(basic_string_wchar
*ret
,
2879 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2881 TRACE("%p %p\n", left
, right
);
2883 basic_string_wchar_copy_ctor(ret
, left
);
2884 MSVCP_basic_string_wchar_append(ret
, right
);
2888 /* ??$?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 */
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@AEBV10@G@Z */
2890 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
2891 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
2892 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_bstr_ch(basic_string_wchar
*ret
,
2893 const basic_string_wchar
*left
, wchar_t right
)
2895 TRACE("%p %c\n", left
, right
);
2897 basic_string_wchar_copy_ctor(ret
, left
);
2898 MSVCP_basic_string_wchar_append_ch(ret
, right
);
2902 /* ??$?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 */
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@AEBV10@PEBG@Z */
2904 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
2905 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
2906 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar
*ret
,
2907 const basic_string_wchar
*left
, const wchar_t *right
)
2909 TRACE("%p %s\n", left
, debugstr_w(right
));
2911 basic_string_wchar_copy_ctor(ret
, left
);
2912 MSVCP_basic_string_wchar_append_cstr(ret
, right
);
2916 /* ??$?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 */
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@GAEBV10@@Z */
2918 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
2919 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
2920 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_ch_bstr(basic_string_wchar
*ret
,
2921 wchar_t left
, const basic_string_wchar
*right
)
2923 TRACE("%c %p\n", left
, right
);
2925 MSVCP_basic_string_wchar_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
2926 MSVCP_basic_string_wchar_append(ret
, right
);
2930 /* ??$?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 */
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@PEBGAEBV10@@Z */
2932 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
2933 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2934 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar
*ret
,
2935 const wchar_t *left
, const basic_string_wchar
*right
)
2937 TRACE("%s %p\n", debugstr_w(left
), right
);
2939 MSVCP_basic_string_wchar_ctor_cstr_alloc(ret
, left
, NULL
);
2940 MSVCP_basic_string_wchar_append(ret
, right
);
2944 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2945 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2946 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at
, 8)
2947 wchar_t* __thiscall
MSVCP_basic_string_wchar_operator_at(
2948 basic_string_wchar
*this, size_t pos
)
2950 TRACE("%p %Iu\n", this, pos
);
2952 if(!this->ptr
|| pos
>this->size
)
2953 return (wchar_t*)basic_string_wchar__Nullstr();
2955 basic_string_wchar__Freeze(this);
2956 return this->ptr
+pos
;
2959 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2960 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2961 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at_const
, 8)
2962 const wchar_t* __thiscall
MSVCP_basic_string_wchar_operator_at_const(
2963 const basic_string_wchar
*this, size_t pos
)
2965 TRACE("%p %Iu\n", this, pos
);
2968 return basic_string_wchar__Nullstr();
2969 return this->ptr
+pos
;
2972 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2973 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2974 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2975 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2976 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at
, 8)
2977 wchar_t* __thiscall
MSVCP_basic_string_wchar_at(
2978 basic_string_wchar
*this, size_t pos
)
2980 TRACE("%p %Iu\n", this, pos
);
2982 if(this->size
<= pos
)
2985 return this->ptr
+pos
;
2988 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
2989 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
2990 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len
, 20)
2991 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr_len(basic_string_wchar
*this,
2992 size_t off
, size_t len
, const wchar_t *str
, size_t str_len
)
2994 size_t inside_pos
= -1;
2995 wchar_t *ptr
= this->ptr
;
2997 TRACE("%p %Iu %Iu %p %Iu\n", this, off
, len
, str
, str_len
);
2999 if(this->size
< off
)
3002 if(len
> this->size
-off
)
3003 len
= this->size
-off
;
3005 if(MSVCP_basic_string_wchar_npos
-str_len
<= this->size
-len
)
3008 if(basic_string_wchar_inside(this, str
))
3009 inside_pos
= str
-ptr
;
3011 if(this->size
-len
+str_len
)
3012 basic_string_wchar__Grow(this, this->size
-len
+str_len
, FALSE
);
3015 if(inside_pos
== -1) {
3016 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3017 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
3018 } else if(len
>= str_len
) {
3019 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
3020 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3024 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3026 if(inside_pos
< off
+len
) {
3027 size
= off
+len
-inside_pos
;
3030 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
3036 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
3040 basic_string_wchar__Eos(this, this->size
-len
+str_len
);
3044 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3045 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3046 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr
, 24)
3047 basic_string_wchar
* __thiscall
basic_string_wchar_replace_substr(basic_string_wchar
*this, size_t off
,
3048 size_t len
, const basic_string_wchar
*str
, size_t str_off
, size_t str_len
)
3050 if(str
->size
< str_off
)
3053 if(str_len
> str
->size
-str_off
)
3054 str_len
= str
->size
-str_off
;
3056 return basic_string_wchar_replace_cstr_len(this, off
, len
,
3057 str
->ptr
+str_off
, str_len
);
3060 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3061 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3062 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace
, 16)
3063 basic_string_wchar
* __thiscall
basic_string_wchar_replace(basic_string_wchar
*this,
3064 size_t off
, size_t len
, const basic_string_wchar
*str
)
3066 return basic_string_wchar_replace_cstr_len(this, off
, len
,
3067 str
->ptr
, str
->size
);
3070 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3071 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3072 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch
, 20)
3073 basic_string_wchar
* __thiscall
basic_string_wchar_replace_ch(basic_string_wchar
*this,
3074 size_t off
, size_t len
, size_t count
, wchar_t ch
)
3078 TRACE("%p %Iu %Iu %Iu %c\n", this, off
, len
, count
, ch
);
3080 if(this->size
< off
)
3083 if(len
> this->size
-off
)
3084 len
= this->size
-off
;
3086 if(MSVCP_basic_string_wchar_npos
-count
<= this->size
-len
)
3089 if(this->size
-len
+count
)
3090 basic_string_wchar__Grow(this, this->size
-len
+count
, FALSE
);
3093 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3094 MSVCP_char_traits_wchar_assignn(ptr
+off
, count
, ch
);
3095 basic_string_wchar__Eos(this, this->size
-len
+count
);
3100 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3101 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3102 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr
, 16)
3103 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr(basic_string_wchar
*this,
3104 size_t off
, size_t len
, const wchar_t *str
)
3106 return basic_string_wchar_replace_cstr_len(this, off
, len
, str
,
3107 MSVCP_char_traits_wchar_length(str
));
3110 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3111 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3112 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert
, 12)
3113 basic_string_wchar
* __thiscall
basic_string_wchar_insert(basic_string_wchar
*this,
3114 size_t off
, const basic_string_wchar
*str
)
3116 return basic_string_wchar_replace(this, off
, 0, str
);
3119 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3120 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3121 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr
, 20)
3122 basic_string_wchar
* __thiscall
basic_string_wchar_insert_substr(
3123 basic_string_wchar
*this, size_t off
, const basic_string_wchar
*str
,
3124 size_t str_off
, size_t str_count
)
3126 return basic_string_wchar_replace_substr(this, off
, 0, str
, str_off
, str_count
);
3129 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3130 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3131 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr
, 12)
3132 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr(
3133 basic_string_wchar
*this, size_t off
, const wchar_t *str
)
3135 return basic_string_wchar_replace_cstr(this, off
, 0, str
);
3138 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3139 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3140 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len
, 16)
3141 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr_len(basic_string_wchar
*this,
3142 size_t off
, const wchar_t *str
, size_t str_len
)
3144 return basic_string_wchar_replace_cstr_len(this, off
, 0, str
, str_len
);
3147 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3148 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3149 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn
, 16)
3150 basic_string_wchar
* __thiscall
basic_string_wchar_insert_chn(basic_string_wchar
*this,
3151 size_t off
, size_t count
, wchar_t ch
)
3153 return basic_string_wchar_replace_ch(this, off
, 0, count
, ch
);
3156 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
3157 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
3158 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch
, 12)
3159 void __thiscall
MSVCP_basic_string_wchar_resize_ch(
3160 basic_string_wchar
*this, size_t size
, wchar_t ch
)
3162 TRACE("%p %Iu %c\n", this, size
, ch
);
3164 if(size
<= this->size
)
3165 MSVCP_basic_string_wchar_erase(this, size
, this->size
);
3167 MSVCP_basic_string_wchar_append_len_ch(this, size
-this->size
, ch
);
3170 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3171 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3172 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize
, 8)
3173 void __thiscall
MSVCP_basic_string_wchar_resize(
3174 basic_string_wchar
*this, size_t size
)
3176 MSVCP_basic_string_wchar_resize_ch(this, size
, '\0');
3179 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3180 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3181 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3182 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3183 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str
, 4)
3184 const wchar_t* __thiscall
MSVCP_basic_string_wchar_c_str(const basic_string_wchar
*this)
3186 TRACE("%p\n", this);
3187 return this->ptr
? this->ptr
: basic_string_wchar__Nullstr();
3190 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3191 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3192 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3193 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3194 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length
, 4)
3195 size_t __thiscall
MSVCP_basic_string_wchar_length(const basic_string_wchar
*this)
3197 TRACE("%p\n", this);
3201 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3202 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3203 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size
, 4)
3204 size_t __thiscall
basic_string_wchar_max_size(const basic_string_wchar
*this)
3206 TRACE("%p\n", this);
3207 return MSVCP_allocator_wchar_max_size(NULL
)-1;
3210 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3211 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3212 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity
, 4)
3213 size_t __thiscall
MSVCP_basic_string_wchar_capacity(basic_string_wchar
*this)
3215 TRACE("%p\n", this);
3219 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3220 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3221 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve
, 8)
3222 void __thiscall
MSVCP_basic_string_wchar_reserve(basic_string_wchar
*this, size_t size
)
3226 TRACE("%p %Iu\n", this, size
);
3232 if(basic_string_wchar__Grow(this, size
, FALSE
))
3233 basic_string_wchar__Eos(this, len
);
3236 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
3237 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
3238 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty
, 4)
3239 bool __thiscall
MSVCP_basic_string_wchar_empty(basic_string_wchar
*this)
3241 TRACE("%p\n", this);
3242 return this->size
== 0;
3245 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
3246 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
3247 DEFINE_THISCALL_WRAPPER(basic_string_wchar_swap
, 8)
3248 void __thiscall
basic_string_wchar_swap(basic_string_wchar
*this, basic_string_wchar
*str
)
3250 basic_string_wchar tmp
;
3251 TRACE("%p %p\n", this, str
);
3258 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
3259 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
3260 DEFINE_THISCALL_WRAPPER(basic_string_wchar_substr
, 16)
3261 basic_string_wchar
* __thiscall
basic_string_wchar_substr(basic_string_wchar
*this,
3262 basic_string_wchar
*ret
, size_t off
, size_t len
)
3264 TRACE("%p %Iu %Iu\n", this, off
, len
);
3266 MSVCP_basic_string_wchar_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
3270 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
3271 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
3272 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy
, 16)
3273 size_t __thiscall
basic_string_wchar_copy(const basic_string_wchar
*this,
3274 wchar_t *dest
, size_t count
, size_t off
)
3276 TRACE("%p %p %Iu %Iu\n", this, dest
, count
, off
);
3278 if(off
> this->size
)
3280 if(count
> this->size
-off
)
3281 count
= this->size
-off
;
3283 MSVCP_char_traits_wchar__Copy_s(dest
, count
, this->ptr
+off
, count
);
3287 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
3288 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
3289 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator
, 8)
3290 allocator
* __thiscall
basic_string_wchar_get_allocator(const basic_string_wchar
*this, allocator
*ret
)
3292 TRACE("%p\n", this);
3296 /* Old iterator functions */
3298 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAIPBD0@Z */
3299 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CA_KPEBD0@Z */
3300 size_t __cdecl
basic_string_char__Pdif(const char *i1
, const char *i2
)
3302 TRACE("(%p %p)\n", i1
, i2
);
3303 return !i1
? 0 : i1
-i2
;
3306 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD0@Z */
3307 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD0@Z */
3308 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter
, 12)
3309 char* __thiscall
basic_string_char_erase_iter(basic_string_char
*this, char *beg
, char *end
)
3311 size_t pos
= basic_string_char__Pdif(beg
, this->ptr
);
3312 MSVCP_basic_string_char_erase(this, pos
, basic_string_char__Pdif(end
, beg
));
3313 return basic_string_char__Psum(this->ptr
, pos
);
3316 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD1@Z */
3317 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD1@Z */
3318 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter
, 20)
3319 basic_string_char
* __thiscall
basic_string_char_replace_iter_iter(basic_string_char
*this,
3320 char *beg1
, char *end1
, const char *beg2
, const char *end2
)
3322 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg1
, this->ptr
),
3323 basic_string_char__Pdif(end1
, beg1
), beg2
, basic_string_char__Pdif(end2
, beg2
));
3326 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ABV12@@Z */
3327 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0AEBV12@@Z */
3328 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr
, 16)
3329 basic_string_char
* __thiscall
basic_string_char_replace_iter_bstr(basic_string_char
*this,
3330 char *beg
, char *end
, const basic_string_char
*str
)
3332 return basic_string_char_replace(this, basic_string_char__Pdif(beg
, this->ptr
),
3333 basic_string_char__Pdif(end
, beg
), str
);
3336 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ID@Z */
3337 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0_KD@Z */
3338 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_chn
, 20)
3339 basic_string_char
* __thiscall
basic_string_char_replace_iter_chn(basic_string_char
*this,
3340 char *beg
, char *end
, size_t count
, char ch
)
3342 return basic_string_char_replace_ch(this, basic_string_char__Pdif(beg
, this->ptr
),
3343 basic_string_char__Pdif(end
, beg
), count
, ch
);
3346 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD@Z */
3347 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD@Z */
3348 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr
, 16)
3349 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr(basic_string_char
*this,
3350 char *beg
, char *end
, const char *str
)
3352 return basic_string_char_replace_cstr(this, basic_string_char__Pdif(beg
, this->ptr
),
3353 basic_string_char__Pdif(end
, beg
), str
);
3356 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBDI@Z */
3357 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD_K@Z */
3358 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len
, 20)
3359 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr_len(basic_string_char
*this,
3360 char *beg
, char *end
, const char *str
, size_t len
)
3362 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg
, this->ptr
),
3363 basic_string_char__Pdif(end
, beg
), str
, len
);
3366 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADID@Z */
3367 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEAD_KD@Z */
3368 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn
, 16)
3369 void __thiscall
basic_string_char_insert_iter_chn(basic_string_char
*this,
3370 char *pos
, size_t n
, char ch
)
3372 basic_string_char_insert_chn(this, basic_string_char__Pdif(pos
, this->ptr
), n
, ch
);
3375 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPADD@Z */
3376 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEADD@Z */
3377 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch
, 12)
3378 char* __thiscall
basic_string_char_insert_iter_ch(basic_string_char
*this, char *pos
, char ch
)
3380 size_t off
= basic_string_char__Pdif(pos
, this->ptr
);
3381 basic_string_char_insert_chn(this, off
, 1, ch
);
3382 return basic_string_char__Psum(this->ptr
, off
);
3385 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
3386 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
3387 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
3388 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
3389 DEFINE_THISCALL_WRAPPER(basic_string_char_begin
, 4)
3390 char* __thiscall
basic_string_char_begin(basic_string_char
*this)
3392 TRACE("(%p)\n", this);
3393 basic_string_char__Freeze(this);
3397 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
3398 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
3399 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
3400 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
3401 DEFINE_THISCALL_WRAPPER(basic_string_char_end
, 4)
3402 char* __thiscall
basic_string_char_end(basic_string_char
*this)
3404 TRACE("(%p)\n", this);
3405 basic_string_char__Freeze(this);
3406 return this->ptr
+this->size
;
3409 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
3410 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
3411 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
3412 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
3413 DEFINE_THISCALL_WRAPPER(basic_string_char_rbegin
, 8)
3414 String_reverse_iterator_char
* __thiscall
basic_string_char_rbegin(
3415 basic_string_char
*this, String_reverse_iterator_char
*ret
)
3417 TRACE("(%p %p)\n", this, ret
);
3418 ret
->ptr
= basic_string_char_end(this);
3422 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
3423 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
3424 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
3425 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
3426 DEFINE_THISCALL_WRAPPER(basic_string_char_rend
, 8)
3427 String_reverse_iterator_char
* __thiscall
basic_string_char_rend(
3428 basic_string_char
*this, String_reverse_iterator_char
*ret
)
3430 TRACE("(%p %p)\n", this, ret
);
3431 ret
->ptr
= basic_string_char_begin(this);
3435 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0ABV?$allocator@D@1@@Z */
3436 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0AEBV?$allocator@D@1@@Z */
3437 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter
, 16)
3438 basic_string_char
* __thiscall
basic_string_char_ctor_iter(basic_string_char
*this,
3439 const char *first
, const char *last
, allocator
*alloc
)
3441 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
3443 basic_string_char__Tidy(this, FALSE
);
3444 MSVCP_basic_string_char_assign_cstr_len(this, first
, basic_string_char__Pdif(last
, first
));
3448 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADPBD1@Z */
3449 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEADPEBD1@Z */
3450 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter
, 16)
3451 void __thiscall
basic_string_char_insert_iter(basic_string_char
*this,
3452 char *pos
, const char *beg
, const char *end
)
3454 basic_string_char_insert_cstr_len(this, basic_string_char__Pdif(pos
, this->ptr
),
3455 beg
, basic_string_char__Pdif(end
, beg
));
3458 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAIPBG0@Z */
3459 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CA_KPEBG0@Z */
3460 size_t __cdecl
basic_string_wchar__Pdif(const wchar_t *i1
, const wchar_t *i2
)
3462 TRACE("(%p %p)\n", i1
, i2
);
3463 return !i1
? 0 : i1
-i2
;
3466 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG0@Z */
3467 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG0@Z */
3468 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter
, 12)
3469 wchar_t* __thiscall
basic_string_wchar_erase_iter(basic_string_wchar
*this, wchar_t *beg
, wchar_t *end
)
3471 size_t pos
= basic_string_wchar__Pdif(beg
, this->ptr
);
3472 MSVCP_basic_string_wchar_erase(this, pos
, basic_string_wchar__Pdif(end
, beg
));
3473 return basic_string_wchar__Psum(this->ptr
, pos
);
3476 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0ABV?$allocator@G@1@@Z */
3477 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0AEBV?$allocator@G@1@@Z */
3478 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter
, 16)
3479 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_iter(basic_string_wchar
*this,
3480 const wchar_t *first
, const wchar_t *last
, allocator
*alloc
)
3482 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
3484 basic_string_wchar__Tidy(this, FALSE
);
3485 MSVCP_basic_string_wchar_assign_cstr_len(this, first
, basic_string_wchar__Pdif(last
, first
));
3489 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG1@Z */
3490 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG1@Z */
3491 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter
, 20)
3492 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_iter(basic_string_wchar
*this,
3493 wchar_t *beg1
, wchar_t *end1
, const wchar_t *beg2
, const wchar_t *end2
)
3495 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg1
, this->ptr
),
3496 basic_string_wchar__Pdif(end1
, beg1
), beg2
, basic_string_wchar__Pdif(end2
, beg2
));
3499 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0ABV12@@Z */
3500 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0AEBV12@@Z */
3501 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr
, 16)
3502 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_bstr(basic_string_wchar
*this,
3503 wchar_t *beg
, wchar_t *end
, const basic_string_wchar
*str
)
3505 return basic_string_wchar_replace(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3506 basic_string_wchar__Pdif(end
, beg
), str
);
3509 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0IG@Z */
3510 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0_KG@Z */
3511 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_chn
, 20)
3512 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_chn(basic_string_wchar
*this,
3513 wchar_t *beg
, wchar_t *end
, size_t count
, wchar_t ch
)
3515 return basic_string_wchar_replace_ch(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3516 basic_string_wchar__Pdif(end
, beg
), count
, ch
);
3519 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG@Z */
3520 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG@Z */
3521 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr
, 16)
3522 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr(basic_string_wchar
*this,
3523 wchar_t *beg
, wchar_t *end
, const wchar_t *str
)
3525 return basic_string_wchar_replace_cstr(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3526 basic_string_wchar__Pdif(end
, beg
), str
);
3529 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBGI@Z */
3530 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG_K@Z */
3531 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len
, 20)
3532 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr_len(basic_string_wchar
*this,
3533 wchar_t *beg
, wchar_t *end
, const wchar_t *str
, size_t len
)
3535 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3536 basic_string_wchar__Pdif(end
, beg
), str
, len
);
3539 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGIG@Z */
3540 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAG_KG@Z */
3541 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn
, 16)
3542 void __thiscall
basic_string_wchar_insert_iter_chn(basic_string_wchar
*this,
3543 wchar_t *pos
, size_t n
, wchar_t ch
)
3545 basic_string_wchar_insert_chn(this, basic_string_wchar__Pdif(pos
, this->ptr
), n
, ch
);
3548 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAGG@Z */
3549 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAGG@Z */
3550 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch
, 12)
3551 wchar_t* __thiscall
basic_string_wchar_insert_iter_ch(basic_string_wchar
*this, wchar_t *pos
, wchar_t ch
)
3553 size_t off
= basic_string_wchar__Pdif(pos
, this->ptr
);
3554 basic_string_wchar_insert_chn(this, off
, 1, ch
);
3555 return basic_string_wchar__Psum(this->ptr
, off
);
3558 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3559 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3560 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3561 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3562 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin
, 4)
3563 wchar_t* __thiscall
basic_string_wchar_begin(basic_string_wchar
*this)
3565 TRACE("(%p)\n", this);
3566 basic_string_wchar__Freeze(this);
3570 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3571 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3572 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3573 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3574 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end
, 4)
3575 wchar_t* __thiscall
basic_string_wchar_end(basic_string_wchar
*this)
3577 TRACE("(%p)\n", this);
3578 basic_string_wchar__Freeze(this);
3579 return this->ptr
+this->size
;
3582 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3583 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3584 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3585 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3586 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rbegin
, 8)
3587 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rbegin(
3588 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3590 TRACE("(%p %p)\n", this, ret
);
3591 ret
->ptr
= basic_string_wchar_end(this);
3595 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3596 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3597 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3598 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3599 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rend
, 8)
3600 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rend(
3601 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3603 TRACE("(%p %p)\n", this, ret
);
3604 ret
->ptr
= basic_string_wchar_begin(this);
3608 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGPBG1@Z */
3609 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAGPEBG1@Z */
3610 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter
, 16)
3611 void __thiscall
basic_string_wchar_insert_iter(basic_string_wchar
*this,
3612 wchar_t *pos
, const wchar_t *beg
, const wchar_t *end
)
3614 basic_string_wchar_insert_cstr_len(this, basic_string_wchar__Pdif(pos
, this->ptr
),
3615 beg
, basic_string_wchar__Pdif(end
, beg
));