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 static char* char_traits_char__Move_s(char *dest
,
67 MSVCP_size_t size
, const char *src
, MSVCP_size_t count
)
69 if(!dest
|| !src
|| size
<count
) {
72 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
76 return memmove(dest
, src
, count
);
79 static char* char_traits_char__Copy_s(char *dest
,
80 MSVCP_size_t size
, const char *src
, MSVCP_size_t count
)
82 if(!dest
|| !src
|| size
<count
) {
85 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
89 return memcpy(dest
, src
, count
);
92 static MSVCP_size_t
char_traits_char_length(const char *str
)
97 static char* char_traits_char_assignn(char *str
, MSVCP_size_t num
, char c
)
99 return memset(str
, c
, num
);
102 static int char_traits_char_compare(const char *s1
,
103 const char *s2
, MSVCP_size_t count
)
105 int ret
= memcmp(s1
, s2
, count
);
106 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
109 static const char* char_traits_char_find(const char *str
,
110 MSVCP_size_t range
, const char *c
)
112 return memchr(str
, *c
, range
);
115 static MSVCP_bool
basic_string_char_inside(
116 basic_string_char
*this, const char *ptr
)
118 return ptr
>=this->ptr
&& ptr
<this->ptr
+this->size
;
121 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB */
122 /* ?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2_KB */
123 const MSVCP_size_t MSVCP_basic_string_char_npos
= -1;
125 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ@4DB */
126 /* ?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ@4DB */
127 const char basic_string_char_nullbyte
= '\0';
129 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ */
130 /* ?_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDXZ */
131 const char* __cdecl
basic_string_char__Nullstr(void)
133 return &basic_string_char_nullbyte
;
136 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEAAEPBD@Z */
137 /* ?_Refcnt@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAAEAEPEBD@Z */
138 DEFINE_THISCALL_WRAPPER(basic_string_char__Refcnt
, 8)
139 unsigned char* __thiscall
basic_string_char__Refcnt(basic_string_char
*this, const char *ptr
)
141 TRACE("(%p %p)\n", this, ptr
);
142 return (unsigned char*)ptr
-1;
145 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
146 /* ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
147 DEFINE_THISCALL_WRAPPER(basic_string_char__Eos
, 8)
148 void __thiscall
basic_string_char__Eos(basic_string_char
*this, MSVCP_size_t len
)
154 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
155 /* ?clear@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
156 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_clear
, 4)
157 void __thiscall
MSVCP_basic_string_char_clear(basic_string_char
*this)
160 basic_string_char__Eos(this, 0);
163 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
164 /* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
165 DEFINE_THISCALL_WRAPPER(basic_string_char__Tidy
, 8)
166 void __thiscall
basic_string_char__Tidy(basic_string_char
*this, MSVCP_bool built
)
168 TRACE("(%p %d)\n", this, built
);
170 if(!built
|| !this->ptr
);
171 else if(!this->ptr
[-1] || (unsigned char)this->ptr
[-1]==FROZEN
)
172 MSVCP_allocator_char_deallocate(NULL
, this->ptr
-1, this->res
+2);
176 memset(this, 0, sizeof(*this));
179 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAE_NI_N@Z */
180 /* ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAA_N_K_N@Z */
181 DEFINE_THISCALL_WRAPPER(basic_string_char__Grow
, 12)
182 MSVCP_bool __thiscall
basic_string_char__Grow(basic_string_char
*this, MSVCP_size_t new_size
, MSVCP_bool trim
)
186 basic_string_char__Tidy(this, TRUE
);
188 basic_string_char__Eos(this, 0);
189 } else if(this->res
<new_size
|| trim
||
190 (this->ptr
&& this->ptr
[-1] && (unsigned char)this->ptr
[-1]!=FROZEN
)) {
191 MSVCP_size_t new_res
= new_size
, len
= this->size
;
194 if(!trim
&& this->ptr
&& !this->ptr
[-1]) {
196 if(new_res
/3 < this->res
/2)
197 new_res
= this->res
+ this->res
/2;
200 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_res
+2);
203 ptr
= MSVCP_allocator_char_allocate(this->allocator
, new_size
+2);
206 ERR("Out of memory\n");
215 char_traits_char__Copy_s(ptr
+1, new_size
, this->ptr
, len
);
216 basic_string_char__Tidy(this, TRUE
);
219 basic_string_char__Eos(this, len
);
225 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
226 /* ?_Split@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
227 DEFINE_THISCALL_WRAPPER(basic_string_char__Split
, 4)
228 void __thiscall
basic_string_char__Split(basic_string_char
*this)
233 TRACE("(%p)\n", this);
235 if(!this->ptr
|| !this->ptr
[-1] || (unsigned char)this->ptr
[-1]==FROZEN
)
240 basic_string_char__Tidy(this, TRUE
);
241 if(basic_string_char__Grow(this, len
, FALSE
)) {
243 char_traits_char__Copy_s(this->ptr
, this->res
, ptr
, len
);
244 basic_string_char__Eos(this, len
);
248 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXXZ */
249 /* ?_Freeze@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAXXZ */
250 DEFINE_THISCALL_WRAPPER(basic_string_char__Freeze
, 4)
251 void __thiscall
basic_string_char__Freeze(basic_string_char
*this)
253 TRACE("(%p)\n", this);
254 basic_string_char__Split(this);
256 this->ptr
[-1] = FROZEN
;
259 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z */
260 /* ?_Copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_K@Z */
261 DEFINE_THISCALL_WRAPPER(basic_string_char__Copy
, 8)
262 void __thiscall
basic_string_char__Copy(basic_string_char
*this, MSVCP_size_t copy_len
)
264 TRACE("%p %lu\n", this, copy_len
);
266 if(!basic_string_char__Grow(this, copy_len
, TRUE
))
270 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPADPADI@Z */
271 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEADPEAD_K@Z */
272 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDPBDI@Z */
273 /* ?_Psum@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPEBDPEBD_K@Z */
274 char* __cdecl
basic_string_char__Psum(char *iter
, MSVCP_size_t add
)
276 TRACE("(%p %lu)\n", iter
, add
);
277 return iter
? iter
+add
: iter
;
280 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z */
281 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0@Z */
282 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase
, 12)
283 basic_string_char
* __thiscall
MSVCP_basic_string_char_erase(
284 basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t len
)
286 TRACE("%p %lu %lu\n", this, pos
, len
);
291 if(len
> this->size
-pos
)
292 len
= this->size
-pos
;
295 basic_string_char__Split(this);
296 char_traits_char__Move_s(this->ptr
+pos
, this->res
-pos
,
297 this->ptr
+pos
+len
, this->size
-pos
-len
);
298 basic_string_char__Eos(this, this->size
-len
);
304 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD@Z */
305 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD@Z */
306 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_beg
, 8)
307 char* __thiscall
basic_string_char_erase_beg(basic_string_char
*this, char *beg
)
309 MSVCP_size_t pos
= beg
-this->ptr
;
310 MSVCP_basic_string_char_erase(this, pos
, 1);
311 return this->ptr
+pos
;
314 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
315 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
316 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_substr
, 16)
317 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_substr(
318 basic_string_char
*this, const basic_string_char
*assign
,
319 MSVCP_size_t pos
, MSVCP_size_t len
)
321 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
323 if(assign
->size
< pos
)
326 if(len
> assign
->size
-pos
)
327 len
= assign
->size
-pos
;
330 MSVCP_basic_string_char_erase(this, pos
+len
, MSVCP_basic_string_char_npos
);
331 MSVCP_basic_string_char_erase(this, 0, pos
);
332 } else if(basic_string_char__Grow(this, len
, FALSE
)) {
334 char_traits_char__Copy_s(this->ptr
, this->res
, assign
->ptr
+pos
, len
);
335 basic_string_char__Eos(this, len
);
341 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
342 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
343 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr_len
, 12)
344 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_cstr_len(
345 basic_string_char
*this, const char *str
, MSVCP_size_t len
)
347 TRACE("%p %s %lu\n", this, debugstr_an(str
, len
), len
);
349 if(basic_string_char_inside(this, str
))
350 return MSVCP_basic_string_char_assign_substr(this, this, str
-this->ptr
, len
);
351 else if(basic_string_char__Grow(this, len
, FALSE
)) {
352 char_traits_char__Copy_s(this->ptr
, this->res
, str
, len
);
353 basic_string_char__Eos(this, len
);
359 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
360 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
361 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
362 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
363 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign
, 8)
364 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign(
365 basic_string_char
*this, const basic_string_char
*assign
)
367 return MSVCP_basic_string_char_assign_substr(this, assign
,
368 0, MSVCP_basic_string_char_npos
);
371 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
372 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
373 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
374 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
375 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_cstr
, 8)
376 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_cstr(
377 basic_string_char
*this, const char *str
)
379 return MSVCP_basic_string_char_assign_cstr_len(this, str
,
380 char_traits_char_length(str
));
383 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
384 /* ??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
385 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ch
, 8)
386 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_ch(
387 basic_string_char
*this, char ch
)
389 return MSVCP_basic_string_char_assign_cstr_len(this, &ch
, 1);
392 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
393 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
394 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assignn
, 12)
395 basic_string_char
* __thiscall
MSVCP_basic_string_char_assignn(
396 basic_string_char
*this, MSVCP_size_t count
, char ch
)
398 TRACE("%p %ld %c\n", this, count
, ch
);
400 basic_string_char__Grow(this, count
, FALSE
);
401 char_traits_char_assignn(this->ptr
, count
, ch
);
402 basic_string_char__Eos(this, count
);
406 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
407 /* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
408 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_assign_ptr_ptr
, 12)
409 basic_string_char
* __thiscall
MSVCP_basic_string_char_assign_ptr_ptr(
410 basic_string_char
*this, const char *first
, const char *last
)
412 return MSVCP_basic_string_char_assign_cstr_len(this, first
, last
-first
);
415 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDIABV?$allocator@D@1@@Z */
416 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_KAEBV?$allocator@D@1@@Z */
417 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len_alloc
, 16)
418 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_len_alloc(
419 basic_string_char
*this, const char *str
, MSVCP_size_t len
, const void *alloc
)
421 TRACE("%p %s %ld\n", this, debugstr_an(str
, len
), len
);
423 basic_string_char__Tidy(this, FALSE
);
424 MSVCP_basic_string_char_assign_cstr_len(this, str
, len
);
428 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDI@Z */
429 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD_K@Z */
430 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_len
, 12)
431 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_len(
432 basic_string_char
*this, const char *str
, MSVCP_size_t len
)
434 return MSVCP_basic_string_char_ctor_cstr_len_alloc(this, str
, len
, NULL
);
437 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
438 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
439 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr_alloc
, 20)
440 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_substr_alloc(
441 basic_string_char
*this, const basic_string_char
*assign
,
442 MSVCP_size_t pos
, MSVCP_size_t len
, const void *alloc
)
444 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
446 basic_string_char__Tidy(this, FALSE
);
447 MSVCP_basic_string_char_assign_substr(this, assign
, pos
, len
);
451 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBDABV?$allocator@D@1@@Z */
452 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBDAEBV?$allocator@D@1@@Z */
453 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr_alloc
, 12)
454 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr_alloc(
455 basic_string_char
*this, const char *str
, const void *alloc
)
457 TRACE("%p %s\n", this, debugstr_a(str
));
459 basic_string_char__Tidy(this, FALSE
);
460 MSVCP_basic_string_char_assign_cstr(this, str
);
464 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z */
465 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD@Z */
466 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_cstr
, 8)
467 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_cstr(
468 basic_string_char
*this, const char *str
)
470 return MSVCP_basic_string_char_ctor_cstr_alloc(this, str
, NULL
);
473 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@IDABV?$allocator@D@1@@Z */
474 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@_KDAEBV?$allocator@D@1@@Z */
475 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_ch_alloc
, 16)
476 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_ch_alloc(basic_string_char
*this,
477 MSVCP_size_t count
, char ch
, const void *alloc
)
479 TRACE("%p %ld %c\n", this, count
, ch
);
481 basic_string_char__Tidy(this, FALSE
);
482 MSVCP_basic_string_char_assignn(this, count
, ch
);
486 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
487 /* ??_F?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
488 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor
, 4)
489 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor(basic_string_char
*this)
493 basic_string_char__Tidy(this, FALSE
);
497 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$allocator@D@1@@Z */
498 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$allocator@D@1@@Z */
499 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_alloc
, 8)
500 basic_string_char
* __thiscall
MSVCP_basic_string_char_ctor_alloc(
501 basic_string_char
*this, const void *alloc
)
503 TRACE("%p %p\n", this, alloc
);
505 basic_string_char__Tidy(this, FALSE
);
509 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
510 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
511 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor
, 8)
512 basic_string_char
* __thiscall
MSVCP_basic_string_char_copy_ctor(
513 basic_string_char
*this, const basic_string_char
*copy
)
515 TRACE("%p %p\n", this, copy
);
517 basic_string_char__Tidy(this, FALSE
);
518 MSVCP_basic_string_char_assign(this, copy
);
522 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
523 /* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
524 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor
, 4)
525 void __thiscall
MSVCP_basic_string_char_dtor(basic_string_char
*this)
528 basic_string_char__Tidy(this, TRUE
);
531 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
532 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
533 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len
, 20)
534 int __thiscall
MSVCP_basic_string_char_compare_substr_cstr_len(
535 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
536 const char *str
, MSVCP_size_t count
)
540 TRACE("%p %lu %lu %s %lu\n", this, pos
, num
, debugstr_an(str
, count
), count
);
545 if(num
> this->size
-pos
)
546 num
= this->size
-pos
;
548 ans
= char_traits_char_compare(this->ptr
+pos
,
549 str
, num
>count
? count
: num
);
560 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
561 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
562 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr
, 8)
563 int __thiscall
MSVCP_basic_string_char_compare_cstr(
564 const basic_string_char
*this, const char *str
)
566 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
567 str
, char_traits_char_length(str
));
570 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
571 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
572 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr
, 24)
573 int __thiscall
MSVCP_basic_string_char_compare_substr_substr(
574 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
575 const basic_string_char
*compare
, MSVCP_size_t off
, MSVCP_size_t count
)
577 TRACE("%p %lu %lu %p %lu %lu\n", this, pos
, num
, compare
, off
, count
);
579 if(compare
->size
< off
)
582 if(count
> compare
->size
-off
)
583 count
= compare
->size
-off
;
585 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
586 compare
->ptr
+off
, count
);
589 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
590 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
591 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr
, 16)
592 int __thiscall
MSVCP_basic_string_char_compare_substr(
593 const basic_string_char
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
594 const basic_string_char
*compare
)
596 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
597 compare
->ptr
, compare
->size
);
600 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
601 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
602 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare
, 8)
603 int __thiscall
MSVCP_basic_string_char_compare(
604 const basic_string_char
*this, const basic_string_char
*compare
)
606 return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size
,
607 compare
->ptr
, compare
->size
);
610 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
611 /* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
612 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr
, 16)
613 int __thiscall
MSVCP_basic_string_char_compare_substr_cstr(const basic_string_char
*this,
614 MSVCP_size_t pos
, MSVCP_size_t num
, const char *str
)
616 return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos
, num
,
617 str
, char_traits_char_length(str
));
620 /* ??$?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 */
621 /* ??$?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 */
622 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
623 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
624 MSVCP_bool __cdecl
MSVCP_basic_string_char_equal(
625 const basic_string_char
*left
, const basic_string_char
*right
)
627 return MSVCP_basic_string_char_compare(left
, right
) == 0;
630 /* ??$?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 */
631 /* ??$?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 */
632 /* ??8std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
633 /* ??8std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
634 MSVCP_bool __cdecl
MSVCP_basic_string_char_equal_str_cstr(
635 const basic_string_char
*left
, const char *right
)
637 return MSVCP_basic_string_char_compare_cstr(left
, right
) == 0;
640 /* ??$?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 */
641 /* ??$?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 */
642 /* ??8std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
643 /* ??8std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
644 MSVCP_bool __cdecl
MSVCP_basic_string_char_equal_cstr_str(
645 const char *left
, const basic_string_char
*right
)
647 return MSVCP_basic_string_char_compare_cstr(right
, left
) == 0;
650 /* ??$?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 */
651 /* ??$?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 */
652 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
653 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
654 MSVCP_bool __cdecl
MSVCP_basic_string_char_not_equal(
655 const basic_string_char
*left
, const basic_string_char
*right
)
657 return MSVCP_basic_string_char_compare(left
, right
) != 0;
660 /* ??$?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 */
661 /* ??$?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 */
662 /* ??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
663 /* ??9std@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
664 MSVCP_bool __cdecl
MSVCP_basic_string_char_not_equal_str_cstr(
665 const basic_string_char
*left
, const char *right
)
667 return MSVCP_basic_string_char_compare_cstr(left
, right
) != 0;
670 /* ??$?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 */
671 /* ??$?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 */
672 /* ??9std@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
673 /* ??9std@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
674 MSVCP_bool __cdecl
MSVCP_basic_string_char_not_equal_cstr_str(
675 const char *left
, const basic_string_char
*right
)
677 return MSVCP_basic_string_char_compare_cstr(right
, left
) != 0;
680 /* ??$?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 */
681 /* ??$?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 */
682 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
683 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
684 MSVCP_bool __cdecl
MSVCP_basic_string_char_lower(
685 const basic_string_char
*left
, const basic_string_char
*right
)
687 return MSVCP_basic_string_char_compare(left
, right
) < 0;
690 /* ??$?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 */
691 /* ??$?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 */
692 /* ??Mstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
693 /* ??Mstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
694 MSVCP_bool __cdecl
MSVCP_basic_string_char_lower_bstr_cstr(
695 const basic_string_char
*left
, const char *right
)
697 return MSVCP_basic_string_char_compare_cstr(left
, right
) < 0;
700 /* ??$?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 */
701 /* ??$?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 */
702 /* ??Mstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
703 /* ??Mstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
704 MSVCP_bool __cdecl
MSVCP_basic_string_char_lower_cstr_bstr(
705 const char *left
, const basic_string_char
*right
)
707 return MSVCP_basic_string_char_compare_cstr(right
, left
) > 0;
710 /* ??$?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 */
711 /* ??$?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 */
712 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
713 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
714 MSVCP_bool __cdecl
MSVCP_basic_string_char_leq(
715 const basic_string_char
*left
, const basic_string_char
*right
)
717 return MSVCP_basic_string_char_compare(left
, right
) <= 0;
720 /* ??$?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 */
721 /* ??$?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 */
722 /* ??Nstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
723 /* ??Nstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
724 MSVCP_bool __cdecl
MSVCP_basic_string_char_leq_bstr_cstr(
725 const basic_string_char
*left
, const char *right
)
727 return MSVCP_basic_string_char_compare_cstr(left
, right
) <= 0;
730 /* ??$?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 */
731 /* ??$?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 */
732 /* ??Nstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
733 /* ??Nstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
734 MSVCP_bool __cdecl
MSVCP_basic_string_char_leq_cstr_bstr(
735 const char *left
, const basic_string_char
*right
)
737 return MSVCP_basic_string_char_compare_cstr(right
, left
) >= 0;
740 /* ??$?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 */
741 /* ??$?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 */
742 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
743 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
744 MSVCP_bool __cdecl
MSVCP_basic_string_char_greater(
745 const basic_string_char
*left
, const basic_string_char
*right
)
747 return MSVCP_basic_string_char_compare(left
, right
) > 0;
750 /* ??$?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 */
751 /* ??$?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 */
752 /* ??Ostd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
753 /* ??Ostd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
754 MSVCP_bool __cdecl
MSVCP_basic_string_char_greater_bstr_cstr(
755 const basic_string_char
*left
, const char *right
)
757 return MSVCP_basic_string_char_compare_cstr(left
, right
) > 0;
760 /* ??$?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 */
761 /* ??$?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 */
762 /* ??Ostd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
763 /* ??Ostd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
764 MSVCP_bool __cdecl
MSVCP_basic_string_char_greater_cstr_bstr(
765 const char *left
, const basic_string_char
*right
)
767 return MSVCP_basic_string_char_compare_cstr(right
, left
) < 0;
770 /* ??$?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 */
771 /* ??$?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 */
772 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
773 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z */
774 MSVCP_bool __cdecl
MSVCP_basic_string_char_geq(
775 const basic_string_char
*left
, const basic_string_char
*right
)
777 return MSVCP_basic_string_char_compare(left
, right
) >= 0;
780 /* ??$?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 */
781 /* ??$?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 */
782 /* ??Pstd@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z */
783 /* ??Pstd@@YA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBD@Z */
784 MSVCP_bool __cdecl
MSVCP_basic_string_char_geq_bstr_cstr(
785 const basic_string_char
*left
, const char *right
)
787 return MSVCP_basic_string_char_compare_cstr(left
, right
) >= 0;
790 /* ??$?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 */
791 /* ??$?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 */
792 /* ??Pstd@@YA_NPBDABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
793 /* ??Pstd@@YA_NPEBDAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z */
794 MSVCP_bool __cdecl
MSVCP_basic_string_char_geq_cstr_bstr(
795 const char *left
, const basic_string_char
*right
)
797 return MSVCP_basic_string_char_compare_cstr(right
, left
) <= 0;
800 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
801 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
802 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_substr
, 16)
803 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_cstr_substr(
804 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
808 TRACE("%p %s %lu %lu\n", this, debugstr_an(find
, len
), pos
, len
);
810 if(len
==0 && pos
<=this->size
)
812 if(pos
>=this->size
|| len
>this->size
)
813 return MSVCP_basic_string_char_npos
;
815 end
= this->ptr
+this->size
-len
+1;
816 for(p
=this->ptr
+pos
; p
<end
; p
++) {
817 p
= char_traits_char_find(p
, end
-p
, find
);
821 if(!char_traits_char_compare(p
, find
, len
))
825 return MSVCP_basic_string_char_npos
;
828 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
829 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
830 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_off
, 12)
831 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_off(
832 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
834 return MSVCP_basic_string_char_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
837 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
838 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
839 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_ch
, 12)
840 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_ch(
841 const basic_string_char
*this, char ch
, MSVCP_size_t pos
)
843 return MSVCP_basic_string_char_find_cstr_substr(this, &ch
, pos
, 1);
846 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
847 /* ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
848 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_cstr_off
, 12)
849 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_cstr_off(
850 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
)
852 return MSVCP_basic_string_char_find_cstr_substr(this, find
, pos
,
853 char_traits_char_length(find
));
856 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
857 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
858 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_substr
, 16)
859 MSVCP_size_t __thiscall
MSVCP_basic_string_char_rfind_cstr_substr(
860 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
864 TRACE("%p %s %lu %lu\n", this, debugstr_an(find
, len
), pos
, len
);
867 return pos
<this->size
? pos
: this->size
;
870 return MSVCP_basic_string_char_npos
;
872 if(pos
> this->size
-len
+1)
873 pos
= this->size
-len
+1;
875 for(p
=end
+pos
; p
>=end
; p
--) {
876 if(*p
==*find
&& !char_traits_char_compare(p
, find
, len
))
880 return MSVCP_basic_string_char_npos
;
883 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
884 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
885 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_off
, 12)
886 MSVCP_size_t __thiscall
MSVCP_basic_string_char_rfind_off(
887 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
889 return MSVCP_basic_string_char_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
892 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
893 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
894 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_ch
, 12)
895 MSVCP_size_t __thiscall
MSVCP_basic_string_char_rfind_ch(
896 const basic_string_char
*this, char ch
, MSVCP_size_t pos
)
898 return MSVCP_basic_string_char_rfind_cstr_substr(this, &ch
, pos
, 1);
901 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
902 /* ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
903 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rfind_cstr_off
, 12)
904 MSVCP_size_t __thiscall
MSVCP_basic_string_char_rfind_cstr_off(
905 const basic_string_char
*this, const char *find
, MSVCP_size_t pos
)
907 return MSVCP_basic_string_char_rfind_cstr_substr(this, find
, pos
,
908 char_traits_char_length(find
));
911 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
912 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
913 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr_substr
, 16)
914 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_cstr_substr(
915 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
919 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
922 end
= this->ptr
+this->size
;
923 for(p
=this->ptr
+off
; p
<end
; p
++)
924 if(!char_traits_char_find(find
, len
, p
))
928 return MSVCP_basic_string_char_npos
;
931 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
932 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
933 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of
, 12)
934 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_not_of(
935 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
937 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this,
938 find
->ptr
, off
, find
->size
);
941 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
942 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
943 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_ch
, 12)
944 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_ch(
945 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
947 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
950 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
951 /* ?find_first_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
952 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_not_of_cstr
, 12)
953 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_not_of_cstr(
954 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
956 return MSVCP_basic_string_char_find_first_not_of_cstr_substr(
957 this, find
, off
, char_traits_char_length(find
));
960 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
961 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
962 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr_substr
, 16)
963 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_of_cstr_substr(
964 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
968 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
970 if(len
>0 && off
<this->size
) {
971 end
= this->ptr
+this->size
;
972 for(p
=this->ptr
+off
; p
<end
; p
++)
973 if(char_traits_char_find(find
, len
, p
))
977 return MSVCP_basic_string_char_npos
;
980 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
981 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
982 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of
, 12)
983 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_of(
984 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
986 return MSVCP_basic_string_char_find_first_of_cstr_substr(this,
987 find
->ptr
, off
, find
->size
);
990 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
991 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
992 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_ch
, 12)
993 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_of_ch(
994 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
996 return MSVCP_basic_string_char_find_first_of_cstr_substr(this, &ch
, off
, 1);
999 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1000 /* ?find_first_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1001 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_first_of_cstr
, 12)
1002 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_first_of_cstr(
1003 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1005 return MSVCP_basic_string_char_find_first_of_cstr_substr(
1006 this, find
, off
, char_traits_char_length(find
));
1009 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1010 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1011 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr_substr
, 16)
1012 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1013 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
1015 const char *p
, *beg
;
1017 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
1019 if(len
>0 && this->size
>0) {
1020 if(off
>= this->size
)
1024 for(p
=beg
+off
; p
>=beg
; p
--)
1025 if(!char_traits_char_find(find
, len
, p
))
1029 return MSVCP_basic_string_char_npos
;
1032 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1033 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1034 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of
, 12)
1035 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_not_of(
1036 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1038 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this,
1039 find
->ptr
, off
, find
->size
);
1042 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1043 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1044 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_ch
, 12)
1045 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_ch(
1046 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1048 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
1051 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1052 /* ?find_last_not_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1053 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_not_of_cstr
, 12)
1054 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_not_of_cstr(
1055 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1057 return MSVCP_basic_string_char_find_last_not_of_cstr_substr(
1058 this, find
, off
, char_traits_char_length(find
));
1061 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDII@Z */
1062 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z */
1063 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr_substr
, 16)
1064 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_of_cstr_substr(
1065 const basic_string_char
*this, const char *find
, MSVCP_size_t off
, MSVCP_size_t len
)
1067 const char *p
, *beg
;
1069 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
1071 if(len
>0 && this->size
>0) {
1072 if(off
>= this->size
)
1076 for(p
=beg
+off
; p
>=beg
; p
--)
1077 if(char_traits_char_find(find
, len
, p
))
1081 return MSVCP_basic_string_char_npos
;
1084 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z */
1085 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z */
1086 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of
, 12)
1087 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_of(
1088 const basic_string_char
*this, const basic_string_char
*find
, MSVCP_size_t off
)
1090 return MSVCP_basic_string_char_find_last_of_cstr_substr(this,
1091 find
->ptr
, off
, find
->size
);
1094 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@Z */
1095 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z */
1096 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_ch
, 12)
1097 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_of_ch(
1098 const basic_string_char
*this, char ch
, MSVCP_size_t off
)
1100 return MSVCP_basic_string_char_find_last_of_cstr_substr(this, &ch
, off
, 1);
1103 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPBDI@Z */
1104 /* ?find_last_of@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K@Z */
1105 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_find_last_of_cstr
, 12)
1106 MSVCP_size_t __thiscall
MSVCP_basic_string_char_find_last_of_cstr(
1107 const basic_string_char
*this, const char *find
, MSVCP_size_t off
)
1109 return MSVCP_basic_string_char_find_last_of_cstr_substr(
1110 this, find
, off
, char_traits_char_length(find
));
1113 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
1114 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1115 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr
, 16)
1116 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_substr(basic_string_char
*this,
1117 const basic_string_char
*append
, MSVCP_size_t offset
, MSVCP_size_t count
)
1119 TRACE("%p %p %lu %lu\n", this, append
, offset
, count
);
1121 if(append
->size
< offset
)
1124 if(count
> append
->size
-offset
)
1125 count
= append
->size
-offset
;
1127 if(MSVCP_basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1130 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1132 char_traits_char__Copy_s(this->ptr
+this->size
, this->res
-this->size
,
1133 append
->ptr
+offset
, count
);
1134 basic_string_char__Eos(this, this->size
+count
);
1140 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z */
1141 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD_K@Z */
1142 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr_len
, 12)
1143 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_cstr_len(
1144 basic_string_char
*this, const char *append
, MSVCP_size_t count
)
1146 TRACE("%p %s %lu\n", this, debugstr_an(append
, count
), count
);
1148 if(basic_string_char_inside(this, append
))
1149 return MSVCP_basic_string_char_append_substr(this, this, append
-this->ptr
, count
);
1151 if(MSVCP_basic_string_char_npos
-this->size
<=count
|| this->size
+count
<this->size
)
1154 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1155 char_traits_char__Copy_s(this->ptr
+this->size
,
1156 this->res
-this->size
, append
, count
);
1157 basic_string_char__Eos(this, this->size
+count
);
1163 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z */
1164 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KD@Z */
1165 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_len_ch
, 12)
1166 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_len_ch(
1167 basic_string_char
*this, MSVCP_size_t count
, char ch
)
1169 TRACE("%p %lu %c\n", this, count
, ch
);
1171 if(MSVCP_basic_string_char_npos
-this->size
<= count
)
1174 if(basic_string_char__Grow(this, this->size
+count
, FALSE
)) {
1175 char_traits_char_assignn(this->ptr
+this->size
, count
, ch
);
1176 basic_string_char__Eos(this, this->size
+count
);
1182 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z */
1183 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z */
1184 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z */
1185 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@AEBV01@@Z */
1186 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append
, 8)
1187 basic_string_char
* __thiscall
MSVCP_basic_string_char_append(
1188 basic_string_char
*this, const basic_string_char
*append
)
1190 return MSVCP_basic_string_char_append_substr(this, append
,
1191 0, MSVCP_basic_string_char_npos
);
1194 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@D@Z */
1195 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@D@Z */
1196 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_ch
, 8)
1197 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_ch(
1198 basic_string_char
*this, char ch
)
1200 return MSVCP_basic_string_char_append_len_ch(this, 1, ch
);
1203 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD0@Z */
1204 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD0@Z */
1205 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_beg_end
, 12)
1206 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_beg_end(
1207 basic_string_char
*this, const char *beg
, const char *end
)
1209 return MSVCP_basic_string_char_append_cstr_len(this, beg
, end
-beg
);
1212 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBD@Z */
1213 /* ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEBD@Z */
1214 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z */
1215 /* ??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV01@PEBD@Z */
1216 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_cstr
, 8)
1217 basic_string_char
* __thiscall
MSVCP_basic_string_char_append_cstr(
1218 basic_string_char
*this, const char *append
)
1220 return MSVCP_basic_string_char_append_cstr_len(this, append
,
1221 char_traits_char_length(append
));
1223 /* ??$?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 */
1224 /* ??$?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 */
1225 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z */
1226 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@0@Z */
1227 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate(basic_string_char
*ret
,
1228 const basic_string_char
*left
, const basic_string_char
*right
)
1230 TRACE("%p %p\n", left
, right
);
1232 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1233 MSVCP_basic_string_char_append(ret
, right
);
1237 /* ??$?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 */
1238 /* ??$?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 */
1239 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z */
1240 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@D@Z */
1241 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char
*ret
,
1242 const basic_string_char
*left
, char right
)
1244 TRACE("%p %c\n", left
, right
);
1246 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1247 MSVCP_basic_string_char_append_ch(ret
, right
);
1251 /* ??$?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 */
1252 /* ??$?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 */
1253 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z */
1254 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@AEBV10@PEBD@Z */
1255 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_bstr_cstr(basic_string_char
*ret
,
1256 const basic_string_char
*left
, const char *right
)
1258 TRACE("%p %s\n", left
, debugstr_a(right
));
1260 MSVCP_basic_string_char_copy_ctor(ret
, left
);
1261 MSVCP_basic_string_char_append_cstr(ret
, right
);
1265 /* ??$?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 */
1266 /* ??$?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 */
1267 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z */
1268 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DAEBV10@@Z */
1269 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char
*ret
,
1270 char left
, const basic_string_char
*right
)
1272 TRACE("%c %p\n", left
, right
);
1274 MSVCP_basic_string_char_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
1275 MSVCP_basic_string_char_append(ret
, right
);
1279 /* ??$?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 */
1280 /* ??$?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 */
1281 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z */
1282 /* ??Hstd@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PEBDAEBV10@@Z */
1283 basic_string_char
* __cdecl
MSVCP_basic_string_char_concatenate_cstr_bstr(basic_string_char
*ret
,
1284 const char *left
, const basic_string_char
*right
)
1286 TRACE("%s %p\n", debugstr_a(left
), right
);
1288 MSVCP_basic_string_char_ctor_cstr_alloc(ret
, left
, NULL
);
1289 MSVCP_basic_string_char_append(ret
, right
);
1293 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1294 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1295 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1296 /* ??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1297 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_operator_at
, 8)
1298 char* __thiscall
MSVCP_basic_string_char_operator_at(
1299 basic_string_char
*this, MSVCP_size_t pos
)
1301 TRACE("%p %lu\n", this, pos
);
1303 assert(this->size
>= pos
);
1304 return this->ptr
+pos
;
1307 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */
1308 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z */
1309 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */
1310 /* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z */
1311 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at
, 8)
1312 char* __thiscall
MSVCP_basic_string_char_at(
1313 basic_string_char
*this, MSVCP_size_t pos
)
1315 TRACE("%p %lu\n", this, pos
);
1317 if(this->size
<= pos
)
1320 return this->ptr
+pos
;
1323 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBDI@Z */
1324 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD0@Z */
1325 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr_len
, 20)
1326 basic_string_char
* __thiscall
basic_string_char_replace_cstr_len(basic_string_char
*this,
1327 MSVCP_size_t off
, MSVCP_size_t len
, const char *str
, MSVCP_size_t str_len
)
1329 MSVCP_size_t inside_pos
= -1;
1330 char *ptr
= this->ptr
;
1332 TRACE("%p %ld %ld %p %ld\n", this, off
, len
, str
, str_len
);
1334 if(this->size
< off
)
1337 if(len
> this->size
-off
)
1338 len
= this->size
-off
;
1340 if(MSVCP_basic_string_char_npos
-str_len
<= this->size
-len
)
1343 if(basic_string_char_inside(this, str
))
1344 inside_pos
= str
-ptr
;
1346 if(this->size
-len
+str_len
)
1347 basic_string_char__Grow(this, this->size
-len
+str_len
, FALSE
);
1350 if(inside_pos
== -1) {
1351 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1352 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
1353 } else if(len
>= str_len
) {
1354 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
1355 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1359 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1361 if(inside_pos
< off
+len
) {
1362 size
= off
+len
-inside_pos
;
1365 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
1371 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
1375 basic_string_char__Eos(this, this->size
-len
+str_len
);
1379 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@II@Z */
1380 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
1381 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_substr
, 24)
1382 basic_string_char
* __thiscall
basic_string_char_replace_substr(basic_string_char
*this, MSVCP_size_t off
,
1383 MSVCP_size_t len
, const basic_string_char
*str
, MSVCP_size_t str_off
, MSVCP_size_t str_len
)
1385 if(str
->size
< str_off
)
1388 if(str_len
> str
->size
-str_off
)
1389 str_len
= str
->size
-str_off
;
1391 return basic_string_char_replace_cstr_len(this, off
, len
,
1392 str
->ptr
+str_off
, str_len
);
1395 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIABV12@@Z */
1396 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
1397 DEFINE_THISCALL_WRAPPER(basic_string_char_replace
, 16)
1398 basic_string_char
* __thiscall
basic_string_char_replace(basic_string_char
*this,
1399 MSVCP_size_t off
, MSVCP_size_t len
, const basic_string_char
*str
)
1401 return basic_string_char_replace_cstr_len(this, off
, len
,
1402 str
->ptr
, str
->size
);
1405 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIID@Z */
1406 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K00D@Z */
1407 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_ch
, 20)
1408 basic_string_char
* __thiscall
basic_string_char_replace_ch(basic_string_char
*this,
1409 MSVCP_size_t off
, MSVCP_size_t len
, MSVCP_size_t count
, char ch
)
1413 TRACE("%p %ld %ld %ld %c\n", this, off
, len
, count
, ch
);
1415 if(this->size
< off
)
1418 if(len
> this->size
-off
)
1419 len
= this->size
-off
;
1421 if(MSVCP_basic_string_char_npos
-count
<= this->size
-len
)
1424 if(this->size
-len
+count
)
1425 basic_string_char__Grow(this, this->size
-len
+count
, FALSE
);
1428 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
1429 char_traits_char_assignn(ptr
+off
, count
, ch
);
1430 basic_string_char__Eos(this, this->size
-len
+count
);
1435 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IIPBD@Z */
1436 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0PEBD@Z */
1437 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_cstr
, 16)
1438 basic_string_char
* __thiscall
basic_string_char_replace_cstr(basic_string_char
*this,
1439 MSVCP_size_t off
, MSVCP_size_t len
, const char *str
)
1441 return basic_string_char_replace_cstr_len(this, off
, len
, str
,
1442 char_traits_char_length(str
));
1445 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@@Z */
1446 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
1447 DEFINE_THISCALL_WRAPPER(basic_string_char_insert
, 12)
1448 basic_string_char
* __thiscall
basic_string_char_insert(basic_string_char
*this,
1449 MSVCP_size_t off
, const basic_string_char
*str
)
1451 return basic_string_char_replace(this, off
, 0, str
);
1454 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IABV12@II@Z */
1455 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
1456 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_substr
, 20)
1457 basic_string_char
* __thiscall
basic_string_char_insert_substr(
1458 basic_string_char
*this, MSVCP_size_t off
, const basic_string_char
*str
,
1459 MSVCP_size_t str_off
, MSVCP_size_t str_count
)
1461 return basic_string_char_replace_substr(this, off
, 0, str
, str_off
, str_count
);
1464 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBD@Z */
1465 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD@Z */
1466 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr
, 12)
1467 basic_string_char
* __thiscall
basic_string_char_insert_cstr(
1468 basic_string_char
*this, MSVCP_size_t off
, const char *str
)
1470 return basic_string_char_replace_cstr(this, off
, 0, str
);
1473 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IPBDI@Z */
1474 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_KPEBD0@Z */
1475 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_cstr_len
, 16)
1476 basic_string_char
* __thiscall
basic_string_char_insert_cstr_len(basic_string_char
*this,
1477 MSVCP_size_t off
, const char *str
, MSVCP_size_t str_len
)
1479 return basic_string_char_replace_cstr_len(this, off
, 0, str
, str_len
);
1482 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@IID@Z */
1483 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@_K0D@Z */
1484 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_chn
, 16)
1485 basic_string_char
* __thiscall
basic_string_char_insert_chn(basic_string_char
*this,
1486 MSVCP_size_t off
, MSVCP_size_t count
, char ch
)
1488 return basic_string_char_replace_ch(this, off
, 0, count
, ch
);
1491 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
1492 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z */
1493 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch
, 12)
1494 void __thiscall
MSVCP_basic_string_char_resize_ch(
1495 basic_string_char
*this, MSVCP_size_t size
, char ch
)
1497 TRACE("%p %lu %c\n", this, size
, ch
);
1499 if(size
<= this->size
)
1500 MSVCP_basic_string_char_erase(this, size
, this->size
);
1502 MSVCP_basic_string_char_append_len_ch(this, size
-this->size
, ch
);
1505 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1506 /* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1507 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize
, 8)
1508 void __thiscall
MSVCP_basic_string_char_resize(
1509 basic_string_char
*this, MSVCP_size_t size
)
1511 MSVCP_basic_string_char_resize_ch(this, size
, '\0');
1514 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1515 /* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1516 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
1517 /* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
1518 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str
, 4)
1519 const char* __thiscall
MSVCP_basic_string_char_c_str(const basic_string_char
*this)
1521 TRACE("%p\n", this);
1522 return this->ptr
? this->ptr
: basic_string_char__Nullstr();
1525 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1526 /* ?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1527 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1528 /* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1529 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_length
, 4)
1530 MSVCP_size_t __thiscall
MSVCP_basic_string_char_length(const basic_string_char
*this)
1532 TRACE("%p\n", this);
1536 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1537 /* ?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1538 DEFINE_THISCALL_WRAPPER(basic_string_char_max_size
, 4)
1539 MSVCP_size_t __thiscall
basic_string_char_max_size(const basic_string_char
*this)
1541 TRACE("%p\n", this);
1542 return MSVCP_allocator_char_max_size(NULL
)-1;
1545 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
1546 /* ?capacity@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
1547 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_capacity
, 4)
1548 MSVCP_size_t __thiscall
MSVCP_basic_string_char_capacity(basic_string_char
*this)
1550 TRACE("%p\n", this);
1554 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
1555 /* ?reserve@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z */
1556 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve
, 8)
1557 void __thiscall
MSVCP_basic_string_char_reserve(basic_string_char
*this, MSVCP_size_t size
)
1561 TRACE("%p %ld\n", this, size
);
1567 if(basic_string_char__Grow(this, size
, FALSE
))
1568 basic_string_char__Eos(this, len
);
1571 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE_NXZ */
1572 /* ?empty@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_NXZ */
1573 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_empty
, 4)
1574 MSVCP_bool __thiscall
MSVCP_basic_string_char_empty(basic_string_char
*this)
1576 TRACE("%p\n", this);
1577 return this->size
== 0;
1580 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z */
1581 /* ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXAEAV12@@Z */
1582 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap
, 8)
1583 void __thiscall
MSVCP_basic_string_char_swap(basic_string_char
*this, basic_string_char
*str
)
1585 basic_string_char tmp
;
1586 TRACE("%p %p\n", this, str
);
1593 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
1594 /* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
1595 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr
, 16)
1596 basic_string_char
* __thiscall
MSVCP_basic_string_char_substr(basic_string_char
*this,
1597 basic_string_char
*ret
, MSVCP_size_t off
, MSVCP_size_t len
)
1599 TRACE("%p %lu %lu\n", this, off
, len
);
1601 MSVCP_basic_string_char_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
1605 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIPADII@Z */
1606 /* ?copy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEAD_K1@Z */
1607 DEFINE_THISCALL_WRAPPER(basic_string_char_copy
, 16)
1608 MSVCP_size_t __thiscall
basic_string_char_copy(const basic_string_char
*this,
1609 char *dest
, MSVCP_size_t count
, MSVCP_size_t off
)
1611 TRACE("%p %p %lu %lu\n", this, dest
, count
, off
);
1613 if(off
> this->size
)
1615 if(count
> this->size
-off
)
1616 count
= this->size
-off
;
1618 char_traits_char__Copy_s(dest
, count
, this->ptr
+off
, count
);
1622 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
1623 /* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
1624 DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator
, 8)
1625 allocator
* __thiscall
basic_string_char_get_allocator(const basic_string_char
*this, allocator
*ret
)
1627 TRACE("%p\n", this);
1631 static wchar_t* char_traits_wchar__Move_s(wchar_t *dest
,
1632 MSVCP_size_t size
, const wchar_t *src
, MSVCP_size_t count
)
1634 if(!dest
|| !src
|| size
<count
) {
1637 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
1641 return memmove(dest
, src
, count
* sizeof(WCHAR
));
1644 static wchar_t* char_traits_wchar__Copy_s(wchar_t *dest
,
1645 MSVCP_size_t size
, const wchar_t *src
, MSVCP_size_t count
)
1647 if(!dest
|| !src
|| size
<count
) {
1650 _invalid_parameter(NULL
, NULL
, NULL
, 0, 0);
1654 return memcpy(dest
, src
, count
* sizeof(wchar_t));
1657 static MSVCP_size_t
char_traits_wchar_length(const wchar_t *str
)
1659 return wcslen((WCHAR
*)str
);
1662 static wchar_t* char_traits_wchar_assignn(wchar_t *str
,
1663 MSVCP_size_t num
, wchar_t c
)
1667 for(i
=0; i
<num
; i
++)
1673 static int char_traits_wchar_compare(const wchar_t *s1
,
1674 const wchar_t *s2
, MSVCP_size_t count
)
1676 int ret
= memcmp(s1
, s2
, count
);
1677 return (ret
>0 ? 1 : (ret
<0 ? -1 : 0));
1680 static const wchar_t* char_traits_wchar_find(const wchar_t *str
,
1681 MSVCP_size_t range
, const wchar_t *c
)
1683 return memchr(str
, *c
, range
);
1686 static MSVCP_bool
basic_string_wchar_inside(
1687 basic_string_wchar
*this, const wchar_t *ptr
)
1689 return ptr
>=this->ptr
&& ptr
<this->ptr
+this->size
;
1692 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2IB */
1693 /* ?npos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@2_KB */
1694 const MSVCP_size_t MSVCP_basic_string_wchar_npos
= -1;
1696 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ@4GB */
1697 /* ?_C@?1??_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ@4GB */
1698 const wchar_t basic_string_wchar_nullbyte
= '\0';
1700 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGXZ */
1701 /* ?_Nullstr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGXZ */
1702 const wchar_t* __cdecl
basic_string_wchar__Nullstr(void)
1704 return &basic_string_wchar_nullbyte
;
1707 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEAAEPBG@Z */
1708 /* ?_Refcnt@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAAEAEPEBG@Z */
1709 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Refcnt
, 8)
1710 unsigned short* __thiscall
basic_string_wchar__Refcnt(basic_string_wchar
*this, const wchar_t *ptr
)
1712 TRACE("(%p %p)\n", this, ptr
);
1713 return (unsigned short*)ptr
-1;
1716 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1717 /* ?_Eos@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1718 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Eos
, 8)
1719 void __thiscall
basic_string_wchar__Eos(basic_string_wchar
*this, MSVCP_size_t len
)
1725 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
1726 /* ?clear@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
1727 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
1728 /* ?clear@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
1729 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_clear
, 4)
1730 void __thiscall
MSVCP_basic_string_wchar_clear(basic_string_wchar
*this)
1733 basic_string_wchar__Eos(this, 0);
1736 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEX_N@Z */
1737 /* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_N@Z */
1738 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Tidy
, 8)
1739 void __thiscall
basic_string_wchar__Tidy(basic_string_wchar
*this, MSVCP_bool built
)
1741 TRACE("(%p %d)\n", this, built
);
1743 if(!built
|| !this->ptr
);
1744 else if(!this->ptr
[-1] || (unsigned short)this->ptr
[-1]==FROZEN
)
1745 MSVCP_allocator_wchar_deallocate(NULL
, this->ptr
-1, this->res
+2);
1749 memset(this, 0, sizeof(*this));
1752 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAE_NI_N@Z */
1753 /* ?_Grow@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAA_N_K_N@Z */
1754 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Grow
, 12)
1755 MSVCP_bool __thiscall
basic_string_wchar__Grow(basic_string_wchar
*this, MSVCP_size_t new_size
, MSVCP_bool trim
)
1759 basic_string_wchar__Tidy(this, TRUE
);
1761 basic_string_wchar__Eos(this, 0);
1762 } else if(this->res
<new_size
|| trim
||
1763 (this->ptr
&& this->ptr
[-1] && (unsigned short)this->ptr
[-1]!=FROZEN
)) {
1764 MSVCP_size_t new_res
= new_size
, len
= this->size
;
1767 if(!trim
&& this->ptr
&& !this->ptr
[-1]) {
1769 if(new_res
/3 < this->res
/2)
1770 new_res
= this->res
+ this->res
/2;
1773 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_res
+2);
1776 ptr
= MSVCP_allocator_wchar_allocate(this->allocator
, new_size
+2);
1779 ERR("Out of memory\n");
1788 char_traits_wchar__Copy_s(ptr
+1, new_size
, this->ptr
, len
);
1789 basic_string_wchar__Tidy(this, TRUE
);
1791 this->res
= new_res
;
1792 basic_string_wchar__Eos(this, len
);
1798 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1799 /* ?_Split@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1800 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Split
, 4)
1801 void __thiscall
basic_string_wchar__Split(basic_string_wchar
*this)
1806 TRACE("(%p)\n", this);
1808 if(!this->ptr
|| !this->ptr
[-1] || (unsigned short)this->ptr
[-1]==FROZEN
)
1813 basic_string_wchar__Tidy(this, TRUE
);
1814 if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1816 char_traits_wchar__Copy_s(this->ptr
, this->res
, ptr
, len
);
1817 basic_string_wchar__Eos(this, len
);
1821 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXXZ */
1822 /* ?_Freeze@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAXXZ */
1823 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Freeze
, 4)
1824 void __thiscall
basic_string_wchar__Freeze(basic_string_wchar
*this)
1826 TRACE("(%p)\n", this);
1827 basic_string_wchar__Split(this);
1829 this->ptr
[-1] = FROZEN
;
1832 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEXI@Z */
1833 /* ?_Copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_K@Z */
1834 DEFINE_THISCALL_WRAPPER(basic_string_wchar__Copy
, 8)
1835 void __thiscall
basic_string_wchar__Copy(basic_string_wchar
*this, MSVCP_size_t copy_len
)
1837 TRACE("%p %lu\n", this, copy_len
);
1839 if(!basic_string_wchar__Grow(this, copy_len
, TRUE
))
1843 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPAGPAGI@Z */
1844 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEAGPEAG_K@Z */
1845 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPBGPBGI@Z */
1846 /* ?_Psum@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAPEBGPEBG_K@Z */
1847 wchar_t* __cdecl
basic_string_wchar__Psum(wchar_t *iter
, MSVCP_size_t add
)
1849 TRACE("(%p %lu)\n", iter
, add
);
1850 return iter
? iter
+add
: iter
;
1853 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@II@Z */
1854 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0@Z */
1855 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_erase
, 12)
1856 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_erase(
1857 basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t len
)
1859 TRACE("%p %lu %lu\n", this, pos
, len
);
1861 if(pos
> this->size
)
1864 if(len
> this->size
-pos
)
1865 len
= this->size
-pos
;
1868 basic_string_wchar__Split(this);
1869 char_traits_wchar__Move_s(this->ptr
+pos
, this->res
-pos
,
1870 this->ptr
+pos
+len
, this->size
-pos
-len
);
1871 basic_string_wchar__Eos(this, this->size
-len
);
1877 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG@Z */
1878 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG@Z */
1879 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_beg
, 8)
1880 wchar_t* __thiscall
basic_string_wchar_erase_beg(basic_string_wchar
*this, wchar_t *beg
)
1882 MSVCP_size_t pos
= beg
-this->ptr
;
1883 MSVCP_basic_string_wchar_erase(this, pos
, 1);
1884 return this->ptr
+pos
;
1887 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
1888 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
1889 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_substr
, 16)
1890 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_substr(
1891 basic_string_wchar
*this, const basic_string_wchar
*assign
,
1892 MSVCP_size_t pos
, MSVCP_size_t len
)
1894 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
1896 if(assign
->size
< pos
)
1899 if(len
> assign
->size
-pos
)
1900 len
= assign
->size
-pos
;
1902 if(this == assign
) {
1903 MSVCP_basic_string_wchar_erase(this, pos
+len
, MSVCP_basic_string_wchar_npos
);
1904 MSVCP_basic_string_wchar_erase(this, 0, pos
);
1905 } else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1907 char_traits_wchar__Copy_s(this->ptr
, this->res
,
1908 assign
->ptr
+pos
, len
);
1909 basic_string_wchar__Eos(this, len
);
1915 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
1916 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
1917 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr_len
, 12)
1918 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_cstr_len(
1919 basic_string_wchar
*this, const wchar_t *str
, MSVCP_size_t len
)
1921 TRACE("%p %s %lu\n", this, debugstr_wn(str
, len
), len
);
1923 if(basic_string_wchar_inside(this, str
))
1924 return MSVCP_basic_string_wchar_assign_substr(this, this, str
-this->ptr
, len
);
1925 else if(basic_string_wchar__Grow(this, len
, FALSE
)) {
1926 char_traits_wchar__Copy_s(this->ptr
, this->res
, str
, len
);
1927 basic_string_wchar__Eos(this, len
);
1933 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
1934 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
1935 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
1936 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
1937 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign
, 8)
1938 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign(
1939 basic_string_wchar
*this, const basic_string_wchar
*assign
)
1941 return MSVCP_basic_string_wchar_assign_substr(this, assign
,
1942 0, MSVCP_basic_string_wchar_npos
);
1945 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
1946 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
1947 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
1948 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
1949 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_cstr
, 8)
1950 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_cstr(
1951 basic_string_wchar
*this, const wchar_t *str
)
1953 return MSVCP_basic_string_wchar_assign_cstr_len(this, str
,
1954 char_traits_wchar_length(str
));
1957 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
1958 /* ??4?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
1959 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ch
, 8)
1960 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_ch(
1961 basic_string_wchar
*this, wchar_t ch
)
1963 return MSVCP_basic_string_wchar_assign_cstr_len(this, &ch
, 1);
1966 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
1967 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
1968 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assignn
, 12)
1969 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assignn(
1970 basic_string_wchar
*this, MSVCP_size_t count
, wchar_t ch
)
1972 TRACE("%p %ld %c\n", this, count
, ch
);
1974 basic_string_wchar__Grow(this, count
, FALSE
);
1975 char_traits_wchar_assignn(this->ptr
, count
, ch
);
1976 basic_string_wchar__Eos(this, count
);
1980 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
1981 /* ?assign@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
1982 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_assign_ptr_ptr
, 12)
1983 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_assign_ptr_ptr(
1984 basic_string_wchar
*this, const wchar_t *first
, const wchar_t *last
)
1986 return MSVCP_basic_string_wchar_assign_cstr_len(this, first
, last
-first
);
1989 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGIABV?$allocator@G@1@@Z */
1990 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_KAEBV?$allocator@G@1@@Z */
1991 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len_alloc
, 16)
1992 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_len_alloc(
1993 basic_string_wchar
*this, const wchar_t *str
, MSVCP_size_t len
, const void *alloc
)
1995 TRACE("%p %s %ld\n", this, debugstr_wn(str
, len
), len
);
1997 basic_string_wchar__Tidy(this, FALSE
);
1998 MSVCP_basic_string_wchar_assign_cstr_len(this, str
, len
);
2002 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WI@Z */
2003 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W_K@Z */
2004 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGI@Z */
2005 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG_K@Z */
2006 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_len
, 12)
2007 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_len(
2008 basic_string_wchar
*this, const wchar_t *str
, MSVCP_size_t len
)
2010 return MSVCP_basic_string_wchar_ctor_cstr_len_alloc(this, str
, len
, NULL
);
2013 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
2014 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
2015 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr_alloc
, 20)
2016 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_substr_alloc(
2017 basic_string_wchar
*this, const basic_string_wchar
*assign
,
2018 MSVCP_size_t pos
, MSVCP_size_t len
, const void *alloc
)
2020 TRACE("%p %p %lu %lu\n", this, assign
, pos
, len
);
2022 basic_string_wchar__Tidy(this, FALSE
);
2023 MSVCP_basic_string_wchar_assign_substr(this, assign
, pos
, len
);
2027 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBGABV?$allocator@G@1@@Z */
2028 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBGAEBV?$allocator@G@1@@Z */
2029 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr_alloc
, 12)
2030 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr_alloc(
2031 basic_string_wchar
*this, const wchar_t *str
, const void *alloc
)
2033 TRACE("%p %s\n", this, debugstr_w(str
));
2035 basic_string_wchar__Tidy(this, FALSE
);
2036 MSVCP_basic_string_wchar_assign_cstr(this, str
);
2040 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z */
2041 /* ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@PEB_W@Z */
2042 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z */
2043 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG@Z */
2044 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_cstr
, 8)
2045 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_cstr(
2046 basic_string_wchar
*this, const wchar_t *str
)
2048 return MSVCP_basic_string_wchar_ctor_cstr_alloc(this, str
, NULL
);
2051 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
2052 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
2053 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_ch_alloc
, 16)
2054 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_ch_alloc(basic_string_wchar
*this,
2055 MSVCP_size_t count
, wchar_t ch
, const void *alloc
)
2057 TRACE("%p %ld %c\n", this, count
, ch
);
2059 basic_string_wchar__Tidy(this, FALSE
);
2060 MSVCP_basic_string_wchar_assignn(this, count
, ch
);
2064 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
2065 /* ??_F?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
2066 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor
, 4)
2067 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor(basic_string_wchar
*this)
2069 TRACE("%p\n", this);
2071 basic_string_wchar__Tidy(this, FALSE
);
2075 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$allocator@G@1@@Z */
2076 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$allocator@G@1@@Z */
2077 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_alloc
, 8)
2078 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_ctor_alloc(
2079 basic_string_wchar
*this, const void *alloc
)
2081 TRACE("%p %p\n", this, alloc
);
2083 basic_string_wchar__Tidy(this, FALSE
);
2087 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
2088 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
2089 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor
, 8)
2090 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_copy_ctor(
2091 basic_string_wchar
*this, const basic_string_wchar
*copy
)
2093 TRACE("%p %p\n", this, copy
);
2095 basic_string_wchar__Tidy(this, FALSE
);
2096 MSVCP_basic_string_wchar_assign(this, copy
);
2100 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
2101 /* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
2102 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor
, 4)
2103 void __thiscall
MSVCP_basic_string_wchar_dtor(basic_string_wchar
*this)
2105 TRACE("%p\n", this);
2106 basic_string_wchar__Tidy(this, TRUE
);
2109 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBGI@Z */
2110 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG0@Z */
2111 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len
, 20)
2112 int __thiscall
MSVCP_basic_string_wchar_compare_substr_cstr_len(
2113 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2114 const wchar_t *str
, MSVCP_size_t count
)
2118 TRACE("%p %lu %lu %s %lu\n", this, pos
, num
, debugstr_wn(str
, count
), count
);
2120 if(this->size
< pos
)
2123 if(num
> this->size
-pos
)
2124 num
= this->size
-pos
;
2126 ans
= char_traits_wchar_compare(this->ptr
+pos
,
2127 str
, num
>count
? count
: num
);
2133 else if(num
< count
)
2138 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHPBG@Z */
2139 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHPEBG@Z */
2140 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_cstr
, 8)
2141 int __thiscall
MSVCP_basic_string_wchar_compare_cstr(
2142 const basic_string_wchar
*this, const wchar_t *str
)
2144 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2145 str
, char_traits_wchar_length(str
));
2148 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@II@Z */
2149 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@00@Z */
2150 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_substr
, 24)
2151 int __thiscall
MSVCP_basic_string_wchar_compare_substr_substr(
2152 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2153 const basic_string_wchar
*compare
, MSVCP_size_t off
, MSVCP_size_t count
)
2155 TRACE("%p %lu %lu %p %lu %lu\n", this, pos
, num
, compare
, off
, count
);
2157 if(compare
->size
< off
)
2160 if(count
> compare
->size
-off
)
2161 count
= compare
->size
-off
;
2163 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2164 compare
->ptr
+off
, count
);
2167 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z */
2168 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0AEBV12@@Z */
2169 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr
, 16)
2170 int __thiscall
MSVCP_basic_string_wchar_compare_substr(
2171 const basic_string_wchar
*this, MSVCP_size_t pos
, MSVCP_size_t num
,
2172 const basic_string_wchar
*compare
)
2174 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2175 compare
->ptr
, compare
->size
);
2178 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z */
2179 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z */
2180 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare
, 8)
2181 int __thiscall
MSVCP_basic_string_wchar_compare(
2182 const basic_string_wchar
*this, const basic_string_wchar
*compare
)
2184 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, 0, this->size
,
2185 compare
->ptr
, compare
->size
);
2188 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIPBG@Z */
2189 /* ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAH_K0PEBG@Z */
2190 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr
, 16)
2191 int __thiscall
MSVCP_basic_string_wchar_compare_substr_cstr(const basic_string_wchar
*this,
2192 MSVCP_size_t pos
, MSVCP_size_t num
, const wchar_t *str
)
2194 return MSVCP_basic_string_wchar_compare_substr_cstr_len(this, pos
, num
,
2195 str
, char_traits_wchar_length(str
));
2198 /* ??$?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 */
2199 /* ??$?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 */
2200 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2201 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2202 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_equal(
2203 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2205 return MSVCP_basic_string_wchar_compare(left
, right
) == 0;
2208 /* ??$?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 */
2209 /* ??$?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 */
2210 /* ??8std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2211 /* ??8std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2212 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_equal_str_cstr(
2213 const basic_string_wchar
*left
, const wchar_t *right
)
2215 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) == 0;
2218 /* ??$?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 */
2219 /* ??$?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 */
2220 /* ??8std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2221 /* ??8std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2222 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_equal_cstr_str(
2223 const wchar_t *left
, const basic_string_wchar
*right
)
2225 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) == 0;
2228 /* ??$?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 */
2229 /* ??$?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 */
2230 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2231 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2232 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_not_equal(
2233 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2235 return MSVCP_basic_string_wchar_compare(left
, right
) != 0;
2238 /* ??$?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 */
2239 /* ??$?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 */
2240 /* ??9std@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2241 /* ??9std@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2242 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_not_equal_str_cstr(
2243 const basic_string_wchar
*left
, const wchar_t *right
)
2245 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) != 0;
2248 /* ??$?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 */
2249 /* ??$?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 */
2250 /* ??9std@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2251 /* ??9std@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2252 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_not_equal_cstr_str(
2253 const wchar_t *left
, const basic_string_wchar
*right
)
2255 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) != 0;
2258 /* ??$?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 */
2259 /* ??$?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 */
2260 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2261 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2262 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_lower(
2263 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2265 return MSVCP_basic_string_wchar_compare(left
, right
) < 0;
2268 /* ??$?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 */
2269 /* ??$?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 */
2270 /* ??Mstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2271 /* ??Mstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2272 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_lower_bstr_cstr(
2273 const basic_string_wchar
*left
, const wchar_t *right
)
2275 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) < 0;
2278 /* ??$?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 */
2279 /* ??$?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 */
2280 /* ??Mstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2281 /* ??Mstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2282 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_lower_cstr_bstr(
2283 const wchar_t *left
, const basic_string_wchar
*right
)
2285 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) > 0;
2288 /* ??$?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 */
2289 /* ??$?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 */
2290 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2291 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2292 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_leq(
2293 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2295 return MSVCP_basic_string_wchar_compare(left
, right
) <= 0;
2298 /* ??$?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 */
2299 /* ??$?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 */
2300 /* ??Nstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2301 /* ??Nstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2302 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_leq_bstr_cstr(
2303 const basic_string_wchar
*left
, const wchar_t *right
)
2305 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) <= 0;
2308 /* ??$?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 */
2309 /* ??$?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 */
2310 /* ??Nstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2311 /* ??Nstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2312 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_leq_cstr_bstr(
2313 const wchar_t *left
, const basic_string_wchar
*right
)
2315 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) >= 0;
2318 /* ??$?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 */
2319 /* ??$?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 */
2320 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2321 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2322 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_greater(
2323 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2325 return MSVCP_basic_string_wchar_compare(left
, right
) > 0;
2328 /* ??$?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 */
2329 /* ??$?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 */
2330 /* ??Ostd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2331 /* ??Ostd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2332 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_greater_bstr_cstr(
2333 const basic_string_wchar
*left
, const wchar_t *right
)
2335 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) > 0;
2338 /* ??$?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 */
2339 /* ??$?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 */
2340 /* ??Ostd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2341 /* ??Ostd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2342 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_greater_cstr_bstr(
2343 const wchar_t *left
, const basic_string_wchar
*right
)
2345 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) < 0;
2348 /* ??$?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 */
2349 /* ??$?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 */
2350 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2351 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@0@Z */
2352 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_geq(
2353 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2355 return MSVCP_basic_string_wchar_compare(left
, right
) >= 0;
2358 /* ??$?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 */
2359 /* ??$?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 */
2360 /* ??Pstd@@YA_NABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBG@Z */
2361 /* ??Pstd@@YA_NAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBG@Z */
2362 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_geq_bstr_cstr(
2363 const basic_string_wchar
*left
, const wchar_t *right
)
2365 return MSVCP_basic_string_wchar_compare_cstr(left
, right
) >= 0;
2368 /* ??$?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 */
2369 /* ??$?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 */
2370 /* ??Pstd@@YA_NPBGABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2371 /* ??Pstd@@YA_NPEBGAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
2372 MSVCP_bool __cdecl
MSVCP_basic_string_wchar_geq_cstr_bstr(
2373 const wchar_t *left
, const basic_string_wchar
*right
)
2375 return MSVCP_basic_string_wchar_compare_cstr(right
, left
) <= 0;
2378 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2379 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2380 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_substr
, 16)
2381 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_cstr_substr(
2382 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
2384 const wchar_t *p
, *end
;
2386 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find
, len
), pos
, len
);
2388 if(len
==0 && pos
<=this->size
)
2390 if(pos
>=this->size
|| len
>this->size
)
2391 return MSVCP_basic_string_wchar_npos
;
2393 end
= this->ptr
+this->size
-len
+1;
2394 for(p
=this->ptr
+pos
; p
<end
; p
++) {
2395 p
= char_traits_wchar_find(p
, end
-p
, find
);
2399 if(!char_traits_wchar_compare(p
, find
, len
))
2403 return MSVCP_basic_string_wchar_npos
;
2406 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2407 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2408 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_off
, 12)
2409 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_off(
2410 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2412 return MSVCP_basic_string_wchar_find_cstr_substr(this, find
->ptr
, off
, find
->size
);
2415 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2416 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2417 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_ch
, 12)
2418 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_ch(
2419 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t pos
)
2421 return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch
, pos
, 1);
2424 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2425 /* ?find@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2426 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_cstr_off
, 12)
2427 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_cstr_off(
2428 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
)
2430 return MSVCP_basic_string_wchar_find_cstr_substr(this, find
, pos
,
2431 char_traits_wchar_length(find
));
2434 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2435 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2436 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_substr
, 16)
2437 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_rfind_cstr_substr(
2438 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
, MSVCP_size_t len
)
2440 const wchar_t *p
, *end
;
2442 TRACE("%p %s %lu %lu\n", this, debugstr_wn(find
, len
), pos
, len
);
2445 return pos
<this->size
? pos
: this->size
;
2447 if(len
> this->size
)
2448 return MSVCP_basic_string_wchar_npos
;
2450 if(pos
> this->size
-len
+1)
2451 pos
= this->size
-len
+1;
2453 for(p
=end
+pos
; p
>=end
; p
--) {
2454 if(*p
==*find
&& !char_traits_wchar_compare(p
, find
, len
))
2458 return MSVCP_basic_string_wchar_npos
;
2461 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2462 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2463 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_off
, 12)
2464 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_rfind_off(
2465 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2467 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find
->ptr
, off
, find
->size
);
2470 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2471 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2472 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_ch
, 12)
2473 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_rfind_ch(
2474 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t pos
)
2476 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, &ch
, pos
, 1);
2479 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2480 /* ?rfind@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2481 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rfind_cstr_off
, 12)
2482 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_rfind_cstr_off(
2483 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t pos
)
2485 return MSVCP_basic_string_wchar_rfind_cstr_substr(this, find
, pos
,
2486 char_traits_wchar_length(find
));
2489 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2490 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2491 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr_substr
, 16)
2492 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2493 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2495 const wchar_t *p
, *end
;
2497 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2499 if(off
<this->size
) {
2500 end
= this->ptr
+this->size
;
2501 for(p
=this->ptr
+off
; p
<end
; p
++)
2502 if(!char_traits_wchar_find(find
, len
, p
))
2506 return MSVCP_basic_string_wchar_npos
;
2509 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2510 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2511 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of
, 12)
2512 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of(
2513 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2515 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this,
2516 find
->ptr
, off
, find
->size
);
2519 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2520 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2521 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_ch
, 12)
2522 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_ch(
2523 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2525 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(this, &ch
, off
, 1);
2528 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2529 /* ?find_first_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2530 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_not_of_cstr
, 12)
2531 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_not_of_cstr(
2532 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2534 return MSVCP_basic_string_wchar_find_first_not_of_cstr_substr(
2535 this, find
, off
, char_traits_wchar_length(find
));
2538 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2539 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2540 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr_substr
, 16)
2541 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2542 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2544 const wchar_t *p
, *end
;
2546 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2548 if(len
>0 && off
<this->size
) {
2549 end
= this->ptr
+this->size
;
2550 for(p
=this->ptr
+off
; p
<end
; p
++)
2551 if(char_traits_wchar_find(find
, len
, p
))
2555 return MSVCP_basic_string_wchar_npos
;
2558 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2559 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2560 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of
, 12)
2561 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_of(
2562 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2564 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this,
2565 find
->ptr
, off
, find
->size
);
2568 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2569 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2570 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_ch
, 12)
2571 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_ch(
2572 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2574 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(this, &ch
, off
, 1);
2577 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2578 /* ?find_first_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2579 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_first_of_cstr
, 12)
2580 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_first_of_cstr(
2581 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2583 return MSVCP_basic_string_wchar_find_first_of_cstr_substr(
2584 this, find
, off
, char_traits_wchar_length(find
));
2587 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2588 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2589 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr_substr
, 16)
2590 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
2591 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2593 const wchar_t *p
, *beg
;
2595 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2597 if(len
>0 && this->size
>0) {
2598 if(off
>= this->size
)
2602 for(p
=beg
+off
; p
>=beg
; p
--)
2603 if(!char_traits_wchar_find(find
, len
, p
))
2607 return MSVCP_basic_string_wchar_npos
;
2610 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2611 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2612 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of
, 12)
2613 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of(
2614 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2616 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this,
2617 find
->ptr
, off
, find
->size
);
2620 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2621 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2622 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_ch
, 12)
2623 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_ch(
2624 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2626 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(this, &ch
, off
, 1);
2629 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2630 /* ?find_last_not_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2631 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_not_of_cstr
, 12)
2632 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_not_of_cstr(
2633 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2635 return MSVCP_basic_string_wchar_find_last_not_of_cstr_substr(
2636 this, find
, off
, char_traits_wchar_length(find
));
2639 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGII@Z */
2640 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K1@Z */
2641 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr_substr
, 16)
2642 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_cstr_substr(
2643 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
, MSVCP_size_t len
)
2645 const wchar_t *p
, *beg
;
2647 TRACE("%p %p %lu %lu\n", this, find
, off
, len
);
2649 if(len
>0 && this->size
>0) {
2650 if(off
>= this->size
)
2654 for(p
=beg
+off
; p
>=beg
; p
--)
2655 if(char_traits_wchar_find(find
, len
, p
))
2659 return MSVCP_basic_string_wchar_npos
;
2662 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIABV12@I@Z */
2663 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KAEBV12@_K@Z */
2664 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of
, 12)
2665 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_of(
2666 const basic_string_wchar
*this, const basic_string_wchar
*find
, MSVCP_size_t off
)
2668 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this,
2669 find
->ptr
, off
, find
->size
);
2672 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIGI@Z */
2673 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KG_K@Z */
2674 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_ch
, 12)
2675 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_ch(
2676 const basic_string_wchar
*this, wchar_t ch
, MSVCP_size_t off
)
2678 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(this, &ch
, off
, 1);
2681 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPBGI@Z */
2682 /* ?find_last_of@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEBG_K@Z */
2683 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_find_last_of_cstr
, 12)
2684 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_find_last_of_cstr(
2685 const basic_string_wchar
*this, const wchar_t *find
, MSVCP_size_t off
)
2687 return MSVCP_basic_string_wchar_find_last_of_cstr_substr(
2688 this, find
, off
, char_traits_wchar_length(find
));
2691 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@II@Z */
2692 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@_K1@Z */
2693 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr
, 16)
2694 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_substr(basic_string_wchar
*this,
2695 const basic_string_wchar
*append
, MSVCP_size_t offset
, MSVCP_size_t count
)
2697 TRACE("%p %p %lu %lu\n", this, append
, offset
, count
);
2699 if(append
->size
< offset
)
2702 if(count
> append
->size
-offset
)
2703 count
= append
->size
-offset
;
2705 if(MSVCP_basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2708 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2710 char_traits_wchar__Copy_s(this->ptr
+this->size
, this->res
-this->size
,
2711 append
->ptr
+offset
, count
);
2712 basic_string_wchar__Eos(this, this->size
+count
);
2718 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBGI@Z */
2719 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG_K@Z */
2720 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr_len
, 12)
2721 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_cstr_len(
2722 basic_string_wchar
*this, const wchar_t *append
, MSVCP_size_t count
)
2724 TRACE("%p %s %lu\n", this, debugstr_wn(append
, count
), count
);
2726 if(basic_string_wchar_inside(this, append
))
2727 return MSVCP_basic_string_wchar_append_substr(this, this, append
-this->ptr
, count
);
2729 if(MSVCP_basic_string_wchar_npos
-this->size
<=count
|| this->size
+count
<this->size
)
2732 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2733 char_traits_wchar__Copy_s(this->ptr
+this->size
,
2734 this->res
-this->size
, append
, count
);
2735 basic_string_wchar__Eos(this, this->size
+count
);
2741 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IG@Z */
2742 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KG@Z */
2743 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_len_ch
, 12)
2744 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_len_ch(
2745 basic_string_wchar
*this, MSVCP_size_t count
, wchar_t ch
)
2747 TRACE("%p %lu %c\n", this, count
, ch
);
2749 if(MSVCP_basic_string_wchar_npos
-this->size
<= count
)
2752 if(basic_string_wchar__Grow(this, this->size
+count
, FALSE
)) {
2753 char_traits_wchar_assignn(this->ptr
+this->size
, count
, ch
);
2754 basic_string_wchar__Eos(this, this->size
+count
);
2760 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@ABV12@@Z */
2761 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@AEBV12@@Z */
2762 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@ABV01@@Z */
2763 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@AEBV01@@Z */
2764 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append
, 8)
2765 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append(
2766 basic_string_wchar
*this, const basic_string_wchar
*append
)
2768 return MSVCP_basic_string_wchar_append_substr(this, append
,
2769 0, MSVCP_basic_string_wchar_npos
);
2772 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@G@Z */
2773 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@G@Z */
2774 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_ch
, 8)
2775 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_ch(
2776 basic_string_wchar
*this, wchar_t ch
)
2778 return MSVCP_basic_string_wchar_append_len_ch(this, 1, ch
);
2781 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG0@Z */
2782 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG0@Z */
2783 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_beg_end
, 12)
2784 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_beg_end(
2785 basic_string_wchar
*this, const wchar_t *beg
, const wchar_t *end
)
2787 return MSVCP_basic_string_wchar_append_cstr_len(this, beg
, end
-beg
);
2790 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PBG@Z */
2791 /* ?append@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEBG@Z */
2792 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV01@PBG@Z */
2793 /* ??Y?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV01@PEBG@Z */
2794 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_cstr
, 8)
2795 basic_string_wchar
* __thiscall
MSVCP_basic_string_wchar_append_cstr(
2796 basic_string_wchar
*this, const wchar_t *append
)
2798 return MSVCP_basic_string_wchar_append_cstr_len(this, append
,
2799 char_traits_wchar_length(append
));
2801 /* ??$?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 */
2802 /* ??$?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 */
2803 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z */
2804 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@0@Z */
2805 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate(basic_string_wchar
*ret
,
2806 const basic_string_wchar
*left
, const basic_string_wchar
*right
)
2808 TRACE("%p %p\n", left
, right
);
2810 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2811 MSVCP_basic_string_wchar_append(ret
, right
);
2815 /* ??$?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 */
2816 /* ??$?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 */
2817 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z */
2818 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@G@Z */
2819 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_bstr_ch(basic_string_wchar
*ret
,
2820 const basic_string_wchar
*left
, wchar_t right
)
2822 TRACE("%p %c\n", left
, right
);
2824 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2825 MSVCP_basic_string_wchar_append_ch(ret
, right
);
2829 /* ??$?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 */
2830 /* ??$?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 */
2831 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z */
2832 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@AEBV10@PEBG@Z */
2833 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_bstr_cstr(basic_string_wchar
*ret
,
2834 const basic_string_wchar
*left
, const wchar_t *right
)
2836 TRACE("%p %s\n", left
, debugstr_w(right
));
2838 MSVCP_basic_string_wchar_copy_ctor(ret
, left
);
2839 MSVCP_basic_string_wchar_append_cstr(ret
, right
);
2843 /* ??$?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 */
2844 /* ??$?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 */
2845 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z */
2846 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GAEBV10@@Z */
2847 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_ch_bstr(basic_string_wchar
*ret
,
2848 wchar_t left
, const basic_string_wchar
*right
)
2850 TRACE("%c %p\n", left
, right
);
2852 MSVCP_basic_string_wchar_ctor_cstr_len_alloc(ret
, &left
, 1, NULL
);
2853 MSVCP_basic_string_wchar_append(ret
, right
);
2857 /* ??$?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 */
2858 /* ??$?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 */
2859 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z */
2860 /* ??Hstd@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PEBGAEBV10@@Z */
2861 basic_string_wchar
* __cdecl
MSVCP_basic_string_wchar_concatenate_cstr_bstr(basic_string_wchar
*ret
,
2862 const wchar_t *left
, const basic_string_wchar
*right
)
2864 TRACE("%s %p\n", debugstr_w(left
), right
);
2866 MSVCP_basic_string_wchar_ctor_cstr_alloc(ret
, left
, NULL
);
2867 MSVCP_basic_string_wchar_append(ret
, right
);
2871 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2872 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2873 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2874 /* ??A?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2875 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_operator_at
, 8)
2876 wchar_t* __thiscall
MSVCP_basic_string_wchar_operator_at(
2877 basic_string_wchar
*this, MSVCP_size_t pos
)
2879 TRACE("%p %lu\n", this, pos
);
2881 assert(this->size
>= pos
);
2882 return this->ptr
+pos
;
2885 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z */
2886 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z */
2887 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z */
2888 /* ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z */
2889 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at
, 8)
2890 wchar_t* __thiscall
MSVCP_basic_string_wchar_at(
2891 basic_string_wchar
*this, MSVCP_size_t pos
)
2893 TRACE("%p %lu\n", this, pos
);
2895 if(this->size
<= pos
)
2898 return this->ptr
+pos
;
2901 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBGI@Z */
2902 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG0@Z */
2903 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr_len
, 20)
2904 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr_len(basic_string_wchar
*this,
2905 MSVCP_size_t off
, MSVCP_size_t len
, const wchar_t *str
, MSVCP_size_t str_len
)
2907 MSVCP_size_t inside_pos
= -1;
2908 wchar_t *ptr
= this->ptr
;
2910 TRACE("%p %ld %ld %p %ld\n", this, off
, len
, str
, str_len
);
2912 if(this->size
< off
)
2915 if(len
> this->size
-off
)
2916 len
= this->size
-off
;
2918 if(MSVCP_basic_string_wchar_npos
-str_len
<= this->size
-len
)
2921 if(basic_string_wchar_inside(this, str
))
2922 inside_pos
= str
-ptr
;
2924 if(this->size
-len
+str_len
)
2925 basic_string_wchar__Grow(this, this->size
-len
+str_len
, FALSE
);
2928 if(inside_pos
== -1) {
2929 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
2930 memcpy(ptr
+off
, str
, str_len
*sizeof(char));
2931 } else if(len
>= str_len
) {
2932 memmove(ptr
+off
, ptr
+inside_pos
, str_len
*sizeof(char));
2933 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
2937 memmove(ptr
+off
+str_len
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
2939 if(inside_pos
< off
+len
) {
2940 size
= off
+len
-inside_pos
;
2943 memmove(ptr
+off
, ptr
+inside_pos
, size
*sizeof(char));
2949 memmove(ptr
+off
+size
, ptr
+off
+str_len
, (str_len
-size
)*sizeof(char));
2953 basic_string_wchar__Eos(this, this->size
-len
+str_len
);
2957 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@II@Z */
2958 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@00@Z */
2959 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_substr
, 24)
2960 basic_string_wchar
* __thiscall
basic_string_wchar_replace_substr(basic_string_wchar
*this, MSVCP_size_t off
,
2961 MSVCP_size_t len
, const basic_string_wchar
*str
, MSVCP_size_t str_off
, MSVCP_size_t str_len
)
2963 if(str
->size
< str_off
)
2966 if(str_len
> str
->size
-str_off
)
2967 str_len
= str
->size
-str_off
;
2969 return basic_string_wchar_replace_cstr_len(this, off
, len
,
2970 str
->ptr
+str_off
, str_len
);
2973 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIABV12@@Z */
2974 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0AEBV12@@Z */
2975 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace
, 16)
2976 basic_string_wchar
* __thiscall
basic_string_wchar_replace(basic_string_wchar
*this,
2977 MSVCP_size_t off
, MSVCP_size_t len
, const basic_string_wchar
*str
)
2979 return basic_string_wchar_replace_cstr_len(this, off
, len
,
2980 str
->ptr
, str
->size
);
2983 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIIG@Z */
2984 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K00G@Z */
2985 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_ch
, 20)
2986 basic_string_wchar
* __thiscall
basic_string_wchar_replace_ch(basic_string_wchar
*this,
2987 MSVCP_size_t off
, MSVCP_size_t len
, MSVCP_size_t count
, wchar_t ch
)
2991 TRACE("%p %ld %ld %ld %c\n", this, off
, len
, count
, ch
);
2993 if(this->size
< off
)
2996 if(len
> this->size
-off
)
2997 len
= this->size
-off
;
2999 if(MSVCP_basic_string_wchar_npos
-count
<= this->size
-len
)
3002 if(this->size
-len
+count
)
3003 basic_string_wchar__Grow(this, this->size
-len
+count
, FALSE
);
3006 memmove(ptr
+off
+count
, ptr
+off
+len
, (this->size
-off
-len
)*sizeof(char));
3007 char_traits_wchar_assignn(ptr
+off
, count
, ch
);
3008 basic_string_wchar__Eos(this, this->size
-len
+count
);
3013 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIPBG@Z */
3014 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0PEBG@Z */
3015 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_cstr
, 16)
3016 basic_string_wchar
* __thiscall
basic_string_wchar_replace_cstr(basic_string_wchar
*this,
3017 MSVCP_size_t off
, MSVCP_size_t len
, const wchar_t *str
)
3019 return basic_string_wchar_replace_cstr_len(this, off
, len
, str
,
3020 char_traits_wchar_length(str
));
3023 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@@Z */
3024 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@@Z */
3025 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert
, 12)
3026 basic_string_wchar
* __thiscall
basic_string_wchar_insert(basic_string_wchar
*this,
3027 MSVCP_size_t off
, const basic_string_wchar
*str
)
3029 return basic_string_wchar_replace(this, off
, 0, str
);
3032 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IABV12@II@Z */
3033 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KAEBV12@00@Z */
3034 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_substr
, 20)
3035 basic_string_wchar
* __thiscall
basic_string_wchar_insert_substr(
3036 basic_string_wchar
*this, MSVCP_size_t off
, const basic_string_wchar
*str
,
3037 MSVCP_size_t str_off
, MSVCP_size_t str_count
)
3039 return basic_string_wchar_replace_substr(this, off
, 0, str
, str_off
, str_count
);
3042 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBG@Z */
3043 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG@Z */
3044 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr
, 12)
3045 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr(
3046 basic_string_wchar
*this, MSVCP_size_t off
, const wchar_t *str
)
3048 return basic_string_wchar_replace_cstr(this, off
, 0, str
);
3051 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IPBGI@Z */
3052 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_KPEBG0@Z */
3053 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_cstr_len
, 16)
3054 basic_string_wchar
* __thiscall
basic_string_wchar_insert_cstr_len(basic_string_wchar
*this,
3055 MSVCP_size_t off
, const wchar_t *str
, MSVCP_size_t str_len
)
3057 return basic_string_wchar_replace_cstr_len(this, off
, 0, str
, str_len
);
3060 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@IIG@Z */
3061 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@_K0G@Z */
3062 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_chn
, 16)
3063 basic_string_wchar
* __thiscall
basic_string_wchar_insert_chn(basic_string_wchar
*this,
3064 MSVCP_size_t off
, MSVCP_size_t count
, wchar_t ch
)
3066 return basic_string_wchar_replace_ch(this, off
, 0, count
, ch
);
3069 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z */
3070 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z */
3071 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch
, 12)
3072 void __thiscall
MSVCP_basic_string_wchar_resize_ch(
3073 basic_string_wchar
*this, MSVCP_size_t size
, wchar_t ch
)
3075 TRACE("%p %lu %c\n", this, size
, ch
);
3077 if(size
<= this->size
)
3078 MSVCP_basic_string_wchar_erase(this, size
, this->size
);
3080 MSVCP_basic_string_wchar_append_len_ch(this, size
-this->size
, ch
);
3083 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3084 /* ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3085 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize
, 8)
3086 void __thiscall
MSVCP_basic_string_wchar_resize(
3087 basic_string_wchar
*this, MSVCP_size_t size
)
3089 MSVCP_basic_string_wchar_resize_ch(this, size
, '\0');
3092 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3093 /* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3094 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3095 /* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3096 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str
, 4)
3097 const wchar_t* __thiscall
MSVCP_basic_string_wchar_c_str(const basic_string_wchar
*this)
3099 TRACE("%p\n", this);
3100 return this->ptr
? this->ptr
: basic_string_wchar__Nullstr();
3103 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3104 /* ?size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3105 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3106 /* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3107 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_length
, 4)
3108 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_length(const basic_string_wchar
*this)
3110 TRACE("%p\n", this);
3114 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3115 /* ?max_size@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3116 DEFINE_THISCALL_WRAPPER(basic_string_wchar_max_size
, 4)
3117 MSVCP_size_t __thiscall
basic_string_wchar_max_size(const basic_string_wchar
*this)
3119 TRACE("%p\n", this);
3120 return MSVCP_allocator_wchar_max_size(NULL
)-1;
3123 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
3124 /* ?capacity@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
3125 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_capacity
, 4)
3126 MSVCP_size_t __thiscall
MSVCP_basic_string_wchar_capacity(basic_string_wchar
*this)
3128 TRACE("%p\n", this);
3132 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z */
3133 /* ?reserve@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z */
3134 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve
, 8)
3135 void __thiscall
MSVCP_basic_string_wchar_reserve(basic_string_wchar
*this, MSVCP_size_t size
)
3139 TRACE("%p %ld\n", this, size
);
3145 if(basic_string_wchar__Grow(this, size
, FALSE
))
3146 basic_string_wchar__Eos(this, len
);
3149 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE_NXZ */
3150 /* ?empty@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_NXZ */
3151 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_empty
, 4)
3152 MSVCP_bool __thiscall
MSVCP_basic_string_wchar_empty(basic_string_wchar
*this)
3154 TRACE("%p\n", this);
3155 return this->size
== 0;
3158 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXAAV12@@Z */
3159 /* ?swap@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEAV12@@Z */
3160 DEFINE_THISCALL_WRAPPER(basic_string_wchar_swap
, 8)
3161 void __thiscall
basic_string_wchar_swap(basic_string_wchar
*this, basic_string_wchar
*str
)
3163 basic_string_wchar tmp
;
3164 TRACE("%p %p\n", this, str
);
3171 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
3172 /* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
3173 DEFINE_THISCALL_WRAPPER(basic_string_wchar_substr
, 16)
3174 basic_string_wchar
* __thiscall
basic_string_wchar_substr(basic_string_wchar
*this,
3175 basic_string_wchar
*ret
, MSVCP_size_t off
, MSVCP_size_t len
)
3177 TRACE("%p %lu %lu\n", this, off
, len
);
3179 MSVCP_basic_string_wchar_ctor_substr_alloc(ret
, this, off
, len
, NULL
);
3183 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIPAGII@Z */
3184 /* ?copy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KPEAG_K1@Z */
3185 DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy
, 16)
3186 MSVCP_size_t __thiscall
basic_string_wchar_copy(const basic_string_wchar
*this,
3187 wchar_t *dest
, MSVCP_size_t count
, MSVCP_size_t off
)
3189 TRACE("%p %p %lu %lu\n", this, dest
, count
, off
);
3191 if(off
> this->size
)
3193 if(count
> this->size
-off
)
3194 count
= this->size
-off
;
3196 char_traits_wchar__Copy_s(dest
, count
, this->ptr
+off
, count
);
3200 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$allocator@G@2@XZ */
3201 /* ?get_allocator@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$allocator@G@2@XZ */
3202 DEFINE_THISCALL_WRAPPER(basic_string_wchar_get_allocator
, 8)
3203 allocator
* __thiscall
basic_string_wchar_get_allocator(const basic_string_wchar
*this, allocator
*ret
)
3205 TRACE("%p\n", this);
3209 /* Old iterator functions */
3211 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAIPBD0@Z */
3212 /* ?_Pdif@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CA_KPEBD0@Z */
3213 MSVCP_size_t __cdecl
basic_string_char__Pdif(const char *i1
, const char *i2
)
3215 TRACE("(%p %p)\n", i1
, i2
);
3216 return !i1
? 0 : i1
-i2
;
3219 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPAD0@Z */
3220 /* ?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEAD0@Z */
3221 DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter
, 12)
3222 char* __thiscall
basic_string_char_erase_iter(basic_string_char
*this, char *beg
, char *end
)
3224 MSVCP_size_t pos
= basic_string_char__Pdif(beg
, this->ptr
);
3225 MSVCP_basic_string_char_erase(this, pos
, basic_string_char__Pdif(end
, beg
));
3226 return basic_string_char__Psum(this->ptr
, pos
);
3229 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD1@Z */
3230 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD1@Z */
3231 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_iter
, 20)
3232 basic_string_char
* __thiscall
basic_string_char_replace_iter_iter(basic_string_char
*this,
3233 char *beg1
, char *end1
, const char *beg2
, const char *end2
)
3235 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg1
, this->ptr
),
3236 basic_string_char__Pdif(end1
, beg1
), beg2
, basic_string_char__Pdif(end2
, beg2
));
3239 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ABV12@@Z */
3240 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0AEBV12@@Z */
3241 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_bstr
, 16)
3242 basic_string_char
* __thiscall
basic_string_char_replace_iter_bstr(basic_string_char
*this,
3243 char *beg
, char *end
, const basic_string_char
*str
)
3245 return basic_string_char_replace(this, basic_string_char__Pdif(beg
, this->ptr
),
3246 basic_string_char__Pdif(end
, beg
), str
);
3249 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0ID@Z */
3250 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0_KD@Z */
3251 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_chn
, 20)
3252 basic_string_char
* __thiscall
basic_string_char_replace_iter_chn(basic_string_char
*this,
3253 char *beg
, char *end
, MSVCP_size_t count
, char ch
)
3255 return basic_string_char_replace_ch(this, basic_string_char__Pdif(beg
, this->ptr
),
3256 basic_string_char__Pdif(end
, beg
), count
, ch
);
3259 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBD@Z */
3260 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD@Z */
3261 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr
, 16)
3262 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr(basic_string_char
*this,
3263 char *beg
, char *end
, const char *str
)
3265 return basic_string_char_replace_cstr(this, basic_string_char__Pdif(beg
, this->ptr
),
3266 basic_string_char__Pdif(end
, beg
), str
);
3269 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PAD0PBDI@Z */
3270 /* ?replace@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@PEAD0PEBD_K@Z */
3271 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_cstr_len
, 20)
3272 basic_string_char
* __thiscall
basic_string_char_replace_iter_cstr_len(basic_string_char
*this,
3273 char *beg
, char *end
, const char *str
, MSVCP_size_t len
)
3275 return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg
, this->ptr
),
3276 basic_string_char__Pdif(end
, beg
), str
, len
);
3279 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADID@Z */
3280 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEAD_KD@Z */
3281 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_chn
, 16)
3282 void __thiscall
basic_string_char_insert_iter_chn(basic_string_char
*this,
3283 char *pos
, MSVCP_size_t n
, char ch
)
3285 basic_string_char_insert_chn(this, basic_string_char__Pdif(pos
, this->ptr
), n
, ch
);
3288 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADPADD@Z */
3289 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADPEADD@Z */
3290 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch
, 12)
3291 char* __thiscall
basic_string_char_insert_iter_ch(basic_string_char
*this, char *pos
, char ch
)
3293 MSVCP_size_t off
= basic_string_char__Pdif(pos
, this->ptr
);
3294 basic_string_char_insert_chn(this, off
, 1, ch
);
3295 return basic_string_char__Psum(this->ptr
, off
);
3298 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
3299 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
3300 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
3301 /* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
3302 DEFINE_THISCALL_WRAPPER(basic_string_char_begin
, 4)
3303 char* __thiscall
basic_string_char_begin(basic_string_char
*this)
3305 TRACE("(%p)\n", this);
3306 basic_string_char__Freeze(this);
3310 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ */
3311 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAPEADXZ */
3312 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
3313 /* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
3314 DEFINE_THISCALL_WRAPPER(basic_string_char_end
, 4)
3315 char* __thiscall
basic_string_char_end(basic_string_char
*this)
3317 TRACE("(%p)\n", this);
3318 basic_string_char__Freeze(this);
3319 return this->ptr
+this->size
;
3322 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
3323 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
3324 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
3325 /* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
3326 DEFINE_THISCALL_WRAPPER(basic_string_char_rbegin
, 8)
3327 String_reverse_iterator_char
* __thiscall
basic_string_char_rbegin(
3328 basic_string_char
*this, String_reverse_iterator_char
*ret
)
3330 TRACE("(%p %p)\n", this, ret
);
3331 ret
->ptr
= basic_string_char_end(this);
3335 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$reverse_iterator@PADDAADPADH@2@XZ */
3336 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@PEADDAEADPEAD_J@2@XZ */
3337 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@PBDDABDPBDH@2@XZ */
3338 /* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@PEBDDAEBDPEBD_J@2@XZ */
3339 DEFINE_THISCALL_WRAPPER(basic_string_char_rend
, 8)
3340 String_reverse_iterator_char
* __thiscall
basic_string_char_rend(
3341 basic_string_char
*this, String_reverse_iterator_char
*ret
)
3343 TRACE("(%p %p)\n", this, ret
);
3344 ret
->ptr
= basic_string_char_begin(this);
3348 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD0ABV?$allocator@D@1@@Z */
3349 /* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@PEBD0AEBV?$allocator@D@1@@Z */
3350 DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_iter
, 16)
3351 basic_string_char
* __thiscall
basic_string_char_ctor_iter(basic_string_char
*this,
3352 const char *first
, const char *last
, allocator
*alloc
)
3354 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
3356 basic_string_char__Tidy(this, FALSE
);
3357 MSVCP_basic_string_char_assign_cstr_len(this, first
, basic_string_char__Pdif(last
, first
));
3361 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXPADPBD1@Z */
3362 /* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXPEADPEBD1@Z */
3363 DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter
, 16)
3364 void __thiscall
basic_string_char_insert_iter(basic_string_char
*this,
3365 char *pos
, const char *beg
, const char *end
)
3367 basic_string_char_insert_cstr_len(this, basic_string_char__Pdif(pos
, this->ptr
),
3368 beg
, basic_string_char__Pdif(end
, beg
));
3371 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CAIPBG0@Z */
3372 /* ?_Pdif@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@CA_KPEBG0@Z */
3373 MSVCP_size_t __cdecl
basic_string_wchar__Pdif(const wchar_t *i1
, const wchar_t *i2
)
3375 TRACE("(%p %p)\n", i1
, i2
);
3376 return !i1
? 0 : i1
-i2
;
3379 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAG0@Z */
3380 /* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAG0@Z */
3381 DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter
, 12)
3382 wchar_t* __thiscall
basic_string_wchar_erase_iter(basic_string_wchar
*this, wchar_t *beg
, wchar_t *end
)
3384 MSVCP_size_t pos
= basic_string_wchar__Pdif(beg
, this->ptr
);
3385 MSVCP_basic_string_wchar_erase(this, pos
, basic_string_wchar__Pdif(end
, beg
));
3386 return basic_string_wchar__Psum(this->ptr
, pos
);
3389 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG0ABV?$allocator@G@1@@Z */
3390 /* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@PEBG0AEBV?$allocator@G@1@@Z */
3391 DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_iter
, 16)
3392 basic_string_wchar
* __thiscall
basic_string_wchar_ctor_iter(basic_string_wchar
*this,
3393 const wchar_t *first
, const wchar_t *last
, allocator
*alloc
)
3395 TRACE("(%p %p %p %p)\n", this, first
, last
, alloc
);
3397 basic_string_wchar__Tidy(this, FALSE
);
3398 MSVCP_basic_string_wchar_assign_cstr_len(this, first
, basic_string_wchar__Pdif(last
, first
));
3402 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG1@Z */
3403 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG1@Z */
3404 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_iter
, 20)
3405 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_iter(basic_string_wchar
*this,
3406 wchar_t *beg1
, wchar_t *end1
, const wchar_t *beg2
, const wchar_t *end2
)
3408 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg1
, this->ptr
),
3409 basic_string_wchar__Pdif(end1
, beg1
), beg2
, basic_string_wchar__Pdif(end2
, beg2
));
3412 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0ABV12@@Z */
3413 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0AEBV12@@Z */
3414 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_bstr
, 16)
3415 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_bstr(basic_string_wchar
*this,
3416 wchar_t *beg
, wchar_t *end
, const basic_string_wchar
*str
)
3418 return basic_string_wchar_replace(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3419 basic_string_wchar__Pdif(end
, beg
), str
);
3422 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0IG@Z */
3423 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0_KG@Z */
3424 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_chn
, 20)
3425 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_chn(basic_string_wchar
*this,
3426 wchar_t *beg
, wchar_t *end
, MSVCP_size_t count
, wchar_t ch
)
3428 return basic_string_wchar_replace_ch(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3429 basic_string_wchar__Pdif(end
, beg
), count
, ch
);
3432 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBG@Z */
3433 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG@Z */
3434 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr
, 16)
3435 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr(basic_string_wchar
*this,
3436 wchar_t *beg
, wchar_t *end
, const wchar_t *str
)
3438 return basic_string_wchar_replace_cstr(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3439 basic_string_wchar__Pdif(end
, beg
), str
);
3442 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAV12@PAG0PBGI@Z */
3443 /* ?replace@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAV12@PEAG0PEBG_K@Z */
3444 DEFINE_THISCALL_WRAPPER(basic_string_wchar_replace_iter_cstr_len
, 20)
3445 basic_string_wchar
* __thiscall
basic_string_wchar_replace_iter_cstr_len(basic_string_wchar
*this,
3446 wchar_t *beg
, wchar_t *end
, const wchar_t *str
, MSVCP_size_t len
)
3448 return basic_string_wchar_replace_cstr_len(this, basic_string_wchar__Pdif(beg
, this->ptr
),
3449 basic_string_wchar__Pdif(end
, beg
), str
, len
);
3452 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGIG@Z */
3453 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAG_KG@Z */
3454 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_chn
, 16)
3455 void __thiscall
basic_string_wchar_insert_iter_chn(basic_string_wchar
*this,
3456 wchar_t *pos
, MSVCP_size_t n
, wchar_t ch
)
3458 basic_string_wchar_insert_chn(this, basic_string_wchar__Pdif(pos
, this->ptr
), n
, ch
);
3461 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGPAGG@Z */
3462 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGPEAGG@Z */
3463 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch
, 12)
3464 wchar_t* __thiscall
basic_string_wchar_insert_iter_ch(basic_string_wchar
*this, wchar_t *pos
, wchar_t ch
)
3466 MSVCP_size_t off
= basic_string_wchar__Pdif(pos
, this->ptr
);
3467 basic_string_wchar_insert_chn(this, off
, 1, ch
);
3468 return basic_string_wchar__Psum(this->ptr
, off
);
3471 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3472 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3473 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3474 /* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3475 DEFINE_THISCALL_WRAPPER(basic_string_wchar_begin
, 4)
3476 wchar_t* __thiscall
basic_string_wchar_begin(basic_string_wchar
*this)
3478 TRACE("(%p)\n", this);
3479 basic_string_wchar__Freeze(this);
3483 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEPAGXZ */
3484 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAPEAGXZ */
3485 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
3486 /* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
3487 DEFINE_THISCALL_WRAPPER(basic_string_wchar_end
, 4)
3488 wchar_t* __thiscall
basic_string_wchar_end(basic_string_wchar
*this)
3490 TRACE("(%p)\n", this);
3491 basic_string_wchar__Freeze(this);
3492 return this->ptr
+this->size
;
3495 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3496 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3497 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3498 /* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3499 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rbegin
, 8)
3500 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rbegin(
3501 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3503 TRACE("(%p %p)\n", this, ret
);
3504 ret
->ptr
= basic_string_wchar_end(this);
3508 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$reverse_iterator@PAGGAAGPAGH@2@XZ */
3509 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@PEAGGAEAGPEAG_J@2@XZ */
3510 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@PBGGABGPBGH@2@XZ */
3511 /* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@PEBGGAEBGPEBG_J@2@XZ */
3512 DEFINE_THISCALL_WRAPPER(basic_string_wchar_rend
, 8)
3513 String_reverse_iterator_wchar
* __thiscall
basic_string_wchar_rend(
3514 basic_string_wchar
*this, String_reverse_iterator_wchar
*ret
)
3516 TRACE("(%p %p)\n", this, ret
);
3517 ret
->ptr
= basic_string_wchar_begin(this);
3521 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXPAGPBG1@Z */
3522 /* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXPEAGPEBG1@Z */
3523 DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter
, 16)
3524 void __thiscall
basic_string_wchar_insert_iter(basic_string_wchar
*this,
3525 wchar_t *pos
, const wchar_t *beg
, const wchar_t *end
)
3527 basic_string_wchar_insert_cstr_len(this, basic_string_wchar__Pdif(pos
, this->ptr
),
3528 beg
, basic_string_wchar__Pdif(end
, beg
));