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
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp
);
34 /* _String_iterator<char> and _String_const_iterator<char> class */
37 } String_reverse_iterator_char
;
41 } String_reverse_iterator_wchar
;
48 /* ?_Xran@std@@YAXXZ */
49 void __cdecl
_Xran(void)
51 static const char msg
[] = "invalid string position";
54 throw_exception(EXCEPTION_OUT_OF_RANGE
, msg
);
57 /* ?_Xlen@std@@YAXXZ */
58 void __cdecl
_Xlen(void)
60 static const char msg
[] = "string too long";
63 throw_exception(EXCEPTION_LENGTH_ERROR
, msg
);
66 /* ?compare@?$char_traits@D@std@@SAHPBD0I@Z */
67 /* ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z */
68 int CDECL
MSVCP_char_traits_char_compare(
69 const char *s1
, const char *s2
, MSVCP_size_t count
)
71 int ret
= memcmp(s1
, s2
, count
);
72 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
75 /* ?length@?$char_traits@D@std@@SAIPBD@Z */
76 /* ?length@?$char_traits@D@std@@SA_KPEBD@Z */
77 MSVCP_size_t CDECL
MSVCP_char_traits_char_length(const char *str
)
82 /* ?_Copy_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
83 /* ?_Copy_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
84 char* CDECL
MSVCP_char_traits_char__Copy_s(char *dest
,
85 MSVCP_size_t size
, const char *src
, MSVCP_size_t count
)
87 if(!dest
|| !src
|| size
<count
) {
90 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
94 return memcpy(dest
, src
, count
);
97 /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */
98 /* ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
99 char* CDECL
MSVCP_char_traits_char_copy(
100 char *dest
, const char *src
, MSVCP_size_t count
)
102 return MSVCP_char_traits_char__Copy_s(dest
, count
, src
, count
);
105 /* ?find@?$char_traits@D@std@@SAPBDPBDIABD@Z */
106 /* ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z */
107 const char * CDECL
MSVCP_char_traits_char_find(
108 const char *str
, MSVCP_size_t range
, const char *c
)
110 return memchr(str
, *c
, range
);
113 /* ?_Move_s@?$char_traits@D@std@@SAPADPADIPBDI@Z */
114 /* ?_Move_s@?$char_traits@D@std@@SAPEADPEAD_KPEBD1@Z */
115 char* CDECL
MSVCP_char_traits_char__Move_s(char *dest
,
116 MSVCP_size_t size
, const char *src
, MSVCP_size_t count
)
118 if(!dest
|| !src
|| size
<count
) {
121 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
125 return memmove(dest
, src
, count
);
128 /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */
129 /* ?move@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z */
130 char* CDECL
MSVCP_char_traits_char_move(
131 char *dest
, const char *src
, MSVCP_size_t count
)
133 return MSVCP_char_traits_char__Move_s(dest
, count
, src
, count
);
136 /* ?assign@?$char_traits@D@std@@SAPADPADID@Z */
137 /* ?assign@?$char_traits@D@std@@SAPEADPEAD_KD@Z */
138 char* CDECL
MSVCP_char_traits_char_assignn(char *str
, MSVCP_size_t num
, char c
)
140 return memset(str
, c
, num
);
143 /* ?compare@?$char_traits@_W@std@@SAHPB_W0I@Z */
144 /* ?compare@?$char_traits@_W@std@@SAHPEB_W0_K@Z */
145 int CDECL
MSVCP_char_traits_wchar_compare(const wchar_t *s1
,
146 const wchar_t *s2
, MSVCP_size_t count
)
151 for (i
= 0; i
< count
&& !ret
; i
++) ret
= s1
[i
] - s2
[i
];
152 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
155 /* ?length@?$char_traits@_W@std@@SAIPB_W@Z */
156 /* ?length@?$char_traits@_W@std@@SA_KPEB_W@Z */
157 MSVCP_size_t CDECL
MSVCP_char_traits_wchar_length(const wchar_t *str
)
159 return wcslen((WCHAR
*)str
);
162 /* ?_Copy_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
163 /* ?_Copy_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
164 wchar_t* CDECL
MSVCP_char_traits_wchar__Copy_s(wchar_t *dest
,
165 MSVCP_size_t size
, const wchar_t *src
, MSVCP_size_t count
)
167 if(!dest
|| !src
|| size
<count
) {
170 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
174 return memcpy(dest
, src
, count
* sizeof(wchar_t));
177 /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
178 /* ?copy@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
179 wchar_t* CDECL
MSVCP_char_traits_wchar_copy(wchar_t *dest
,
180 const wchar_t *src
, MSVCP_size_t count
)
182 return MSVCP_char_traits_wchar__Copy_s(dest
, count
, src
, count
);
185 /* ?find@?$char_traits@_W@std@@SAPB_WPB_WIAB_W@Z */
186 /* ?find@?$char_traits@_W@std@@SAPEB_WPEB_W_KAEB_W@Z */
187 const wchar_t* CDECL
MSVCP_char_traits_wchar_find(
188 const wchar_t *str
, MSVCP_size_t range
, const wchar_t *c
)
192 for(i
=0; i
<range
; i
++)
199 /* ?_Move_s@?$char_traits@_W@std@@SAPA_WPA_WIPB_WI@Z */
200 /* ?_Move_s@?$char_traits@_W@std@@SAPEA_WPEA_W_KPEB_W1@Z */
201 wchar_t* CDECL
MSVCP_char_traits_wchar__Move_s(wchar_t *dest
,
202 MSVCP_size_t size
, const wchar_t *src
, MSVCP_size_t count
)
204 if(!dest
|| !src
|| size
<count
) {
207 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
211 return memmove(dest
, src
, count
* sizeof(WCHAR
));
214 /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */
215 /* ?move@?$char_traits@_W@std@@SAPEA_WPEA_WPEB_W_K@Z */
216 wchar_t* CDECL
MSVCP_char_traits_wchar_move(wchar_t *dest
,
217 const wchar_t *src
, MSVCP_size_t count
)
219 return MSVCP_char_traits_wchar__Move_s(dest
, count
, src
, count
);
222 /* ?assign@?$char_traits@_W@std@@SAPA_WPA_WI_W@Z */
223 /* ?assign@?$char_traits@_W@std@@SAPEA_WPEA_W_K_W@Z */
224 wchar_t* CDECL
MSVCP_char_traits_wchar_assignn(wchar_t *str
,
225 MSVCP_size_t num
, wchar_t c
)
235 static MSVCP_bool
basic_string_char_inside(
236 basic_string_char
*this, const char *ptr
)
238 return ptr
>=this->ptr
&& ptr
<this->ptr
+this->size
;
241 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
242 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
243 const MSVCP_size_t MSVCP_basic_string_char_npos
= -1;
245 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ@4DB */
246 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ@4DB */
247 const char basic_string_char_nullbyte
= '\0';
249 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ */
250 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ */
251 const char* __cdecl
basic_string_char__Nullstr(void)
253 return &basic_string_char_nullbyte
;
256 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEAAEPBD@Z */
257 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAAEAEPEBD@Z */
258 DEFINE_THISCALL_WRAPPER(basic_string_char__Refcnt
, 8)
259 unsigned char* __thiscall
basic_string_char__Refcnt(basic_string_char
*this, const char *ptr
)
261 TRACE("(%p %p)\n", this, ptr
);
262 return (unsigned char*)ptr
-1;
265 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
266 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
267 DEFINE_THISCALL_WRAPPER(basic_string_char__Eos
, 8)
268 void __thiscall
basic_string_char__Eos(basic_string_char
*this, MSVCP_size_t len
)
274 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
275 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
276 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear
, 4)
277 void __thiscall
MSVCP_basic_string_char_clear(basic_string_char
*this)
280 basic_string_char__Eos(this, 0);
283 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
284 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
285 DEFINE_THISCALL_WRAPPER(basic_string_char__Tidy
, 8)
286 void __thiscall
basic_string_char__Tidy(basic_string_char
*this, MSVCP_bool built
)
288 TRACE("(%p %d)\n", this, built
);
290 if(!built
|| !this->ptr
);
291 else if(!this->ptr
[-1] || (unsigned char)this->ptr
[-1]==FROZEN
)
292 MSVCP_allocator_char_deallocate(NULL
, this->ptr
-1, this->res
+2);
296 memset(this, 0, sizeof(*this));
299 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAE_NI_N@Z */
300 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAA_N_K_N@Z */
301 DEFINE_THISCALL_WRAPPER(basic_string_char__Grow
, 12)
302 MSVCP_bool __thiscall
basic_string_char__Grow(basic_string_char
*this, MSVCP_size_t new_size
, MSVCP_bool trim
)
306 basic_string_char__Tidy(this, TRUE
);
308 basic_string_char__Eos(this, 0);
309 } else if(this->res
<new_size
|| trim
||
310 (this->ptr
&& this->ptr
[-1] && (unsigned char)this->ptr
[-1]!=FROZEN
)) {
311 MSVCP_size_t new_res
= new_size
, len
= this->size
;
314 if(!trim
&& this->ptr
&& !this->ptr
[-1]) {
316 if(new_res
/3 < this->res
/2)
317 new_res
= this->res
+ this->res
/2;
320 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_res
+2);
323 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_size
+2);
326 ERR("Out of memory\n");
335 MSVCP_char_traits_char__Copy_s(ptr
+1, new_size
, this->ptr
, len
);
336 basic_string_char__Tidy(this, TRUE
);
339 basic_string_char__Eos(this, len
);
345 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
346 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
347 DEFINE_THISCALL_WRAPPER(basic_string_char__Split
, 4)
348 void __thiscall
basic_string_char__Split(basic_string_char
*this)
353 TRACE("(%p)\n", this);
355 if(!this->ptr
|| !this->ptr
[-1] || (unsigned char)this->ptr
[-1]==FROZEN
)
360 basic_string_char__Tidy(this, TRUE
);
361 if(basic_string_char__Grow(this, len
, FALSE
)) {
363 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, ptr
, len
);
364 basic_string_char__Eos(this, len
);
368 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
369 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
370 DEFINE_THISCALL_WRAPPER(basic_string_char__Freeze
, 4)
371 void __thiscall
basic_string_char__Freeze(basic_string_char
*this)
373 TRACE("(%p)\n", this);
374 basic_string_char__Split(this);
376 this->ptr
[-1] = FROZEN
;
379 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
380 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
381 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy
, 8)
382 void __thiscall
basic_string_char__Copy(basic_string_char
*this, MSVCP_size_t copy_len
)
384 TRACE("%p %lu\n", this, copy_len
);
386 if(!basic_string_char__Grow(this, copy_len
, TRUE
))
390 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPADPADI@Z */
391 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEADPEAD_K@Z */
392 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDPBDI@Z */
393 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDPEBD_K@Z */
394 char* __cdecl
basic_string_char__Psum(char *iter
, MSVCP_size_t add
)
396 TRACE("(%p %lu)\n", iter
, add
);
397 return iter
? iter
+add
: iter
;
400 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
401 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
402 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase
, 12)
403 basic_string_char
* __thiscall
MSVCP_basic_string_char_erase(
404 basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t len
)
406 TRACE("%p %lu %lu\n", this, pos
, len
);
411 if(len
> this->size
-pos
)
412 len
= this->size
-pos
;
415 basic_string_char__Split(this);
416 MSVCP_char_traits_char__Move_s(this->ptr
+pos
, this->res
-pos
,
417 this->ptr
+pos
+len
, this->size
-pos
-len
);
418 basic_string_char__Eos(this, this->size
-len
);
424 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD@Z */
425 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD@Z */
426 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_beg
, 8)
427 char* __thiscall
basic_string_char_erase_beg(basic_string_char
*this, char *beg
)
429 MSVCP_size_t pos
= beg
-this->ptr
;
430 MSVCP_basic_string_char_erase(this, pos
, 1);
431 return this->ptr
+pos
;
434 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
435 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
436 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr
, 16)
437 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_substr(
438 basic_string_char
*this, const basic_string_char
*assign
,
439 MSVCP_size_t pos
, MSVCP_size_t len
)
441 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
443 if(assign
->size
< pos
)
446 if(len
> assign
->size
-pos
)
447 len
= assign
->size
-pos
;
450 MSVCP_basic_string_char_erase(this, pos
+len
, MSVCP_basic_string_char_npos
);
451 MSVCP_basic_string_char_erase(this, 0, pos
);
452 } else if(basic_string_char__Grow(this, len
, FALSE
)) {
454 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, assign
->ptr
+pos
, len
);
455 basic_string_char__Eos(this, len
);
461 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
462 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
463 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len
, 12)
464 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_cstr_len(
465 basic_string_char
*this, const char *str
, MSVCP_size_t len
)
467 TRACE("%p %s %lu\n", this, debugstr_an(str
, len
), len
);
469 if(basic_string_char_inside(this, str
))
470 return MSVCP_basic_string_char_assign_substr(this, this, str
-this->ptr
, len
);
471 else if(basic_string_char__Grow(this, len
, FALSE
)) {
472 MSVCP_char_traits_char__Copy_s(this->ptr
, this->res
, str
, len
);
473 basic_string_char__Eos(this, len
);
479 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
480 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
481 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
482 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
483 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign
, 8)
484 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign(
485 basic_string_char
*this, const basic_string_char
*assign
)
487 return MSVCP_basic_string_char_assign_substr(this, assign
,
488 0, MSVCP_basic_string_char_npos
);
491 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
492 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
493 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
494 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
495 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr
, 8)
496 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_cstr(
497 basic_string_char
*this, const char *str
)
499 return MSVCP_basic_string_char_assign_cstr_len(this, str
,
500 MSVCP_char_traits_char_length(str
));
503 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
504 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
505 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch
, 8)
506 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_ch(
507 basic_string_char
*this, char ch
)
509 return MSVCP_basic_string_char_assign_cstr_len(this, &ch
, 1);
512 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
513 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
514 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn
, 12)
515 basic_string_char
* __thiscall
MSVCP_basic_string_char_assignn(
516 basic_string_char
*this, MSVCP_size_t count
, char ch
)
518 TRACE("%p %ld %c\n", this, count
, ch
);
520 basic_string_char__Grow(this, count
, FALSE
);
521 MSVCP_char_traits_char_assignn(this->ptr
, count
, ch
);
522 basic_string_char__Eos(this, count
);
526 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
527 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
528 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr
, 12)
529 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_ptr_ptr(
530 basic_string_char
*this, const char *first
, const char *last
)
532 return MSVCP_basic_string_char_assign_cstr_len(this, first
, last
-first
);
535 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
536 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
537 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc
, 16)
538 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_len_alloc(
539 basic_string_char
*this, const char *str
, MSVCP_size_t len
, const void *alloc
)
541 TRACE("%p %s %ld\n", this, debugstr_an(str
, len
), len
);
543 basic_string_char__Tidy(this, FALSE
);
544 MSVCP_basic_string_char_assign_cstr_len(this, str
, len
);
548 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
549 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
550 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len
, 12)
551 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_len(
552 basic_string_char
*this, const char *str
, MSVCP_size_t len
)
554 return MSVCP_basic_string_char_ctor_cstr_len_alloc(this, str
, len
, NULL
);
557 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
558 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
559 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc
, 20)
560 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_substr_alloc(
561 basic_string_char
*this, const basic_string_char
*assign
,
562 MSVCP_size_t pos
, MSVCP_size_t len
, const void *alloc
)
564 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
566 basic_string_char__Tidy(this, FALSE
);
567 MSVCP_basic_string_char_assign_substr(this, assign
, pos
, len
);
571 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
572 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
573 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc
, 12)
574 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_alloc(
575 basic_string_char
*this, const char *str
, const void *alloc
)
577 TRACE("%p %s\n", this, debugstr_a(str
));
579 basic_string_char__Tidy(this, FALSE
);
580 MSVCP_basic_string_char_assign_cstr(this, str
);
584 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
585 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
586 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr
, 8)
587 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr(
588 basic_string_char
*this, const char *str
)
590 return MSVCP_basic_string_char_ctor_cstr_alloc(this, str
, NULL
);
593 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
594 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
595 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc
, 16)
596 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char
*this,
597 MSVCP_size_t count
, char ch
, const void *alloc
)
599 TRACE("%p %ld %c\n", this, count
, ch
);
601 basic_string_char__Tidy(this, FALSE
);
602 MSVCP_basic_string_char_assignn(this, count
, ch
);
606 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
607 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
608 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor
, 4)
609 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor(basic_string_char
*this)
613 basic_string_char__Tidy(this, FALSE
);
617 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
618 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
619 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc
, 8)
620 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_alloc(
621 basic_string_char
*this, const void *alloc
)
623 TRACE("%p %p\n", this, alloc
);
625 basic_string_char__Tidy(this, FALSE
);
629 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
630 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
631 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor
, 8)
632 basic_string_char
* __thiscall
MSVCP_basic_string_char_copy_ctor(
633 basic_string_char
*this, const basic_string_char
*copy
)
635 TRACE("%p %p\n", this, copy
);
637 basic_string_char__Tidy(this, FALSE
);
638 MSVCP_basic_string_char_assign(this, copy
);
642 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
643 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
644 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor
, 4)
645 void __thiscall
MSVCP_basic_string_char_dtor(basic_string_char
*this)
648 basic_string_char__Tidy(this, TRUE
);
651 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
652 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
653 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len
, 20)
654 int __thiscall
MSVCP_basic_string_char_compare_substr_cstr_len(
655 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
656 const char *str
, MSVCP_size_t count
)
660 TRACE("%p %lu %lu %s %lu\n", this, pos
, num
, debugstr_an(str
, count
), count
);
665 if(num
> this->size
-pos
)
666 num
= this->size
-pos
;
668 ans
= MSVCP_char_traits_char_compare(this->ptr
+pos
,
669 str
, num
>count
? count
: num
);
680 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
681 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
682 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr
, 8)
683 int __thiscall
MSVCP_basic_string_char_compare_cstr(
684 const basic_string_char
*this, const char *str
)
686 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
687 str
, MSVCP_char_traits_char_length(str
));
690 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
691 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
692 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr
, 24)
693 int __thiscall
MSVCP_basic_string_char_compare_substr_substr(
694 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
695 const basic_string_char
*compare
, MSVCP_size_t off
, MSVCP_size_t count
)
697 TRACE("%p %lu %lu %p %lu %lu\n", this, pos
, num
, compare
, off
, count
);
699 if(compare
->size
< off
)
702 if(count
> compare
->size
-off
)
703 count
= compare
->size
-off
;
705 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
706 compare
->ptr
+off
, count
);
709 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
710 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
711 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr
, 16)
712 int __thiscall
MSVCP_basic_string_char_compare_substr(
713 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
714 const basic_string_char
*compare
)
716 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
717 compare
->ptr
, compare
->size
);
720 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
721 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
722 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare
, 8)
723 int __thiscall
MSVCP_basic_string_char_compare(
724 const basic_string_char
*this, const basic_string_char
*compare
)
726 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
727 compare
->ptr
, compare
->size
);
730 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
731 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
732 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr
, 16)
733 int __thiscall
MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char
*this,
734 MSVCP_size_t pos
, MSVCP_size_t num
, const char *str
)
736 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
737 str
, MSVCP_char_traits_char_length(str
));
740 /* ??$?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 */
741 /* ??$?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 */
742 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
743 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
744 MSVCP_bool __cdecl
MSVCP_basic_string_char_equal(
745 const basic_string_char
*left
, const basic_string_char
*right
)
747 return MSVCP_basic_string_char_compare(left
, right
) == 0;
750 /* ??$?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 */
751 /* ??$?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 */
752 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
753 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
754 MSVCP_bool __cdecl
MSVCP_basic_string_char_equal_str_cstr(
755 const basic_string_char
*left
, const char *right
)
757 return MSVCP_basic_string_char_compare_cstr(left
, right
) == 0;
760 /* ??$?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 */
761 /* ??$?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 */
762 /* ??8std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
763 /* ??8std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
764 MSVCP_bool __cdecl
MSVCP_basic_string_char_equal_cstr_str(
765 const char *left
, const basic_string_char
*right
)
767 return MSVCP_basic_string_char_compare_cstr(right
, left
) == 0;
770 /* ??$?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 */
771 /* ??$?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 */
772 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
773 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
774 MSVCP_bool __cdecl
MSVCP_basic_string_char_not_equal(
775 const basic_string_char
*left
, const basic_string_char
*right
)
777 return MSVCP_basic_string_char_compare(left
, right
) != 0;
780 /* ??$?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 */
781 /* ??$?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 */
782 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
783 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
784 MSVCP_bool __cdecl
MSVCP_basic_string_char_not_equal_str_cstr(
785 const basic_string_char
*left
, const char *right
)
787 return MSVCP_basic_string_char_compare_cstr(left
, right
) != 0;
790 /* ??$?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 */
791 /* ??$?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 */
792 /* ??9std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
793 /* ??9std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
794 MSVCP_bool __cdecl
MSVCP_basic_string_char_not_equal_cstr_str(
795 const char *left
, const basic_string_char
*right
)
797 return MSVCP_basic_string_char_compare_cstr(right
, left
) != 0;
800 /* ??$?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 */
801 /* ??$?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 */
802 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
803 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
804 MSVCP_bool __cdecl
MSVCP_basic_string_char_lower(
805 const basic_string_char
*left
, const basic_string_char
*right
)
807 return MSVCP_basic_string_char_compare(left
, right
) < 0;
810 /* ??$?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 */
811 /* ??$?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 */
812 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
813 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
814 MSVCP_bool __cdecl
MSVCP_basic_string_char_lower_bstr_cstr(
815 const basic_string_char
*left
, const char *right
)
817 return MSVCP_basic_string_char_compare_cstr(left
, right
) < 0;
820 /* ??$?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 */
821 /* ??$?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 */
822 /* ??Mstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
823 /* ??Mstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
824 MSVCP_bool __cdecl
MSVCP_basic_string_char_lower_cstr_bstr(
825 const char *left
, const basic_string_char
*right
)
827 return MSVCP_basic_string_char_compare_cstr(right
, left
) > 0;
830 /* ??$?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 */
831 /* ??$?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 */
832 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
833 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
834 MSVCP_bool __cdecl
MSVCP_basic_string_char_leq(
835 const basic_string_char
*left
, const basic_string_char
*right
)
837 return MSVCP_basic_string_char_compare(left
, right
) <= 0;
840 /* ??$?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 */
841 /* ??$?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 */
842 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
843 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
844 MSVCP_bool __cdecl
MSVCP_basic_string_char_leq_bstr_cstr(
845 const basic_string_char
*left
, const char *right
)
847 return MSVCP_basic_string_char_compare_cstr(left
, right
) <= 0;
850 /* ??$?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 */
851 /* ??$?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 */
852 /* ??Nstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
853 /* ??Nstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
854 MSVCP_bool __cdecl
MSVCP_basic_string_char_leq_cstr_bstr(
855 const char *left
, const basic_string_char
*right
)
857 return MSVCP_basic_string_char_compare_cstr(right
, left
) >= 0;
860 /* ??$?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 */
861 /* ??$?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 */
862 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
863 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
864 MSVCP_bool __cdecl
MSVCP_basic_string_char_greater(
865 const basic_string_char
*left
, const basic_string_char
*right
)
867 return MSVCP_basic_string_char_compare(left
, right
) > 0;
870 /* ??$?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 */
871 /* ??$?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 */
872 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
873 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
874 MSVCP_bool __cdecl
MSVCP_basic_string_char_greater_bstr_cstr(
875 const basic_string_char
*left
, const char *right
)
877 return MSVCP_basic_string_char_compare_cstr(left
, right
) > 0;
880 /* ??$?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 */
881 /* ??$?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 */
882 /* ??Ostd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
883 /* ??Ostd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
884 MSVCP_bool __cdecl
MSVCP_basic_string_char_greater_cstr_bstr(
885 const char *left
, const basic_string_char
*right
)
887 return MSVCP_basic_string_char_compare_cstr(right
, left
) < 0;
890 /* ??$?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 */
891 /* ??$?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 */
892 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
893 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
894 MSVCP_bool __cdecl
MSVCP_basic_string_char_geq(
895 const basic_string_char
*left
, const basic_string_char
*right
)
897 return MSVCP_basic_string_char_compare(left
, right
) >= 0;
900 /* ??$?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 */
901 /* ??$?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 */
902 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
903 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
904 MSVCP_bool __cdecl
MSVCP_basic_string_char_geq_bstr_cstr(
905 const basic_string_char
*left
, const char *right
)
907 return MSVCP_basic_string_char_compare_cstr(left
, right
) >= 0;
910 /* ??$?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 */
911 /* ??$?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 */
912 /* ??Pstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
913 /* ??Pstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
914 MSVCP_bool __cdecl
MSVCP_basic_string_char_geq_cstr_bstr(
915 const char *left
, const basic_string_char
*right
)
917 return MSVCP_basic_string_char_compare_cstr(right
, left
) <= 0;
920 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
921 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
922 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr
, 16)
923 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_cstr_substr(
924 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
928 TRACE("%p %s %lu %lu\n", this, debugstr_an(find
, len
), pos
, len
);
930 if(len
==0 && pos
<=this->size
)
932 if(pos
>=this->size
|| len
>this->size
)
933 return MSVCP_basic_string_char_npos
;
935 end
= this->ptr
+this->size
-len
+1;
936 for(p
=this->ptr
+pos
; p
<end
; p
++) {
937 p
= MSVCP_char_traits_char_find(p
, end
-p
, find
);
941 if(!MSVCP_char_traits_char_compare(p
, find
, len
))
945 return MSVCP_basic_string_char_npos
;
948 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
949 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
950 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off
, 12)
951 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_off(
952 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
954 return MSVCP_basic_string_char_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
957 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
958 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
959 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch
, 12)
960 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_ch(
961 const basic_string_char
*this, char ch
, MSVCP_size_t pos
)
963 return MSVCP_basic_string_char_find_cstr_substr(this, &ch
, pos
, 1);
966 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
967 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
968 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off
, 12)
969 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_cstr_off(
970 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
)
972 return MSVCP_basic_string_char_find_cstr_substr(this, find
, pos
,
973 MSVCP_char_traits_char_length(find
));
976 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
977 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
978 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr
, 16)
979 MSVCP_size_t __thiscall
MSVCP_basic_string_char_rfind_cstr_substr(
980 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
984 TRACE("%p %s %lu %lu\n", this, debugstr_an(find
, len
), pos
, len
);
987 return pos
<this->size
? pos
: this->size
;
990 return MSVCP_basic_string_char_npos
;
992 if(pos
> this->size
-len
+1)
993 pos
= this->size
-len
+1;
995 for(p
=end
+pos
; p
>=end
; p
--) {
996 if(*p
==*find
&& !MSVCP_char_traits_char_compare(p
, find
, len
))
1000 return MSVCP_basic_string_char_npos
;
1003 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1004 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1005 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off
, 12)
1006 MSVCP_size_t __thiscall
MSVCP_basic_string_char_rfind_off(
1007 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1009 return MSVCP_basic_string_char_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
1012 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1013 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1014 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch
, 12)
1015 MSVCP_size_t __thiscall
MSVCP_basic_string_char_rfind_ch(
1016 const basic_string_char
*this, char ch
, MSVCP_size_t pos
)
1018 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch
, pos
, 1);
1021 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1022 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1023 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off
, 12)
1024 MSVCP_size_t __thiscall
MSVCP_basic_string_char_rfind_cstr_off(
1025 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
)
1027 return MSVCP_basic_string_char_rfind_cstr_substr(this, find
, pos
,
1028 MSVCP_char_traits_char_length(find
));
1031 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1032 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1033 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr
, 16)
1034 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1035 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
1037 const char *p
, *end
;
1039 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
1041 if(off
<this->size
) {
1042 end
= this->ptr
+this->size
;
1043 for(p
=this->ptr
+off
; p
<end
; p
++)
1044 if(!MSVCP_char_traits_char_find(find
, len
, p
))
1048 return MSVCP_basic_string_char_npos
;
1051 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1052 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1053 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of
, 12)
1054 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_not_of(
1055 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1057 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
1058 find
->ptr
, off
, find
->size
);
1061 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1062 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1063 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch
, 12)
1064 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_ch(
1065 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1067 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
1070 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1071 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1072 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr
, 12)
1073 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_cstr(
1074 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1076 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
1077 this, find
, off
, MSVCP_char_traits_char_length(find
));
1080 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1081 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1082 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr
, 16)
1083 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_of_cstr_substr(
1084 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
1086 const char *p
, *end
;
1088 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
1090 if(len
>0 && off
<this->size
) {
1091 end
= this->ptr
+this->size
;
1092 for(p
=this->ptr
+off
; p
<end
; p
++)
1093 if(MSVCP_char_traits_char_find(find
, len
, p
))
1097 return MSVCP_basic_string_char_npos
;
1100 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1101 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1102 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of
, 12)
1103 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_of(
1104 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1106 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
1107 find
->ptr
, off
, find
->size
);
1110 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1111 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1112 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch
, 12)
1113 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_of_ch(
1114 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1116 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch
, off
, 1);
1119 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1120 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1121 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr
, 12)
1122 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_of_cstr(
1123 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1125 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1126 this, find
, off
, MSVCP_char_traits_char_length(find
));
1129 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1130 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1131 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr
, 16)
1132 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1133 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
1135 const char *p
, *beg
;
1137 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
1139 if(len
>0 && this->size
>0) {
1140 if(off
>= this->size
)
1144 for(p
=beg
+off
; p
>=beg
; p
--)
1145 if(!MSVCP_char_traits_char_find(find
, len
, p
))
1149 return MSVCP_basic_string_char_npos
;
1152 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1153 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1154 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of
, 12)
1155 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_not_of(
1156 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1158 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1159 find
->ptr
, off
, find
->size
);
1162 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1163 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1164 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch
, 12)
1165 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_ch(
1166 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1168 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
1171 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1172 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1173 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr
, 12)
1174 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_cstr(
1175 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1177 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1178 this, find
, off
, MSVCP_char_traits_char_length(find
));
1181 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1182 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1183 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr
, 16)
1184 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_of_cstr_substr(
1185 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
1187 const char *p
, *beg
;
1189 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
1191 if(len
>0 && this->size
>0) {
1192 if(off
>= this->size
)
1196 for(p
=beg
+off
; p
>=beg
; p
--)
1197 if(MSVCP_char_traits_char_find(find
, len
, p
))
1201 return MSVCP_basic_string_char_npos
;
1204 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1205 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1206 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of
, 12)
1207 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_of(
1208 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1210 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1211 find
->ptr
, off
, find
->size
);
1214 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1215 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1216 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch
, 12)
1217 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_of_ch(
1218 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1220 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch
, off
, 1);
1223 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1224 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1225 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr
, 12)
1226 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_of_cstr(
1227 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1229 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1230 this, find
, off
, MSVCP_char_traits_char_length(find
));
1233 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1234 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1235 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr
, 16)
1236 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_substr(basic_string_char
*this,
1237 const basic_string_char
*append
, MSVCP_size_t offset
, MSVCP_size_t count
)
1239 TRACE("%p %p %lu %lu\n", this, append
, offset
, count
);
1241 if(append
->size
< offset
)
1244 if(count
> append
->size
-offset
)
1245 count
= append
->size
-offset
;
1247 if(MSVCP_basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1250 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1252 MSVCP_char_traits_char__Copy_s(this->ptr
+this->size
, this->res
-this->size
,
1253 append
->ptr
+offset
, count
);
1254 basic_string_char__Eos(this, this->size
+count
);
1260 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1261 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1262 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len
, 12)
1263 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_cstr_len(
1264 basic_string_char
*this, const char *append
, MSVCP_size_t count
)
1266 TRACE("%p %s %lu\n", this, debugstr_an(append
, count
), count
);
1268 if(basic_string_char_inside(this, append
))
1269 return MSVCP_basic_string_char_append_substr(this, this, append
-this->ptr
, count
);
1271 if(MSVCP_basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1274 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1275 MSVCP_char_traits_char__Copy_s(this->ptr
+this->size
,
1276 this->res
-this->size
, append
, count
);
1277 basic_string_char__Eos(this, this->size
+count
);
1283 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1284 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1285 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch
, 12)
1286 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_len_ch(
1287 basic_string_char
*this, MSVCP_size_t count
, char ch
)
1289 TRACE("%p %lu %c\n", this, count
, ch
);
1291 if(MSVCP_basic_string_char_npos
-this->size
<= count
)
1294 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1295 MSVCP_char_traits_char_assignn(this->ptr
+this->size
, count
, ch
);
1296 basic_string_char__Eos(this, this->size
+count
);
1302 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1303 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1304 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1305 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1306 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append
, 8)
1307 basic_string_char
* __thiscall
MSVCP_basic_string_char_append(
1308 basic_string_char
*this, const basic_string_char
*append
)
1310 return MSVCP_basic_string_char_append_substr(this, append
,
1311 0, MSVCP_basic_string_char_npos
);
1314 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1315 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1316 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch
, 8)
1317 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_ch(
1318 basic_string_char
*this, char ch
)
1320 return MSVCP_basic_string_char_append_len_ch(this, 1, ch
);
1323 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1324 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1325 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end
, 12)
1326 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_beg_end(
1327 basic_string_char
*this, const char *beg
, const char *end
)
1329 return MSVCP_basic_string_char_append_cstr_len(this, beg
, end
-beg
);
1332 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1333 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1334 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1335 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1336 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr
, 8)
1337 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_cstr(
1338 basic_string_char
*this, const char *append
)
1340 return MSVCP_basic_string_char_append_cstr_len(this, append
,
1341 MSVCP_char_traits_char_length(append
));
1343 /* ??$?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 */
1344 /* ??$?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 */
1345 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1346 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1347 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate(basic_string_char
*ret
,
1348 const basic_string_char
*left
, const basic_string_char
*right
)
1350 TRACE("%p %p\n", left
, right
);
1352 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1353 MSVCP_basic_string_char_append(ret
, right
);
1357 /* ??$?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 */
1358 /* ??$?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 */
1359 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1360 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1361 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char
*ret
,
1362 const basic_string_char
*left
, char right
)
1364 TRACE("%p %c\n", left
, right
);
1366 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1367 MSVCP_basic_string_char_append_ch(ret
, right
);
1371 /* ??$?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 */
1372 /* ??$?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 */
1373 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1374 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1375 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char
*ret
,
1376 const basic_string_char
*left
, const char *right
)
1378 TRACE("%p %s\n", left
, debugstr_a(right
));
1380 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1381 MSVCP_basic_string_char_append_cstr(ret
, right
);
1385 /* ??$?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 */
1386 /* ??$?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 */
1387 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1388 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1389 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char
*ret
,
1390 char left
, const basic_string_char
*right
)
1392 TRACE("%c %p\n", left
, right
);
1394 MSVCP_basic_string_char_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
1395 MSVCP_basic_string_char_append(ret
, right
);
1399 /* ??$?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 */
1400 /* ??$?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 */
1401 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1402 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1403 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char
*ret
,
1404 const char *left
, const basic_string_char
*right
)
1406 TRACE("%s %p\n", debugstr_a(left
), right
);
1408 MSVCP_basic_string_char_ctor_cstr_alloc(ret
, left
, NULL
);
1409 MSVCP_basic_string_char_append(ret
, right
);
1413 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1414 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1415 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1416 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1417 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at
, 8)
1418 char* __thiscall
MSVCP_basic_string_char_operator_at(
1419 basic_string_char
*this, MSVCP_size_t pos
)
1421 TRACE("%p %lu\n", this, pos
);
1423 assert(this->size
>= pos
);
1424 return this->ptr
+pos
;
1427 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1428 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1429 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1430 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1431 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at
, 8)
1432 char* __thiscall
MSVCP_basic_string_char_at(
1433 basic_string_char
*this, MSVCP_size_t pos
)
1435 TRACE("%p %lu\n", this, pos
);
1437 if(this->size
<= pos
)
1440 return this->ptr
+pos
;
1443 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1444 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1445 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len
, 20)
1446 basic_string_char
* __thiscall
basic_string_char_replace_cstr_len(basic_string_char
*this,
1447 MSVCP_size_t off
, MSVCP_size_t len
, const char *str
, MSVCP_size_t str_len
)
1449 MSVCP_size_t inside_pos
= -1;
1450 char *ptr
= this->ptr
;
1452 TRACE("%p %ld %ld %p %ld\n", this, off
, len
, str
, str_len
);
1454 if(this->size
< off
)
1457 if(len
> this->size
-off
)
1458 len
= this->size
-off
;
1460 if(MSVCP_basic_string_char_npos
-str_len
<= this->size
-len
)
1463 if(basic_string_char_inside(this, str
))
1464 inside_pos
= str
-ptr
;
1466 if(this->size
-len
+str_len
)
1467 basic_string_char__Grow(this, this->size
-len
+str_len
, FALSE
);
1470 if(inside_pos
== -1) {
1471 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1472 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
1473 } else if(len
>= str_len
) {
1474 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
1475 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1479 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1481 if(inside_pos
< off
+len
) {
1482 size
= off
+len
-inside_pos
;
1485 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
1491 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
1495 basic_string_char__Eos(this, this->size
-len
+str_len
);
1499 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
1500 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
1501 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr
, 24)
1502 basic_string_char
* __thiscall
basic_string_char_replace_substr(basic_string_char
*this, MSVCP_size_t off
,
1503 MSVCP_size_t len
, const basic_string_char
*str
, MSVCP_size_t str_off
, MSVCP_size_t str_len
)
1505 if(str
->size
< str_off
)
1508 if(str_len
> str
->size
-str_off
)
1509 str_len
= str
->size
-str_off
;
1511 return basic_string_char_replace_cstr_len(this, off
, len
,
1512 str
->ptr
+str_off
, str_len
);
1515 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
1516 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
1517 DEFINE_THISCALL_WRAPPER(basic_string_char_replace
, 16)
1518 basic_string_char
* __thiscall
basic_string_char_replace(basic_string_char
*this,
1519 MSVCP_size_t off
, MSVCP_size_t len
, const basic_string_char
*str
)
1521 return basic_string_char_replace_cstr_len(this, off
, len
,
1522 str
->ptr
, str
->size
);
1525 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
1526 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
1527 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch
, 20)
1528 basic_string_char
* __thiscall
basic_string_char_replace_ch(basic_string_char
*this,
1529 MSVCP_size_t off
, MSVCP_size_t len
, MSVCP_size_t count
, char ch
)
1533 TRACE("%p %ld %ld %ld %c\n", this, off
, len
, count
, ch
);
1535 if(this->size
< off
)
1538 if(len
> this->size
-off
)
1539 len
= this->size
-off
;
1541 if(MSVCP_basic_string_char_npos
-count
<= this->size
-len
)
1544 if(this->size
-len
+count
)
1545 basic_string_char__Grow(this, this->size
-len
+count
, FALSE
);
1548 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1549 MSVCP_char_traits_char_assignn(ptr
+off
, count
, ch
);
1550 basic_string_char__Eos(this, this->size
-len
+count
);
1555 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
1556 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
1557 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr
, 16)
1558 basic_string_char
* __thiscall
basic_string_char_replace_cstr(basic_string_char
*this,
1559 MSVCP_size_t off
, MSVCP_size_t len
, const char *str
)
1561 return basic_string_char_replace_cstr_len(this, off
, len
, str
,
1562 MSVCP_char_traits_char_length(str
));
1565 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
1566 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
1567 DEFINE_THISCALL_WRAPPER(basic_string_char_insert
, 12)
1568 basic_string_char
* __thiscall
basic_string_char_insert(basic_string_char
*this,
1569 MSVCP_size_t off
, const basic_string_char
*str
)
1571 return basic_string_char_replace(this, off
, 0, str
);
1574 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
1575 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
1576 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr
, 20)
1577 basic_string_char
* __thiscall
basic_string_char_insert_substr(
1578 basic_string_char
*this, MSVCP_size_t off
, const basic_string_char
*str
,
1579 MSVCP_size_t str_off
, MSVCP_size_t str_count
)
1581 return basic_string_char_replace_substr(this, off
, 0, str
, str_off
, str_count
);
1584 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
1585 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
1586 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr
, 12)
1587 basic_string_char
* __thiscall
basic_string_char_insert_cstr(
1588 basic_string_char
*this, MSVCP_size_t off
, const char *str
)
1590 return basic_string_char_replace_cstr(this, off
, 0, str
);
1593 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
1594 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
1595 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len
, 16)
1596 basic_string_char
* __thiscall
basic_string_char_insert_cstr_len(basic_string_char
*this,
1597 MSVCP_size_t off
, const char *str
, MSVCP_size_t str_len
)
1599 return basic_string_char_replace_cstr_len(this, off
, 0, str
, str_len
);
1602 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
1603 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
1604 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn
, 16)
1605 basic_string_char
* __thiscall
basic_string_char_insert_chn(basic_string_char
*this,
1606 MSVCP_size_t off
, MSVCP_size_t count
, char ch
)
1608 return basic_string_char_replace_ch(this, off
, 0, count
, ch
);
1611 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
1612 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
1613 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch
, 12)
1614 void __thiscall
MSVCP_basic_string_char_resize_ch(
1615 basic_string_char
*this, MSVCP_size_t size
, char ch
)
1617 TRACE("%p %lu %c\n", this, size
, ch
);
1619 if(size
<= this->size
)
1620 MSVCP_basic_string_char_erase(this, size
, this->size
);
1622 MSVCP_basic_string_char_append_len_ch(this, size
-this->size
, ch
);
1625 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1626 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1627 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize
, 8)
1628 void __thiscall
MSVCP_basic_string_char_resize(
1629 basic_string_char
*this, MSVCP_size_t size
)
1631 MSVCP_basic_string_char_resize_ch(this, size
, '\0');
1634 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1635 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1636 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1637 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1638 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str
, 4)
1639 const char* __thiscall
MSVCP_basic_string_char_c_str(const basic_string_char
*this)
1641 TRACE("%p\n", this);
1642 return this->ptr
? this->ptr
: basic_string_char__Nullstr();
1645 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1646 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1647 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1648 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1649 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length
, 4)
1650 MSVCP_size_t __thiscall
MSVCP_basic_string_char_length(const basic_string_char
*this)
1652 TRACE("%p\n", this);
1656 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1657 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1658 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size
, 4)
1659 MSVCP_size_t __thiscall
basic_string_char_max_size(const basic_string_char
*this)
1661 TRACE("%p\n", this);
1662 return MSVCP_allocator_char_max_size(NULL
)-1;
1665 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1666 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1667 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity
, 4)
1668 MSVCP_size_t __thiscall
MSVCP_basic_string_char_capacity(basic_string_char
*this)
1670 TRACE("%p\n", this);
1674 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1675 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1676 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve
, 8)
1677 void __thiscall
MSVCP_basic_string_char_reserve(basic_string_char
*this, MSVCP_size_t size
)
1681 TRACE("%p %ld\n", this, size
);
1687 if(basic_string_char__Grow(this, size
, FALSE
))
1688 basic_string_char__Eos(this, len
);
1691 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1692 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1693 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty
, 4)
1694 MSVCP_bool __thiscall
MSVCP_basic_string_char_empty(basic_string_char
*this)
1696 TRACE("%p\n", this);
1697 return this->size
== 0;
1700 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1701 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1702 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap
, 8)
1703 void __thiscall
MSVCP_basic_string_char_swap(basic_string_char
*this, basic_string_char
*str
)
1705 basic_string_char tmp
;
1706 TRACE("%p %p\n", this, str
);
1713 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1714 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1715 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr
, 16)
1716 basic_string_char
* __thiscall
MSVCP_basic_string_char_substr(basic_string_char
*this,
1717 basic_string_char
*ret
, MSVCP_size_t off
, MSVCP_size_t len
)
1719 TRACE("%p %lu %lu\n", this, off
, len
);
1721 MSVCP_basic_string_char_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
1725 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
1726 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
1727 DEFINE_THISCALL_WRAPPER(basic_string_char_copy
, 16)
1728 MSVCP_size_t __thiscall
basic_string_char_copy(const basic_string_char
*this,
1729 char *dest
, MSVCP_size_t count
, MSVCP_size_t off
)
1731 TRACE("%p %p %lu %lu\n", this, dest
, count
, off
);
1733 if(off
> this->size
)
1735 if(count
> this->size
-off
)
1736 count
= this->size
-off
;
1738 MSVCP_char_traits_char__Copy_s(dest
, count
, this->ptr
+off
, count
);
1742 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
1743 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
1744 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator
, 8)
1745 allocator
* __thiscall
basic_string_char_get_allocator(const basic_string_char
*this, allocator
*ret
)
1747 TRACE("%p\n", this);
1751 static MSVCP_bool
basic_string_wchar_inside(
1752 basic_string_wchar
*this, const wchar_t *ptr
)
1754 return ptr
>=this->ptr
&& ptr
<this->ptr
+this->size
;
1757 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
1758 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
1759 const MSVCP_size_t MSVCP_basic_string_wchar_npos
= -1;
1761 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ@4GB */
1762 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ@4GB */
1763 const wchar_t basic_string_wchar_nullbyte
= '\0';
1765 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ */
1766 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ */
1767 const wchar_t* __cdecl
basic_string_wchar__Nullstr(void)
1769 return &basic_string_wchar_nullbyte
;
1772 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEAAEPBG@Z */
1773 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAAEAEPEBG@Z */
1774 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Refcnt
, 8)
1775 unsigned short* __thiscall
basic_string_wchar__Refcnt(basic_string_wchar
*this, const wchar_t *ptr
)
1777 TRACE("(%p %p)\n", this, ptr
);
1778 return (unsigned short*)ptr
-1;
1781 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1782 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1783 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Eos
, 8)
1784 void __thiscall
basic_string_wchar__Eos(basic_string_wchar
*this, MSVCP_size_t len
)
1790 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
1791 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
1792 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
1793 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
1794 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear
, 4)
1795 void __thiscall
MSVCP_basic_string_wchar_clear(basic_string_wchar
*this)
1798 basic_string_wchar__Eos(this, 0);
1801 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEX_N@Z */
1802 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_N@Z */
1803 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Tidy
, 8)
1804 void __thiscall
basic_string_wchar__Tidy(basic_string_wchar
*this, MSVCP_bool built
)
1806 TRACE("(%p %d)\n", this, built
);
1808 if(!built
|| !this->ptr
);
1809 else if(!this->ptr
[-1] || (unsigned short)this->ptr
[-1]==FROZEN
)
1810 MSVCP_allocator_wchar_deallocate(NULL
, this->ptr
-1, this->res
+2);
1814 memset(this, 0, sizeof(*this));
1817 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAE_NI_N@Z */
1818 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAA_N_K_N@Z */
1819 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Grow
, 12)
1820 MSVCP_bool __thiscall
basic_string_wchar__Grow(basic_string_wchar
*this, MSVCP_size_t new_size
, MSVCP_bool trim
)
1824 basic_string_wchar__Tidy(this, TRUE
);
1826 basic_string_wchar__Eos(this, 0);
1827 } else if(this->res
<new_size
|| trim
||
1828 (this->ptr
&& this->ptr
[-1] && (unsigned short)this->ptr
[-1]!=FROZEN
)) {
1829 MSVCP_size_t new_res
= new_size
, len
= this->size
;
1832 if(!trim
&& this->ptr
&& !this->ptr
[-1]) {
1834 if(new_res
/3 < this->res
/2)
1835 new_res
= this->res
+ this->res
/2;
1838 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_res
+2);
1841 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_size
+2);
1844 ERR("Out of memory\n");
1853 MSVCP_char_traits_wchar__Copy_s(ptr
+1, new_size
, this->ptr
, len
);
1854 basic_string_wchar__Tidy(this, TRUE
);
1856 this->res
= new_res
;
1857 basic_string_wchar__Eos(this, len
);
1863 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1864 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1865 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Split
, 4)
1866 void __thiscall
basic_string_wchar__Split(basic_string_wchar
*this)
1871 TRACE("(%p)\n", this);
1873 if(!this->ptr
|| !this->ptr
[-1] || (unsigned short)this->ptr
[-1]==FROZEN
)
1878 basic_string_wchar__Tidy(this, TRUE
);
1879 if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1881 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
, ptr
, len
);
1882 basic_string_wchar__Eos(this, len
);
1886 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1887 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1888 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Freeze
, 4)
1889 void __thiscall
basic_string_wchar__Freeze(basic_string_wchar
*this)
1891 TRACE("(%p)\n", this);
1892 basic_string_wchar__Split(this);
1894 this->ptr
[-1] = FROZEN
;
1897 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1898 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1899 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy
, 8)
1900 void __thiscall
basic_string_wchar__Copy(basic_string_wchar
*this, MSVCP_size_t copy_len
)
1902 TRACE("%p %lu\n", this, copy_len
);
1904 if(!basic_string_wchar__Grow(this, copy_len
, TRUE
))
1908 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPAGPAGI@Z */
1909 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEAGPEAG_K@Z */
1910 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGPBGI@Z */
1911 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGPEBG_K@Z */
1912 wchar_t* __cdecl
basic_string_wchar__Psum(wchar_t *iter
, MSVCP_size_t add
)
1914 TRACE("(%p %lu)\n", iter
, add
);
1915 return iter
? iter
+add
: iter
;
1918 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
1919 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
1920 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase
, 12)
1921 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_erase(
1922 basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t len
)
1924 TRACE("%p %lu %lu\n", this, pos
, len
);
1926 if(pos
> this->size
)
1929 if(len
> this->size
-pos
)
1930 len
= this->size
-pos
;
1933 basic_string_wchar__Split(this);
1934 MSVCP_char_traits_wchar__Move_s(this->ptr
+pos
, this->res
-pos
,
1935 this->ptr
+pos
+len
, this->size
-pos
-len
);
1936 basic_string_wchar__Eos(this, this->size
-len
);
1942 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG@Z */
1943 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG@Z */
1944 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_beg
, 8)
1945 wchar_t* __thiscall
basic_string_wchar_erase_beg(basic_string_wchar
*this, wchar_t *beg
)
1947 MSVCP_size_t pos
= beg
-this->ptr
;
1948 MSVCP_basic_string_wchar_erase(this, pos
, 1);
1949 return this->ptr
+pos
;
1952 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
1953 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1954 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr
, 16)
1955 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_substr(
1956 basic_string_wchar
*this, const basic_string_wchar
*assign
,
1957 MSVCP_size_t pos
, MSVCP_size_t len
)
1959 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
1961 if(assign
->size
< pos
)
1964 if(len
> assign
->size
-pos
)
1965 len
= assign
->size
-pos
;
1967 if(this == assign
) {
1968 MSVCP_basic_string_wchar_erase(this, pos
+len
, MSVCP_basic_string_wchar_npos
);
1969 MSVCP_basic_string_wchar_erase(this, 0, pos
);
1970 } else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1972 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
,
1973 assign
->ptr
+pos
, len
);
1974 basic_string_wchar__Eos(this, len
);
1980 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
1981 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
1982 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len
, 12)
1983 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_cstr_len(
1984 basic_string_wchar
*this, const wchar_t *str
, MSVCP_size_t len
)
1986 TRACE("%p %s %lu\n", this, debugstr_wn(str
, len
), len
);
1988 if(basic_string_wchar_inside(this, str
))
1989 return MSVCP_basic_string_wchar_assign_substr(this, this, str
-this->ptr
, len
);
1990 else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1991 MSVCP_char_traits_wchar__Copy_s(this->ptr
, this->res
, str
, len
);
1992 basic_string_wchar__Eos(this, len
);
1998 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
1999 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2000 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2001 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2002 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign
, 8)
2003 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign(
2004 basic_string_wchar
*this, const basic_string_wchar
*assign
)
2006 return MSVCP_basic_string_wchar_assign_substr(this, assign
,
2007 0, MSVCP_basic_string_wchar_npos
);
2010 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2011 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2012 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2013 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2014 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr
, 8)
2015 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_cstr(
2016 basic_string_wchar
*this, const wchar_t *str
)
2018 return MSVCP_basic_string_wchar_assign_cstr_len(this, str
,
2019 MSVCP_char_traits_wchar_length(str
));
2022 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2023 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2024 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch
, 8)
2025 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_ch(
2026 basic_string_wchar
*this, wchar_t ch
)
2028 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch
, 1);
2031 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2032 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2033 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn
, 12)
2034 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assignn(
2035 basic_string_wchar
*this, MSVCP_size_t count
, wchar_t ch
)
2037 TRACE("%p %ld %c\n", this, count
, ch
);
2039 basic_string_wchar__Grow(this, count
, FALSE
);
2040 MSVCP_char_traits_wchar_assignn(this->ptr
, count
, ch
);
2041 basic_string_wchar__Eos(this, count
);
2045 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2046 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2047 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr
, 12)
2048 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_ptr_ptr(
2049 basic_string_wchar
*this, const wchar_t *first
, const wchar_t *last
)
2051 return MSVCP_basic_string_wchar_assign_cstr_len(this, first
, last
-first
);
2054 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
2055 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
2056 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc
, 16)
2057 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
2058 basic_string_wchar
*this, const wchar_t *str
, MSVCP_size_t len
, const void *alloc
)
2060 TRACE("%p %s %ld\n", this, debugstr_wn(str
, len
), len
);
2062 basic_string_wchar__Tidy(this, FALSE
);
2063 MSVCP_basic_string_wchar_assign_cstr_len(this, str
, len
);
2067 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2068 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2069 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2070 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2071 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len
, 12)
2072 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_len(
2073 basic_string_wchar
*this, const wchar_t *str
, MSVCP_size_t len
)
2075 return MSVCP_basic_string_wchar_ctor_cstr_len_alloc(this, str
, len
, NULL
);
2078 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2079 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2080 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc
, 20)
2081 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_substr_alloc(
2082 basic_string_wchar
*this, const basic_string_wchar
*assign
,
2083 MSVCP_size_t pos
, MSVCP_size_t len
, const void *alloc
)
2085 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
2087 basic_string_wchar__Tidy(this, FALSE
);
2088 MSVCP_basic_string_wchar_assign_substr(this, assign
, pos
, len
);
2092 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2093 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2094 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc
, 12)
2095 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_alloc(
2096 basic_string_wchar
*this, const wchar_t *str
, const void *alloc
)
2098 TRACE("%p %s\n", this, debugstr_w(str
));
2100 basic_string_wchar__Tidy(this, FALSE
);
2101 MSVCP_basic_string_wchar_assign_cstr(this, str
);
2105 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2106 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2107 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2108 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2109 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr
, 8)
2110 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr(
2111 basic_string_wchar
*this, const wchar_t *str
)
2113 return MSVCP_basic_string_wchar_ctor_cstr_alloc(this, str
, NULL
);
2116 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2117 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2118 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc
, 16)
2119 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar
*this,
2120 MSVCP_size_t count
, wchar_t ch
, const void *alloc
)
2122 TRACE("%p %ld %c\n", this, count
, ch
);
2124 basic_string_wchar__Tidy(this, FALSE
);
2125 MSVCP_basic_string_wchar_assignn(this, count
, ch
);
2129 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
2130 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
2131 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor
, 4)
2132 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor(basic_string_wchar
*this)
2134 TRACE("%p\n", this);
2136 basic_string_wchar__Tidy(this, FALSE
);
2140 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2141 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2142 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc
, 8)
2143 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_alloc(
2144 basic_string_wchar
*this, const void *alloc
)
2146 TRACE("%p %p\n", this, alloc
);
2148 basic_string_wchar__Tidy(this, FALSE
);
2152 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2153 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2154 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor
, 8)
2155 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_copy_ctor(
2156 basic_string_wchar
*this, const basic_string_wchar
*copy
)
2158 TRACE("%p %p\n", this, copy
);
2160 basic_string_wchar__Tidy(this, FALSE
);
2161 MSVCP_basic_string_wchar_assign(this, copy
);
2165 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2166 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2167 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor
, 4)
2168 void __thiscall
MSVCP_basic_string_wchar_dtor(basic_string_wchar
*this)
2170 TRACE("%p\n", this);
2171 basic_string_wchar__Tidy(this, TRUE
);
2174 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
2175 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
2176 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len
, 20)
2177 int __thiscall
MSVCP_basic_string_wchar_compare_substr_cstr_len(
2178 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2179 const wchar_t *str
, MSVCP_size_t count
)
2183 TRACE("%p %lu %lu %s %lu\n", this, pos
, num
, debugstr_wn(str
, count
), count
);
2185 if(this->size
< pos
)
2188 if(num
> this->size
-pos
)
2189 num
= this->size
-pos
;
2191 ans
= MSVCP_char_traits_wchar_compare(this->ptr
+pos
,
2192 str
, num
>count
? count
: num
);
2198 else if(num
< count
)
2203 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
2204 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
2205 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr
, 8)
2206 int __thiscall
MSVCP_basic_string_wchar_compare_cstr(
2207 const basic_string_wchar
*this, const wchar_t *str
)
2209 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2210 str
, MSVCP_char_traits_wchar_length(str
));
2213 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
2214 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
2215 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr
, 24)
2216 int __thiscall
MSVCP_basic_string_wchar_compare_substr_substr(
2217 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2218 const basic_string_wchar
*compare
, MSVCP_size_t off
, MSVCP_size_t count
)
2220 TRACE("%p %lu %lu %p %lu %lu\n", this, pos
, num
, compare
, off
, count
);
2222 if(compare
->size
< off
)
2225 if(count
> compare
->size
-off
)
2226 count
= compare
->size
-off
;
2228 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2229 compare
->ptr
+off
, count
);
2232 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
2233 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
2234 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr
, 16)
2235 int __thiscall
MSVCP_basic_string_wchar_compare_substr(
2236 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2237 const basic_string_wchar
*compare
)
2239 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2240 compare
->ptr
, compare
->size
);
2243 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
2244 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
2245 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare
, 8)
2246 int __thiscall
MSVCP_basic_string_wchar_compare(
2247 const basic_string_wchar
*this, const basic_string_wchar
*compare
)
2249 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2250 compare
->ptr
, compare
->size
);
2253 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
2254 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
2255 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr
, 16)
2256 int __thiscall
MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar
*this,
2257 MSVCP_size_t pos
, MSVCP_size_t num
, const wchar_t *str
)
2259 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2260 str
, MSVCP_char_traits_wchar_length(str
));
2263 /* ??$?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 */
2264 /* ??$?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 */
2265 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2266 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2267 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_equal(
2268 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2270 return MSVCP_basic_string_wchar_compare(left
, right
) == 0;
2273 /* ??$?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 */
2274 /* ??$?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 */
2275 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2276 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2277 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_equal_str_cstr(
2278 const basic_string_wchar
*left
, const wchar_t *right
)
2280 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) == 0;
2283 /* ??$?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 */
2284 /* ??$?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 */
2285 /* ??8std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2286 /* ??8std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2287 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_equal_cstr_str(
2288 const wchar_t *left
, const basic_string_wchar
*right
)
2290 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) == 0;
2293 /* ??$?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 */
2294 /* ??$?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 */
2295 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2296 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2297 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_not_equal(
2298 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2300 return MSVCP_basic_string_wchar_compare(left
, right
) != 0;
2303 /* ??$?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 */
2304 /* ??$?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 */
2305 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2306 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2307 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_not_equal_str_cstr(
2308 const basic_string_wchar
*left
, const wchar_t *right
)
2310 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) != 0;
2313 /* ??$?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 */
2314 /* ??$?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 */
2315 /* ??9std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2316 /* ??9std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2317 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_not_equal_cstr_str(
2318 const wchar_t *left
, const basic_string_wchar
*right
)
2320 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) != 0;
2323 /* ??$?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 */
2324 /* ??$?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 */
2325 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2326 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2327 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_lower(
2328 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2330 return MSVCP_basic_string_wchar_compare(left
, right
) < 0;
2333 /* ??$?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 */
2334 /* ??$?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 */
2335 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2336 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2337 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_lower_bstr_cstr(
2338 const basic_string_wchar
*left
, const wchar_t *right
)
2340 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) < 0;
2343 /* ??$?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 */
2344 /* ??$?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 */
2345 /* ??Mstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2346 /* ??Mstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2347 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_lower_cstr_bstr(
2348 const wchar_t *left
, const basic_string_wchar
*right
)
2350 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) > 0;
2353 /* ??$?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 */
2354 /* ??$?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 */
2355 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2356 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2357 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_leq(
2358 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2360 return MSVCP_basic_string_wchar_compare(left
, right
) <= 0;
2363 /* ??$?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 */
2364 /* ??$?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 */
2365 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2366 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2367 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_leq_bstr_cstr(
2368 const basic_string_wchar
*left
, const wchar_t *right
)
2370 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) <= 0;
2373 /* ??$?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 */
2374 /* ??$?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 */
2375 /* ??Nstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2376 /* ??Nstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2377 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_leq_cstr_bstr(
2378 const wchar_t *left
, const basic_string_wchar
*right
)
2380 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) >= 0;
2383 /* ??$?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 */
2384 /* ??$?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 */
2385 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2386 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2387 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_greater(
2388 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2390 return MSVCP_basic_string_wchar_compare(left
, right
) > 0;
2393 /* ??$?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 */
2394 /* ??$?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 */
2395 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2396 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2397 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_greater_bstr_cstr(
2398 const basic_string_wchar
*left
, const wchar_t *right
)
2400 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) > 0;
2403 /* ??$?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 */
2404 /* ??$?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 */
2405 /* ??Ostd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2406 /* ??Ostd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2407 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_greater_cstr_bstr(
2408 const wchar_t *left
, const basic_string_wchar
*right
)
2410 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) < 0;
2413 /* ??$?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 */
2414 /* ??$?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 */
2415 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2416 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2417 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_geq(
2418 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2420 return MSVCP_basic_string_wchar_compare(left
, right
) >= 0;
2423 /* ??$?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 */
2424 /* ??$?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 */
2425 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2426 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2427 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_geq_bstr_cstr(
2428 const basic_string_wchar
*left
, const wchar_t *right
)
2430 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) >= 0;
2433 /* ??$?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 */
2434 /* ??$?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 */
2435 /* ??Pstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2436 /* ??Pstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2437 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_geq_cstr_bstr(
2438 const wchar_t *left
, const basic_string_wchar
*right
)
2440 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) <= 0;
2443 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2444 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2445 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr
, 16)
2446 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_cstr_substr(
2447 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
2449 const wchar_t *p
, *end
;
2451 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find
, len
), pos
, len
);
2453 if(len
==0 && pos
<=this->size
)
2455 if(pos
>=this->size
|| len
>this->size
)
2456 return MSVCP_basic_string_wchar_npos
;
2458 end
= this->ptr
+this->size
-len
+1;
2459 for(p
=this->ptr
+pos
; p
<end
; p
++) {
2460 p
= MSVCP_char_traits_wchar_find(p
, end
-p
, find
);
2464 if(!MSVCP_char_traits_wchar_compare(p
, find
, len
))
2468 return MSVCP_basic_string_wchar_npos
;
2471 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2472 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2473 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off
, 12)
2474 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_off(
2475 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2477 return MSVCP_basic_string_wchar_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
2480 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2481 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2482 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch
, 12)
2483 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_ch(
2484 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t pos
)
2486 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch
, pos
, 1);
2489 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2490 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2491 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off
, 12)
2492 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_cstr_off(
2493 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
)
2495 return MSVCP_basic_string_wchar_find_cstr_substr(this, find
, pos
,
2496 MSVCP_char_traits_wchar_length(find
));
2499 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2500 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2501 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr
, 16)
2502 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_rfind_cstr_substr(
2503 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
2505 const wchar_t *p
, *end
;
2507 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find
, len
), pos
, len
);
2510 return pos
<this->size
? pos
: this->size
;
2512 if(len
> this->size
)
2513 return MSVCP_basic_string_wchar_npos
;
2515 if(pos
> this->size
-len
+1)
2516 pos
= this->size
-len
+1;
2518 for(p
=end
+pos
; p
>=end
; p
--) {
2519 if(*p
==*find
&& !MSVCP_char_traits_wchar_compare(p
, find
, len
))
2523 return MSVCP_basic_string_wchar_npos
;
2526 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2527 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2528 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off
, 12)
2529 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_rfind_off(
2530 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2532 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
2535 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2536 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2537 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch
, 12)
2538 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_rfind_ch(
2539 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t pos
)
2541 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch
, pos
, 1);
2544 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2545 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2546 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off
, 12)
2547 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_rfind_cstr_off(
2548 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
)
2550 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find
, pos
,
2551 MSVCP_char_traits_wchar_length(find
));
2554 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2555 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2556 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr
, 16)
2557 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2558 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2560 const wchar_t *p
, *end
;
2562 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2564 if(off
<this->size
) {
2565 end
= this->ptr
+this->size
;
2566 for(p
=this->ptr
+off
; p
<end
; p
++)
2567 if(!MSVCP_char_traits_wchar_find(find
, len
, p
))
2571 return MSVCP_basic_string_wchar_npos
;
2574 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2575 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2576 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of
, 12)
2577 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of(
2578 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2580 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
2581 find
->ptr
, off
, find
->size
);
2584 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2585 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2586 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch
, 12)
2587 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_ch(
2588 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2590 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
2593 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2594 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2595 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr
, 12)
2596 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_cstr(
2597 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2599 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2600 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2603 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2604 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2605 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr
, 16)
2606 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2607 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2609 const wchar_t *p
, *end
;
2611 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2613 if(len
>0 && off
<this->size
) {
2614 end
= this->ptr
+this->size
;
2615 for(p
=this->ptr
+off
; p
<end
; p
++)
2616 if(MSVCP_char_traits_wchar_find(find
, len
, p
))
2620 return MSVCP_basic_string_wchar_npos
;
2623 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2624 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2625 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of
, 12)
2626 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_of(
2627 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2629 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
2630 find
->ptr
, off
, find
->size
);
2633 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2634 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2635 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch
, 12)
2636 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_ch(
2637 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2639 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch
, off
, 1);
2642 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2643 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2644 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr
, 12)
2645 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_cstr(
2646 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2648 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2649 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2652 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2653 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2654 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr
, 16)
2655 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
2656 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2658 const wchar_t *p
, *beg
;
2660 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2662 if(len
>0 && this->size
>0) {
2663 if(off
>= this->size
)
2667 for(p
=beg
+off
; p
>=beg
; p
--)
2668 if(!MSVCP_char_traits_wchar_find(find
, len
, p
))
2672 return MSVCP_basic_string_wchar_npos
;
2675 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2676 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2677 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of
, 12)
2678 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of(
2679 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2681 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
2682 find
->ptr
, off
, find
->size
);
2685 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2686 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2687 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch
, 12)
2688 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_ch(
2689 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2691 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
2694 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2695 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2696 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr
, 12)
2697 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_cstr(
2698 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2700 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
2701 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2704 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2705 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2706 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr
, 16)
2707 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_cstr_substr(
2708 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2710 const wchar_t *p
, *beg
;
2712 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2714 if(len
>0 && this->size
>0) {
2715 if(off
>= this->size
)
2719 for(p
=beg
+off
; p
>=beg
; p
--)
2720 if(MSVCP_char_traits_wchar_find(find
, len
, p
))
2724 return MSVCP_basic_string_wchar_npos
;
2727 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2728 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2729 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of
, 12)
2730 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_of(
2731 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2733 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
2734 find
->ptr
, off
, find
->size
);
2737 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2738 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2739 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch
, 12)
2740 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_ch(
2741 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2743 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch
, off
, 1);
2746 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2747 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2748 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr
, 12)
2749 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_cstr(
2750 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2752 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
2753 this, find
, off
, MSVCP_char_traits_wchar_length(find
));
2756 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2757 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2758 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr
, 16)
2759 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_substr(basic_string_wchar
*this,
2760 const basic_string_wchar
*append
, MSVCP_size_t offset
, MSVCP_size_t count
)
2762 TRACE("%p %p %lu %lu\n", this, append
, offset
, count
);
2764 if(append
->size
< offset
)
2767 if(count
> append
->size
-offset
)
2768 count
= append
->size
-offset
;
2770 if(MSVCP_basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2773 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2775 MSVCP_char_traits_wchar__Copy_s(this->ptr
+this->size
, this->res
-this->size
,
2776 append
->ptr
+offset
, count
);
2777 basic_string_wchar__Eos(this, this->size
+count
);
2783 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2784 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2785 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len
, 12)
2786 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_cstr_len(
2787 basic_string_wchar
*this, const wchar_t *append
, MSVCP_size_t count
)
2789 TRACE("%p %s %lu\n", this, debugstr_wn(append
, count
), count
);
2791 if(basic_string_wchar_inside(this, append
))
2792 return MSVCP_basic_string_wchar_append_substr(this, this, append
-this->ptr
, count
);
2794 if(MSVCP_basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2797 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2798 MSVCP_char_traits_wchar__Copy_s(this->ptr
+this->size
,
2799 this->res
-this->size
, append
, count
);
2800 basic_string_wchar__Eos(this, this->size
+count
);
2806 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2807 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2808 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch
, 12)
2809 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_len_ch(
2810 basic_string_wchar
*this, MSVCP_size_t count
, wchar_t ch
)
2812 TRACE("%p %lu %c\n", this, count
, ch
);
2814 if(MSVCP_basic_string_wchar_npos
-this->size
<= count
)
2817 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2818 MSVCP_char_traits_wchar_assignn(this->ptr
+this->size
, count
, ch
);
2819 basic_string_wchar__Eos(this, this->size
+count
);
2825 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2826 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2827 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2828 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2829 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append
, 8)
2830 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append(
2831 basic_string_wchar
*this, const basic_string_wchar
*append
)
2833 return MSVCP_basic_string_wchar_append_substr(this, append
,
2834 0, MSVCP_basic_string_wchar_npos
);
2837 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2838 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2839 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch
, 8)
2840 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_ch(
2841 basic_string_wchar
*this, wchar_t ch
)
2843 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch
);
2846 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2847 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2848 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end
, 12)
2849 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_beg_end(
2850 basic_string_wchar
*this, const wchar_t *beg
, const wchar_t *end
)
2852 return MSVCP_basic_string_wchar_append_cstr_len(this, beg
, end
-beg
);
2855 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2856 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2857 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2858 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2859 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr
, 8)
2860 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_cstr(
2861 basic_string_wchar
*this, const wchar_t *append
)
2863 return MSVCP_basic_string_wchar_append_cstr_len(this, append
,
2864 MSVCP_char_traits_wchar_length(append
));
2866 /* ??$?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 */
2867 /* ??$?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 */
2868 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
2869 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
2870 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate(basic_string_wchar
*ret
,
2871 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2873 TRACE("%p %p\n", left
, right
);
2875 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2876 MSVCP_basic_string_wchar_append(ret
, right
);
2880 /* ??$?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 */
2881 /* ??$?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 */
2882 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
2883 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
2884 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_bstr_ch(basic_string_wchar
*ret
,
2885 const basic_string_wchar
*left
, wchar_t right
)
2887 TRACE("%p %c\n", left
, right
);
2889 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2890 MSVCP_basic_string_wchar_append_ch(ret
, right
);
2894 /* ??$?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 */
2895 /* ??$?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 */
2896 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
2897 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
2898 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar
*ret
,
2899 const basic_string_wchar
*left
, const wchar_t *right
)
2901 TRACE("%p %s\n", left
, debugstr_w(right
));
2903 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2904 MSVCP_basic_string_wchar_append_cstr(ret
, right
);
2908 /* ??$?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 */
2909 /* ??$?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 */
2910 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
2911 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
2912 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_ch_bstr(basic_string_wchar
*ret
,
2913 wchar_t left
, const basic_string_wchar
*right
)
2915 TRACE("%c %p\n", left
, right
);
2917 MSVCP_basic_string_wchar_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
2918 MSVCP_basic_string_wchar_append(ret
, right
);
2922 /* ??$?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 */
2923 /* ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2924 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
2925 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2926 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar
*ret
,
2927 const wchar_t *left
, const basic_string_wchar
*right
)
2929 TRACE("%s %p\n", debugstr_w(left
), right
);
2931 MSVCP_basic_string_wchar_ctor_cstr_alloc(ret
, left
, NULL
);
2932 MSVCP_basic_string_wchar_append(ret
, right
);
2936 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2937 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2938 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2939 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2940 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at
, 8)
2941 wchar_t* __thiscall
MSVCP_basic_string_wchar_operator_at(
2942 basic_string_wchar
*this, MSVCP_size_t pos
)
2944 TRACE("%p %lu\n", this, pos
);
2946 assert(this->size
>= pos
);
2947 return this->ptr
+pos
;
2950 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2951 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2952 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2953 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2954 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at
, 8)
2955 wchar_t* __thiscall
MSVCP_basic_string_wchar_at(
2956 basic_string_wchar
*this, MSVCP_size_t pos
)
2958 TRACE("%p %lu\n", this, pos
);
2960 if(this->size
<= pos
)
2963 return this->ptr
+pos
;
2966 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
2967 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
2968 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len
, 20)
2969 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr_len(basic_string_wchar
*this,
2970 MSVCP_size_t off
, MSVCP_size_t len
, const wchar_t *str
, MSVCP_size_t str_len
)
2972 MSVCP_size_t inside_pos
= -1;
2973 wchar_t *ptr
= this->ptr
;
2975 TRACE("%p %ld %ld %p %ld\n", this, off
, len
, str
, str_len
);
2977 if(this->size
< off
)
2980 if(len
> this->size
-off
)
2981 len
= this->size
-off
;
2983 if(MSVCP_basic_string_wchar_npos
-str_len
<= this->size
-len
)
2986 if(basic_string_wchar_inside(this, str
))
2987 inside_pos
= str
-ptr
;
2989 if(this->size
-len
+str_len
)
2990 basic_string_wchar__Grow(this, this->size
-len
+str_len
, FALSE
);
2993 if(inside_pos
== -1) {
2994 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
2995 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
2996 } else if(len
>= str_len
) {
2997 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
2998 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3002 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3004 if(inside_pos
< off
+len
) {
3005 size
= off
+len
-inside_pos
;
3008 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
3014 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
3018 basic_string_wchar__Eos(this, this->size
-len
+str_len
);
3022 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
3023 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
3024 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr
, 24)
3025 basic_string_wchar
* __thiscall
basic_string_wchar_replace_substr(basic_string_wchar
*this, MSVCP_size_t off
,
3026 MSVCP_size_t len
, const basic_string_wchar
*str
, MSVCP_size_t str_off
, MSVCP_size_t str_len
)
3028 if(str
->size
< str_off
)
3031 if(str_len
> str
->size
-str_off
)
3032 str_len
= str
->size
-str_off
;
3034 return basic_string_wchar_replace_cstr_len(this, off
, len
,
3035 str
->ptr
+str_off
, str_len
);
3038 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
3039 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
3040 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace
, 16)
3041 basic_string_wchar
* __thiscall
basic_string_wchar_replace(basic_string_wchar
*this,
3042 MSVCP_size_t off
, MSVCP_size_t len
, const basic_string_wchar
*str
)
3044 return basic_string_wchar_replace_cstr_len(this, off
, len
,
3045 str
->ptr
, str
->size
);
3048 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
3049 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
3050 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch
, 20)
3051 basic_string_wchar
* __thiscall
basic_string_wchar_replace_ch(basic_string_wchar
*this,
3052 MSVCP_size_t off
, MSVCP_size_t len
, MSVCP_size_t count
, wchar_t ch
)
3056 TRACE("%p %ld %ld %ld %c\n", this, off
, len
, count
, ch
);
3058 if(this->size
< off
)
3061 if(len
> this->size
-off
)
3062 len
= this->size
-off
;
3064 if(MSVCP_basic_string_wchar_npos
-count
<= this->size
-len
)
3067 if(this->size
-len
+count
)
3068 basic_string_wchar__Grow(this, this->size
-len
+count
, FALSE
);
3071 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3072 MSVCP_char_traits_wchar_assignn(ptr
+off
, count
, ch
);
3073 basic_string_wchar__Eos(this, this->size
-len
+count
);
3078 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3079 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3080 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr
, 16)
3081 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr(basic_string_wchar
*this,
3082 MSVCP_size_t off
, MSVCP_size_t len
, const wchar_t *str
)
3084 return basic_string_wchar_replace_cstr_len(this, off
, len
, str
,
3085 MSVCP_char_traits_wchar_length(str
));
3088 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3089 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3090 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert
, 12)
3091 basic_string_wchar
* __thiscall
basic_string_wchar_insert(basic_string_wchar
*this,
3092 MSVCP_size_t off
, const basic_string_wchar
*str
)
3094 return basic_string_wchar_replace(this, off
, 0, str
);
3097 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3098 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3099 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr
, 20)
3100 basic_string_wchar
* __thiscall
basic_string_wchar_insert_substr(
3101 basic_string_wchar
*this, MSVCP_size_t off
, const basic_string_wchar
*str
,
3102 MSVCP_size_t str_off
, MSVCP_size_t str_count
)
3104 return basic_string_wchar_replace_substr(this, off
, 0, str
, str_off
, str_count
);
3107 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3108 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3109 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr
, 12)
3110 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr(
3111 basic_string_wchar
*this, MSVCP_size_t off
, const wchar_t *str
)
3113 return basic_string_wchar_replace_cstr(this, off
, 0, str
);
3116 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3117 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3118 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len
, 16)
3119 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr_len(basic_string_wchar
*this,
3120 MSVCP_size_t off
, const wchar_t *str
, MSVCP_size_t str_len
)
3122 return basic_string_wchar_replace_cstr_len(this, off
, 0, str
, str_len
);
3125 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3126 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3127 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn
, 16)
3128 basic_string_wchar
* __thiscall
basic_string_wchar_insert_chn(basic_string_wchar
*this,
3129 MSVCP_size_t off
, MSVCP_size_t count
, wchar_t ch
)
3131 return basic_string_wchar_replace_ch(this, off
, 0, count
, ch
);
3134 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
3135 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
3136 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch
, 12)
3137 void __thiscall
MSVCP_basic_string_wchar_resize_ch(
3138 basic_string_wchar
*this, MSVCP_size_t size
, wchar_t ch
)
3140 TRACE("%p %lu %c\n", this, size
, ch
);
3142 if(size
<= this->size
)
3143 MSVCP_basic_string_wchar_erase(this, size
, this->size
);
3145 MSVCP_basic_string_wchar_append_len_ch(this, size
-this->size
, ch
);
3148 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3149 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3150 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize
, 8)
3151 void __thiscall
MSVCP_basic_string_wchar_resize(
3152 basic_string_wchar
*this, MSVCP_size_t size
)
3154 MSVCP_basic_string_wchar_resize_ch(this, size
, '\0');
3157 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3158 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3159 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3160 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3161 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str
, 4)
3162 const wchar_t* __thiscall
MSVCP_basic_string_wchar_c_str(const basic_string_wchar
*this)
3164 TRACE("%p\n", this);
3165 return this->ptr
? this->ptr
: basic_string_wchar__Nullstr();
3168 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3169 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3170 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3171 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3172 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length
, 4)
3173 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_length(const basic_string_wchar
*this)
3175 TRACE("%p\n", this);
3179 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3180 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3181 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size
, 4)
3182 MSVCP_size_t __thiscall
basic_string_wchar_max_size(const basic_string_wchar
*this)
3184 TRACE("%p\n", this);
3185 return MSVCP_allocator_wchar_max_size(NULL
)-1;
3188 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3189 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3190 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity
, 4)
3191 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_capacity(basic_string_wchar
*this)
3193 TRACE("%p\n", this);
3197 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3198 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3199 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve
, 8)
3200 void __thiscall
MSVCP_basic_string_wchar_reserve(basic_string_wchar
*this, MSVCP_size_t size
)
3204 TRACE("%p %ld\n", this, size
);
3210 if(basic_string_wchar__Grow(this, size
, FALSE
))
3211 basic_string_wchar__Eos(this, len
);
3214 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
3215 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
3216 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty
, 4)
3217 MSVCP_bool __thiscall
MSVCP_basic_string_wchar_empty(basic_string_wchar
*this)
3219 TRACE("%p\n", this);
3220 return this->size
== 0;
3223 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
3224 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
3225 DEFINE_THISCALL_WRAPPER(basic_string_wchar_swap
, 8)
3226 void __thiscall
basic_string_wchar_swap(basic_string_wchar
*this, basic_string_wchar
*str
)
3228 basic_string_wchar tmp
;
3229 TRACE("%p %p\n", this, str
);
3236 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
3237 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
3238 DEFINE_THISCALL_WRAPPER(basic_string_wchar_substr
, 16)
3239 basic_string_wchar
* __thiscall
basic_string_wchar_substr(basic_string_wchar
*this,
3240 basic_string_wchar
*ret
, MSVCP_size_t off
, MSVCP_size_t len
)
3242 TRACE("%p %lu %lu\n", this, off
, len
);
3244 MSVCP_basic_string_wchar_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
3248 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
3249 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
3250 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy
, 16)
3251 MSVCP_size_t __thiscall
basic_string_wchar_copy(const basic_string_wchar
*this,
3252 wchar_t *dest
, MSVCP_size_t count
, MSVCP_size_t off
)
3254 TRACE("%p %p %lu %lu\n", this, dest
, count
, off
);
3256 if(off
> this->size
)
3258 if(count
> this->size
-off
)
3259 count
= this->size
-off
;
3261 MSVCP_char_traits_wchar__Copy_s(dest
, count
, this->ptr
+off
, count
);
3265 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
3266 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
3267 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator
, 8)
3268 allocator
* __thiscall
basic_string_wchar_get_allocator(const basic_string_wchar
*this, allocator
*ret
)
3270 TRACE("%p\n", this);
3274 /* Old iterator functions */
3276 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAIPBD0@Z */
3277 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CA_KPEBD0@Z */
3278 MSVCP_size_t __cdecl
basic_string_char__Pdif(const char *i1
, const char *i2
)
3280 TRACE("(%p %p)\n", i1
, i2
);
3281 return !i1
? 0 : i1
-i2
;
3284 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD0@Z */
3285 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD0@Z */
3286 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter
, 12)
3287 char* __thiscall
basic_string_char_erase_iter(basic_string_char
*this, char *beg
, char *end
)
3289 MSVCP_size_t pos
= basic_string_char__Pdif(beg
, this->ptr
);
3290 MSVCP_basic_string_char_erase(this, pos
, basic_string_char__Pdif(end
, beg
));
3291 return basic_string_char__Psum(this->ptr
, pos
);
3294 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD1@Z */
3295 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD1@Z */
3296 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter
, 20)
3297 basic_string_char
* __thiscall
basic_string_char_replace_iter_iter(basic_string_char
*this,
3298 char *beg1
, char *end1
, const char *beg2
, const char *end2
)
3300 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg1
, this->ptr
),
3301 basic_string_char__Pdif(end1
, beg1
), beg2
, basic_string_char__Pdif(end2
, beg2
));
3304 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ABV12@@Z */
3305 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0AEBV12@@Z */
3306 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr
, 16)
3307 basic_string_char
* __thiscall
basic_string_char_replace_iter_bstr(basic_string_char
*this,
3308 char *beg
, char *end
, const basic_string_char
*str
)
3310 return basic_string_char_replace(this, basic_string_char__Pdif(beg
, this->ptr
),
3311 basic_string_char__Pdif(end
, beg
), str
);
3314 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ID@Z */
3315 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0_KD@Z */
3316 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_chn
, 20)
3317 basic_string_char
* __thiscall
basic_string_char_replace_iter_chn(basic_string_char
*this,
3318 char *beg
, char *end
, MSVCP_size_t count
, char ch
)
3320 return basic_string_char_replace_ch(this, basic_string_char__Pdif(beg
, this->ptr
),
3321 basic_string_char__Pdif(end
, beg
), count
, ch
);
3324 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD@Z */
3325 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD@Z */
3326 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr
, 16)
3327 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr(basic_string_char
*this,
3328 char *beg
, char *end
, const char *str
)
3330 return basic_string_char_replace_cstr(this, basic_string_char__Pdif(beg
, this->ptr
),
3331 basic_string_char__Pdif(end
, beg
), str
);
3334 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBDI@Z */
3335 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD_K@Z */
3336 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len
, 20)
3337 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr_len(basic_string_char
*this,
3338 char *beg
, char *end
, const char *str
, MSVCP_size_t len
)
3340 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg
, this->ptr
),
3341 basic_string_char__Pdif(end
, beg
), str
, len
);
3344 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADID@Z */
3345 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEAD_KD@Z */
3346 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn
, 16)
3347 void __thiscall
basic_string_char_insert_iter_chn(basic_string_char
*this,
3348 char *pos
, MSVCP_size_t n
, char ch
)
3350 basic_string_char_insert_chn(this, basic_string_char__Pdif(pos
, this->ptr
), n
, ch
);
3353 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPADD@Z */
3354 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEADD@Z */
3355 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch
, 12)
3356 char* __thiscall
basic_string_char_insert_iter_ch(basic_string_char
*this, char *pos
, char ch
)
3358 MSVCP_size_t off
= basic_string_char__Pdif(pos
, this->ptr
);
3359 basic_string_char_insert_chn(this, off
, 1, ch
);
3360 return basic_string_char__Psum(this->ptr
, off
);
3363 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
3364 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
3365 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
3366 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
3367 DEFINE_THISCALL_WRAPPER(basic_string_char_begin
, 4)
3368 char* __thiscall
basic_string_char_begin(basic_string_char
*this)
3370 TRACE("(%p)\n", this);
3371 basic_string_char__Freeze(this);
3375 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
3376 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
3377 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
3378 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
3379 DEFINE_THISCALL_WRAPPER(basic_string_char_end
, 4)
3380 char* __thiscall
basic_string_char_end(basic_string_char
*this)
3382 TRACE("(%p)\n", this);
3383 basic_string_char__Freeze(this);
3384 return this->ptr
+this->size
;
3387 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
3388 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
3389 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
3390 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
3391 DEFINE_THISCALL_WRAPPER(basic_string_char_rbegin
, 8)
3392 String_reverse_iterator_char
* __thiscall
basic_string_char_rbegin(
3393 basic_string_char
*this, String_reverse_iterator_char
*ret
)
3395 TRACE("(%p %p)\n", this, ret
);
3396 ret
->ptr
= basic_string_char_end(this);
3400 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
3401 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
3402 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
3403 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
3404 DEFINE_THISCALL_WRAPPER(basic_string_char_rend
, 8)
3405 String_reverse_iterator_char
* __thiscall
basic_string_char_rend(
3406 basic_string_char
*this, String_reverse_iterator_char
*ret
)
3408 TRACE("(%p %p)\n", this, ret
);
3409 ret
->ptr
= basic_string_char_begin(this);
3413 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0ABV?$allocator@D@1@@Z */
3414 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0AEBV?$allocator@D@1@@Z */
3415 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter
, 16)
3416 basic_string_char
* __thiscall
basic_string_char_ctor_iter(basic_string_char
*this,
3417 const char *first
, const char *last
, allocator
*alloc
)
3419 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
3421 basic_string_char__Tidy(this, FALSE
);
3422 MSVCP_basic_string_char_assign_cstr_len(this, first
, basic_string_char__Pdif(last
, first
));
3426 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADPBD1@Z */
3427 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEADPEBD1@Z */
3428 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter
, 16)
3429 void __thiscall
basic_string_char_insert_iter(basic_string_char
*this,
3430 char *pos
, const char *beg
, const char *end
)
3432 basic_string_char_insert_cstr_len(this, basic_string_char__Pdif(pos
, this->ptr
),
3433 beg
, basic_string_char__Pdif(end
, beg
));
3436 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAIPBG0@Z */
3437 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CA_KPEBG0@Z */
3438 MSVCP_size_t __cdecl
basic_string_wchar__Pdif(const wchar_t *i1
, const wchar_t *i2
)
3440 TRACE("(%p %p)\n", i1
, i2
);
3441 return !i1
? 0 : i1
-i2
;
3444 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG0@Z */
3445 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG0@Z */
3446 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter
, 12)
3447 wchar_t* __thiscall
basic_string_wchar_erase_iter(basic_string_wchar
*this, wchar_t *beg
, wchar_t *end
)
3449 MSVCP_size_t pos
= basic_string_wchar__Pdif(beg
, this->ptr
);
3450 MSVCP_basic_string_wchar_erase(this, pos
, basic_string_wchar__Pdif(end
, beg
));
3451 return basic_string_wchar__Psum(this->ptr
, pos
);
3454 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0ABV?$allocator@G@1@@Z */
3455 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0AEBV?$allocator@G@1@@Z */
3456 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter
, 16)
3457 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_iter(basic_string_wchar
*this,
3458 const wchar_t *first
, const wchar_t *last
, allocator
*alloc
)
3460 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
3462 basic_string_wchar__Tidy(this, FALSE
);
3463 MSVCP_basic_string_wchar_assign_cstr_len(this, first
, basic_string_wchar__Pdif(last
, first
));
3467 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG1@Z */
3468 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG1@Z */
3469 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter
, 20)
3470 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_iter(basic_string_wchar
*this,
3471 wchar_t *beg1
, wchar_t *end1
, const wchar_t *beg2
, const wchar_t *end2
)
3473 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg1
, this->ptr
),
3474 basic_string_wchar__Pdif(end1
, beg1
), beg2
, basic_string_wchar__Pdif(end2
, beg2
));
3477 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0ABV12@@Z */
3478 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0AEBV12@@Z */
3479 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr
, 16)
3480 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_bstr(basic_string_wchar
*this,
3481 wchar_t *beg
, wchar_t *end
, const basic_string_wchar
*str
)
3483 return basic_string_wchar_replace(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3484 basic_string_wchar__Pdif(end
, beg
), str
);
3487 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0IG@Z */
3488 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0_KG@Z */
3489 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_chn
, 20)
3490 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_chn(basic_string_wchar
*this,
3491 wchar_t *beg
, wchar_t *end
, MSVCP_size_t count
, wchar_t ch
)
3493 return basic_string_wchar_replace_ch(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3494 basic_string_wchar__Pdif(end
, beg
), count
, ch
);
3497 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG@Z */
3498 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG@Z */
3499 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr
, 16)
3500 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr(basic_string_wchar
*this,
3501 wchar_t *beg
, wchar_t *end
, const wchar_t *str
)
3503 return basic_string_wchar_replace_cstr(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3504 basic_string_wchar__Pdif(end
, beg
), str
);
3507 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBGI@Z */
3508 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG_K@Z */
3509 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len
, 20)
3510 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr_len(basic_string_wchar
*this,
3511 wchar_t *beg
, wchar_t *end
, const wchar_t *str
, MSVCP_size_t len
)
3513 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3514 basic_string_wchar__Pdif(end
, beg
), str
, len
);
3517 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGIG@Z */
3518 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAG_KG@Z */
3519 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn
, 16)
3520 void __thiscall
basic_string_wchar_insert_iter_chn(basic_string_wchar
*this,
3521 wchar_t *pos
, MSVCP_size_t n
, wchar_t ch
)
3523 basic_string_wchar_insert_chn(this, basic_string_wchar__Pdif(pos
, this->ptr
), n
, ch
);
3526 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAGG@Z */
3527 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAGG@Z */
3528 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch
, 12)
3529 wchar_t* __thiscall
basic_string_wchar_insert_iter_ch(basic_string_wchar
*this, wchar_t *pos
, wchar_t ch
)
3531 MSVCP_size_t off
= basic_string_wchar__Pdif(pos
, this->ptr
);
3532 basic_string_wchar_insert_chn(this, off
, 1, ch
);
3533 return basic_string_wchar__Psum(this->ptr
, off
);
3536 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3537 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3538 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3539 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3540 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin
, 4)
3541 wchar_t* __thiscall
basic_string_wchar_begin(basic_string_wchar
*this)
3543 TRACE("(%p)\n", this);
3544 basic_string_wchar__Freeze(this);
3548 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3549 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3550 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3551 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3552 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end
, 4)
3553 wchar_t* __thiscall
basic_string_wchar_end(basic_string_wchar
*this)
3555 TRACE("(%p)\n", this);
3556 basic_string_wchar__Freeze(this);
3557 return this->ptr
+this->size
;
3560 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3561 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3562 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3563 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3564 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rbegin
, 8)
3565 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rbegin(
3566 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3568 TRACE("(%p %p)\n", this, ret
);
3569 ret
->ptr
= basic_string_wchar_end(this);
3573 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3574 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3575 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3576 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3577 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rend
, 8)
3578 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rend(
3579 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3581 TRACE("(%p %p)\n", this, ret
);
3582 ret
->ptr
= basic_string_wchar_begin(this);
3586 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGPBG1@Z */
3587 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAGPEBG1@Z */
3588 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter
, 16)
3589 void __thiscall
basic_string_wchar_insert_iter(basic_string_wchar
*this,
3590 wchar_t *pos
, const wchar_t *beg
, const wchar_t *end
)
3592 basic_string_wchar_insert_cstr_len(this, basic_string_wchar__Pdif(pos
, this->ptr
),
3593 beg
, basic_string_wchar__Pdif(end
, beg
));