2 * Copyright 2010 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
31 #include "wine/unicode.h"
32 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(msvcp90
);
35 char* __cdecl
_Getdays(void);
36 char* __cdecl
_Getmonths(void);
37 void* __cdecl
_Gettnames(void);
38 unsigned int __cdecl
___lc_codepage_func(void);
39 LCID
* __cdecl
___lc_handle_func(void);
48 const vtable_ptr
*vtable
;
52 typedef struct _locale__Locimp
{
54 locale_facet
**facetvec
;
55 MSVCP_size_t facet_cnt
;
57 MSVCP_bool transparent
;
58 basic_string_char name
;
67 basic_string_char days
;
68 basic_string_char months
;
69 basic_string_char oldlocname
;
70 basic_string_char newlocname
;
116 const char *grouping
;
119 const char *false_name
;
120 const char *true_name
;
125 const char *grouping
;
128 const wchar_t *false_name
;
129 const wchar_t *true_name
;
138 typedef struct _istreambuf_iterator_char
140 struct _basic_streambuf_char
*strbuf
;
143 } istreambuf_iterator_char
;
145 typedef struct _istreambuf_iterator_wchar
147 struct _basic_streambuf_wchar
*strbuf
;
150 } istreambuf_iterator_wchar
;
152 /* ?_Id_cnt@id@locale@std@@0HA */
153 int locale_id__Id_cnt
= 0;
155 /* ?_Clocptr@_Locimp@locale@std@@0PAV123@A */
156 /* ?_Clocptr@_Locimp@locale@std@@0PEAV123@EA */
157 locale__Locimp
*locale__Locimp__Clocptr
= NULL
;
159 /* ??1facet@locale@std@@UAE@XZ */
160 /* ??1facet@locale@std@@UEAA@XZ */
161 DEFINE_THISCALL_WRAPPER(locale_facet_dtor
, 4)
162 void __thiscall
locale_facet_dtor(locale_facet
*this)
164 TRACE("(%p)\n", this);
167 DEFINE_THISCALL_WRAPPER(MSVCP_locale_facet_vector_dtor
, 8)
168 #define call_locale_facet_vector_dtor(this, flags) CALL_VTBL_FUNC(this, 0, \
169 locale_facet*, (locale_facet*, unsigned int), (this, flags))
170 locale_facet
* __thiscall
MSVCP_locale_facet_vector_dtor(locale_facet
*this, unsigned int flags
)
172 TRACE("(%p %x)\n", this, flags
);
174 /* we have an array, with the number of elements stored before the first object */
175 int i
, *ptr
= (int *)this-1;
177 for(i
=*ptr
-1; i
>=0; i
--)
178 locale_facet_dtor(this+i
);
179 MSVCRT_operator_delete(ptr
);
181 locale_facet_dtor(this);
183 MSVCRT_operator_delete(this);
189 extern const vtable_ptr MSVCP_locale_facet_vtable
;
191 /* ??0id@locale@std@@QAE@I@Z */
192 /* ??0id@locale@std@@QEAA@_K@Z */
193 DEFINE_THISCALL_WRAPPER(locale_id_ctor_id
, 8)
194 locale_id
* __thiscall
locale_id_ctor_id(locale_id
*this, MSVCP_size_t id
)
196 TRACE("(%p %lu)\n", this, id
);
202 /* ??_Fid@locale@std@@QAEXXZ */
203 /* ??_Fid@locale@std@@QEAAXXZ */
204 DEFINE_THISCALL_WRAPPER(locale_id_ctor
, 4)
205 locale_id
* __thiscall
locale_id_ctor(locale_id
*this)
207 TRACE("(%p)\n", this);
213 /* ??Bid@locale@std@@QAEIXZ */
214 /* ??Bid@locale@std@@QEAA_KXZ */
215 DEFINE_THISCALL_WRAPPER(locale_id_operator_size_t
, 4)
216 MSVCP_size_t __thiscall
locale_id_operator_size_t(locale_id
*this)
220 TRACE("(%p)\n", this);
223 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
224 this->id
= ++locale_id__Id_cnt
;
231 /* ?_Id_cnt_func@id@locale@std@@CAAAHXZ */
232 /* ?_Id_cnt_func@id@locale@std@@CAAEAHXZ */
233 int* __cdecl
locale_id__Id_cnt_func(void)
236 return &locale_id__Id_cnt
;
239 /* ??_Ffacet@locale@std@@QAEXXZ */
240 /* ??_Ffacet@locale@std@@QEAAXXZ */
241 DEFINE_THISCALL_WRAPPER(locale_facet_ctor
, 4)
242 locale_facet
* __thiscall
locale_facet_ctor(locale_facet
*this)
244 TRACE("(%p)\n", this);
245 this->vtable
= &MSVCP_locale_facet_vtable
;
250 /* ??0facet@locale@std@@IAE@I@Z */
251 /* ??0facet@locale@std@@IEAA@_K@Z */
252 DEFINE_THISCALL_WRAPPER(locale_facet_ctor_refs
, 8)
253 locale_facet
* __thiscall
locale_facet_ctor_refs(locale_facet
*this, MSVCP_size_t refs
)
255 TRACE("(%p %lu)\n", this, refs
);
256 this->vtable
= &MSVCP_locale_facet_vtable
;
261 /* ?_Incref@facet@locale@std@@QAEXXZ */
262 /* ?_Incref@facet@locale@std@@QEAAXXZ */
263 DEFINE_THISCALL_WRAPPER(locale_facet__Incref
, 4)
264 void __thiscall
locale_facet__Incref(locale_facet
*this)
268 TRACE("(%p)\n", this);
270 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
275 /* ?_Decref@facet@locale@std@@QAEPAV123@XZ */
276 /* ?_Decref@facet@locale@std@@QEAAPEAV123@XZ */
277 DEFINE_THISCALL_WRAPPER(locale_facet__Decref
, 4)
278 locale_facet
* __thiscall
locale_facet__Decref(locale_facet
*this)
283 TRACE("(%p)\n", this);
285 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
289 ret
= this->refs
? NULL
: this;
295 /* ?_Getcat@facet@locale@std@@SAIPAPBV123@PBV23@@Z */
296 /* ?_Getcat@facet@locale@std@@SA_KPEAPEBV123@PEBV23@@Z */
297 MSVCP_size_t __cdecl
locale_facet__Getcat(const locale_facet
**facet
, const locale
*loc
)
299 TRACE("(%p %p)\n", facet
, loc
);
303 /* ??0_Timevec@std@@QAE@ABV01@@Z */
304 /* ??0_Timevec@std@@QEAA@AEBV01@@Z */
305 /* This copy constructor modifies copied object */
306 DEFINE_THISCALL_WRAPPER(_Timevec_copy_ctor
, 8)
307 _Timevec
* __thiscall
_Timevec_copy_ctor(_Timevec
*this, _Timevec
*copy
)
309 TRACE("(%p %p)\n", this, copy
);
310 this->timeptr
= copy
->timeptr
;
311 copy
->timeptr
= NULL
;
315 /* ??0_Timevec@std@@QAE@PAX@Z */
316 /* ??0_Timevec@std@@QEAA@PEAX@Z */
317 DEFINE_THISCALL_WRAPPER(_Timevec_ctor_timeptr
, 8)
318 _Timevec
* __thiscall
_Timevec_ctor_timeptr(_Timevec
*this, void *timeptr
)
320 TRACE("(%p %p)\n", this, timeptr
);
321 this->timeptr
= timeptr
;
325 /* ??_F_Timevec@std@@QAEXXZ */
326 /* ??_F_Timevec@std@@QEAAXXZ */
327 DEFINE_THISCALL_WRAPPER(_Timevec_ctor
, 4)
328 _Timevec
* __thiscall
_Timevec_ctor(_Timevec
*this)
330 TRACE("(%p)\n", this);
331 this->timeptr
= NULL
;
335 /* ??1_Timevec@std@@QAE@XZ */
336 /* ??1_Timevec@std@@QEAA@XZ */
337 DEFINE_THISCALL_WRAPPER(_Timevec_dtor
, 4)
338 void __thiscall
_Timevec_dtor(_Timevec
*this)
340 TRACE("(%p)\n", this);
344 /* ??4_Timevec@std@@QAEAAV01@ABV01@@Z */
345 /* ??4_Timevec@std@@QEAAAEAV01@AEBV01@@Z */
346 DEFINE_THISCALL_WRAPPER(_Timevec_op_assign
, 8)
347 _Timevec
* __thiscall
_Timevec_op_assign(_Timevec
*this, _Timevec
*right
)
349 TRACE("(%p %p)\n", this, right
);
350 this->timeptr
= right
->timeptr
;
351 right
->timeptr
= NULL
;
355 /* ?_Getptr@_Timevec@std@@QBEPAXXZ */
356 /* ?_Getptr@_Timevec@std@@QEBAPEAXXZ */
357 DEFINE_THISCALL_WRAPPER(_Timevec__Getptr
, 4)
358 void* __thiscall
_Timevec__Getptr(_Timevec
*this)
360 TRACE("(%p)\n", this);
361 return this->timeptr
;
364 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@HPBD@Z */
365 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@HPEBD@Z */
366 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_cat_cstr(_Locinfo
*locinfo
, int category
, const char *locstr
)
368 const char *locale
= NULL
;
370 /* This function is probably modifying more global objects */
371 FIXME("(%p %d %s) semi-stub\n", locinfo
, category
, locstr
);
374 throw_exception(EXCEPTION_RUNTIME_ERROR
, "bad locale name");
376 _Lockit_ctor_locktype(&locinfo
->lock
, _LOCK_LOCALE
);
377 MSVCP_basic_string_char_ctor_cstr(&locinfo
->days
, "");
378 MSVCP_basic_string_char_ctor_cstr(&locinfo
->months
, "");
379 MSVCP_basic_string_char_ctor_cstr(&locinfo
->oldlocname
, setlocale(LC_ALL
, NULL
));
382 locale
= setlocale(LC_ALL
, locstr
);
384 locale
= setlocale(LC_ALL
, NULL
);
387 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, locale
);
389 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, "*");
394 /* ??0_Locinfo@std@@QAE@HPBD@Z */
395 /* ??0_Locinfo@std@@QEAA@HPEBD@Z */
396 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_cat_cstr
, 12)
397 _Locinfo
* __thiscall
_Locinfo_ctor_cat_cstr(_Locinfo
*this, int category
, const char *locstr
)
399 return _Locinfo__Locinfo_ctor_cat_cstr(this, category
, locstr
);
402 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
403 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
404 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_bstr(_Locinfo
*locinfo
, const basic_string_char
*locstr
)
406 return _Locinfo__Locinfo_ctor_cat_cstr(locinfo
, 1/*FIXME*/, MSVCP_basic_string_char_c_str(locstr
));
409 /* ??0_Locinfo@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
410 /* ??0_Locinfo@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
411 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_bstr
, 8)
412 _Locinfo
* __thiscall
_Locinfo_ctor_bstr(_Locinfo
*this, const basic_string_char
*locstr
)
414 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, MSVCP_basic_string_char_c_str(locstr
));
417 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@PBD@Z */
418 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@PEBD@Z */
419 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_cstr(_Locinfo
*locinfo
, const char *locstr
)
421 return _Locinfo__Locinfo_ctor_cat_cstr(locinfo
, 1/*FIXME*/, locstr
);
424 /* ??0_Locinfo@std@@QAE@PBD@Z */
425 /* ??0_Locinfo@std@@QEAA@PEBD@Z */
426 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_cstr
, 8)
427 _Locinfo
* __thiscall
_Locinfo_ctor_cstr(_Locinfo
*this, const char *locstr
)
429 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, locstr
);
432 /* ?_Locinfo_dtor@_Locinfo@std@@SAXPAV12@@Z */
433 /* ?_Locinfo_dtor@_Locinfo@std@@SAXPEAV12@@Z */
434 void __cdecl
_Locinfo__Locinfo_dtor(_Locinfo
*locinfo
)
436 TRACE("(%p)\n", locinfo
);
438 setlocale(LC_ALL
, MSVCP_basic_string_char_c_str(&locinfo
->oldlocname
));
439 MSVCP_basic_string_char_dtor(&locinfo
->days
);
440 MSVCP_basic_string_char_dtor(&locinfo
->months
);
441 MSVCP_basic_string_char_dtor(&locinfo
->oldlocname
);
442 MSVCP_basic_string_char_dtor(&locinfo
->newlocname
);
443 _Lockit_dtor(&locinfo
->lock
);
446 /* ??_F_Locinfo@std@@QAEXXZ */
447 /* ??_F_Locinfo@std@@QEAAXXZ */
448 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor
, 4)
449 _Locinfo
* __thiscall
_Locinfo_ctor(_Locinfo
*this)
451 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, "C");
454 /* ??1_Locinfo@std@@QAE@XZ */
455 /* ??1_Locinfo@std@@QEAA@XZ */
456 DEFINE_THISCALL_WRAPPER(_Locinfo_dtor
, 4)
457 void __thiscall
_Locinfo_dtor(_Locinfo
*this)
459 _Locinfo__Locinfo_dtor(this);
462 /* ?_Locinfo_Addcats@_Locinfo@std@@SAAAV12@PAV12@HPBD@Z */
463 /* ?_Locinfo_Addcats@_Locinfo@std@@SAAEAV12@PEAV12@HPEBD@Z */
464 _Locinfo
* __cdecl
_Locinfo__Locinfo_Addcats(_Locinfo
*locinfo
, int category
, const char *locstr
)
466 const char *locale
= NULL
;
468 /* This function is probably modifying more global objects */
469 FIXME("(%p %d %s) semi-stub\n", locinfo
, category
, locstr
);
471 throw_exception(EXCEPTION_RUNTIME_ERROR
, "bad locale name");
473 MSVCP_basic_string_char_dtor(&locinfo
->newlocname
);
476 locale
= setlocale(LC_ALL
, locstr
);
478 locale
= setlocale(LC_ALL
, NULL
);
481 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, locale
);
483 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, "*");
488 /* ?_Addcats@_Locinfo@std@@QAEAAV12@HPBD@Z */
489 /* ?_Addcats@_Locinfo@std@@QEAAAEAV12@HPEBD@Z */
490 DEFINE_THISCALL_WRAPPER(_Locinfo__Addcats
, 12)
491 _Locinfo
* __thiscall
_Locinfo__Addcats(_Locinfo
*this, int category
, const char *locstr
)
493 return _Locinfo__Locinfo_Addcats(this, category
, locstr
);
497 _Collvec __cdecl
_Getcoll(void)
500 _locale_t locale
= _get_current_locale();
504 ret
.page
= locale
->locinfo
->lc_collate_cp
;
505 ret
.handle
= locale
->locinfo
->lc_handle
[LC_COLLATE
];
506 _free_locale(locale
);
510 /* ?_Getcoll@_Locinfo@std@@QBE?AU_Collvec@@XZ */
511 /* ?_Getcoll@_Locinfo@std@@QEBA?AU_Collvec@@XZ */
512 DEFINE_THISCALL_WRAPPER(_Locinfo__Getcoll
, 8)
513 _Collvec
* __thiscall
_Locinfo__Getcoll(const _Locinfo
*this, _Collvec
*ret
)
520 _Ctypevec __cdecl
_Getctype(void)
523 _locale_t locale
= _get_current_locale();
528 ret
.page
= locale
->locinfo
->lc_codepage
;
529 ret
.handle
= locale
->locinfo
->lc_handle
[LC_COLLATE
];
531 table
= malloc(sizeof(short[256]));
533 _free_locale(locale
);
534 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
536 memcpy(table
, locale
->locinfo
->pctype
, sizeof(short[256]));
538 _free_locale(locale
);
542 /* ?_Getctype@_Locinfo@std@@QBE?AU_Ctypevec@@XZ */
543 /* ?_Getctype@_Locinfo@std@@QEBA?AU_Ctypevec@@XZ */
544 DEFINE_THISCALL_WRAPPER(_Locinfo__Getctype
, 8)
545 _Ctypevec
* __thiscall
_Locinfo__Getctype(const _Locinfo
*this, _Ctypevec
*ret
)
552 _Cvtvec __cdecl
_Getcvt(void)
555 _locale_t locale
= _get_current_locale();
559 ret
.page
= locale
->locinfo
->lc_codepage
;
560 ret
.handle
= locale
->locinfo
->lc_handle
[LC_CTYPE
];
561 _free_locale(locale
);
565 /* ?_Getcvt@_Locinfo@std@@QBE?AU_Cvtvec@@XZ */
566 /* ?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ */
567 DEFINE_THISCALL_WRAPPER(_Locinfo__Getcvt
, 8)
568 _Cvtvec
* __thiscall
_Locinfo__Getcvt(const _Locinfo
*this, _Cvtvec
*ret
)
574 /* ?_Getdateorder@_Locinfo@std@@QBEHXZ */
575 /* ?_Getdateorder@_Locinfo@std@@QEBAHXZ */
576 DEFINE_THISCALL_WRAPPER(_Locinfo__Getdateorder
, 4)
577 int __thiscall
_Locinfo__Getdateorder(const _Locinfo
*this)
579 FIXME("(%p) stub\n", this);
583 /* ?_Getdays@_Locinfo@std@@QBEPBDXZ */
584 /* ?_Getdays@_Locinfo@std@@QEBAPEBDXZ */
585 DEFINE_THISCALL_WRAPPER(_Locinfo__Getdays
, 4)
586 const char* __thiscall
_Locinfo__Getdays(_Locinfo
*this)
588 char *days
= _Getdays();
590 TRACE("(%p)\n", this);
593 MSVCP_basic_string_char_dtor(&this->days
);
594 MSVCP_basic_string_char_ctor_cstr(&this->days
, days
);
598 return this->days
.size
? MSVCP_basic_string_char_c_str(&this->days
) :
599 ":Sun:Sunday:Mon:Monday:Tue:Tuesday:Wed:Wednesday:Thu:Thursday:Fri:Friday:Sat:Saturday";
602 /* ?_Getmonths@_Locinfo@std@@QBEPBDXZ */
603 /* ?_Getmonths@_Locinfo@std@@QEBAPEBDXZ */
604 DEFINE_THISCALL_WRAPPER(_Locinfo__Getmonths
, 4)
605 const char* __thiscall
_Locinfo__Getmonths(_Locinfo
*this)
607 char *months
= _Getmonths();
609 TRACE("(%p)\n", this);
612 MSVCP_basic_string_char_dtor(&this->months
);
613 MSVCP_basic_string_char_ctor_cstr(&this->months
, months
);
617 return this->months
.size
? MSVCP_basic_string_char_c_str(&this->months
) :
618 ":Jan:January:Feb:February:Mar:March:Apr:April:May:May:Jun:June:Jul:July"
619 ":Aug:August:Sep:September:Oct:October:Nov:November:Dec:December";
622 /* ?_Getfalse@_Locinfo@std@@QBEPBDXZ */
623 /* ?_Getfalse@_Locinfo@std@@QEBAPEBDXZ */
624 DEFINE_THISCALL_WRAPPER(_Locinfo__Getfalse
, 4)
625 const char* __thiscall
_Locinfo__Getfalse(const _Locinfo
*this)
627 TRACE("(%p)\n", this);
631 /* ?_Gettrue@_Locinfo@std@@QBEPBDXZ */
632 /* ?_Gettrue@_Locinfo@std@@QEBAPEBDXZ */
633 DEFINE_THISCALL_WRAPPER(_Locinfo__Gettrue
, 4)
634 const char* __thiscall
_Locinfo__Gettrue(const _Locinfo
*this)
636 TRACE("(%p)\n", this);
640 /* ?_Getlconv@_Locinfo@std@@QBEPBUlconv@@XZ */
641 /* ?_Getlconv@_Locinfo@std@@QEBAPEBUlconv@@XZ */
642 DEFINE_THISCALL_WRAPPER(_Locinfo__Getlconv
, 4)
643 const struct lconv
* __thiscall
_Locinfo__Getlconv(const _Locinfo
*this)
645 TRACE("(%p)\n", this);
649 /* ?_Getname@_Locinfo@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
650 /* ?_Getname@_Locinfo@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
651 DEFINE_THISCALL_WRAPPER(_Locinfo__Getname
, 8)
652 basic_string_char
* __thiscall
_Locinfo__Getname(const _Locinfo
*this, basic_string_char
*ret
)
654 TRACE("(%p)\n", this);
656 MSVCP_basic_string_char_copy_ctor(ret
, &this->newlocname
);
660 /* ?_Gettnames@_Locinfo@std@@QBE?AV_Timevec@2@XZ */
661 /* ?_Gettnames@_Locinfo@std@@QEBA?AV_Timevec@2@XZ */
662 DEFINE_THISCALL_WRAPPER(_Locinfo__Gettnames
, 8)
663 _Timevec
*__thiscall
_Locinfo__Gettnames(const _Locinfo
*this, _Timevec
*ret
)
665 TRACE("(%p)\n", this);
667 _Timevec_ctor_timeptr(ret
, _Gettnames());
671 /* ?id@?$collate@D@std@@2V0locale@2@A */
672 locale_id collate_char_id
= {0};
674 /* ??_7?$collate@D@std@@6B@ */
675 extern const vtable_ptr MSVCP_collate_char_vtable
;
677 /* ?_Init@?$collate@D@std@@IAEXABV_Locinfo@2@@Z */
678 /* ?_Init@?$collate@D@std@@IEAAXAEBV_Locinfo@2@@Z */
679 DEFINE_THISCALL_WRAPPER(collate_char__Init
, 8)
680 void __thiscall
collate_char__Init(collate
*this, const _Locinfo
*locinfo
)
682 TRACE("(%p %p)\n", this, locinfo
);
683 _Locinfo__Getcoll(locinfo
, &this->coll
);
686 /* ??0?$collate@D@std@@IAE@PBDI@Z */
687 /* ??0?$collate@D@std@@IEAA@PEBD_K@Z */
688 DEFINE_THISCALL_WRAPPER(collate_char_ctor_name
, 12)
689 collate
* __thiscall
collate_char_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
693 TRACE("(%p %s %lu)\n", this, name
, refs
);
695 locale_facet_ctor_refs(&this->facet
, refs
);
696 this->facet
.vtable
= &MSVCP_collate_char_vtable
;
698 _Locinfo_ctor_cstr(&locinfo
, name
);
699 collate_char__Init(this, &locinfo
);
700 _Locinfo_dtor(&locinfo
);
704 /* ??0?$collate@D@std@@QAE@ABV_Locinfo@1@I@Z */
705 /* ??0?$collate@D@std@@QEAA@AEBV_Locinfo@1@_K@Z */
706 DEFINE_THISCALL_WRAPPER(collate_char_ctor_locinfo
, 12)
707 collate
* __thiscall
collate_char_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
709 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
711 locale_facet_ctor_refs(&this->facet
, refs
);
712 this->facet
.vtable
= &MSVCP_collate_char_vtable
;
713 collate_char__Init(this, locinfo
);
717 /* ??0?$collate@D@std@@QAE@I@Z */
718 /* ??0?$collate@D@std@@QEAA@_K@Z */
719 DEFINE_THISCALL_WRAPPER(collate_char_ctor_refs
, 8)
720 collate
* __thiscall
collate_char_ctor_refs(collate
*this, MSVCP_size_t refs
)
722 return collate_char_ctor_name(this, "C", refs
);
725 /* ??1?$collate@D@std@@MAE@XZ */
726 /* ??1?$collate@D@std@@MEAA@XZ */
727 DEFINE_THISCALL_WRAPPER(collate_char_dtor
, 4)
728 void __thiscall
collate_char_dtor(collate
*this)
730 TRACE("(%p)\n", this);
733 DEFINE_THISCALL_WRAPPER(MSVCP_collate_char_vector_dtor
, 8)
734 collate
* __thiscall
MSVCP_collate_char_vector_dtor(collate
*this, unsigned int flags
)
736 TRACE("(%p %x)\n", this, flags
);
738 /* we have an array, with the number of elements stored before the first object */
739 int i
, *ptr
= (int *)this-1;
741 for(i
=*ptr
-1; i
>=0; i
--)
742 collate_char_dtor(this+i
);
743 MSVCRT_operator_delete(ptr
);
745 collate_char_dtor(this);
747 MSVCRT_operator_delete(this);
753 /* ??_F?$collate@D@std@@QAEXXZ */
754 /* ??_F?$collate@D@std@@QEAAXXZ */
755 DEFINE_THISCALL_WRAPPER(collate_char_ctor
, 4)
756 collate
* __thiscall
collate_char_ctor(collate
*this)
758 return collate_char_ctor_name(this, "C", 0);
761 /* ?_Getcat@?$collate@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
762 /* ?_Getcat@?$collate@D@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
763 MSVCP_size_t __cdecl
collate_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
765 TRACE("(%p %p)\n", facet
, loc
);
767 if(facet
&& !*facet
) {
768 *facet
= MSVCRT_operator_new(sizeof(collate
));
770 ERR("Out of memory\n");
771 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
774 collate_char_ctor_name((collate
*)*facet
,
775 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0);
782 int __cdecl
_Strcoll(const char *first1
, const char *last1
, const char *first2
,
783 const char *last2
, const _Collvec
*coll
)
787 TRACE("(%s %s)\n", debugstr_an(first1
, last1
-first1
), debugstr_an(first2
, last2
-first2
));
792 lcid
= ___lc_handle_func()[LC_COLLATE
];
793 return CompareStringA(lcid
, 0, first1
, last1
-first1
, first2
, last2
-first2
)-2;
796 /* ?do_compare@?$collate@D@std@@MBEHPBD000@Z */
797 /* ?do_compare@?$collate@D@std@@MEBAHPEBD000@Z */
798 DEFINE_THISCALL_WRAPPER(collate_char_do_compare
, 20)
799 #define call_collate_char_do_compare(this, first1, last1, first2, last2) CALL_VTBL_FUNC(this, 4, int, \
800 (const collate*, const char*, const char*, const char*, const char*), \
801 (this, first1, last1, first2, last2))
802 int __thiscall
collate_char_do_compare(const collate
*this, const char *first1
,
803 const char *last1
, const char *first2
, const char *last2
)
805 TRACE("(%p %p %p %p %p)\n", this, first1
, last1
, first2
, last2
);
806 return _Strcoll(first1
, last1
, first2
, last2
, &this->coll
);
809 /* ?compare@?$collate@D@std@@QBEHPBD000@Z */
810 /* ?compare@?$collate@D@std@@QEBAHPEBD000@Z */
811 DEFINE_THISCALL_WRAPPER(collate_char_compare
, 20)
812 int __thiscall
collate_char_compare(const collate
*this, const char *first1
,
813 const char *last1
, const char *first2
, const char *last2
)
815 TRACE("(%p %p %p %p %p)\n", this, first1
, last1
, first2
, last2
);
816 return call_collate_char_do_compare(this, first1
, last1
, first2
, last2
);
819 /* ?do_hash@?$collate@D@std@@MBEJPBD0@Z */
820 /* ?do_hash@?$collate@D@std@@MEBAJPEBD0@Z */
821 DEFINE_THISCALL_WRAPPER(collate_char_do_hash
, 12)
822 #define call_collate_char_do_hash(this, first, last) CALL_VTBL_FUNC(this, 12, LONG, \
823 (const collate*, const char*, const char*), (this, first, last))
824 LONG __thiscall
collate_char_do_hash(const collate
*this,
825 const char *first
, const char *last
)
829 TRACE("(%p %p %p)\n", this, first
, last
);
831 for(; first
<last
; first
++)
832 ret
= (ret
<<8 | ret
>>24) + *first
;
836 /* ?hash@?$collate@D@std@@QBEJPBD0@Z */
837 /* ?hash@?$collate@D@std@@QEBAJPEBD0@Z */
838 DEFINE_THISCALL_WRAPPER(collate_char_hash
, 12)
839 LONG __thiscall
collate_char_hash(const collate
*this,
840 const char *first
, const char *last
)
842 TRACE("(%p %p %p)\n", this, first
, last
);
843 return call_collate_char_do_hash(this, first
, last
);
846 /* ?do_transform@?$collate@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD0@Z */
847 /* ?do_transform@?$collate@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD0@Z */
848 DEFINE_THISCALL_WRAPPER(collate_char_do_transform
, 16)
849 basic_string_char
* __thiscall
collate_char_do_transform(const collate
*this,
850 basic_string_char
*ret
, const char *first
, const char *last
)
852 FIXME("(%p %p %p) stub\n", this, first
, last
);
856 /* ?transform@?$collate@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD0@Z */
857 /* ?transform@?$collate@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD0@Z */
858 DEFINE_THISCALL_WRAPPER(collate_char_transform
, 16)
859 basic_string_char
* __thiscall
collate_char_transform(const collate
*this,
860 basic_string_char
*ret
, const char *first
, const char *last
)
862 FIXME("(%p %p %p) stub\n", this, first
, last
);
866 /* ?id@?$collate@_W@std@@2V0locale@2@A */
867 locale_id collate_wchar_id
= {0};
868 /* ?id@?$collate@G@std@@2V0locale@2@A */
869 locale_id collate_short_id
= {0};
871 /* ??_7?$collate@_W@std@@6B@ */
872 extern const vtable_ptr MSVCP_collate_wchar_vtable
;
873 /* ??_7?$collate@G@std@@6B@ */
874 extern const vtable_ptr MSVCP_collate_short_vtable
;
876 /* ?_Init@?$collate@_W@std@@IAEXABV_Locinfo@2@@Z */
877 /* ?_Init@?$collate@_W@std@@IEAAXAEBV_Locinfo@2@@Z */
878 /* ?_Init@?$collate@G@std@@IAEXABV_Locinfo@2@@Z */
879 /* ?_Init@?$collate@G@std@@IEAAXAEBV_Locinfo@2@@Z */
880 DEFINE_THISCALL_WRAPPER(collate_wchar__Init
, 8)
881 void __thiscall
collate_wchar__Init(collate
*this, const _Locinfo
*locinfo
)
883 TRACE("(%p %p)\n", this, locinfo
);
884 _Locinfo__Getcoll(locinfo
, &this->coll
);
887 /* ??0?$collate@_W@std@@IAE@PBDI@Z */
888 /* ??0?$collate@_W@std@@IEAA@PEBD_K@Z */
889 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_name
, 12)
890 collate
* __thiscall
collate_wchar_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
894 TRACE("(%p %s %lu)\n", this, name
, refs
);
896 locale_facet_ctor_refs(&this->facet
, refs
);
897 this->facet
.vtable
= &MSVCP_collate_wchar_vtable
;
899 _Locinfo_ctor_cstr(&locinfo
, name
);
900 collate_wchar__Init(this, &locinfo
);
901 _Locinfo_dtor(&locinfo
);
905 /* ??0?$collate@G@std@@IAE@PBDI@Z */
906 /* ??0?$collate@G@std@@IEAA@PEBD_K@Z */
907 DEFINE_THISCALL_WRAPPER(collate_short_ctor_name
, 12)
908 collate
* __thiscall
collate_short_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
910 collate
*ret
= collate_wchar_ctor_name(this, name
, refs
);
911 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
915 /* ??0?$collate@_W@std@@QAE@ABV_Locinfo@1@I@Z */
916 /* ??0?$collate@_W@std@@QEAA@AEBV_Locinfo@1@_K@Z */
917 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_locinfo
, 12)
918 collate
* __thiscall
collate_wchar_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
920 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
922 locale_facet_ctor_refs(&this->facet
, refs
);
923 this->facet
.vtable
= &MSVCP_collate_wchar_vtable
;
924 collate_wchar__Init(this, locinfo
);
928 /* ??0?$collate@G@std@@QAE@ABV_Locinfo@1@I@Z */
929 /* ??0?$collate@G@std@@QEAA@AEBV_Locinfo@1@_K@Z */
930 DEFINE_THISCALL_WRAPPER(collate_short_ctor_locinfo
, 12)
931 collate
* __thiscall
collate_short_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
933 collate
*ret
= collate_wchar_ctor_locinfo(this, locinfo
, refs
);
934 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
938 /* ??0?$collate@_W@std@@QAE@I@Z */
939 /* ??0?$collate@_W@std@@QEAA@_K@Z */
940 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_refs
, 8)
941 collate
* __thiscall
collate_wchar_ctor_refs(collate
*this, MSVCP_size_t refs
)
943 return collate_wchar_ctor_name(this, "C", refs
);
946 /* ??0?$collate@G@std@@QAE@I@Z */
947 /* ??0?$collate@G@std@@QEAA@_K@Z */
948 DEFINE_THISCALL_WRAPPER(collate_short_ctor_refs
, 8)
949 collate
* __thiscall
collate_short_ctor_refs(collate
*this, MSVCP_size_t refs
)
951 collate
*ret
= collate_wchar_ctor_refs(this, refs
);
952 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
956 /* ??1?$collate@_W@std@@MAE@XZ */
957 /* ??1?$collate@_W@std@@MEAA@XZ */
958 /* ??1?$collate@G@std@@MAE@XZ */
959 /* ??1?$collate@G@std@@MEAA@XZ */
960 DEFINE_THISCALL_WRAPPER(collate_wchar_dtor
, 4)
961 void __thiscall
collate_wchar_dtor(collate
*this)
963 TRACE("(%p)\n", this);
966 DEFINE_THISCALL_WRAPPER(MSVCP_collate_wchar_vector_dtor
, 8)
967 collate
* __thiscall
MSVCP_collate_wchar_vector_dtor(collate
*this, unsigned int flags
)
969 TRACE("(%p %x)\n", this, flags
);
971 /* we have an array, with the number of elements stored before the first object */
972 int i
, *ptr
= (int *)this-1;
974 for(i
=*ptr
-1; i
>=0; i
--)
975 collate_wchar_dtor(this+i
);
976 MSVCRT_operator_delete(ptr
);
978 collate_wchar_dtor(this);
980 MSVCRT_operator_delete(this);
986 DEFINE_THISCALL_WRAPPER(MSVCP_collate_short_vector_dtor
, 8)
987 collate
* __thiscall
MSVCP_collate_short_vector_dtor(collate
*this, unsigned int flags
)
989 return MSVCP_collate_wchar_vector_dtor(this, flags
);
992 /* ??_F?$collate@_W@std@@QAEXXZ */
993 /* ??_F?$collate@_W@std@@QEAAXXZ */
994 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor
, 4)
995 collate
* __thiscall
collate_wchar_ctor(collate
*this)
997 return collate_wchar_ctor_name(this, "C", 0);
1000 /* ??_F?$collate@G@std@@QAEXXZ */
1001 /* ??_F?$collate@G@std@@QEAAXXZ */
1002 DEFINE_THISCALL_WRAPPER(collate_short_ctor
, 4)
1003 collate
* __thiscall
collate_short_ctor(collate
*this)
1005 collate
*ret
= collate_wchar_ctor(this);
1006 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
1010 /* ?_Getcat@?$collate@_W@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1011 /* ?_Getcat@?$collate@_W@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1012 MSVCP_size_t __cdecl
collate_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
1014 TRACE("(%p %p)\n", facet
, loc
);
1016 if(facet
&& !*facet
) {
1017 *facet
= MSVCRT_operator_new(sizeof(collate
));
1019 ERR("Out of memory\n");
1020 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
1023 collate_wchar_ctor_name((collate
*)*facet
,
1024 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0);
1030 /* ?_Getcat@?$collate@G@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1031 /* ?_Getcat@?$collate@G@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1032 MSVCP_size_t __cdecl
collate_short__Getcat(const locale_facet
**facet
, const locale
*loc
)
1034 if(facet
&& !*facet
) {
1035 collate_wchar__Getcat(facet
, loc
);
1036 (*(locale_facet
**)facet
)->vtable
= &MSVCP_collate_short_vtable
;
1043 int __cdecl
_Wcscoll(const wchar_t *first1
, const wchar_t *last1
, const wchar_t *first2
,
1044 const wchar_t *last2
, const _Collvec
*coll
)
1048 TRACE("(%s %s)\n", debugstr_wn(first1
, last1
-first1
), debugstr_wn(first2
, last2
-first2
));
1051 lcid
= coll
->handle
;
1053 lcid
= ___lc_handle_func()[LC_COLLATE
];
1054 return CompareStringW(lcid
, 0, first1
, last1
-first1
, first2
, last2
-first2
)-2;
1057 /* ?do_compare@?$collate@_W@std@@MBEHPB_W000@Z */
1058 /* ?do_compare@?$collate@_W@std@@MEBAHPEB_W000@Z */
1059 /* ?do_compare@?$collate@G@std@@MBEHPBG000@Z */
1060 /* ?do_compare@?$collate@G@std@@MEBAHPEBG000@Z */
1061 DEFINE_THISCALL_WRAPPER(collate_wchar_do_compare
, 20)
1062 #define call_collate_wchar_do_compare(this, first1, last1, first2, last2) CALL_VTBL_FUNC(this, 4, int, \
1063 (const collate*, const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*), \
1064 (this, first1, last1, first2, last2))
1065 int __thiscall
collate_wchar_do_compare(const collate
*this, const wchar_t *first1
,
1066 const wchar_t *last1
, const wchar_t *first2
, const wchar_t *last2
)
1068 TRACE("(%p %p %p %p %p)\n", this, first1
, last1
, first2
, last2
);
1069 return _Wcscoll(first1
, last1
, first2
, last2
, &this->coll
);
1072 /* ?compare@?$collate@_W@std@@QBEHPB_W000@Z */
1073 /* ?compare@?$collate@_W@std@@QEBAHPEB_W000@Z */
1074 /* ?compare@?$collate@G@std@@QBEHPBG000@Z */
1075 /* ?compare@?$collate@G@std@@QEBAHPEBG000@Z */
1076 DEFINE_THISCALL_WRAPPER(collate_wchar_compare
, 20)
1077 int __thiscall
collate_wchar_compare(const collate
*this, const wchar_t *first1
,
1078 const wchar_t *last1
, const wchar_t *first2
, const wchar_t *last2
)
1080 TRACE("(%p %p %p %p %p)\n", this, first1
, last1
, first2
, last2
);
1081 return call_collate_wchar_do_compare(this, first1
, last1
, first2
, last2
);
1084 /* ?do_hash@?$collate@_W@std@@MBEJPB_W0@Z */
1085 /* ?do_hash@?$collate@_W@std@@MEBAJPEB_W0@Z */
1086 /* ?do_hash@?$collate@G@std@@MBEJPBG0@Z */
1087 /* ?do_hash@?$collate@G@std@@MEBAJPEBG0@Z */
1088 DEFINE_THISCALL_WRAPPER(collate_wchar_do_hash
, 12)
1089 #define call_collate_wchar_do_hash(this, first, last) CALL_VTBL_FUNC(this, 12, LONG, \
1090 (const collate*, const wchar_t*, const wchar_t*), (this, first, last))
1091 LONG __thiscall
collate_wchar_do_hash(const collate
*this,
1092 const wchar_t *first
, const wchar_t *last
)
1096 TRACE("(%p %p %p)\n", this, first
, last
);
1098 for(; first
<last
; first
++)
1099 ret
= (ret
<<8 | ret
>>24) + *first
;
1103 /* ?hash@?$collate@_W@std@@QBEJPB_W0@Z */
1104 /* ?hash@?$collate@_W@std@@QEBAJPEB_W0@Z */
1105 /* ?hash@?$collate@G@std@@QBEJPBG0@Z */
1106 /* ?hash@?$collate@G@std@@QEBAJPEBG0@Z */
1107 DEFINE_THISCALL_WRAPPER(collate_wchar_hash
, 12)
1108 LONG __thiscall
collate_wchar_hash(const collate
*this,
1109 const wchar_t *first
, const wchar_t *last
)
1111 TRACE("(%p %p %p)\n", this, first
, last
);
1112 return call_collate_wchar_do_hash(this, first
, last
);
1115 /* ?do_transform@?$collate@_W@std@@MBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PB_W0@Z */
1116 /* ?do_transform@?$collate@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W0@Z */
1117 /* ?do_transform@?$collate@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG0@Z */
1118 /* ?do_transform@?$collate@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG0@Z */
1119 DEFINE_THISCALL_WRAPPER(collate_wchar_do_transform
, 16)
1120 basic_string_wchar
* __thiscall
collate_wchar_do_transform(const collate
*this,
1121 basic_string_wchar
*ret
, const wchar_t *first
, const wchar_t *last
)
1123 FIXME("(%p %p %p) stub\n", this, first
, last
);
1127 /* ?transform@?$collate@_W@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PB_W0@Z */
1128 /* ?transform@?$collate@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W0@Z */
1129 /* ?transform@?$collate@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG0@Z */
1130 /* ?transform@?$collate@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG0@Z */
1131 DEFINE_THISCALL_WRAPPER(collate_wchar_transform
, 16)
1132 basic_string_wchar
* __thiscall
collate_wchar_transform(const collate
*this,
1133 basic_string_wchar
*ret
, const wchar_t *first
, const wchar_t *last
)
1135 FIXME("(%p %p %p) stub\n", this, first
, last
);
1139 /* ??_7ctype_base@std@@6B@ */
1140 extern const vtable_ptr MSVCP_ctype_base_vtable
;
1142 /* ??0ctype_base@std@@QAE@I@Z */
1143 /* ??0ctype_base@std@@QEAA@_K@Z */
1144 DEFINE_THISCALL_WRAPPER(ctype_base_ctor_refs
, 8)
1145 ctype_base
* __thiscall
ctype_base_ctor_refs(ctype_base
*this, MSVCP_size_t refs
)
1147 TRACE("(%p %lu)\n", this, refs
);
1148 locale_facet_ctor_refs(&this->facet
, refs
);
1149 this->facet
.vtable
= &MSVCP_ctype_base_vtable
;
1153 /* ??_Fctype_base@std@@QAEXXZ */
1154 /* ??_Fctype_base@std@@QEAAXXZ */
1155 DEFINE_THISCALL_WRAPPER(ctype_base_ctor
, 4)
1156 ctype_base
* __thiscall
ctype_base_ctor(ctype_base
*this)
1158 TRACE("(%p)\n", this);
1159 locale_facet_ctor_refs(&this->facet
, 0);
1160 this->facet
.vtable
= &MSVCP_ctype_base_vtable
;
1164 /* ??1ctype_base@std@@UAE@XZ */
1165 /* ??1ctype_base@std@@UEAA@XZ */
1166 DEFINE_THISCALL_WRAPPER(ctype_base_dtor
, 4)
1167 void __thiscall
ctype_base_dtor(ctype_base
*this)
1169 TRACE("(%p)\n", this);
1172 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_base_vector_dtor
, 8)
1173 ctype_base
* __thiscall
MSVCP_ctype_base_vector_dtor(ctype_base
*this, unsigned int flags
)
1175 TRACE("(%p %x)\n", this, flags
);
1177 /* we have an array, with the number of elements stored before the first object */
1178 int i
, *ptr
= (int *)this-1;
1180 for(i
=*ptr
-1; i
>=0; i
--)
1181 ctype_base_dtor(this+i
);
1182 MSVCRT_operator_delete(ptr
);
1184 ctype_base_dtor(this);
1186 MSVCRT_operator_delete(this);
1192 /* ?_Xran@ctype_base@std@@KAXXZ */
1193 void __cdecl
ctype_base__Xran(void)
1195 throw_exception(EXCEPTION_OUT_OF_RANGE
, "out of range in ctype<T>");
1198 /* ?id@?$ctype@D@std@@2V0locale@2@A */
1199 locale_id ctype_char_id
= {0};
1200 /* ?table_size@?$ctype@D@std@@2IB */
1201 /* ?table_size@?$ctype@D@std@@2_KB */
1202 MSVCP_size_t ctype_char_table_size
= 256;
1204 /* ??_7?$ctype@D@std@@6B@ */
1205 extern const vtable_ptr MSVCP_ctype_char_vtable
;
1207 /* ?_Id_func@?$ctype@D@std@@SAAAVid@locale@2@XZ */
1208 /* ?_Id_func@?$ctype@D@std@@SAAEAVid@locale@2@XZ */
1209 locale_id
* __cdecl
ctype_char__Id_func(void)
1212 return &ctype_char_id
;
1215 /* ?_Init@?$ctype@D@std@@IAEXABV_Locinfo@2@@Z */
1216 /* ?_Init@?$ctype@D@std@@IEAAXAEBV_Locinfo@2@@Z */
1217 DEFINE_THISCALL_WRAPPER(ctype_char__Init
, 8)
1218 void __thiscall
ctype_char__Init(ctype_char
*this, _Locinfo
*locinfo
)
1220 TRACE("(%p %p)\n", this, locinfo
);
1221 _Locinfo__Getctype(locinfo
, &this->ctype
);
1224 /* ?_Tidy@?$ctype@D@std@@IAEXXZ */
1225 /* ?_Tidy@?$ctype@D@std@@IEAAXXZ */
1226 DEFINE_THISCALL_WRAPPER(ctype_char__Tidy
, 4)
1227 void __thiscall
ctype_char__Tidy(ctype_char
*this)
1229 TRACE("(%p)\n", this);
1231 if(this->ctype
.delfl
)
1232 free((short*)this->ctype
.table
);
1235 /* ?classic_table@?$ctype@D@std@@KAPBFXZ */
1236 /* ?classic_table@?$ctype@D@std@@KAPEBFXZ */
1237 const short* __cdecl
ctype_char_classic_table(void)
1240 return &((short*)GetProcAddress(GetModuleHandleA("msvcrt.dll"), "_ctype"))[1];
1243 /* ??0?$ctype@D@std@@QAE@ABV_Locinfo@1@I@Z */
1244 /* ??0?$ctype@D@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1245 DEFINE_THISCALL_WRAPPER(ctype_char_ctor_locinfo
, 12)
1246 ctype_char
* __thiscall
ctype_char_ctor_locinfo(ctype_char
*this,
1247 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1249 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
1250 ctype_base_ctor_refs(&this->base
, refs
);
1251 this->base
.facet
.vtable
= &MSVCP_ctype_char_vtable
;
1252 ctype_char__Init(this, locinfo
);
1256 /* ??0?$ctype@D@std@@QAE@PBF_NI@Z */
1257 /* ??0?$ctype@D@std@@QEAA@PEBF_N_K@Z */
1258 DEFINE_THISCALL_WRAPPER(ctype_char_ctor_table
, 16)
1259 ctype_char
* __thiscall
ctype_char_ctor_table(ctype_char
*this,
1260 const short *table
, MSVCP_bool
delete, MSVCP_size_t refs
)
1264 TRACE("(%p %p %d %lu)\n", this, table
, delete, refs
);
1266 ctype_base_ctor_refs(&this->base
, refs
);
1267 this->base
.facet
.vtable
= &MSVCP_ctype_char_vtable
;
1269 _Locinfo_ctor(&locinfo
);
1270 ctype_char__Init(this, &locinfo
);
1271 _Locinfo_dtor(&locinfo
);
1274 ctype_char__Tidy(this);
1275 this->ctype
.table
= table
;
1276 this->ctype
.delfl
= delete;
1281 /* ??_F?$ctype@D@std@@QAEXXZ */
1282 /* ??_F?$ctype@D@std@@QEAAXXZ */
1283 DEFINE_THISCALL_WRAPPER(ctype_char_ctor
, 4)
1284 ctype_char
* __thiscall
ctype_char_ctor(ctype_char
*this)
1286 return ctype_char_ctor_table(this, NULL
, FALSE
, 0);
1289 /* ??1?$ctype@D@std@@MAE@XZ */
1290 /* ??1?$ctype@D@std@@MEAA@XZ */
1291 DEFINE_THISCALL_WRAPPER(ctype_char_dtor
, 4)
1292 void __thiscall
ctype_char_dtor(ctype_char
*this)
1294 TRACE("(%p)\n", this);
1295 ctype_char__Tidy(this);
1298 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_char_vector_dtor
, 8)
1299 ctype_char
* __thiscall
MSVCP_ctype_char_vector_dtor(ctype_char
*this, unsigned int flags
)
1301 TRACE("(%p %x)\n", this, flags
);
1303 /* we have an array, with the number of elements stored before the first object */
1304 int i
, *ptr
= (int *)this-1;
1306 for(i
=*ptr
-1; i
>=0; i
--)
1307 ctype_char_dtor(this+i
);
1308 MSVCRT_operator_delete(ptr
);
1310 ctype_char_dtor(this);
1312 MSVCRT_operator_delete(this);
1318 /* ?do_narrow@?$ctype@D@std@@MBEDDD@Z */
1319 /* ?do_narrow@?$ctype@D@std@@MEBADDD@Z */
1320 DEFINE_THISCALL_WRAPPER(ctype_char_do_narrow_ch
, 12)
1321 #define call_ctype_char_do_narrow_ch(this, ch, unused) CALL_VTBL_FUNC(this, 36, \
1322 char, (const ctype_char*, char, char), (this, ch, unused))
1323 char __thiscall
ctype_char_do_narrow_ch(const ctype_char
*this, char ch
, char unused
)
1325 TRACE("(%p %c %c)\n", this, ch
, unused
);
1329 /* ?do_narrow@?$ctype@D@std@@MBEPBDPBD0DPAD@Z */
1330 /* ?do_narrow@?$ctype@D@std@@MEBAPEBDPEBD0DPEAD@Z */
1331 DEFINE_THISCALL_WRAPPER(ctype_char_do_narrow
, 20)
1332 #define call_ctype_char_do_narrow(this, first, last, unused, dest) CALL_VTBL_FUNC(this, 32, \
1333 const char*, (const ctype_char*, const char*, const char*, char, char*), \
1334 (this, first, last, unused, dest))
1335 const char* __thiscall
ctype_char_do_narrow(const ctype_char
*this,
1336 const char *first
, const char *last
, char unused
, char *dest
)
1338 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
1339 memcpy(dest
, first
, last
-first
);
1343 /* ?_Do_narrow_s@?$ctype@D@std@@MBEPBDPBD0DPADI@Z */
1344 /* ?_Do_narrow_s@?$ctype@D@std@@MEBAPEBDPEBD0DPEAD_K@Z */
1345 DEFINE_THISCALL_WRAPPER(ctype_char__Do_narrow_s
, 24)
1346 #define call_ctype_char__Do_narrow_s(this, first, last, unused, dest, size) CALL_VTBL_FUNC(this, 40, \
1347 const char*, (const ctype_char*, const char*, const char*, char, char*, MSVCP_size_t), \
1348 (this, first, last, unused, dest, size))
1349 const char* __thiscall
ctype_char__Do_narrow_s(const ctype_char
*this, const char *first
,
1350 const char *last
, char unused
, char *dest
, MSVCP_size_t size
)
1352 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
1353 memcpy_s(dest
, size
, first
, last
-first
);
1357 /* ?narrow@?$ctype@D@std@@QBEDDD@Z */
1358 /* ?narrow@?$ctype@D@std@@QEBADDD@Z */
1359 DEFINE_THISCALL_WRAPPER(ctype_char_narrow_ch
, 12)
1360 char __thiscall
ctype_char_narrow_ch(const ctype_char
*this, char ch
, char dflt
)
1362 TRACE("(%p %c %c)\n", this, ch
, dflt
);
1363 return call_ctype_char_do_narrow_ch(this, ch
, dflt
);
1366 /* ?narrow@?$ctype@D@std@@QBEPBDPBD0DPAD@Z */
1367 /* ?narrow@?$ctype@D@std@@QEBAPEBDPEBD0DPEAD@Z */
1368 DEFINE_THISCALL_WRAPPER(ctype_char_narrow
, 20)
1369 const char* __thiscall
ctype_char_narrow(const ctype_char
*this,
1370 const char *first
, const char *last
, char dflt
, char *dest
)
1372 TRACE("(%p %p %p %c %p)\n", this, first
, last
, dflt
, dest
);
1373 return call_ctype_char_do_narrow(this, first
, last
, dflt
, dest
);
1376 /* ?_Narrow_s@?$ctype@D@std@@QBEPBDPBD0DPADI@Z */
1377 /* ?_Narrow_s@?$ctype@D@std@@QEBAPEBDPEBD0DPEAD_K@Z */
1378 DEFINE_THISCALL_WRAPPER(ctype_char__Narrow_s
, 24)
1379 const char* __thiscall
ctype_char__Narrow_s(const ctype_char
*this, const char *first
,
1380 const char *last
, char dflt
, char *dest
, MSVCP_size_t size
)
1382 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
1383 return call_ctype_char__Do_narrow_s(this, first
, last
, dflt
, dest
, size
);
1386 /* ?do_widen@?$ctype@D@std@@MBEDD@Z */
1387 /* ?do_widen@?$ctype@D@std@@MEBADD@Z */
1388 DEFINE_THISCALL_WRAPPER(ctype_char_do_widen_ch
, 8)
1389 #define call_ctype_char_do_widen_ch(this, ch) CALL_VTBL_FUNC(this, 24, \
1390 char, (const ctype_char*, char), (this, ch))
1391 char __thiscall
ctype_char_do_widen_ch(const ctype_char
*this, char ch
)
1393 TRACE("(%p %c)\n", this, ch
);
1397 /* ?do_widen@?$ctype@D@std@@MBEPBDPBD0PAD@Z */
1398 /* ?do_widen@?$ctype@D@std@@MEBAPEBDPEBD0PEAD@Z */
1399 DEFINE_THISCALL_WRAPPER(ctype_char_do_widen
, 16)
1400 #define call_ctype_char_do_widen(this, first, last, dest) CALL_VTBL_FUNC(this, 20, \
1401 const char*, (const ctype_char*, const char*, const char*, char*), \
1402 (this, first, last, dest))
1403 const char* __thiscall
ctype_char_do_widen(const ctype_char
*this,
1404 const char *first
, const char *last
, char *dest
)
1406 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
1407 memcpy(dest
, first
, last
-first
);
1411 /* ?_Do_widen_s@?$ctype@D@std@@MBEPBDPBD0PADI@Z */
1412 /* ?_Do_widen_s@?$ctype@D@std@@MEBAPEBDPEBD0PEAD_K@Z */
1413 DEFINE_THISCALL_WRAPPER(ctype_char__Do_widen_s
, 20)
1414 #define call_ctype_char__Do_widen_s(this, first, last, dest, size) CALL_VTBL_FUNC(this, 28, \
1415 const char*, (const ctype_char*, const char*, const char*, char*, MSVCP_size_t), \
1416 (this, first, last, dest, size))
1417 const char* __thiscall
ctype_char__Do_widen_s(const ctype_char
*this,
1418 const char *first
, const char *last
, char *dest
, MSVCP_size_t size
)
1420 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
1421 memcpy_s(dest
, size
, first
, last
-first
);
1425 /* ?widen@?$ctype@D@std@@QBEDD@Z */
1426 /* ?widen@?$ctype@D@std@@QEBADD@Z */
1427 DEFINE_THISCALL_WRAPPER(ctype_char_widen_ch
, 8)
1428 char __thiscall
ctype_char_widen_ch(const ctype_char
*this, char ch
)
1430 TRACE("(%p %c)\n", this, ch
);
1431 return call_ctype_char_do_widen_ch(this, ch
);
1434 /* ?widen@?$ctype@D@std@@QBEPBDPBD0PAD@Z */
1435 /* ?widen@?$ctype@D@std@@QEBAPEBDPEBD0PEAD@Z */
1436 DEFINE_THISCALL_WRAPPER(ctype_char_widen
, 16)
1437 const char* __thiscall
ctype_char_widen(const ctype_char
*this,
1438 const char *first
, const char *last
, char *dest
)
1440 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
1441 return call_ctype_char_do_widen(this, first
, last
, dest
);
1444 /* ?_Widen_s@?$ctype@D@std@@QBEPBDPBD0PADI@Z */
1445 /* ?_Widen_s@?$ctype@D@std@@QEBAPEBDPEBD0PEAD_K@Z */
1446 DEFINE_THISCALL_WRAPPER(ctype_char__Widen_s
, 20)
1447 const char* __thiscall
ctype_char__Widen_s(const ctype_char
*this,
1448 const char *first
, const char *last
, char *dest
, MSVCP_size_t size
)
1450 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
1451 return call_ctype_char__Do_widen_s(this, first
, last
, dest
, size
);
1454 /* ?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1455 /* ?_Getcat@?$ctype@D@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1456 MSVCP_size_t __cdecl
ctype_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
1458 TRACE("(%p %p)\n", facet
, loc
);
1460 if(facet
&& !*facet
) {
1463 *facet
= MSVCRT_operator_new(sizeof(ctype_char
));
1465 ERR("Out of memory\n");
1466 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
1470 _Locinfo_ctor_cstr(&locinfo
, MSVCP_basic_string_char_c_str(&loc
->ptr
->name
));
1471 ctype_char_ctor_locinfo((ctype_char
*)*facet
, &locinfo
, 0);
1472 _Locinfo_dtor(&locinfo
);
1479 int __cdecl
_Tolower(int ch
, const _Ctypevec
*ctype
)
1483 TRACE("%d %p\n", ch
, ctype
);
1488 cp
= ___lc_codepage_func();
1490 /* Don't convert to unicode in case of C locale */
1492 if(ch
>='A' && ch
<='Z')
1501 str
[0] = (ch
>>8) & 255;
1509 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, str
, size
, &wide
, 1))
1512 lower
= tolowerW(wide
);
1516 WideCharToMultiByte(cp
, 0, &lower
, 1, str
, 2, NULL
, NULL
);
1518 return str
[0] + (str
[1]<<8);
1522 /* ?do_tolower@?$ctype@D@std@@MBEDD@Z */
1523 /* ?do_tolower@?$ctype@D@std@@MEBADD@Z */
1524 #define call_ctype_char_do_tolower_ch(this, ch) CALL_VTBL_FUNC(this, 8, \
1525 char, (const ctype_char*, char), (this, ch))
1526 DEFINE_THISCALL_WRAPPER(ctype_char_do_tolower_ch
, 8)
1527 char __thiscall
ctype_char_do_tolower_ch(const ctype_char
*this, char ch
)
1529 TRACE("(%p %c)\n", this, ch
);
1530 return _Tolower(ch
, &this->ctype
);
1533 /* ?do_tolower@?$ctype@D@std@@MBEPBDPADPBD@Z */
1534 /* ?do_tolower@?$ctype@D@std@@MEBAPEBDPEADPEBD@Z */
1535 #define call_ctype_char_do_tolower(this, first, last) CALL_VTBL_FUNC(this, 4, \
1536 const char*, (const ctype_char*, char*, const char*), (this, first, last))
1537 DEFINE_THISCALL_WRAPPER(ctype_char_do_tolower
, 12)
1538 const char* __thiscall
ctype_char_do_tolower(const ctype_char
*this, char *first
, const char *last
)
1540 TRACE("(%p %p %p)\n", this, first
, last
);
1541 for(; first
<last
; first
++)
1542 *first
= _Tolower(*first
, &this->ctype
);
1546 /* ?tolower@?$ctype@D@std@@QBEDD@Z */
1547 /* ?tolower@?$ctype@D@std@@QEBADD@Z */
1548 DEFINE_THISCALL_WRAPPER(ctype_char_tolower_ch
, 8)
1549 char __thiscall
ctype_char_tolower_ch(const ctype_char
*this, char ch
)
1551 TRACE("(%p %c)\n", this, ch
);
1552 return call_ctype_char_do_tolower_ch(this, ch
);
1555 /* ?tolower@?$ctype@D@std@@QBEPBDPADPBD@Z */
1556 /* ?tolower@?$ctype@D@std@@QEBAPEBDPEADPEBD@Z */
1557 DEFINE_THISCALL_WRAPPER(ctype_char_tolower
, 12)
1558 const char* __thiscall
ctype_char_tolower(const ctype_char
*this, char *first
, const char *last
)
1560 TRACE("(%p %p %p)\n", this, first
, last
);
1561 return call_ctype_char_do_tolower(this, first
, last
);
1565 int __cdecl
_Toupper(int ch
, const _Ctypevec
*ctype
)
1569 TRACE("%d %p\n", ch
, ctype
);
1574 cp
= ___lc_codepage_func();
1576 /* Don't convert to unicode in case of C locale */
1578 if(ch
>='a' && ch
<='z')
1587 str
[0] = (ch
>>8) & 255;
1595 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, str
, size
, &wide
, 1))
1598 upper
= toupperW(wide
);
1602 WideCharToMultiByte(cp
, 0, &upper
, 1, str
, 2, NULL
, NULL
);
1604 return str
[0] + (str
[1]<<8);
1608 /* ?do_toupper@?$ctype@D@std@@MBEDD@Z */
1609 /* ?do_toupper@?$ctype@D@std@@MEBADD@Z */
1610 #define call_ctype_char_do_toupper_ch(this, ch) CALL_VTBL_FUNC(this, 16, \
1611 char, (const ctype_char*, char), (this, ch))
1612 DEFINE_THISCALL_WRAPPER(ctype_char_do_toupper_ch
, 8)
1613 char __thiscall
ctype_char_do_toupper_ch(const ctype_char
*this, char ch
)
1615 TRACE("(%p %c)\n", this, ch
);
1616 return _Toupper(ch
, &this->ctype
);
1619 /* ?do_toupper@?$ctype@D@std@@MBEPBDPADPBD@Z */
1620 /* ?do_toupper@?$ctype@D@std@@MEBAPEBDPEADPEBD@Z */
1621 #define call_ctype_char_do_toupper(this, first, last) CALL_VTBL_FUNC(this, 12, \
1622 const char*, (const ctype_char*, char*, const char*), (this, first, last))
1623 DEFINE_THISCALL_WRAPPER(ctype_char_do_toupper
, 12)
1624 const char* __thiscall
ctype_char_do_toupper(const ctype_char
*this,
1625 char *first
, const char *last
)
1627 TRACE("(%p %p %p)\n", this, first
, last
);
1628 for(; first
<last
; first
++)
1629 *first
= _Toupper(*first
, &this->ctype
);
1633 /* ?toupper@?$ctype@D@std@@QBEDD@Z */
1634 /* ?toupper@?$ctype@D@std@@QEBADD@Z */
1635 DEFINE_THISCALL_WRAPPER(ctype_char_toupper_ch
, 8)
1636 char __thiscall
ctype_char_toupper_ch(const ctype_char
*this, char ch
)
1638 TRACE("(%p %c)\n", this, ch
);
1639 return call_ctype_char_do_toupper_ch(this, ch
);
1642 /* ?toupper@?$ctype@D@std@@QBEPBDPADPBD@Z */
1643 /* ?toupper@?$ctype@D@std@@QEBAPEBDPEADPEBD@Z */
1644 DEFINE_THISCALL_WRAPPER(ctype_char_toupper
, 12)
1645 const char* __thiscall
ctype_char_toupper(const ctype_char
*this, char *first
, const char *last
)
1647 TRACE("(%p %p %p)\n", this, first
, last
);
1648 return call_ctype_char_do_toupper(this, first
, last
);
1651 /* ?is@?$ctype@D@std@@QBE_NFD@Z */
1652 /* ?is@?$ctype@D@std@@QEBA_NFD@Z */
1653 DEFINE_THISCALL_WRAPPER(ctype_char_is_ch
, 12)
1654 MSVCP_bool __thiscall
ctype_char_is_ch(const ctype_char
*this, short mask
, char ch
)
1656 TRACE("(%p %x %c)\n", this, mask
, ch
);
1657 return (this->ctype
.table
[(unsigned char)ch
] & mask
) != 0;
1660 /* ?is@?$ctype@D@std@@QBEPBDPBD0PAF@Z */
1661 /* ?is@?$ctype@D@std@@QEBAPEBDPEBD0PEAF@Z */
1662 DEFINE_THISCALL_WRAPPER(ctype_char_is
, 16)
1663 const char* __thiscall
ctype_char_is(const ctype_char
*this, const char *first
, const char *last
, short *dest
)
1665 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
1666 for(; first
<last
; first
++)
1667 *dest
++ = this->ctype
.table
[(unsigned char)*first
];
1671 /* ?scan_is@?$ctype@D@std@@QBEPBDFPBD0@Z */
1672 /* ?scan_is@?$ctype@D@std@@QEBAPEBDFPEBD0@Z */
1673 DEFINE_THISCALL_WRAPPER(ctype_char_scan_is
, 16)
1674 const char* __thiscall
ctype_char_scan_is(const ctype_char
*this, short mask
, const char *first
, const char *last
)
1676 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
1677 for(; first
<last
; first
++)
1678 if(!ctype_char_is_ch(this, mask
, *first
))
1683 /* ?scan_not@?$ctype@D@std@@QBEPBDFPBD0@Z */
1684 /* ?scan_not@?$ctype@D@std@@QEBAPEBDFPEBD0@Z */
1685 DEFINE_THISCALL_WRAPPER(ctype_char_scan_not
, 16)
1686 const char* __thiscall
ctype_char_scan_not(const ctype_char
*this, short mask
, const char *first
, const char *last
)
1688 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
1689 for(; first
<last
; first
++)
1690 if(ctype_char_is_ch(this, mask
, *first
))
1695 /* ?table@?$ctype@D@std@@IBEPBFXZ */
1696 /* ?table@?$ctype@D@std@@IEBAPEBFXZ */
1697 DEFINE_THISCALL_WRAPPER(ctype_char_table
, 4)
1698 const short* __thiscall
ctype_char_table(const ctype_char
*this)
1700 TRACE("(%p)\n", this);
1701 return this->ctype
.table
;
1704 /* ?id@?$ctype@_W@std@@2V0locale@2@A */
1705 locale_id ctype_wchar_id
= {0};
1706 /* ?id@?$ctype@G@std@@2V0locale@2@A */
1707 locale_id ctype_short_id
= {0};
1709 /* ??_7?$ctype@_W@std@@6B@ */
1710 extern const vtable_ptr MSVCP_ctype_wchar_vtable
;
1711 /* ??_7?$ctype@G@std@@6B@ */
1712 extern const vtable_ptr MSVCP_ctype_short_vtable
;
1714 /* ?_Id_func@?$ctype@_W@std@@SAAAVid@locale@2@XZ */
1715 /* ?_Id_func@?$ctype@_W@std@@SAAEAVid@locale@2@XZ */
1716 locale_id
* __cdecl
ctype_wchar__Id_func(void)
1719 return &ctype_wchar_id
;
1722 /* ?_Id_func@?$ctype@G@std@@SAAAVid@locale@2@XZ */
1723 /* ?_Id_func@?$ctype@G@std@@SAAEAVid@locale@2@XZ */
1724 locale_id
* __cdecl
ctype_short__Id_func(void)
1727 return &ctype_short_id
;
1730 /* ?_Init@?$ctype@_W@std@@IAEXABV_Locinfo@2@@Z */
1731 /* ?_Init@?$ctype@_W@std@@IEAAXAEBV_Locinfo@2@@Z */
1732 /* ?_Init@?$ctype@G@std@@IAEXABV_Locinfo@2@@Z */
1733 /* ?_Init@?$ctype@G@std@@IEAAXAEBV_Locinfo@2@@Z */
1734 DEFINE_THISCALL_WRAPPER(ctype_wchar__Init
, 8)
1735 void __thiscall
ctype_wchar__Init(ctype_wchar
*this, _Locinfo
*locinfo
)
1737 TRACE("(%p %p)\n", this, locinfo
);
1738 _Locinfo__Getctype(locinfo
, &this->ctype
);
1739 _Locinfo__Getcvt(locinfo
, &this->cvt
);
1742 /* ??0?$ctype@_W@std@@QAE@ABV_Locinfo@1@I@Z */
1743 /* ??0?$ctype@_W@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1744 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor_locinfo
, 12)
1745 ctype_wchar
* __thiscall
ctype_wchar_ctor_locinfo(ctype_wchar
*this,
1746 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1748 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
1749 ctype_base_ctor_refs(&this->base
, refs
);
1750 this->base
.facet
.vtable
= &MSVCP_ctype_wchar_vtable
;
1751 ctype_wchar__Init(this, locinfo
);
1755 /* ??0?$ctype@G@std@@QAE@ABV_Locinfo@1@I@Z */
1756 /* ??0?$ctype@G@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1757 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_locinfo
, 12)
1758 ctype_wchar
* __thiscall
ctype_short_ctor_locinfo(ctype_wchar
*this,
1759 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1761 ctype_wchar
*ret
= ctype_wchar_ctor_locinfo(this, locinfo
, refs
);
1762 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1766 /* ??0?$ctype@_W@std@@QAE@I@Z */
1767 /* ??0?$ctype@_W@std@@QEAA@_K@Z */
1768 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor_refs
, 8)
1769 ctype_wchar
* __thiscall
ctype_wchar_ctor_refs(ctype_wchar
*this, MSVCP_size_t refs
)
1773 TRACE("(%p %lu)\n", this, refs
);
1775 ctype_base_ctor_refs(&this->base
, refs
);
1776 this->base
.facet
.vtable
= &MSVCP_ctype_wchar_vtable
;
1778 _Locinfo_ctor(&locinfo
);
1779 ctype_wchar__Init(this, &locinfo
);
1780 _Locinfo_dtor(&locinfo
);
1784 /* ??0?$ctype@G@std@@QAE@I@Z */
1785 /* ??0?$ctype@G@std@@QEAA@_K@Z */
1786 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_refs
, 8)
1787 ctype_wchar
* __thiscall
ctype_short_ctor_refs(ctype_wchar
*this, MSVCP_size_t refs
)
1789 ctype_wchar
*ret
= ctype_wchar_ctor_refs(this, refs
);
1790 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1794 /* ??0?$ctype@G@std@@IAE@PBDI@Z */
1795 /* ??0?$ctype@G@std@@IEAA@PEBD_K@Z */
1796 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_name
, 12)
1797 ctype_wchar
* __thiscall
ctype_short_ctor_name(ctype_wchar
*this,
1798 const char *name
, MSVCP_size_t refs
)
1802 TRACE("(%p %s %lu)\n", this, debugstr_a(name
), refs
);
1804 ctype_base_ctor_refs(&this->base
, refs
);
1805 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1807 _Locinfo_ctor_cstr(&locinfo
, name
);
1808 ctype_wchar__Init(this, &locinfo
);
1809 _Locinfo_dtor(&locinfo
);
1813 /* ??_F?$ctype@_W@std@@QAEXXZ */
1814 /* ??_F?$ctype@_W@std@@QEAAXXZ */
1815 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor
, 4)
1816 ctype_wchar
* __thiscall
ctype_wchar_ctor(ctype_wchar
*this)
1818 TRACE("(%p)\n", this);
1819 return ctype_short_ctor_refs(this, 0);
1822 /* ??_F?$ctype@G@std@@QAEXXZ */
1823 /* ??_F?$ctype@G@std@@QEAAXXZ */
1824 DEFINE_THISCALL_WRAPPER(ctype_short_ctor
, 4)
1825 ctype_wchar
* __thiscall
ctype_short_ctor(ctype_wchar
*this)
1827 ctype_wchar
*ret
= ctype_wchar_ctor(this);
1828 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1832 /* ??1?$ctype@_W@std@@MAE@XZ */
1833 /* ??1?$ctype@_W@std@@MEAA@XZ */
1834 /* ??1?$ctype@G@std@@MAE@XZ */
1835 /* ??1?$ctype@G@std@@MEAA@XZ */
1836 DEFINE_THISCALL_WRAPPER(ctype_wchar_dtor
, 4)
1837 void __thiscall
ctype_wchar_dtor(ctype_wchar
*this)
1839 TRACE("(%p)\n", this);
1840 if(this->ctype
.delfl
)
1841 free((void*)this->ctype
.table
);
1844 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_wchar_vector_dtor
, 8)
1845 ctype_wchar
* __thiscall
MSVCP_ctype_wchar_vector_dtor(ctype_wchar
*this, unsigned int flags
)
1847 TRACE("(%p %x)\n", this, flags
);
1849 /* we have an array, with the number of elements stored before the first object */
1850 int i
, *ptr
= (int *)this-1;
1852 for(i
=*ptr
-1; i
>=0; i
--)
1853 ctype_wchar_dtor(this+i
);
1854 MSVCRT_operator_delete(ptr
);
1856 ctype_wchar_dtor(this);
1858 MSVCRT_operator_delete(this);
1864 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_short_vector_dtor
, 8)
1865 ctype_wchar
* __thiscall
MSVCP_ctype_short_vector_dtor(ctype_wchar
*this, unsigned int flags
)
1867 return MSVCP_ctype_wchar_vector_dtor(this, flags
);
1871 int __cdecl
_Wcrtomb(char *s
, wchar_t wch
, int *state
, const _Cvtvec
*cvt
)
1876 TRACE("%p %d %p %p\n", s
, wch
, state
, cvt
);
1881 cp
= ___lc_codepage_func();
1893 size
= WideCharToMultiByte(cp
, 0, &wch
, 1, s
, MB_LEN_MAX
, NULL
, &def
);
1902 /* ?_Donarrow@?$ctype@_W@std@@IBED_WD@Z */
1903 /* ?_Donarrow@?$ctype@_W@std@@IEBAD_WD@Z */
1904 /* ?_Donarrow@?$ctype@G@std@@IBEDGD@Z */
1905 /* ?_Donarrow@?$ctype@G@std@@IEBADGD@Z */
1906 DEFINE_THISCALL_WRAPPER(ctype_wchar__Donarrow
, 12)
1907 char __thiscall
ctype_wchar__Donarrow(const ctype_wchar
*this, wchar_t ch
, char dflt
)
1909 char buf
[MB_LEN_MAX
];
1911 TRACE("(%p %d %d)\n", this, ch
, dflt
);
1913 return _Wcrtomb(buf
, ch
, NULL
, &this->cvt
)==1 ? buf
[0] : dflt
;
1916 /* ?do_narrow@?$ctype@_W@std@@MBED_WD@Z */
1917 /* ?do_narrow@?$ctype@_W@std@@MEBAD_WD@Z */
1918 /* ?do_narrow@?$ctype@G@std@@MBEDGD@Z */
1919 /* ?do_narrow@?$ctype@G@std@@MEBADGD@Z */
1920 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_narrow_ch
, 12)
1921 #define call_ctype_wchar_do_narrow_ch(this, ch, dflt) CALL_VTBL_FUNC(this, 52, \
1922 char, (const ctype_wchar*, wchar_t, char), (this, ch, dflt))
1923 char __thiscall
ctype_wchar_do_narrow_ch(const ctype_wchar
*this, wchar_t ch
, char dflt
)
1925 return ctype_wchar__Donarrow(this, ch
, dflt
);
1928 /* ?do_narrow@?$ctype@_W@std@@MBEPB_WPB_W0DPAD@Z */
1929 /* ?do_narrow@?$ctype@_W@std@@MEBAPEB_WPEB_W0DPEAD@Z */
1930 /* ?do_narrow@?$ctype@G@std@@MBEPBGPBG0DPAD@Z */
1931 /* ?do_narrow@?$ctype@G@std@@MEBAPEBGPEBG0DPEAD@Z */
1932 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_narrow
, 20)
1933 #define call_ctype_wchar_do_narrow(this, first, last, dflt, dest) CALL_VTBL_FUNC(this, 48, \
1934 const wchar_t*, (const ctype_wchar*, const wchar_t*, const wchar_t*, char, char*), \
1935 (this, first, last, dflt, dest))
1936 const wchar_t* __thiscall
ctype_wchar_do_narrow(const ctype_wchar
*this,
1937 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
)
1939 TRACE("(%p %p %p %d %p)\n", this, first
, last
, dflt
, dest
);
1940 for(; first
<last
; first
++)
1941 *dest
++ = ctype_wchar__Donarrow(this, *first
, dflt
);
1945 /* ?_Do_narrow_s@?$ctype@_W@std@@MBEPB_WPB_W0DPADI@Z */
1946 /* ?_Do_narrow_s@?$ctype@_W@std@@MEBAPEB_WPEB_W0DPEAD_K@Z */
1947 /* ?_Do_narrow_s@?$ctype@G@std@@MBEPBGPBG0DPADI@Z */
1948 /* ?_Do_narrow_s@?$ctype@G@std@@MEBAPEBGPEBG0DPEAD_K@Z */
1949 DEFINE_THISCALL_WRAPPER(ctype_wchar__Do_narrow_s
, 24)
1950 #define call_ctype_wchar__Do_narrow_s(this, first, last, dflt, dest, size) CALL_VTBL_FUNC(this, 56, \
1951 const wchar_t*, (const ctype_wchar*, const wchar_t*, const wchar_t*, char, char*, MSVCP_size_t), \
1952 (this, first, last, dflt, dest, size))
1953 const wchar_t* __thiscall
ctype_wchar__Do_narrow_s(const ctype_wchar
*this,
1954 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
, MSVCP_size_t size
)
1956 TRACE("(%p %p %p %d %p %lu)\n", this, first
, last
, dflt
, dest
, size
);
1957 /* This function converts all multi-byte characters to dflt,
1958 * thanks to it result size is known before converting */
1959 if(last
-first
> size
)
1961 return ctype_wchar_do_narrow(this, first
, last
, dflt
, dest
);
1964 /* ?narrow@?$ctype@_W@std@@QBED_WD@Z */
1965 /* ?narrow@?$ctype@_W@std@@QEBAD_WD@Z */
1966 /* ?narrow@?$ctype@G@std@@QBEDGD@Z */
1967 /* ?narrow@?$ctype@G@std@@QEBADGD@Z */
1968 DEFINE_THISCALL_WRAPPER(ctype_wchar_narrow_ch
, 12)
1969 char __thiscall
ctype_wchar_narrow_ch(const ctype_wchar
*this, wchar_t ch
, char dflt
)
1971 TRACE("(%p %d %d)\n", this, ch
, dflt
);
1972 return call_ctype_wchar_do_narrow_ch(this, ch
, dflt
);
1975 /* ?narrow@?$ctype@_W@std@@QBEPB_WPB_W0DPAD@Z */
1976 /* ?narrow@?$ctype@_W@std@@QEBAPEB_WPEB_W0DPEAD@Z */
1977 /* ?narrow@?$ctype@G@std@@QBEPBGPBG0DPAD@Z */
1978 /* ?narrow@?$ctype@G@std@@QEBAPEBGPEBG0DPEAD@Z */
1979 DEFINE_THISCALL_WRAPPER(ctype_wchar_narrow
, 20)
1980 const wchar_t* __thiscall
ctype_wchar_narrow(const ctype_wchar
*this,
1981 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
)
1983 TRACE("(%p %p %p %d %p)\n", this, first
, last
, dflt
, dest
);
1984 return call_ctype_wchar_do_narrow(this, first
, last
, dflt
, dest
);
1987 /* ?_Narrow_s@?$ctype@_W@std@@QBEPB_WPB_W0DPADI@Z */
1988 /* ?_Narrow_s@?$ctype@_W@std@@QEBAPEB_WPEB_W0DPEAD_K@Z */
1989 /* ?_Narrow_s@?$ctype@G@std@@QBEPBGPBG0DPADI@Z */
1990 /* ?_Narrow_s@?$ctype@G@std@@QEBAPEBGPEBG0DPEAD_K@Z */
1991 DEFINE_THISCALL_WRAPPER(ctype_wchar__Narrow_s
, 24)
1992 const wchar_t* __thiscall
ctype_wchar__Narrow_s(const ctype_wchar
*this, const wchar_t *first
,
1993 const wchar_t *last
, char dflt
, char *dest
, MSVCP_size_t size
)
1995 TRACE("(%p %p %p %d %p %lu)\n", this, first
, last
, dflt
, dest
, size
);
1996 return call_ctype_wchar__Do_narrow_s(this, first
, last
, dflt
, dest
, size
);
2000 int __cdecl
_Mbrtowc(wchar_t *out
, const char *in
, MSVCP_size_t len
, int *state
, const _Cvtvec
*cvt
)
2006 TRACE("(%p %p %lu %p %p)\n", out
, in
, len
, state
, cvt
);
2014 cp
= ___lc_codepage_func();
2018 *out
= (unsigned char)*in
;
2025 ((char*)state
)[1] = *in
;
2027 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, (char*)state
, 2, out
, out
? 1 : 0)) {
2037 GetCPInfo(cp
, &cp_info
);
2039 for(i
=0; i
<MAX_LEADBYTES
; i
+=2) {
2040 if(!cp_info
.LeadByte
[i
+1])
2042 if((unsigned char)*in
>=cp_info
.LeadByte
[i
] && (unsigned char)*in
<=cp_info
.LeadByte
[i
+1]) {
2050 *state
= (unsigned char)*in
;
2054 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, in
, 2, out
, out
? 1 : 0)) {
2061 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, in
, 1, out
, out
? 1 : 0)) {
2068 /* ?_Dowiden@?$ctype@_W@std@@IBE_WD@Z */
2069 /* ?_Dowiden@?$ctype@_W@std@@IEBA_WD@Z */
2070 /* ?_Dowiden@?$ctype@G@std@@IBEGD@Z */
2071 /* ?_Dowiden@?$ctype@G@std@@IEBAGD@Z */
2072 DEFINE_THISCALL_WRAPPER(ctype_wchar__Dowiden
, 8)
2073 wchar_t __thiscall
ctype_wchar__Dowiden(const ctype_wchar
*this, char ch
)
2077 TRACE("(%p %d)\n", this, ch
);
2078 return _Mbrtowc(&ret
, &ch
, 1, &state
, &this->cvt
)<0 ? WEOF
: ret
;
2081 /* ?do_widen@?$ctype@_W@std@@MBE_WD@Z */
2082 /* ?do_widen@?$ctype@_W@std@@MEBA_WD@Z */
2083 /* ?do_widen@?$ctype@G@std@@MBEGD@Z */
2084 /* ?do_widen@?$ctype@G@std@@MEBAGD@Z */
2085 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_widen_ch
, 8)
2086 #define call_ctype_wchar_do_widen_ch(this, ch) CALL_VTBL_FUNC(this, 40, \
2087 wchar_t, (const ctype_wchar*, char), (this, ch))
2088 wchar_t __thiscall
ctype_wchar_do_widen_ch(const ctype_wchar
*this, char ch
)
2090 return ctype_wchar__Dowiden(this, ch
);
2093 /* ?do_widen@?$ctype@_W@std@@MBEPBDPBD0PA_W@Z */
2094 /* ?do_widen@?$ctype@_W@std@@MEBAPEBDPEBD0PEA_W@Z */
2095 /* ?do_widen@?$ctype@G@std@@MBEPBDPBD0PAG@Z */
2096 /* ?do_widen@?$ctype@G@std@@MEBAPEBDPEBD0PEAG@Z */
2097 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_widen
, 16)
2098 #define call_ctype_wchar_do_widen(this, first, last, dest) CALL_VTBL_FUNC(this, 36, \
2099 const char*, (const ctype_wchar*, const char*, const char*, wchar_t*), \
2100 (this, first, last, dest))
2101 const char* __thiscall
ctype_wchar_do_widen(const ctype_wchar
*this,
2102 const char *first
, const char *last
, wchar_t *dest
)
2104 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
2105 for(; first
<last
; first
++)
2106 *dest
++ = ctype_wchar__Dowiden(this, *first
);
2110 /* ?_Do_widen_s@?$ctype@_W@std@@MBEPBDPBD0PA_WI@Z */
2111 /* ?_Do_widen_s@?$ctype@_W@std@@MEBAPEBDPEBD0PEA_W_K@Z */
2112 /* ?_Do_widen_s@?$ctype@G@std@@MBEPBDPBD0PAGI@Z */
2113 /* ?_Do_widen_s@?$ctype@G@std@@MEBAPEBDPEBD0PEAG_K@Z */
2114 DEFINE_THISCALL_WRAPPER(ctype_wchar__Do_widen_s
, 20)
2115 #define call_ctype_wchar__Do_widen_s(this, first, last, dest, size) CALL_VTBL_FUNC(this, 44, \
2116 const char*, (const ctype_wchar*, const char*, const char*, wchar_t*, MSVCP_size_t), \
2117 (this, first, last, dest, size))
2118 const char* __thiscall
ctype_wchar__Do_widen_s(const ctype_wchar
*this,
2119 const char *first
, const char *last
, wchar_t *dest
, MSVCP_size_t size
)
2121 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
2122 /* This function converts all multi-byte characters to WEOF,
2123 * thanks to it result size is known before converting */
2124 if(size
< last
-first
)
2126 return ctype_wchar_do_widen(this, first
, last
, dest
);
2129 /* ?widen@?$ctype@_W@std@@QBE_WD@Z */
2130 /* ?widen@?$ctype@_W@std@@QEBA_WD@Z */
2131 /* ?widen@?$ctype@G@std@@QBEGD@Z */
2132 /* ?widen@?$ctype@G@std@@QEBAGD@Z */
2133 DEFINE_THISCALL_WRAPPER(ctype_wchar_widen_ch
, 8)
2134 wchar_t __thiscall
ctype_wchar_widen_ch(const ctype_wchar
*this, char ch
)
2136 TRACE("(%p %d)\n", this, ch
);
2137 return call_ctype_wchar_do_widen_ch(this, ch
);
2140 /* ?widen@?$ctype@_W@std@@QBEPBDPBD0PA_W@Z */
2141 /* ?widen@?$ctype@_W@std@@QEBAPEBDPEBD0PEA_W@Z */
2142 /* ?widen@?$ctype@G@std@@QBEPBDPBD0PAG@Z */
2143 /* ?widen@?$ctype@G@std@@QEBAPEBDPEBD0PEAG@Z */
2144 DEFINE_THISCALL_WRAPPER(ctype_wchar_widen
, 16)
2145 const char* __thiscall
ctype_wchar_widen(const ctype_wchar
*this,
2146 const char *first
, const char *last
, wchar_t *dest
)
2148 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
2149 return call_ctype_wchar_do_widen(this, first
, last
, dest
);
2152 /* ?_Widen_s@?$ctype@_W@std@@QBEPBDPBD0PA_WI@Z */
2153 /* ?_Widen_s@?$ctype@_W@std@@QEBAPEBDPEBD0PEA_W_K@Z */
2154 /* ?_Widen_s@?$ctype@G@std@@QBEPBDPBD0PAGI@Z */
2155 /* ?_Widen_s@?$ctype@G@std@@QEBAPEBDPEBD0PEAG_K@Z */
2156 DEFINE_THISCALL_WRAPPER(ctype_wchar__Widen_s
, 20)
2157 const char* __thiscall
ctype_wchar__Widen_s(const ctype_wchar
*this,
2158 const char *first
, const char *last
, wchar_t *dest
, MSVCP_size_t size
)
2160 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
2161 return call_ctype_wchar__Do_widen_s(this, first
, last
, dest
, size
);
2164 /* ?_Getcat@?$ctype@_W@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
2165 /* ?_Getcat@?$ctype@_W@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
2166 MSVCP_size_t __cdecl
ctype_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
2168 TRACE("(%p %p)\n", facet
, loc
);
2170 if(facet
&& !*facet
) {
2173 *facet
= MSVCRT_operator_new(sizeof(ctype_wchar
));
2175 ERR("Out of memory\n");
2176 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2180 _Locinfo_ctor_cstr(&locinfo
, MSVCP_basic_string_char_c_str(&loc
->ptr
->name
));
2181 ctype_wchar_ctor_locinfo((ctype_wchar
*)*facet
, &locinfo
, 0);
2182 _Locinfo_dtor(&locinfo
);
2188 /* ?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
2189 /* ?_Getcat@?$ctype@G@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
2190 MSVCP_size_t __cdecl
ctype_short__Getcat(const locale_facet
**facet
, const locale
*loc
)
2192 if(facet
&& !*facet
) {
2193 ctype_wchar__Getcat(facet
, loc
);
2194 (*(locale_facet
**)facet
)->vtable
= &MSVCP_ctype_short_vtable
;
2201 wchar_t __cdecl
_Towlower(wchar_t ch
, const _Ctypevec
*ctype
)
2203 TRACE("(%d %p)\n", ch
, ctype
);
2204 return tolowerW(ch
);
2207 /* ?do_tolower@?$ctype@_W@std@@MBE_W_W@Z */
2208 /* ?do_tolower@?$ctype@_W@std@@MEBA_W_W@Z */
2209 /* ?do_tolower@?$ctype@G@std@@MBEGG@Z */
2210 /* ?do_tolower@?$ctype@G@std@@MEBAGG@Z */
2211 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_tolower_ch
, 8)
2212 #define call_ctype_wchar_do_tolower_ch(this, ch) CALL_VTBL_FUNC(this, 24, \
2213 wchar_t, (const ctype_wchar*, wchar_t), (this, ch))
2214 wchar_t __thiscall
ctype_wchar_do_tolower_ch(const ctype_wchar
*this, wchar_t ch
)
2216 return _Towlower(ch
, &this->ctype
);
2219 /* ?do_tolower@?$ctype@_W@std@@MBEPB_WPA_WPB_W@Z */
2220 /* ?do_tolower@?$ctype@_W@std@@MEBAPEB_WPEA_WPEB_W@Z */
2221 /* ?do_tolower@?$ctype@G@std@@MBEPBGPAGPBG@Z */
2222 /* ?do_tolower@?$ctype@G@std@@MEBAPEBGPEAGPEBG@Z */
2223 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_tolower
, 12)
2224 #define call_ctype_wchar_do_tolower(this, first, last) CALL_VTBL_FUNC(this, 20, \
2225 const wchar_t*, (const ctype_wchar*, wchar_t*, const wchar_t*), \
2226 (this, first, last))
2227 const wchar_t* __thiscall
ctype_wchar_do_tolower(const ctype_wchar
*this,
2228 wchar_t *first
, const wchar_t *last
)
2230 TRACE("(%p %p %p)\n", this, first
, last
);
2231 for(; first
<last
; first
++)
2232 *first
= _Towlower(*first
, &this->ctype
);
2236 /* ?tolower@?$ctype@_W@std@@QBE_W_W@Z */
2237 /* ?tolower@?$ctype@_W@std@@QEBA_W_W@Z */
2238 /* ?tolower@?$ctype@G@std@@QBEGG@Z */
2239 /* ?tolower@?$ctype@G@std@@QEBAGG@Z */
2240 DEFINE_THISCALL_WRAPPER(ctype_wchar_tolower_ch
, 8)
2241 wchar_t __thiscall
ctype_wchar_tolower_ch(const ctype_wchar
*this, wchar_t ch
)
2243 TRACE("(%p %d)\n", this, ch
);
2244 return call_ctype_wchar_do_tolower_ch(this, ch
);
2247 /* ?tolower@?$ctype@_W@std@@QBEPB_WPA_WPB_W@Z */
2248 /* ?tolower@?$ctype@_W@std@@QEBAPEB_WPEA_WPEB_W@Z */
2249 /* ?tolower@?$ctype@G@std@@QBEPBGPAGPBG@Z */
2250 /* ?tolower@?$ctype@G@std@@QEBAPEBGPEAGPEBG@Z */
2251 DEFINE_THISCALL_WRAPPER(ctype_wchar_tolower
, 12)
2252 const wchar_t* __thiscall
ctype_wchar_tolower(const ctype_wchar
*this,
2253 wchar_t *first
, const wchar_t *last
)
2255 TRACE("(%p %p %p)\n", this, first
, last
);
2256 return call_ctype_wchar_do_tolower(this, first
, last
);
2260 wchar_t __cdecl
_Towupper(wchar_t ch
, const _Ctypevec
*ctype
)
2262 TRACE("(%d %p)\n", ch
, ctype
);
2263 return toupperW(ch
);
2266 /* ?do_toupper@?$ctype@_W@std@@MBE_W_W@Z */
2267 /* ?do_toupper@?$ctype@_W@std@@MEBA_W_W@Z */
2268 /* ?do_toupper@?$ctype@G@std@@MBEGG@Z */
2269 /* ?do_toupper@?$ctype@G@std@@MEBAGG@Z */
2270 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_toupper_ch
, 8)
2271 #define call_ctype_wchar_do_toupper_ch(this, ch) CALL_VTBL_FUNC(this, 32, \
2272 wchar_t, (const ctype_wchar*, wchar_t), (this, ch))
2273 wchar_t __thiscall
ctype_wchar_do_toupper_ch(const ctype_wchar
*this, wchar_t ch
)
2275 return _Towupper(ch
, &this->ctype
);
2278 /* ?do_toupper@?$ctype@_W@std@@MBEPB_WPA_WPB_W@Z */
2279 /* ?do_toupper@?$ctype@_W@std@@MEBAPEB_WPEA_WPEB_W@Z */
2280 /* ?do_toupper@?$ctype@G@std@@MBEPBGPAGPBG@Z */
2281 /* ?do_toupper@?$ctype@G@std@@MEBAPEBGPEAGPEBG@Z */
2282 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_toupper
, 12)
2283 #define call_ctype_wchar_do_toupper(this, first, last) CALL_VTBL_FUNC(this, 28, \
2284 const wchar_t*, (const ctype_wchar*, wchar_t*, const wchar_t*), \
2285 (this, first, last))
2286 const wchar_t* __thiscall
ctype_wchar_do_toupper(const ctype_wchar
*this,
2287 wchar_t *first
, const wchar_t *last
)
2289 TRACE("(%p %p %p)\n", this, first
, last
);
2290 for(; first
<last
; first
++)
2291 *first
= _Towupper(*first
, &this->ctype
);
2295 /* ?toupper@?$ctype@_W@std@@QBE_W_W@Z */
2296 /* ?toupper@?$ctype@_W@std@@QEBA_W_W@Z */
2297 /* ?toupper@?$ctype@G@std@@QBEGG@Z */
2298 /* ?toupper@?$ctype@G@std@@QEBAGG@Z */
2299 DEFINE_THISCALL_WRAPPER(ctype_wchar_toupper_ch
, 8)
2300 wchar_t __thiscall
ctype_wchar_toupper_ch(const ctype_wchar
*this, wchar_t ch
)
2302 TRACE("(%p %d)\n", this, ch
);
2303 return call_ctype_wchar_do_toupper_ch(this, ch
);
2306 /* ?toupper@?$ctype@_W@std@@QBEPB_WPA_WPB_W@Z */
2307 /* ?toupper@?$ctype@_W@std@@QEBAPEB_WPEA_WPEB_W@Z */
2308 /* ?toupper@?$ctype@G@std@@QBEPBGPAGPBG@Z */
2309 /* ?toupper@?$ctype@G@std@@QEBAPEBGPEAGPEBG@Z */
2310 DEFINE_THISCALL_WRAPPER(ctype_wchar_toupper
, 12)
2311 const wchar_t* __thiscall
ctype_wchar_toupper(const ctype_wchar
*this,
2312 wchar_t *first
, const wchar_t *last
)
2314 TRACE("(%p %p %p)\n", this, first
, last
);
2315 return call_ctype_wchar_do_toupper(this, first
, last
);
2319 const wchar_t* __cdecl
_Getwctypes(const wchar_t *first
, const wchar_t *last
,
2320 short *mask
, const _Ctypevec
*ctype
)
2322 TRACE("(%p %p %p %p)\n", first
, last
, mask
, ctype
);
2323 GetStringTypeW(CT_CTYPE1
, first
, last
-first
, (WORD
*)mask
);
2328 short __cdecl
_Getwctype(wchar_t ch
, const _Ctypevec
*ctype
)
2331 _Getwctypes(&ch
, &ch
+1, &mask
, ctype
);
2335 /* ?do_is@?$ctype@_W@std@@MBE_NF_W@Z */
2336 /* ?do_is@?$ctype@_W@std@@MEBA_NF_W@Z */
2337 /* ?do_is@?$ctype@G@std@@MBE_NFG@Z */
2338 /* ?do_is@?$ctype@G@std@@MEBA_NFG@Z */
2339 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_is_ch
, 12)
2340 #define call_ctype_wchar_do_is_ch(this, mask, ch) CALL_VTBL_FUNC(this, 8, \
2341 MSVCP_bool, (const ctype_wchar*, short, wchar_t), (this, mask, ch))
2342 MSVCP_bool __thiscall
ctype_wchar_do_is_ch(const ctype_wchar
*this, short mask
, wchar_t ch
)
2344 TRACE("(%p %x %d)\n", this, mask
, ch
);
2345 return (_Getwctype(ch
, &this->ctype
) & mask
) != 0;
2348 /* ?do_is@?$ctype@_W@std@@MBEPB_WPB_W0PAF@Z */
2349 /* ?do_is@?$ctype@_W@std@@MEBAPEB_WPEB_W0PEAF@Z */
2350 /* ?do_is@?$ctype@G@std@@MBEPBGPBG0PAF@Z */
2351 /* ?do_is@?$ctype@G@std@@MEBAPEBGPEBG0PEAF@Z */
2352 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_is
, 16)
2353 #define call_ctype_wchar_do_is(this, first, last, dest) CALL_VTBL_FUNC(this, 4, \
2354 const wchar_t*, (const ctype_wchar*, const wchar_t*, const wchar_t*, short*), \
2355 (this, first, last, dest))
2356 const wchar_t* __thiscall
ctype_wchar_do_is(const ctype_wchar
*this,
2357 const wchar_t *first
, const wchar_t *last
, short *dest
)
2359 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
2360 return _Getwctypes(first
, last
, dest
, &this->ctype
);
2363 /* ?is@?$ctype@_W@std@@QBE_NF_W@Z */
2364 /* ?is@?$ctype@_W@std@@QEBA_NF_W@Z */
2365 /* ?is@?$ctype@G@std@@QBE_NFG@Z */
2366 /* ?is@?$ctype@G@std@@QEBA_NFG@Z */
2367 DEFINE_THISCALL_WRAPPER(ctype_wchar_is_ch
, 12)
2368 MSVCP_bool __thiscall
ctype_wchar_is_ch(const ctype_wchar
*this, short mask
, wchar_t ch
)
2370 TRACE("(%p %x %d)\n", this, mask
, ch
);
2371 return call_ctype_wchar_do_is_ch(this, mask
, ch
);
2374 /* ?is@?$ctype@_W@std@@QBEPB_WPB_W0PAF@Z */
2375 /* ?is@?$ctype@_W@std@@QEBAPEB_WPEB_W0PEAF@Z */
2376 /* ?is@?$ctype@G@std@@QBEPBGPBG0PAF@Z */
2377 /* ?is@?$ctype@G@std@@QEBAPEBGPEBG0PEAF@Z */
2378 DEFINE_THISCALL_WRAPPER(ctype_wchar_is
, 16)
2379 const wchar_t* __thiscall
ctype_wchar_is(const ctype_wchar
*this,
2380 const wchar_t *first
, const wchar_t *last
, short *dest
)
2382 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
2383 return call_ctype_wchar_do_is(this, first
, last
, dest
);
2386 /* ?do_scan_is@?$ctype@_W@std@@MBEPB_WFPB_W0@Z */
2387 /* ?do_scan_is@?$ctype@_W@std@@MEBAPEB_WFPEB_W0@Z */
2388 /* ?do_scan_is@?$ctype@G@std@@MBEPBGFPBG0@Z */
2389 /* ?do_scan_is@?$ctype@G@std@@MEBAPEBGFPEBG0@Z */
2390 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_scan_is
, 16)
2391 #define call_ctype_wchar_do_scan_is(this, mask, first, last) CALL_VTBL_FUNC(this, 12, \
2392 const wchar_t*, (const ctype_wchar*, short, const wchar_t*, const wchar_t*), \
2393 (this, mask, first, last))
2394 const wchar_t* __thiscall
ctype_wchar_do_scan_is(const ctype_wchar
*this,
2395 short mask
, const wchar_t *first
, const wchar_t *last
)
2397 TRACE("(%p %d %p %p)\n", this, mask
, first
, last
);
2398 for(; first
<last
; first
++)
2399 if(!ctype_wchar_is_ch(this, mask
, *first
))
2404 /* ?scan_is@?$ctype@_W@std@@QBEPB_WFPB_W0@Z */
2405 /* ?scan_is@?$ctype@_W@std@@QEBAPEB_WFPEB_W0@Z */
2406 /* ?scan_is@?$ctype@G@std@@QBEPBGFPBG0@Z */
2407 /* ?scan_is@?$ctype@G@std@@QEBAPEBGFPEBG0@Z */
2408 DEFINE_THISCALL_WRAPPER(ctype_wchar_scan_is
, 16)
2409 const wchar_t* __thiscall
ctype_wchar_scan_is(const ctype_wchar
*this,
2410 short mask
, const wchar_t *first
, const wchar_t *last
)
2412 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
2413 return call_ctype_wchar_do_scan_is(this, mask
, first
, last
);
2416 /* ?do_scan_not@?$ctype@_W@std@@MBEPB_WFPB_W0@Z */
2417 /* ?do_scan_not@?$ctype@_W@std@@MEBAPEB_WFPEB_W0@Z */
2418 /* ?do_scan_not@?$ctype@G@std@@MBEPBGFPBG0@Z */
2419 /* ?do_scan_not@?$ctype@G@std@@MEBAPEBGFPEBG0@Z */
2420 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_scan_not
, 16)
2421 #define call_ctype_wchar_do_scan_not(this, mask, first, last) CALL_VTBL_FUNC(this, 16, \
2422 const wchar_t*, (const ctype_wchar*, short, const wchar_t*, const wchar_t*), \
2423 (this, mask, first, last))
2424 const wchar_t* __thiscall
ctype_wchar_do_scan_not(const ctype_wchar
*this,
2425 short mask
, const wchar_t *first
, const wchar_t *last
)
2427 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
2428 for(; first
<last
; first
++)
2429 if(ctype_wchar_is_ch(this, mask
, *first
))
2434 /* ?scan_not@?$ctype@_W@std@@QBEPB_WFPB_W0@Z */
2435 /* ?scan_not@?$ctype@_W@std@@QEBAPEB_WFPEB_W0@Z */
2436 /* ?scan_not@?$ctype@G@std@@QBEPBGFPBG0@Z */
2437 /* ?scan_not@?$ctype@G@std@@QEBAPEBGFPEBG0@Z */
2438 DEFINE_THISCALL_WRAPPER(ctype_wchar_scan_not
, 16)
2439 const wchar_t* __thiscall
ctype_wchar_scan_not(const ctype_wchar
*this,
2440 short mask
, const wchar_t *first
, const wchar_t *last
)
2442 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
2443 return call_ctype_wchar_do_scan_not(this, mask
, first
, last
);
2446 /* ??_7codecvt_base@std@@6B@ */
2447 extern const vtable_ptr MSVCP_codecvt_base_vtable
;
2449 /* ??0codecvt_base@std@@QAE@I@Z */
2450 /* ??0codecvt_base@std@@QEAA@_K@Z */
2451 DEFINE_THISCALL_WRAPPER(codecvt_base_ctor_refs
, 8)
2452 codecvt_base
* __thiscall
codecvt_base_ctor_refs(codecvt_base
*this, MSVCP_size_t refs
)
2454 TRACE("(%p %lu)\n", this, refs
);
2455 locale_facet_ctor_refs(&this->facet
, refs
);
2456 this->facet
.vtable
= &MSVCP_codecvt_base_vtable
;
2460 /* ??_Fcodecvt_base@std@@QAEXXZ */
2461 /* ??_Fcodecvt_base@std@@QEAAXXZ */
2462 DEFINE_THISCALL_WRAPPER(codecvt_base_ctor
, 4)
2463 codecvt_base
* __thiscall
codecvt_base_ctor(codecvt_base
*this)
2465 return codecvt_base_ctor_refs(this, 0);
2468 /* ??1codecvt_base@std@@UAE@XZ */
2469 /* ??1codecvt_base@std@@UEAA@XZ */
2470 DEFINE_THISCALL_WRAPPER(codecvt_base_dtor
, 4)
2471 void __thiscall
codecvt_base_dtor(codecvt_base
*this)
2473 TRACE("(%p)\n", this);
2474 locale_facet_dtor(&this->facet
);
2477 DEFINE_THISCALL_WRAPPER(MSVCP_codecvt_base_vector_dtor
, 8)
2478 codecvt_base
* __thiscall
MSVCP_codecvt_base_vector_dtor(codecvt_base
*this, unsigned int flags
)
2480 TRACE("(%p %x)\n", this, flags
);
2482 /* we have an array, with the number of elements stored before the first object */
2483 int i
, *ptr
= (int *)this-1;
2485 for(i
=*ptr
-1; i
>=0; i
--)
2486 codecvt_base_dtor(this+i
);
2487 MSVCRT_operator_delete(ptr
);
2489 codecvt_base_dtor(this);
2491 MSVCRT_operator_delete(this);
2497 /* ?do_always_noconv@codecvt_base@std@@MBE_NXZ */
2498 /* ?do_always_noconv@codecvt_base@std@@MEBA_NXZ */
2499 #define call_codecvt_base_do_always_noconv(this) CALL_VTBL_FUNC(this, 4, \
2500 MSVCP_bool, (const codecvt_base*), (this))
2501 DEFINE_THISCALL_WRAPPER(codecvt_base_do_always_noconv
, 4)
2502 MSVCP_bool __thiscall
codecvt_base_do_always_noconv(const codecvt_base
*this)
2504 TRACE("(%p)\n", this);
2508 /* ?always_noconv@codecvt_base@std@@QBE_NXZ */
2509 /* ?always_noconv@codecvt_base@std@@QEBA_NXZ */
2510 DEFINE_THISCALL_WRAPPER(codecvt_base_always_noconv
, 4)
2511 MSVCP_bool __thiscall
codecvt_base_always_noconv(const codecvt_base
*this)
2513 TRACE("(%p)\n", this);
2514 return call_codecvt_base_do_always_noconv(this);
2517 /* ?do_max_length@codecvt_base@std@@MBEHXZ */
2518 /* ?do_max_length@codecvt_base@std@@MEBAHXZ */
2519 #define call_codecvt_base_do_max_length(this) CALL_VTBL_FUNC(this, 8, \
2520 int, (const codecvt_base*), (this))
2521 DEFINE_THISCALL_WRAPPER(codecvt_base_do_max_length
, 4)
2522 int __thiscall
codecvt_base_do_max_length(const codecvt_base
*this)
2524 TRACE("(%p)\n", this);
2528 /* ?max_length@codecvt_base@std@@QBEHXZ */
2529 /* ?max_length@codecvt_base@std@@QEBAHXZ */
2530 DEFINE_THISCALL_WRAPPER(codecvt_base_max_length
, 4)
2531 int __thiscall
codecvt_base_max_length(const codecvt_base
*this)
2533 TRACE("(%p)\n", this);
2534 return call_codecvt_base_do_max_length(this);
2537 /* ?do_encoding@codecvt_base@std@@MBEHXZ */
2538 /* ?do_encoding@codecvt_base@std@@MEBAHXZ */
2539 #define call_codecvt_base_do_encoding(this) CALL_VTBL_FUNC(this, 12, \
2540 int, (const codecvt_base*), (this))
2541 DEFINE_THISCALL_WRAPPER(codecvt_base_do_encoding
, 4)
2542 int __thiscall
codecvt_base_do_encoding(const codecvt_base
*this)
2544 TRACE("(%p)\n", this);
2548 /* ?encoding@codecvt_base@std@@QBEHXZ */
2549 /* ?encoding@codecvt_base@std@@QEBAHXZ */
2550 DEFINE_THISCALL_WRAPPER(codecvt_base_encoding
, 4)
2551 int __thiscall
codecvt_base_encoding(const codecvt_base
*this)
2553 TRACE("(%p)\n", this);
2554 return call_codecvt_base_do_encoding(this);
2557 /* ?id@?$numpunct@D@std@@2V0locale@2@A */
2558 locale_id numpunct_char_id
= {0};
2560 /* ??_7?$numpunct@D@std@@6B@ */
2561 extern const vtable_ptr MSVCP_numpunct_char_vtable
;
2563 /* ?_Init@?$numpunct@D@std@@IAEXABV_Locinfo@2@_N@Z */
2564 /* ?_Init@?$numpunct@D@std@@IEAAXAEBV_Locinfo@2@_N@Z */
2565 DEFINE_THISCALL_WRAPPER(numpunct_char__Init
, 12)
2566 void __thiscall
numpunct_char__Init(numpunct_char
*this, _Locinfo
*locinfo
, MSVCP_bool isdef
)
2570 TRACE("(%p %p %d)\n", this, locinfo
, isdef
);
2572 len
= strlen(_Locinfo__Getfalse(locinfo
))+1;
2573 this->false_name
= MSVCRT_operator_new(len
);
2574 if(this->false_name
)
2575 memcpy((char*)this->false_name
, _Locinfo__Getfalse(locinfo
), len
);
2577 len
= strlen(_Locinfo__Gettrue(locinfo
))+1;
2578 this->true_name
= MSVCRT_operator_new(len
);
2580 memcpy((char*)this->true_name
, _Locinfo__Gettrue(locinfo
), len
);
2583 this->grouping
= MSVCRT_operator_new(1);
2585 *(char*)this->grouping
= 0;
2590 const struct lconv
*lc
= _Locinfo__Getlconv(locinfo
);
2592 len
= strlen(lc
->grouping
)+1;
2593 this->grouping
= MSVCRT_operator_new(len
);
2595 memcpy((char*)this->grouping
, lc
->grouping
, len
);
2597 this->dp
= lc
->decimal_point
[0];
2598 this->sep
= lc
->thousands_sep
[0];
2601 if(!this->false_name
|| !this->true_name
|| !this->grouping
) {
2602 MSVCRT_operator_delete((char*)this->grouping
);
2603 MSVCRT_operator_delete((char*)this->false_name
);
2604 MSVCRT_operator_delete((char*)this->true_name
);
2606 ERR("Out of memory\n");
2607 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2611 /* ?_Tidy@?$numpunct@D@std@@AAEXXZ */
2612 /* ?_Tidy@?$numpunct@D@std@@AEAAXXZ */
2613 DEFINE_THISCALL_WRAPPER(numpunct_char__Tidy
, 4)
2614 void __thiscall
numpunct_char__Tidy(numpunct_char
*this)
2616 TRACE("(%p)\n", this);
2618 MSVCRT_operator_delete((char*)this->grouping
);
2619 MSVCRT_operator_delete((char*)this->false_name
);
2620 MSVCRT_operator_delete((char*)this->true_name
);
2623 /* ??0?$numpunct@D@std@@QAE@ABV_Locinfo@1@I_N@Z */
2624 /* ??0?$numpunct@D@std@@QEAA@AEBV_Locinfo@1@_K_N@Z */
2625 DEFINE_THISCALL_WRAPPER(numpunct_char_ctor_locinfo
, 16)
2626 numpunct_char
* __thiscall
numpunct_char_ctor_locinfo(numpunct_char
*this,
2627 _Locinfo
*locinfo
, MSVCP_size_t refs
, MSVCP_bool usedef
)
2629 TRACE("(%p %p %lu %d)\n", this, locinfo
, refs
, usedef
);
2630 locale_facet_ctor_refs(&this->facet
, refs
);
2631 this->facet
.vtable
= &MSVCP_numpunct_char_vtable
;
2632 numpunct_char__Init(this, locinfo
, usedef
);
2636 /* ??0?$numpunct@D@std@@IAE@PBDI_N@Z */
2637 /* ??0?$numpunct@D@std@@IEAA@PEBD_K_N@Z */
2638 DEFINE_THISCALL_WRAPPER(numpunct_char_ctor_name
, 16)
2639 numpunct_char
* __thiscall
numpunct_char_ctor_name(numpunct_char
*this,
2640 const char *name
, MSVCP_size_t refs
, MSVCP_bool usedef
)
2644 TRACE("(%p %s %lu %d)\n", this, debugstr_a(name
), refs
, usedef
);
2645 locale_facet_ctor_refs(&this->facet
, refs
);
2646 this->facet
.vtable
= &MSVCP_numpunct_char_vtable
;
2648 _Locinfo_ctor_cstr(&locinfo
, name
);
2649 numpunct_char__Init(this, &locinfo
, usedef
);
2650 _Locinfo_dtor(&locinfo
);
2654 /* ??0?$numpunct@D@std@@QAE@I@Z */
2655 /* ??0?$numpunct@D@std@@QEAA@_K@Z */
2656 DEFINE_THISCALL_WRAPPER(numpunct_char_ctor_refs
, 8)
2657 numpunct_char
* __thiscall
numpunct_char_ctor_refs(numpunct_char
*this, MSVCP_size_t refs
)
2659 TRACE("(%p %lu)\n", this, refs
);
2660 return numpunct_char_ctor_name(this, "C", refs
, FALSE
);
2663 /* ??_F?$numpunct@D@std@@QAEXXZ */
2664 /* ??_F?$numpunct@D@std@@QEAAXXZ */
2665 DEFINE_THISCALL_WRAPPER(numpunct_char_ctor
, 4)
2666 numpunct_char
* __thiscall
numpunct_char_ctor(numpunct_char
*this)
2668 return numpunct_char_ctor_refs(this, 0);
2671 /* ??1?$numpunct@D@std@@MAE@XZ */
2672 /* ??1?$numpunct@D@std@@MEAA@XZ */
2673 DEFINE_THISCALL_WRAPPER(numpunct_char_dtor
, 4)
2674 void __thiscall
numpunct_char_dtor(numpunct_char
*this)
2676 TRACE("(%p)\n", this);
2677 numpunct_char__Tidy(this);
2680 DEFINE_THISCALL_WRAPPER(MSVCP_numpunct_char_vector_dtor
, 8)
2681 numpunct_char
* __thiscall
MSVCP_numpunct_char_vector_dtor(numpunct_char
*this, unsigned int flags
)
2683 TRACE("(%p %x)\n", this, flags
);
2685 /* we have an array, with the number of elements stored before the first object */
2686 int i
, *ptr
= (int *)this-1;
2688 for(i
=*ptr
-1; i
>=0; i
--)
2689 numpunct_char_dtor(this+i
);
2690 MSVCRT_operator_delete(ptr
);
2692 numpunct_char_dtor(this);
2694 MSVCRT_operator_delete(this);
2700 /* ?_Getcat@?$numpunct@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
2701 /* ?_Getcat@?$numpunct@D@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
2702 MSVCP_size_t __cdecl
numpunct_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
2704 TRACE("(%p %p)\n", facet
, loc
);
2706 if(facet
&& !*facet
) {
2707 *facet
= MSVCRT_operator_new(sizeof(numpunct_char
));
2709 ERR("Out of memory\n");
2710 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2713 numpunct_char_ctor_name((numpunct_char
*)*facet
,
2714 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0, TRUE
);
2720 /* ?do_decimal_point@?$numpunct@D@std@@MBEDXZ */
2721 /* ?do_decimal_point@?$numpunct@D@std@@MEBADXZ */
2722 DEFINE_THISCALL_WRAPPER(numpunct_char_do_decimal_point
, 4)
2723 #define call_numpunct_char_do_decimal_point(this) CALL_VTBL_FUNC(this, 4, \
2724 char, (const numpunct_char *this), (this))
2725 char __thiscall
numpunct_char_do_decimal_point(const numpunct_char
*this)
2727 TRACE("(%p)\n", this);
2731 /* ?decimal_point@?$numpunct@D@std@@QBEDXZ */
2732 /* ?decimal_point@?$numpunct@D@std@@QEBADXZ */
2733 DEFINE_THISCALL_WRAPPER(numpunct_char_decimal_point
, 4)
2734 char __thiscall
numpunct_char_decimal_point(const numpunct_char
*this)
2736 TRACE("(%p)\n", this);
2737 return call_numpunct_char_do_decimal_point(this);
2740 /* ?do_thousands_sep@?$numpunct@D@std@@MBEDXZ */
2741 /* ?do_thousands_sep@?$numpunct@D@std@@MEBADXZ */
2742 DEFINE_THISCALL_WRAPPER(numpunct_char_do_thousands_sep
, 4)
2743 #define call_numpunct_char_do_thousands_sep(this) CALL_VTBL_FUNC(this, 8, \
2744 char, (const numpunct_char*), (this))
2745 char __thiscall
numpunct_char_do_thousands_sep(const numpunct_char
*this)
2747 TRACE("(%p)\n", this);
2751 /* ?thousands_sep@?$numpunct@D@std@@QBEDXZ */
2752 /* ?thousands_sep@?$numpunct@D@std@@QEBADXZ */
2753 DEFINE_THISCALL_WRAPPER(numpunct_char_thousands_sep
, 4)
2754 char __thiscall
numpunct_char_thousands_sep(const numpunct_char
*this)
2756 TRACE("(%p)\n", this);
2757 return call_numpunct_char_do_thousands_sep(this);
2760 /* ?do_grouping@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2761 /* ?do_grouping@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2762 DEFINE_THISCALL_WRAPPER(numpunct_char_do_grouping
, 8)
2763 #define call_numpunct_char_do_grouping(this, ret) CALL_VTBL_FUNC(this, 12, \
2764 basic_string_char*, (const numpunct_char*, basic_string_char*), (this, ret))
2765 basic_string_char
* __thiscall
numpunct_char_do_grouping(
2766 const numpunct_char
*this, basic_string_char
*ret
)
2768 TRACE("(%p)\n", this);
2769 return MSVCP_basic_string_char_ctor_cstr(ret
, this->grouping
);
2772 /* ?grouping@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2773 /* ?grouping@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2774 DEFINE_THISCALL_WRAPPER(numpunct_char_grouping
, 8)
2775 basic_string_char
* __thiscall
numpunct_char_grouping(const numpunct_char
*this, basic_string_char
*ret
)
2777 TRACE("(%p)\n", this);
2778 return call_numpunct_char_do_grouping(this, ret
);
2781 /* ?do_falsename@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2782 /* ?do_falsename@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2783 DEFINE_THISCALL_WRAPPER(numpunct_char_do_falsename
, 8)
2784 #define call_numpunct_char_do_falsename(this, ret) CALL_VTBL_FUNC(this, 16, \
2785 basic_string_char*, (const numpunct_char*, basic_string_char*), (this, ret))
2786 basic_string_char
* __thiscall
numpunct_char_do_falsename(
2787 const numpunct_char
*this, basic_string_char
*ret
)
2789 TRACE("(%p)\n", this);
2790 return MSVCP_basic_string_char_ctor_cstr(ret
, this->false_name
);
2793 /* ?falsename@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2794 /* ?falsename@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2795 DEFINE_THISCALL_WRAPPER(numpunct_char_falsename
, 8)
2796 basic_string_char
* __thiscall
numpunct_char_falsename(const numpunct_char
*this, basic_string_char
*ret
)
2798 TRACE("(%p)\n", this);
2799 return call_numpunct_char_do_falsename(this, ret
);
2802 /* ?do_truename@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2803 /* ?do_truename@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2804 DEFINE_THISCALL_WRAPPER(numpunct_char_do_truename
, 8)
2805 #define call_numpunct_char_do_truename(this, ret) CALL_VTBL_FUNC(this, 20, \
2806 basic_string_char*, (const numpunct_char*, basic_string_char*), (this, ret))
2807 basic_string_char
* __thiscall
numpunct_char_do_truename(
2808 const numpunct_char
*this, basic_string_char
*ret
)
2810 TRACE("(%p)\n", this);
2811 return MSVCP_basic_string_char_ctor_cstr(ret
, this->true_name
);
2814 /* ?truename@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2815 /* ?truename@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2816 DEFINE_THISCALL_WRAPPER(numpunct_char_truename
, 8)
2817 basic_string_char
* __thiscall
numpunct_char_truename(const numpunct_char
*this, basic_string_char
*ret
)
2819 TRACE("(%p)\n", this);
2820 return call_numpunct_char_do_truename(this, ret
);
2823 /* ?id@?$numpunct@_W@std@@2V0locale@2@A */
2824 locale_id numpunct_wchar_id
= {0};
2825 /* ?id@?$numpunct@G@std@@2V0locale@2@A */
2826 locale_id numpunct_short_id
= {0};
2828 /* ??_7?$numpunct@_W@std@@6B@ */
2829 extern const vtable_ptr MSVCP_numpunct_wchar_vtable
;
2830 /* ??_7?$numpunct@G@std@@6B@ */
2831 extern const vtable_ptr MSVCP_numpunct_short_vtable
;
2833 /* ?_Init@?$numpunct@_W@std@@IAEXABV_Locinfo@2@_N@Z */
2834 /* ?_Init@?$numpunct@_W@std@@IEAAXAEBV_Locinfo@2@_N@Z */
2835 /* ?_Init@?$numpunct@G@std@@IAEXABV_Locinfo@2@_N@Z */
2836 /* ?_Init@?$numpunct@G@std@@IEAAXAEBV_Locinfo@2@_N@Z */
2837 DEFINE_THISCALL_WRAPPER(numpunct_wchar__Init
, 12)
2838 void __thiscall
numpunct_wchar__Init(numpunct_wchar
*this, _Locinfo
*locinfo
, MSVCP_bool isdef
)
2840 const char *to_convert
;
2844 TRACE("(%p %p %d)\n", this, locinfo
, isdef
);
2846 _Locinfo__Getcvt(locinfo
, &cvt
);
2848 to_convert
= _Locinfo__Getfalse(locinfo
);
2849 len
= MultiByteToWideChar(cvt
.page
, 0, to_convert
, -1, NULL
, 0);
2850 this->false_name
= MSVCRT_operator_new(len
*sizeof(WCHAR
));
2851 if(this->false_name
)
2852 MultiByteToWideChar(cvt
.page
, 0, to_convert
, -1,
2853 (wchar_t*)this->false_name
, len
);
2855 to_convert
= _Locinfo__Gettrue(locinfo
);
2856 len
= MultiByteToWideChar(cvt
.page
, 0, to_convert
, -1, NULL
, 0);
2857 this->true_name
= MSVCRT_operator_new(len
*sizeof(WCHAR
));
2859 MultiByteToWideChar(cvt
.page
, 0, to_convert
, -1,
2860 (wchar_t*)this->true_name
, len
);
2863 this->grouping
= MSVCRT_operator_new(1);
2865 *(char*)this->grouping
= 0;
2870 const struct lconv
*lc
= _Locinfo__Getlconv(locinfo
);
2872 len
= strlen(lc
->grouping
)+1;
2873 this->grouping
= MSVCRT_operator_new(len
);
2875 memcpy((char*)this->grouping
, lc
->grouping
, len
);
2877 this->dp
= lc
->decimal_point
[0];
2878 this->sep
= lc
->thousands_sep
[0];
2881 if(!this->false_name
|| !this->true_name
|| !this->grouping
) {
2882 MSVCRT_operator_delete((char*)this->grouping
);
2883 MSVCRT_operator_delete((wchar_t*)this->false_name
);
2884 MSVCRT_operator_delete((wchar_t*)this->true_name
);
2886 ERR("Out of memory\n");
2887 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2891 /* ?_Tidy@?$numpunct@_W@std@@AAEXXZ */
2892 /* ?_Tidy@?$numpunct@_W@std@@AEAAXXZ */
2893 /* ?_Tidy@?$numpunct@G@std@@AAEXXZ */
2894 /* ?_Tidy@?$numpunct@G@std@@AEAAXXZ */
2895 DEFINE_THISCALL_WRAPPER(numpunct_wchar__Tidy
, 4)
2896 void __thiscall
numpunct_wchar__Tidy(numpunct_wchar
*this)
2898 TRACE("(%p)\n", this);
2900 MSVCRT_operator_delete((char*)this->grouping
);
2901 MSVCRT_operator_delete((wchar_t*)this->false_name
);
2902 MSVCRT_operator_delete((wchar_t*)this->true_name
);
2905 /* ??0?$numpunct@_W@std@@QAE@ABV_Locinfo@1@I_N@Z */
2906 /* ??0?$numpunct@_W@std@@QEAA@AEBV_Locinfo@1@_K_N@Z */
2907 DEFINE_THISCALL_WRAPPER(numpunct_wchar_ctor_locinfo
, 16)
2908 numpunct_wchar
* __thiscall
numpunct_wchar_ctor_locinfo(numpunct_wchar
*this,
2909 _Locinfo
*locinfo
, MSVCP_size_t refs
, MSVCP_bool usedef
)
2911 TRACE("(%p %p %lu %d)\n", this, locinfo
, refs
, usedef
);
2912 locale_facet_ctor_refs(&this->facet
, refs
);
2913 this->facet
.vtable
= &MSVCP_numpunct_wchar_vtable
;
2914 numpunct_wchar__Init(this, locinfo
, usedef
);
2918 /* ??0?$numpunct@G@std@@QAE@ABV_Locinfo@1@I_N@Z */
2919 /* ??0?$numpunct@G@std@@QEAA@AEBV_Locinfo@1@_K_N@Z */
2920 DEFINE_THISCALL_WRAPPER(numpunct_short_ctor_locinfo
, 16)
2921 numpunct_wchar
* __thiscall
numpunct_short_ctor_locinfo(numpunct_wchar
*this,
2922 _Locinfo
*locinfo
, MSVCP_size_t refs
, MSVCP_bool usedef
)
2924 numpunct_wchar_ctor_locinfo(this, locinfo
, refs
, usedef
);
2925 this->facet
.vtable
= &MSVCP_numpunct_short_vtable
;
2929 /* ??0?$numpunct@_W@std@@IAE@PBDI_N@Z */
2930 /* ??0?$numpunct@_W@std@@IEAA@PEBD_K_N@Z */
2931 DEFINE_THISCALL_WRAPPER(numpunct_wchar_ctor_name
, 16)
2932 numpunct_wchar
* __thiscall
numpunct_wchar_ctor_name(numpunct_wchar
*this,
2933 const char *name
, MSVCP_size_t refs
, MSVCP_bool usedef
)
2937 TRACE("(%p %s %lu %d)\n", this, debugstr_a(name
), refs
, usedef
);
2938 locale_facet_ctor_refs(&this->facet
, refs
);
2939 this->facet
.vtable
= &MSVCP_numpunct_wchar_vtable
;
2941 _Locinfo_ctor_cstr(&locinfo
, name
);
2942 numpunct_wchar__Init(this, &locinfo
, usedef
);
2943 _Locinfo_dtor(&locinfo
);
2947 /* ??0?$numpunct@G@std@@IAE@PBDI_N@Z */
2948 /* ??0?$numpunct@G@std@@IEAA@PEBD_K_N@Z */
2949 DEFINE_THISCALL_WRAPPER(numpunct_short_ctor_name
, 16)
2950 numpunct_wchar
* __thiscall
numpunct_short_ctor_name(numpunct_wchar
*this,
2951 const char *name
, MSVCP_size_t refs
, MSVCP_bool usedef
)
2953 numpunct_wchar_ctor_name(this, name
, refs
, usedef
);
2954 this->facet
.vtable
= &MSVCP_numpunct_short_vtable
;
2958 /* ??0?$numpunct@_W@std@@QAE@I@Z */
2959 /* ??0?$numpunct@_W@std@@QEAA@_K@Z */
2960 DEFINE_THISCALL_WRAPPER(numpunct_wchar_ctor_refs
, 8)
2961 numpunct_wchar
* __thiscall
numpunct_wchar_ctor_refs(numpunct_wchar
*this, MSVCP_size_t refs
)
2963 TRACE("(%p %lu)\n", this, refs
);
2964 return numpunct_wchar_ctor_name(this, "C", refs
, FALSE
);
2967 /* ??0?$numpunct@G@std@@QAE@I@Z */
2968 /* ??0?$numpunct@G@std@@QEAA@_K@Z */
2969 DEFINE_THISCALL_WRAPPER(numpunct_short_ctor_refs
, 8)
2970 numpunct_wchar
* __thiscall
numpunct_short_ctor_refs(numpunct_wchar
*this, MSVCP_size_t refs
)
2972 numpunct_wchar_ctor_refs(this, refs
);
2973 this->facet
.vtable
= &MSVCP_numpunct_short_vtable
;
2977 /* ??_F?$numpunct@_W@std@@QAEXXZ */
2978 /* ??_F?$numpunct@_W@std@@QEAAXXZ */
2979 DEFINE_THISCALL_WRAPPER(numpunct_wchar_ctor
, 4)
2980 numpunct_wchar
* __thiscall
numpunct_wchar_ctor(numpunct_wchar
*this)
2982 return numpunct_wchar_ctor_refs(this, 0);
2985 /* ??_F?$numpunct@G@std@@QAEXXZ */
2986 /* ??_F?$numpunct@G@std@@QEAAXXZ */
2987 DEFINE_THISCALL_WRAPPER(numpunct_short_ctor
, 4)
2988 numpunct_wchar
* __thiscall
numpunct_short_ctor(numpunct_wchar
*this)
2990 return numpunct_short_ctor_refs(this, 0);
2993 /* ??1?$numpunct@_W@std@@MAE@XZ */
2994 /* ??1?$numpunct@_W@std@@MEAA@XZ */
2995 /* ??1?$numpunct@G@std@@MAE@XZ */
2996 /* ??1?$numpunct@G@std@@MEAA@XZ */
2997 DEFINE_THISCALL_WRAPPER(numpunct_wchar_dtor
, 4)
2998 void __thiscall
numpunct_wchar_dtor(numpunct_wchar
*this)
3000 TRACE("(%p)\n", this);
3001 numpunct_wchar__Tidy(this);
3004 DEFINE_THISCALL_WRAPPER(MSVCP_numpunct_wchar_vector_dtor
, 8)
3005 numpunct_wchar
* __thiscall
MSVCP_numpunct_wchar_vector_dtor(numpunct_wchar
*this, unsigned int flags
)
3007 TRACE("(%p %x)\n", this, flags
);
3009 /* we have an array, with the number of elements stored before the first object */
3010 int i
, *ptr
= (int *)this-1;
3012 for(i
=*ptr
-1; i
>=0; i
--)
3013 numpunct_wchar_dtor(this+i
);
3014 MSVCRT_operator_delete(ptr
);
3016 numpunct_wchar_dtor(this);
3018 MSVCRT_operator_delete(this);
3024 DEFINE_THISCALL_WRAPPER(MSVCP_numpunct_short_vector_dtor
, 8)
3025 numpunct_wchar
* __thiscall
MSVCP_numpunct_short_vector_dtor(numpunct_wchar
*this, unsigned int flags
)
3027 return MSVCP_numpunct_wchar_vector_dtor(this, flags
);
3030 /* ?_Getcat@?$numpunct@_W@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3031 /* ?_Getcat@?$numpunct@_W@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3032 MSVCP_size_t __cdecl
numpunct_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
3034 TRACE("(%p %p)\n", facet
, loc
);
3036 if(facet
&& !*facet
) {
3037 *facet
= MSVCRT_operator_new(sizeof(numpunct_wchar
));
3039 ERR("Out of memory\n");
3040 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
3043 numpunct_wchar_ctor_name((numpunct_wchar
*)*facet
,
3044 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0, TRUE
);
3050 /* ?_Getcat@?$numpunct@G@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3051 /* ?_Getcat@?$numpunct@G@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3052 MSVCP_size_t __cdecl
numpunct_short__Getcat(const locale_facet
**facet
, const locale
*loc
)
3054 TRACE("(%p %p)\n", facet
, loc
);
3056 if(facet
&& !*facet
) {
3057 *facet
= MSVCRT_operator_new(sizeof(numpunct_wchar
));
3059 ERR("Out of memory\n");
3060 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
3063 numpunct_short_ctor_name((numpunct_wchar
*)*facet
,
3064 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0, TRUE
);
3070 /* ?do_decimal_point@?$numpunct@_W@std@@MBE_WXZ */
3071 /* ?do_decimal_point@?$numpunct@_W@std@@MEBA_WXZ */
3072 /* ?do_decimal_point@?$numpunct@G@std@@MBEGXZ */
3073 /* ?do_decimal_point@?$numpunct@G@std@@MEBAGXZ */
3074 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_decimal_point
, 4)
3075 #define call_numpunct_wchar_do_decimal_point(this) CALL_VTBL_FUNC(this, 4, \
3076 wchar_t, (const numpunct_wchar *this), (this))
3077 wchar_t __thiscall
numpunct_wchar_do_decimal_point(const numpunct_wchar
*this)
3079 TRACE("(%p)\n", this);
3083 /* ?decimal_point@?$numpunct@_W@std@@QBE_WXZ */
3084 /* ?decimal_point@?$numpunct@_W@std@@QEBA_WXZ */
3085 /* ?decimal_point@?$numpunct@G@std@@QBEGXZ */
3086 /* ?decimal_point@?$numpunct@G@std@@QEBAGXZ */
3087 DEFINE_THISCALL_WRAPPER(numpunct_wchar_decimal_point
, 4)
3088 wchar_t __thiscall
numpunct_wchar_decimal_point(const numpunct_wchar
*this)
3090 TRACE("(%p)\n", this);
3091 return call_numpunct_wchar_do_decimal_point(this);
3094 /* ?do_thousands_sep@?$numpunct@_W@std@@MBE_WXZ */
3095 /* ?do_thousands_sep@?$numpunct@_W@std@@MEBA_WXZ */
3096 /* ?do_thousands_sep@?$numpunct@G@std@@MBEGXZ */
3097 /* ?do_thousands_sep@?$numpunct@G@std@@MEBAGXZ */
3098 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_thousands_sep
, 4)
3099 #define call_numpunct_wchar_do_thousands_sep(this) CALL_VTBL_FUNC(this, 8, \
3100 wchar_t, (const numpunct_wchar *this), (this))
3101 wchar_t __thiscall
numpunct_wchar_do_thousands_sep(const numpunct_wchar
*this)
3103 TRACE("(%p)\n", this);
3107 /* ?thousands_sep@?$numpunct@_W@std@@QBE_WXZ */
3108 /* ?thousands_sep@?$numpunct@_W@std@@QEBA_WXZ */
3109 /* ?thousands_sep@?$numpunct@G@std@@QBEGXZ */
3110 /* ?thousands_sep@?$numpunct@G@std@@QEBAGXZ */
3111 DEFINE_THISCALL_WRAPPER(numpunct_wchar_thousands_sep
, 4)
3112 wchar_t __thiscall
numpunct_wchar_thousands_sep(const numpunct_wchar
*this)
3114 TRACE("(%p)\n", this);
3115 return call_numpunct_wchar_do_thousands_sep(this);
3118 /* ?do_grouping@?$numpunct@_W@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3119 /* ?do_grouping@?$numpunct@_W@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3120 /* ?do_grouping@?$numpunct@G@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3121 /* ?do_grouping@?$numpunct@G@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3122 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_grouping
, 8)
3123 #define call_numpunct_wchar_do_grouping(this, ret) CALL_VTBL_FUNC(this, 12, \
3124 basic_string_char*, (const numpunct_wchar*, basic_string_char*), (this, ret))
3125 basic_string_char
* __thiscall
numpunct_wchar_do_grouping(const numpunct_wchar
*this, basic_string_char
*ret
)
3127 TRACE("(%p)\n", this);
3128 return MSVCP_basic_string_char_ctor_cstr(ret
, this->grouping
);
3131 /* ?grouping@?$numpunct@_W@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3132 /* ?grouping@?$numpunct@_W@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3133 /* ?grouping@?$numpunct@G@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3134 /* ?grouping@?$numpunct@G@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3135 DEFINE_THISCALL_WRAPPER(numpunct_wchar_grouping
, 8)
3136 basic_string_char
* __thiscall
numpunct_wchar_grouping(const numpunct_wchar
*this, basic_string_char
*ret
)
3138 TRACE("(%p)\n", this);
3139 return call_numpunct_wchar_do_grouping(this, ret
);
3142 /* ?do_falsename@?$numpunct@_W@std@@MBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3143 /* ?do_falsename@?$numpunct@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3144 /* ?do_falsename@?$numpunct@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3145 /* ?do_falsename@?$numpunct@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3146 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_falsename
, 8)
3147 #define call_numpunct_wchar_do_falsename(this, ret) CALL_VTBL_FUNC(this, 16, \
3148 basic_string_wchar*, (const numpunct_wchar*, basic_string_wchar*), (this, ret))
3149 basic_string_wchar
* __thiscall
numpunct_wchar_do_falsename(const numpunct_wchar
*this, basic_string_wchar
*ret
)
3151 TRACE("(%p)\n", this);
3152 return MSVCP_basic_string_wchar_ctor_cstr(ret
, this->false_name
);
3155 /* ?falsename@?$numpunct@_W@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3156 /* ?falsename@?$numpunct@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3157 /* ?falsename@?$numpunct@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3158 /* ?falsename@?$numpunct@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3159 DEFINE_THISCALL_WRAPPER(numpunct_wchar_falsename
, 8)
3160 basic_string_wchar
* __thiscall
numpunct_wchar_falsename(const numpunct_wchar
*this, basic_string_wchar
*ret
)
3162 TRACE("(%p)\n", this);
3163 return call_numpunct_wchar_do_falsename(this, ret
);
3166 /* ?do_truename@?$numpunct@_W@std@@MBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3167 /* ?do_truename@?$numpunct@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3168 /* ?do_truename@?$numpunct@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3169 /* ?do_truename@?$numpunct@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3170 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_truename
, 8)
3171 #define call_numpunct_wchar_do_truename(this, ret) CALL_VTBL_FUNC(this, 20, \
3172 basic_string_wchar*, (const numpunct_wchar*, basic_string_wchar*), (this, ret))
3173 basic_string_wchar
* __thiscall
numpunct_wchar_do_truename(const numpunct_wchar
*this, basic_string_wchar
*ret
)
3175 TRACE("(%p)\n", this);
3176 return MSVCP_basic_string_wchar_ctor_cstr(ret
, this->true_name
);
3179 /* ?truename@?$numpunct@_W@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3180 /* ?truename@?$numpunct@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3181 /* ?truename@?$numpunct@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3182 /* ?truename@?$numpunct@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3183 DEFINE_THISCALL_WRAPPER(numpunct_wchar_truename
, 8)
3184 basic_string_wchar
* __thiscall
numpunct_wchar_truename(const numpunct_wchar
*this, basic_string_wchar
*ret
)
3186 TRACE("(%p)\n", this);
3187 return call_numpunct_wchar_do_truename(this, ret
);
3190 /* ?id@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@2V0locale@2@A */
3191 locale_id num_get_wchar_id
= {0};
3192 /* ?id@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@2V0locale@2@A */
3193 locale_id num_get_short_id
= {0};
3195 /* ??_7?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@6B@ */
3196 extern const vtable_ptr MSVCP_num_get_wchar_vtable
;
3197 /* ??_7?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@6B@ */
3198 extern const vtable_ptr MSVCP_num_get_short_vtable
;
3200 /* ?_Init@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IAEXABV_Locinfo@2@@Z */
3201 /* ?_Init@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAXAEBV_Locinfo@2@@Z */
3202 /* ?_Init@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@IAEXABV_Locinfo@2@@Z */
3203 /* ?_Init@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@IEAAXAEBV_Locinfo@2@@Z */
3204 DEFINE_THISCALL_WRAPPER(num_get_wchar_ctor__Init
, 8)
3205 void __thiscall
num_get_wchar_ctor__Init(num_get
*this, const _Locinfo
*locinfo
)
3207 FIXME("(%p %p) stub\n", this, locinfo
);
3210 /* ??0?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAE@ABV_Locinfo@1@I@Z */
3211 /* ??0?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAA@AEBV_Locinfo@1@_K@Z */
3212 DEFINE_THISCALL_WRAPPER(num_get_wchar_ctor_locinfo
, 12)
3213 num_get
* __thiscall
num_get_wchar_ctor_locinfo(num_get
*this,
3214 _Locinfo
*locinfo
, MSVCP_size_t refs
)
3216 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
3220 /* ??0?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QAE@ABV_Locinfo@1@I@Z */
3221 /* ??0?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEAA@AEBV_Locinfo@1@_K@Z */
3222 DEFINE_THISCALL_WRAPPER(num_get_short_ctor_locinfo
, 12)
3223 num_get
* __thiscall
num_get_short_ctor_locinfo(num_get
*this,
3224 _Locinfo
*locinfo
, MSVCP_size_t refs
)
3226 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
3230 /* ??0?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAE@I@Z */
3231 /* ??0?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAA@_K@Z */
3232 DEFINE_THISCALL_WRAPPER(num_get_wchar_ctor_refs
, 8)
3233 num_get
* __thiscall
num_get_wchar_ctor_refs(num_get
*this, MSVCP_size_t refs
)
3235 FIXME("(%p %lu) stub\n", this, refs
);
3239 /* ??0?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QAE@I@Z */
3240 /* ??0?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEAA@_K@Z */
3241 DEFINE_THISCALL_WRAPPER(num_get_short_ctor_refs
, 8)
3242 num_get
* __thiscall
num_get_short_ctor_refs(num_get
*this, MSVCP_size_t refs
)
3244 FIXME("(%p %lu) stub\n", this, refs
);
3248 /* ??_F?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ */
3249 /* ??_F?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ */
3250 DEFINE_THISCALL_WRAPPER(num_get_wchar_ctor
, 4)
3251 num_get
* __thiscall
num_get_wchar_ctor(num_get
*this)
3253 FIXME("(%p) stub\n", this);
3257 /* ??_F?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ */
3258 /* ??_F?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ */
3259 DEFINE_THISCALL_WRAPPER(num_get_short_ctor
, 4)
3260 num_get
* __thiscall
num_get_short_ctor(num_get
*this)
3262 FIXME("(%p) stub\n", this);
3266 /* ??1?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAE@XZ */
3267 /* ??1?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEAA@XZ */
3268 /* ??1?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MAE@XZ */
3269 /* ??1?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEAA@XZ */
3270 DEFINE_THISCALL_WRAPPER(num_get_wchar_dtor
, 4)
3271 void __thiscall
num_get_wchar_dtor(num_get
*this)
3273 FIXME("(%p) stub\n", this);
3276 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_wchar_vector_dtor
, 8)
3277 num_get
* __thiscall
MSVCP_num_get_wchar_vector_dtor(num_get
*this, unsigned int flags
)
3279 TRACE("(%p %x)\n", this, flags
);
3281 /* we have an array, with the number of elements stored before the first object */
3282 int i
, *ptr
= (int *)this-1;
3284 for(i
=*ptr
-1; i
>=0; i
--)
3285 num_get_wchar_dtor(this+i
);
3286 MSVCRT_operator_delete(ptr
);
3288 num_get_wchar_dtor(this);
3290 MSVCRT_operator_delete(this);
3296 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_short_vector_dtor
, 8)
3297 num_get
* __thiscall
MSVCP_num_get_short_vector_dtor(num_get
*this, unsigned int flags
)
3299 return MSVCP_num_get_wchar_vector_dtor(this, flags
);
3302 /* ?_Getcat@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3303 /* ?_Getcat@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3304 MSVCP_size_t __cdecl
num_get_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
3306 FIXME("(%p %p) stub\n", facet
, loc
);
3310 /* ?_Getcat@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3311 /* ?_Getcat@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3312 MSVCP_size_t __cdecl
num_get_short__Getcat(const locale_facet
**facet
, const locale
*loc
)
3314 FIXME("(%p %p) stub\n", facet
, loc
);
3318 /* ?_Getffld@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@1ABVlocale@2@@Z */
3319 /* ?_Getffld@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@1AEBVlocale@2@@Z */
3320 /* ?_Getffld@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@1ABVlocale@2@@Z */
3321 /* ?_Getffld@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@1AEBVlocale@2@@Z */
3322 int __cdecl
num_get_wchar__Getffld(num_get
*this, char *dest
, istreambuf_iterator_wchar
*first
,
3323 istreambuf_iterator_wchar
*last
, const locale
*loc
)
3325 FIXME("(%p %p %p %p) stub\n", dest
, first
, last
, loc
);
3329 /* ?_Getffldx@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@1AAVios_base@2@PAH@Z */
3330 /* ?_Getffldx@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@1AEAVios_base@2@PEAH@Z */
3331 /* ?_Getffldx@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@1AAVios_base@2@PAH@Z */
3332 /* ?_Getffldx@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@1AEAVios_base@2@PEAH@Z */
3333 int __cdecl
num_get_wchar__Getffldx(num_get
*this, char *dest
, istreambuf_iterator_wchar
*first
,
3334 istreambuf_iterator_wchar
*last
, struct _ios_base
*ios
, int *phexexp
)
3336 FIXME("(%p %p %p %p %p) stub\n", dest
, first
, last
, ios
, phexexp
);
3340 /* ?_Getifld@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@1HABVlocale@2@@Z */
3341 /* ?_Getifld@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@1HAEBVlocale@2@@Z */
3342 /* ?_Getifld@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@1HABVlocale@2@@Z */
3343 /* ?_Getifld@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@1HAEBVlocale@2@@Z */
3344 int __cdecl
num_get_wchar__Getifld(num_get
*this, char *dest
, istreambuf_iterator_wchar
*first
,
3345 istreambuf_iterator_wchar
*last
, int fmtflags
, const locale
*loc
)
3347 FIXME("(%p %p %p %04x %p) stub\n", dest
, first
, last
, fmtflags
, loc
);
3351 /* ?_Hexdig@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@ABEH_W000@Z */
3352 /* ?_Hexdig@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@AEBAH_W000@Z */
3353 /* ?_Hexdig@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@ABEHGGGG@Z */
3354 /* ?_Hexdig@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@AEBAHGGGG@Z */
3355 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_wchar__Hexdig
, 20)
3356 int __thiscall
MSVCP_num_get_wchar__Hexdig(num_get
*this, wchar_t dig
, wchar_t e0
, wchar_t al
, wchar_t au
)
3358 FIXME("(%p %c %c %c %c) stub\n", this, dig
, e0
, al
, au
);
3362 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAPAX@Z */
3363 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAPEAX@Z */
3364 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAPAX@Z */
3365 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAPEAX@Z */
3366 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_void
,36)
3367 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_void(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3368 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, void **pval
)
3370 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3374 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAPAX@Z */
3375 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAPEAX@Z */
3376 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAPAX@Z */
3377 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAPEAX@Z */
3378 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_void
,36)
3379 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_void(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3380 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, void **pval
)
3382 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3386 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAO@Z */
3387 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAO@Z */
3388 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAN@Z */
3389 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAN@Z */
3390 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAO@Z */
3391 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAO@Z */
3392 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAN@Z */
3393 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAN@Z */
3394 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_double
,36)
3395 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_double(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3396 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, double *pval
)
3398 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3402 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAO@Z */
3403 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAO@Z */
3404 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAN@Z */
3405 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAN@Z */
3406 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAO@Z */
3407 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAO@Z */
3408 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAN@Z */
3409 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAN@Z */
3410 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_double
,36)
3411 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_double(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3412 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, double *pval
)
3414 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3418 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAM@Z */
3419 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAM@Z */
3420 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAM@Z */
3421 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAM@Z */
3422 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_float
,36)
3423 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_float(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3424 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, float *pval
)
3426 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3430 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAM@Z */
3431 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAM@Z */
3432 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAM@Z */
3433 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAM@Z */
3434 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_float
,36)
3435 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_float(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3436 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, float *pval
)
3438 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3442 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_K@Z */
3443 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z */
3444 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAA_K@Z */
3445 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z */
3446 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_uint64
,36)
3447 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_uint64(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3448 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, ULONGLONG
*pval
)
3450 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3454 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_K@Z */
3455 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z */
3456 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAA_K@Z */
3457 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z */
3458 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_uint64
,36)
3459 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_uint64(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3460 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, ULONGLONG
*pval
)
3462 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3466 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_J@Z */
3467 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_J@Z */
3468 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAA_J@Z */
3469 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEA_J@Z */
3470 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_int64
,36)
3471 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_int64(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3472 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, LONGLONG
*pval
)
3474 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3478 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_J@Z */
3479 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_J@Z */
3480 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAA_J@Z */
3481 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEA_J@Z */
3482 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_int64
,36)
3483 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_int64(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3484 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, LONGLONG
*pval
)
3486 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3490 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAK@Z */
3491 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAK@Z */
3492 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAK@Z */
3493 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAK@Z */
3494 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_ulong
,36)
3495 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_ulong(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3496 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, ULONG
*pval
)
3498 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3502 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAK@Z */
3503 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAK@Z */
3504 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAK@Z */
3505 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAK@Z */
3506 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_ulong
,36)
3507 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_ulong(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3508 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, ULONG
*pval
)
3510 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3514 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAJ@Z */
3515 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAJ@Z */
3516 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAJ@Z */
3517 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAJ@Z */
3518 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_long
,36)
3519 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_long(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3520 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, LONG
*pval
)
3522 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3526 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAJ@Z */
3527 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAJ@Z */
3528 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAJ@Z */
3529 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAJ@Z */
3530 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_long
,36)
3531 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_long(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3532 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, LONG
*pval
)
3534 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3538 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAI@Z */
3539 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAI@Z */
3540 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAI@Z */
3541 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAI@Z */
3542 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_uint
,36)
3543 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_uint(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3544 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, unsigned int *pval
)
3546 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3550 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAI@Z */
3551 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAI@Z */
3552 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAI@Z */
3553 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAI@Z */
3554 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_uint
,36)
3555 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_uint(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3556 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, unsigned int *pval
)
3558 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3562 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAG@Z */
3563 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAG@Z */
3564 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAG@Z */
3565 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAG@Z */
3566 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_ushort
,36)
3567 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_ushort(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3568 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, unsigned short *pval
)
3570 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3574 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAAG@Z */
3575 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEAG@Z */
3576 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAAG@ */
3577 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEAG@Z */
3578 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_ushort
,36)
3579 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_ushort(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3580 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, unsigned short *pval
)
3582 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3586 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z */
3587 /* ?do_get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z */
3588 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z */
3589 /* ?do_get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z */
3590 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_bool
,36)
3591 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_bool(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3592 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, MSVCP_bool
*pval
)
3594 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3598 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z */
3599 /* ?get@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z */
3600 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z */
3601 /* ?get@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@GU?$char_traits@G@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z */
3602 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_bool
,36)
3603 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_bool(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3604 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, MSVCP_bool
*pval
)
3606 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3610 /* ?id@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@2V0locale@2@A */
3611 locale_id num_get_char_id
= {0};
3613 /* ??_7?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@6B@ */
3614 extern const vtable_ptr MSVCP_num_get_char_vtable
;
3616 /* ?_Init@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IAEXABV_Locinfo@2@@Z */
3617 /* ?_Init@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAXAEBV_Locinfo@2@@Z */
3618 DEFINE_THISCALL_WRAPPER(num_get_char_ctor__Init
, 8)
3619 void __thiscall
num_get_char_ctor__Init(num_get
*this, const _Locinfo
*locinfo
)
3621 FIXME("(%p %p) stub\n", this, locinfo
);
3624 /* ??0?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAE@ABV_Locinfo@1@I@Z */
3625 /* ??0?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAA@AEBV_Locinfo@1@_K@Z */
3626 DEFINE_THISCALL_WRAPPER(num_get_char_ctor_locinfo
, 12)
3627 num_get
* __thiscall
num_get_char_ctor_locinfo(num_get
*this,
3628 _Locinfo
*locinfo
, MSVCP_size_t refs
)
3630 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
3634 /* ??0?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAE@I@Z */
3635 /* ??0?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAA@_K@Z */
3636 DEFINE_THISCALL_WRAPPER(num_get_char_ctor_refs
, 8)
3637 num_get
* __thiscall
num_get_char_ctor_refs(num_get
*this, MSVCP_size_t refs
)
3639 FIXME("(%p %lu) stub\n", this, refs
);
3643 /* ??_F?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ */
3644 /* ??_F?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAAXXZ */
3645 DEFINE_THISCALL_WRAPPER(num_get_char_ctor
, 4)
3646 num_get
* __thiscall
num_get_char_ctor(num_get
*this)
3648 FIXME("(%p) stub\n", this);
3652 /* ??1?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ */
3653 /* ??1?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEAA@XZ */
3654 DEFINE_THISCALL_WRAPPER(num_get_char_dtor
, 4)
3655 void __thiscall
num_get_char_dtor(num_get
*this)
3657 FIXME("(%p) stub\n", this);
3660 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_char_vector_dtor
, 8)
3661 num_get
* __thiscall
MSVCP_num_get_char_vector_dtor(num_get
*this, unsigned int flags
)
3663 TRACE("(%p %x)\n", this, flags
);
3665 /* we have an array, with the number of elements stored before the first object */
3666 int i
, *ptr
= (int *)this-1;
3668 for(i
=*ptr
-1; i
>=0; i
--)
3669 num_get_char_dtor(this+i
);
3670 MSVCRT_operator_delete(ptr
);
3672 num_get_char_dtor(this);
3674 MSVCRT_operator_delete(this);
3680 /* ?_Getcat@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3681 /* ?_Getcat@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3682 MSVCP_size_t __cdecl
num_get_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
3684 FIXME("(%p %p) stub\n", facet
, loc
);
3688 /* ?_Getffld@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@1ABVlocale@2@@Z */
3689 /* ?_Getffld@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@1AEBVlocale@2@@Z */
3690 int __cdecl
num_get_char__Getffld(num_get
*this, char *dest
, istreambuf_iterator_char
*first
,
3691 istreambuf_iterator_char
*last
, const locale
*loc
)
3693 FIXME("(%p %p %p %p) stub\n", dest
, first
, last
, loc
);
3697 /* ?_Getffldx@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@1AAVios_base@2@PAH@Z */
3698 /* ?_Getffldx@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@1AEAVios_base@2@PEAH@Z */
3699 int __cdecl
num_get_char__Getffldx(num_get
*this, char *dest
, istreambuf_iterator_char
*first
,
3700 istreambuf_iterator_char
*last
, struct _ios_base
*ios
, int *phexexp
)
3702 FIXME("(%p %p %p %p %p) stub\n", dest
, first
, last
, ios
, phexexp
);
3706 /* ?_Getifld@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@1HABVlocale@2@@Z */
3707 /* ?_Getifld@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@AEBAHPEADAEAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@1HAEBVlocale@2@@Z */
3708 int __cdecl
num_get_char__Getifld(num_get
*this, char *dest
, istreambuf_iterator_char
*first
,
3709 istreambuf_iterator_char
*last
, int fmtflags
, const locale
*loc
)
3711 FIXME("(%p %p %p %04x %p) stub\n", dest
, first
, last
, fmtflags
, loc
);
3715 /* ?_Hexdig@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@ABEHD000@Z */
3716 /* ?_Hexdig@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@AEBAHD000@Z */
3717 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_char__Hexdig
, 20)
3718 int __thiscall
MSVCP_num_get_char__Hexdig(num_get
*this, char dig
, char e0
, char al
, char au
)
3720 FIXME("(%p %c %c %c %c) stub\n", this, dig
, e0
, al
, au
);
3724 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAPAX@Z */
3725 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAPEAX@Z */
3726 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_void
,36)
3727 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_void(const num_get
*this, istreambuf_iterator_char
*ret
,
3728 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, void **pval
)
3730 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3734 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAPAX@Z */
3735 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAPEAX@Z */
3736 DEFINE_THISCALL_WRAPPER(num_get_char_get_void
,36)
3737 istreambuf_iterator_char
*__thiscall
num_get_char_get_void(const num_get
*this, istreambuf_iterator_char
*ret
,
3738 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, void **pval
)
3740 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3744 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAO@Z */
3745 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAO@Z */
3746 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAN@Z */
3747 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAN@Z */
3748 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_double
,36)
3749 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_double(const num_get
*this, istreambuf_iterator_char
*ret
,
3750 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, double *pval
)
3752 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3756 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAO@Z */
3757 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAO@Z */
3758 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAN@Z */
3759 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAN@Z */
3760 DEFINE_THISCALL_WRAPPER(num_get_char_get_double
,36)
3761 istreambuf_iterator_char
*__thiscall
num_get_char_get_double(const num_get
*this, istreambuf_iterator_char
*ret
,
3762 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, double *pval
)
3764 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3768 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAM@Z */
3769 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAM@Z */
3770 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_float
,36)
3771 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_float(const num_get
*this, istreambuf_iterator_char
*ret
,
3772 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, float *pval
)
3774 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3778 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAM@Z */
3779 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAM@Z */
3780 DEFINE_THISCALL_WRAPPER(num_get_char_get_float
,36)
3781 istreambuf_iterator_char
*__thiscall
num_get_char_get_float(const num_get
*this, istreambuf_iterator_char
*ret
,
3782 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, float *pval
)
3784 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3788 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAA_K@Z */
3789 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z */
3790 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_uint64
,36)
3791 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_uint64(const num_get
*this, istreambuf_iterator_char
*ret
,
3792 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, ULONGLONG
*pval
)
3794 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3798 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAA_K@Z */
3799 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEA_K@Z */
3800 DEFINE_THISCALL_WRAPPER(num_get_char_get_uint64
,36)
3801 istreambuf_iterator_char
*__thiscall
num_get_char_get_uint64(const num_get
*this, istreambuf_iterator_char
*ret
,
3802 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, ULONGLONG
*pval
)
3804 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3808 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAA_J@Z */
3809 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEA_J@Z */
3810 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_int64
,36)
3811 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_int64(const num_get
*this, istreambuf_iterator_char
*ret
,
3812 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, LONGLONG
*pval
)
3814 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3818 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAA_J@Z */
3819 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEA_J@Z */
3820 DEFINE_THISCALL_WRAPPER(num_get_char_get_int64
,36)
3821 istreambuf_iterator_char
*__thiscall
num_get_char_get_int64(const num_get
*this, istreambuf_iterator_char
*ret
,
3822 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, LONGLONG
*pval
)
3824 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3828 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAK@Z */
3829 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAK@Z */
3830 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_ulong
,36)
3831 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_ulong(const num_get
*this, istreambuf_iterator_char
*ret
,
3832 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, ULONG
*pval
)
3834 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3838 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAK@Z */
3839 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAK@Z */
3840 DEFINE_THISCALL_WRAPPER(num_get_char_get_ulong
,36)
3841 istreambuf_iterator_char
*__thiscall
num_get_char_get_ulong(const num_get
*this, istreambuf_iterator_char
*ret
,
3842 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, ULONG
*pval
)
3844 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3848 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAJ@Z */
3849 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAJ@Z */
3850 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_long
,36)
3851 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_long(const num_get
*this, istreambuf_iterator_char
*ret
,
3852 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, LONG
*pval
)
3854 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3858 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAJ@Z */
3859 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAJ@Z */
3860 DEFINE_THISCALL_WRAPPER(num_get_char_get_long
,36)
3861 istreambuf_iterator_char
*__thiscall
num_get_char_get_long(const num_get
*this, istreambuf_iterator_char
*ret
,
3862 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, LONG
*pval
)
3864 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3868 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAI@Z */
3869 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAI@Z */
3870 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_uint
,36)
3871 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_uint(const num_get
*this, istreambuf_iterator_char
*ret
,
3872 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, unsigned int *pval
)
3874 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3878 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAI@Z */
3879 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAI@Z */
3880 DEFINE_THISCALL_WRAPPER(num_get_char_get_uint
,36)
3881 istreambuf_iterator_char
*__thiscall
num_get_char_get_uint(const num_get
*this, istreambuf_iterator_char
*ret
,
3882 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, unsigned int *pval
)
3884 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3888 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAG@Z */
3889 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAG@Z */
3890 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_ushort
,36)
3891 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_ushort(const num_get
*this, istreambuf_iterator_char
*ret
,
3892 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, unsigned short *pval
)
3894 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3898 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAAG@Z */
3899 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEAG@Z */
3900 DEFINE_THISCALL_WRAPPER(num_get_char_get_ushort
,36)
3901 istreambuf_iterator_char
*__thiscall
num_get_char_get_ushort(const num_get
*this, istreambuf_iterator_char
*ret
,
3902 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, unsigned short *pval
)
3904 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3908 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z */
3909 /* ?do_get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z */
3910 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_bool
,36)
3911 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_bool(const num_get
*this, istreambuf_iterator_char
*ret
,
3912 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, MSVCP_bool
*pval
)
3914 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3918 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHAA_N@Z */
3919 /* ?get@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHAEA_N@Z */
3920 DEFINE_THISCALL_WRAPPER(num_get_char_get_bool
,36)
3921 istreambuf_iterator_char
*__thiscall
num_get_char_get_bool(const num_get
*this, istreambuf_iterator_char
*ret
,
3922 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, MSVCP_bool
*pval
)
3924 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3928 /* ??0_Locimp@locale@std@@AAE@_N@Z */
3929 /* ??0_Locimp@locale@std@@AEAA@_N@Z */
3930 DEFINE_THISCALL_WRAPPER(locale__Locimp_ctor_transparent
, 8)
3931 locale__Locimp
* __thiscall
locale__Locimp_ctor_transparent(locale__Locimp
*this, MSVCP_bool transparent
)
3933 TRACE("(%p %d)\n", this, transparent
);
3935 memset(this, 0, sizeof(locale__Locimp
));
3936 locale_facet_ctor_refs(&this->facet
, 1);
3937 this->transparent
= transparent
;
3938 MSVCP_basic_string_char_ctor_cstr(&this->name
, "*");
3942 /* ??_F_Locimp@locale@std@@QAEXXZ */
3943 /* ??_F_Locimp@locale@std@@QEAAXXZ */
3944 DEFINE_THISCALL_WRAPPER(locale__Locimp_ctor
, 4)
3945 locale__Locimp
* __thiscall
locale__Locimp_ctor(locale__Locimp
*this)
3947 return locale__Locimp_ctor_transparent(this, FALSE
);
3950 /* ??0_Locimp@locale@std@@AAE@ABV012@@Z */
3951 /* ??0_Locimp@locale@std@@AEAA@AEBV012@@Z */
3952 DEFINE_THISCALL_WRAPPER(locale__Locimp_copy_ctor
, 8)
3953 locale__Locimp
* __thiscall
locale__Locimp_copy_ctor(locale__Locimp
*this, const locale__Locimp
*copy
)
3958 TRACE("(%p %p)\n", this, copy
);
3960 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
3961 memcpy(this, copy
, sizeof(locale__Locimp
));
3962 locale_facet_ctor_refs(&this->facet
, 1);
3963 if(copy
->facetvec
) {
3964 this->facetvec
= MSVCRT_operator_new(copy
->facet_cnt
*sizeof(locale_facet
*));
3965 if(!this->facetvec
) {
3966 _Lockit_dtor(&lock
);
3967 ERR("Out of memory\n");
3968 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
3971 for(i
=0; i
<this->facet_cnt
; i
++)
3972 if(this->facetvec
[i
])
3973 locale_facet__Incref(this->facetvec
[i
]);
3975 MSVCP_basic_string_char_copy_ctor(&this->name
, ©
->name
);
3976 _Lockit_dtor(&lock
);
3980 /* ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z */
3981 /* ?_Locimp_ctor@_Locimp@locale@std@@CAXPEAV123@AEBV123@@Z */
3982 locale__Locimp
* __cdecl
locale__Locimp__Locimp_ctor(locale__Locimp
*this, const locale__Locimp
*copy
)
3984 return locale__Locimp_copy_ctor(this, copy
);
3987 /* ??1_Locimp@locale@std@@MAE@XZ */
3988 /* ??1_Locimp@locale@std@@MEAA@XZ */
3989 DEFINE_THISCALL_WRAPPER(locale__Locimp_dtor
, 4)
3990 void __thiscall
locale__Locimp_dtor(locale__Locimp
*this)
3992 TRACE("(%p)\n", this);
3994 if(locale_facet__Decref(&this->facet
)) {
3996 for(i
=0; i
<this->facet_cnt
; i
++)
3997 if(this->facetvec
[i
] && locale_facet__Decref(this->facetvec
[i
]))
3998 call_locale_facet_vector_dtor(this->facetvec
[i
], 0);
4000 MSVCRT_operator_delete(this->facetvec
);
4001 MSVCP_basic_string_char_dtor(&this->name
);
4005 /* ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z */
4006 /* ?_Locimp_dtor@_Locimp@locale@std@@CAXPEAV123@@Z */
4007 void __cdecl
locale__Locimp__Locimp_dtor(locale__Locimp
*this)
4009 locale__Locimp_dtor(this);
4012 DEFINE_THISCALL_WRAPPER(MSVCP_locale__Locimp_vector_dtor
, 8)
4013 locale__Locimp
* __thiscall
MSVCP_locale__Locimp_vector_dtor(locale__Locimp
*this, unsigned int flags
)
4015 TRACE("(%p %x)\n", this, flags
);
4017 /* we have an array, with the number of elements stored before the first object */
4018 int i
, *ptr
= (int *)this-1;
4020 for(i
=*ptr
-1; i
>=0; i
--)
4021 locale__Locimp_dtor(this+i
);
4022 MSVCRT_operator_delete(ptr
);
4024 locale__Locimp_dtor(this);
4026 MSVCRT_operator_delete(this);
4032 /* ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z */
4033 /* ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z */
4034 void __cdecl
locale__Locimp__Locimp_Addfac(locale__Locimp
*locimp
, locale_facet
*facet
, MSVCP_size_t id
)
4038 TRACE("(%p %p %lu)\n", locimp
, facet
, id
);
4040 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
4041 if(id
>= locimp
->facet_cnt
) {
4042 MSVCP_size_t new_size
= id
+1;
4043 locale_facet
**new_facetvec
;
4045 if(new_size
< locale_id__Id_cnt
+1)
4046 new_size
= locale_id__Id_cnt
+1;
4048 new_facetvec
= MSVCRT_operator_new(sizeof(locale_facet
*)*new_size
);
4050 _Lockit_dtor(&lock
);
4051 ERR("Out of memory\n");
4052 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
4056 memset(new_facetvec
, 0, sizeof(locale_facet
*)*new_size
);
4057 memcpy(new_facetvec
, locimp
->facetvec
, sizeof(locale_facet
*)*locimp
->facet_cnt
);
4058 MSVCRT_operator_delete(locimp
->facetvec
);
4059 locimp
->facetvec
= new_facetvec
;
4060 locimp
->facet_cnt
= new_size
;
4063 if(locimp
->facetvec
[id
] && locale_facet__Decref(locimp
->facetvec
[id
]))
4064 call_locale_facet_vector_dtor(locimp
->facetvec
[id
], 0);
4066 locimp
->facetvec
[id
] = facet
;
4068 locale_facet__Incref(facet
);
4069 _Lockit_dtor(&lock
);
4072 /* ?_Addfac@_Locimp@locale@std@@AAEXPAVfacet@23@I@Z */
4073 /* ?_Addfac@_Locimp@locale@std@@AEAAXPEAVfacet@23@_K@Z */
4074 DEFINE_THISCALL_WRAPPER(locale__Locimp__Addfac
, 12)
4075 void __thiscall
locale__Locimp__Addfac(locale__Locimp
*this, locale_facet
*facet
, MSVCP_size_t id
)
4077 locale__Locimp__Locimp_Addfac(this, facet
, id
);
4080 /* ?_Clocptr_func@_Locimp@locale@std@@CAAAPAV123@XZ */
4081 /* ?_Clocptr_func@_Locimp@locale@std@@CAAEAPEAV123@XZ */
4082 locale__Locimp
** __cdecl
locale__Locimp__Clocptr_func(void)
4088 /* ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z */
4089 /* ?_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
4090 locale__Locimp
* __cdecl
locale__Locimp__Makeloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
4092 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
4096 /* ?_Makeushloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
4097 /* ?_Makeushloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
4098 void __cdecl
locale__Locimp__Makeushloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
4100 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
4103 /* ?_Makewloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
4104 /* ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
4105 void __cdecl
locale__Locimp__Makewloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
4107 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
4110 /* ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
4111 /* ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
4112 void __cdecl
locale__Locimp__Makexloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
4114 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
4117 /* ??_7_Locimp@locale@std@@6B@ */
4118 const vtable_ptr MSVCP_locale__Locimp_vtable
[] = {
4119 (vtable_ptr
)THISCALL_NAME(MSVCP_locale__Locimp_vector_dtor
)
4122 /* ??0locale@std@@AAE@PAV_Locimp@01@@Z */
4123 /* ??0locale@std@@AEAA@PEAV_Locimp@01@@Z */
4124 DEFINE_THISCALL_WRAPPER(locale_ctor_locimp
, 8)
4125 locale
* __thiscall
locale_ctor_locimp(locale
*this, locale__Locimp
*locimp
)
4127 TRACE("(%p %p)\n", this, locimp
);
4128 /* Don't change locimp reference counter */
4133 /* ??0locale@std@@QAE@ABV01@0H@Z */
4134 /* ??0locale@std@@QEAA@AEBV01@0H@Z */
4135 DEFINE_THISCALL_WRAPPER(locale_ctor_locale_locale
, 16)
4136 locale
* __thiscall
locale_ctor_locale_locale(locale
*this, const locale
*loc
, const locale
*other
, category cat
)
4138 FIXME("(%p %p %p %d) stub\n", this, loc
, other
, cat
);
4142 /* ??0locale@std@@QAE@ABV01@@Z */
4143 /* ??0locale@std@@QEAA@AEBV01@@Z */
4144 DEFINE_THISCALL_WRAPPER(locale_copy_ctor
, 8)
4145 locale
* __thiscall
locale_copy_ctor(locale
*this, const locale
*copy
)
4147 TRACE("(%p %p)\n", this, copy
);
4148 this->ptr
= copy
->ptr
;
4149 locale_facet__Incref(&this->ptr
->facet
);
4153 /* ??0locale@std@@QAE@ABV01@PBDH@Z */
4154 /* ??0locale@std@@QEAA@AEBV01@PEBDH@Z */
4155 DEFINE_THISCALL_WRAPPER(locale_ctor_locale_cstr
, 16)
4156 locale
* __thiscall
locale_ctor_locale_cstr(locale
*this, const locale
*loc
, const char *locname
, category cat
)
4158 FIXME("(%p %p %s %d) stub\n", this, loc
, locname
, cat
);
4162 /* ??0locale@std@@QAE@PBDH@Z */
4163 /* ??0locale@std@@QEAA@PEBDH@Z */
4164 DEFINE_THISCALL_WRAPPER(locale_ctor_cstr
, 12)
4165 locale
* __thiscall
locale_ctor_cstr(locale
*this, const char *locname
, category cat
)
4167 FIXME("(%p %s %d) stub\n", this, locname
, cat
);
4171 /* ??0locale@std@@QAE@W4_Uninitialized@1@@Z */
4172 /* ??0locale@std@@QEAA@W4_Uninitialized@1@@Z */
4173 DEFINE_THISCALL_WRAPPER(locale_ctor_uninitialized
, 8)
4174 locale
* __thiscall
locale_ctor_uninitialized(locale
*this, int uninitialized
)
4176 TRACE("(%p)\n", this);
4181 /* ??0locale@std@@QAE@XZ */
4182 /* ??0locale@std@@QEAA@XZ */
4183 DEFINE_THISCALL_WRAPPER(locale_ctor
, 4)
4184 locale
* __thiscall
locale_ctor(locale
*this)
4186 TRACE("(%p)\n", this);
4187 this->ptr
= MSVCRT_operator_new(sizeof(locale__Locimp
));
4189 ERR("Out of memory\n");
4190 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
4194 locale__Locimp_ctor(this->ptr
);
4198 /* ??1locale@std@@QAE@XZ */
4199 /* ??1locale@std@@QEAA@XZ */
4200 DEFINE_THISCALL_WRAPPER(locale_dtor
, 4)
4201 void __thiscall
locale_dtor(locale
*this)
4203 TRACE("(%p)\n", this);
4205 locale__Locimp_dtor(this->ptr
);
4208 DEFINE_THISCALL_WRAPPER(MSVCP_locale_vector_dtor
, 8)
4209 locale
* __thiscall
MSVCP_locale_vector_dtor(locale
*this, unsigned int flags
)
4211 TRACE("(%p %x)\n", this, flags
);
4213 /* we have an array, with the number of elements stored before the first object */
4214 int i
, *ptr
= (int *)this-1;
4216 for(i
=*ptr
-1; i
>=0; i
--)
4217 locale_dtor(this+i
);
4218 MSVCRT_operator_delete(ptr
);
4222 MSVCRT_operator_delete(this);
4228 /* ??4locale@std@@QAEAAV01@ABV01@@Z */
4229 /* ??4locale@std@@QEAAAEAV01@AEBV01@@Z */
4230 DEFINE_THISCALL_WRAPPER(locale_operator_assign
, 8)
4231 locale
* __thiscall
locale_operator_assign(locale
*this, const locale
*loc
)
4233 FIXME("(%p %p) stub\n", this, loc
);
4237 /* ??8locale@std@@QBE_NABV01@@Z */
4238 /* ??8locale@std@@QEBA_NAEBV01@@Z */
4239 DEFINE_THISCALL_WRAPPER(locale_operator_equal
, 8)
4240 MSVCP_bool __thiscall
locale_operator_equal(const locale
*this, const locale
*loc
)
4242 FIXME("(%p %p) stub\n", this, loc
);
4246 /* ??9locale@std@@QBE_NABV01@@Z */
4247 /* ??9locale@std@@QEBA_NAEBV01@@Z */
4248 DEFINE_THISCALL_WRAPPER(locale_operator_not_equal
, 8)
4249 MSVCP_bool __thiscall
locale_operator_not_equal(const locale
*this, locale
const *loc
)
4251 FIXME("(%p %p) stub\n", this, loc
);
4255 /* ?_Addfac@locale@std@@QAEAAV12@PAVfacet@12@II@Z */
4256 /* ?_Addfac@locale@std@@QEAAAEAV12@PEAVfacet@12@_K1@Z */
4257 DEFINE_THISCALL_WRAPPER(locale__Addfac
, 16)
4258 locale
* __thiscall
locale__Addfac(locale
*this, locale_facet
*facet
, MSVCP_size_t id
, MSVCP_size_t catmask
)
4260 TRACE("(%p %p %lu %lu)\n", this, facet
, id
, catmask
);
4262 if(this->ptr
->facet
.refs
> 1) {
4263 locale__Locimp
*new_ptr
= MSVCRT_operator_new(sizeof(locale__Locimp
));
4265 ERR("Out of memory\n");
4266 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
4269 locale__Locimp_copy_ctor(new_ptr
, this->ptr
);
4270 locale_facet__Decref(&this->ptr
->facet
);
4271 this->ptr
= new_ptr
;
4274 locale__Locimp__Addfac(this->ptr
, facet
, id
);
4277 MSVCP_basic_string_char_dtor(&this->ptr
->name
);
4278 MSVCP_basic_string_char_ctor_cstr(&this->ptr
->name
, "*");
4283 /* ?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z */
4284 /* ?_Getfacet@locale@std@@QEBAPEBVfacet@12@_K@Z */
4285 DEFINE_THISCALL_WRAPPER(locale__Getfacet
, 8)
4286 const locale_facet
* __thiscall
locale__Getfacet(const locale
*this, MSVCP_size_t id
)
4288 FIXME("(%p %lu) stub\n", this, id
);
4292 /* ?_Init@locale@std@@CAPAV_Locimp@12@XZ */
4293 /* ?_Init@locale@std@@CAPEAV_Locimp@12@XZ */
4294 locale__Locimp
* __cdecl
locale__Init(void)
4300 /* ?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ */
4301 /* ?_Getgloballocale@locale@std@@CAPEAV_Locimp@12@XZ */
4302 locale__Locimp
* __cdecl
locale__Getgloballocale(void)
4308 /* ?_Setgloballocale@locale@std@@CAXPAX@Z */
4309 /* ?_Setgloballocale@locale@std@@CAXPEAX@Z */
4310 void __cdecl
locale__Setgloballocale(void *locimp
)
4312 FIXME("(%p) stub\n", locimp
);
4315 /* ?classic@locale@std@@SAABV12@XZ */
4316 /* ?classic@locale@std@@SAAEBV12@XZ */
4317 const locale
* __cdecl
locale_classic(void)
4323 /* ?name@locale@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
4324 /* ?name@locale@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
4325 DEFINE_THISCALL_WRAPPER(locale_name
, 8)
4326 basic_string_char
* __thiscall
locale_name(const locale
*this, basic_string_char
*ret
)
4328 TRACE( "(%p)\n", this);
4329 MSVCP_basic_string_char_copy_ctor(ret
, &this->ptr
->name
);
4333 DEFINE_RTTI_DATA(locale_facet
, 0, 0, NULL
, NULL
, NULL
, ".?AVfacet@locale@std@@");
4334 DEFINE_RTTI_DATA(collate_char
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@D@std@@");
4335 DEFINE_RTTI_DATA(collate_wchar
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@_W@std@@");
4336 DEFINE_RTTI_DATA(collate_short
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@G@std@@");
4337 DEFINE_RTTI_DATA(ctype_base
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AUctype_base@std@@");
4338 DEFINE_RTTI_DATA(ctype_char
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@D@std@@");
4339 DEFINE_RTTI_DATA(ctype_wchar
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@_W@std@@");
4340 DEFINE_RTTI_DATA(ctype_short
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@G@std@@");
4341 DEFINE_RTTI_DATA(codecvt_base
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AVcodecvt_base@std@@");
4342 DEFINE_RTTI_DATA(numpunct_char
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$numpunct@D@std@@");
4343 DEFINE_RTTI_DATA(numpunct_wchar
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$numpunct@_W@std@@");
4344 DEFINE_RTTI_DATA(numpunct_short
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$numpunct@G@std@@");
4345 DEFINE_RTTI_DATA(num_get_char
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@");
4346 DEFINE_RTTI_DATA(num_get_wchar
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@");
4347 DEFINE_RTTI_DATA(num_get_short
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@");
4350 void __asm_dummy_vtables(void) {
4352 __ASM_VTABLE(locale_facet
, "");
4353 __ASM_VTABLE(collate_char
,
4354 VTABLE_ADD_FUNC(collate_char_do_compare
)
4355 VTABLE_ADD_FUNC(collate_char_do_transform
)
4356 VTABLE_ADD_FUNC(collate_char_do_hash
));
4357 __ASM_VTABLE(collate_wchar
,
4358 VTABLE_ADD_FUNC(collate_wchar_do_compare
)
4359 VTABLE_ADD_FUNC(collate_wchar_do_transform
)
4360 VTABLE_ADD_FUNC(collate_wchar_do_hash
));
4361 __ASM_VTABLE(collate_short
,
4362 VTABLE_ADD_FUNC(collate_wchar_do_compare
)
4363 VTABLE_ADD_FUNC(collate_wchar_do_transform
)
4364 VTABLE_ADD_FUNC(collate_wchar_do_hash
));
4365 __ASM_VTABLE(ctype_base
, "");
4366 __ASM_VTABLE(ctype_char
,
4367 VTABLE_ADD_FUNC(ctype_char_do_tolower
)
4368 VTABLE_ADD_FUNC(ctype_char_do_tolower_ch
)
4369 VTABLE_ADD_FUNC(ctype_char_do_toupper
)
4370 VTABLE_ADD_FUNC(ctype_char_do_toupper_ch
)
4371 VTABLE_ADD_FUNC(ctype_char_do_widen
)
4372 VTABLE_ADD_FUNC(ctype_char_do_widen_ch
)
4373 VTABLE_ADD_FUNC(ctype_char__Do_widen_s
)
4374 VTABLE_ADD_FUNC(ctype_char_do_narrow
)
4375 VTABLE_ADD_FUNC(ctype_char_do_narrow_ch
)
4376 VTABLE_ADD_FUNC(ctype_char__Do_narrow_s
));
4377 __ASM_VTABLE(ctype_wchar
,
4378 VTABLE_ADD_FUNC(ctype_wchar_do_is
)
4379 VTABLE_ADD_FUNC(ctype_wchar_do_is_ch
)
4380 VTABLE_ADD_FUNC(ctype_wchar_do_scan_is
)
4381 VTABLE_ADD_FUNC(ctype_wchar_do_scan_not
)
4382 VTABLE_ADD_FUNC(ctype_wchar_do_tolower
)
4383 VTABLE_ADD_FUNC(ctype_wchar_do_tolower_ch
)
4384 VTABLE_ADD_FUNC(ctype_wchar_do_toupper
)
4385 VTABLE_ADD_FUNC(ctype_wchar_do_toupper_ch
)
4386 VTABLE_ADD_FUNC(ctype_wchar_do_widen
)
4387 VTABLE_ADD_FUNC(ctype_wchar_do_widen_ch
)
4388 VTABLE_ADD_FUNC(ctype_wchar__Do_widen_s
)
4389 VTABLE_ADD_FUNC(ctype_wchar_do_narrow
)
4390 VTABLE_ADD_FUNC(ctype_wchar_do_narrow_ch
)
4391 VTABLE_ADD_FUNC(ctype_wchar__Do_narrow_s
));
4392 __ASM_VTABLE(ctype_short
,
4393 VTABLE_ADD_FUNC(ctype_wchar_do_is
)
4394 VTABLE_ADD_FUNC(ctype_wchar_do_is_ch
)
4395 VTABLE_ADD_FUNC(ctype_wchar_do_scan_is
)
4396 VTABLE_ADD_FUNC(ctype_wchar_do_scan_not
)
4397 VTABLE_ADD_FUNC(ctype_wchar_do_tolower
)
4398 VTABLE_ADD_FUNC(ctype_wchar_do_tolower_ch
)
4399 VTABLE_ADD_FUNC(ctype_wchar_do_toupper
)
4400 VTABLE_ADD_FUNC(ctype_wchar_do_toupper_ch
)
4401 VTABLE_ADD_FUNC(ctype_wchar_do_widen
)
4402 VTABLE_ADD_FUNC(ctype_wchar_do_widen_ch
)
4403 VTABLE_ADD_FUNC(ctype_wchar__Do_widen_s
)
4404 VTABLE_ADD_FUNC(ctype_wchar_do_narrow
)
4405 VTABLE_ADD_FUNC(ctype_wchar_do_narrow_ch
)
4406 VTABLE_ADD_FUNC(ctype_wchar__Do_narrow_s
));
4407 __ASM_VTABLE(codecvt_base
,
4408 VTABLE_ADD_FUNC(codecvt_base_do_always_noconv
)
4409 VTABLE_ADD_FUNC(codecvt_base_do_max_length
)
4410 VTABLE_ADD_FUNC(codecvt_base_do_encoding
));
4411 __ASM_VTABLE(numpunct_char
,
4412 VTABLE_ADD_FUNC(numpunct_char_do_decimal_point
)
4413 VTABLE_ADD_FUNC(numpunct_char_do_thousands_sep
)
4414 VTABLE_ADD_FUNC(numpunct_char_do_grouping
)
4415 VTABLE_ADD_FUNC(numpunct_char_do_falsename
)
4416 VTABLE_ADD_FUNC(numpunct_char_do_truename
));
4417 __ASM_VTABLE(numpunct_wchar
,
4418 VTABLE_ADD_FUNC(numpunct_wchar_do_decimal_point
)
4419 VTABLE_ADD_FUNC(numpunct_wchar_do_thousands_sep
)
4420 VTABLE_ADD_FUNC(numpunct_wchar_do_grouping
)
4421 VTABLE_ADD_FUNC(numpunct_wchar_do_falsename
)
4422 VTABLE_ADD_FUNC(numpunct_wchar_do_truename
));
4423 __ASM_VTABLE(numpunct_short
,
4424 VTABLE_ADD_FUNC(numpunct_wchar_do_decimal_point
)
4425 VTABLE_ADD_FUNC(numpunct_wchar_do_thousands_sep
)
4426 VTABLE_ADD_FUNC(numpunct_wchar_do_grouping
)
4427 VTABLE_ADD_FUNC(numpunct_wchar_do_falsename
)
4428 VTABLE_ADD_FUNC(numpunct_wchar_do_truename
));
4429 __ASM_VTABLE(num_get_char
,
4430 VTABLE_ADD_FUNC(num_get_char_do_get_void
)
4431 VTABLE_ADD_FUNC(num_get_char_do_get_double
)
4432 VTABLE_ADD_FUNC(num_get_char_do_get_double
)
4433 VTABLE_ADD_FUNC(num_get_char_do_get_float
)
4434 VTABLE_ADD_FUNC(num_get_char_do_get_uint64
)
4435 VTABLE_ADD_FUNC(num_get_char_do_get_int64
)
4436 VTABLE_ADD_FUNC(num_get_char_do_get_ulong
)
4437 VTABLE_ADD_FUNC(num_get_char_do_get_long
)
4438 VTABLE_ADD_FUNC(num_get_char_do_get_uint
)
4439 VTABLE_ADD_FUNC(num_get_char_do_get_ushort
)
4440 VTABLE_ADD_FUNC(num_get_char_do_get_bool
));
4441 __ASM_VTABLE(num_get_short
,
4442 VTABLE_ADD_FUNC(num_get_wchar_do_get_void
)
4443 VTABLE_ADD_FUNC(num_get_wchar_do_get_double
)
4444 VTABLE_ADD_FUNC(num_get_wchar_do_get_double
)
4445 VTABLE_ADD_FUNC(num_get_wchar_do_get_float
)
4446 VTABLE_ADD_FUNC(num_get_wchar_do_get_uint64
)
4447 VTABLE_ADD_FUNC(num_get_wchar_do_get_int64
)
4448 VTABLE_ADD_FUNC(num_get_wchar_do_get_ulong
)
4449 VTABLE_ADD_FUNC(num_get_wchar_do_get_long
)
4450 VTABLE_ADD_FUNC(num_get_wchar_do_get_uint
)
4451 VTABLE_ADD_FUNC(num_get_wchar_do_get_ushort
)
4452 VTABLE_ADD_FUNC(num_get_wchar_do_get_bool
));
4453 __ASM_VTABLE(num_get_wchar
,
4454 VTABLE_ADD_FUNC(num_get_wchar_do_get_void
)
4455 VTABLE_ADD_FUNC(num_get_wchar_do_get_double
)
4456 VTABLE_ADD_FUNC(num_get_wchar_do_get_double
)
4457 VTABLE_ADD_FUNC(num_get_wchar_do_get_float
)
4458 VTABLE_ADD_FUNC(num_get_wchar_do_get_uint64
)
4459 VTABLE_ADD_FUNC(num_get_wchar_do_get_int64
)
4460 VTABLE_ADD_FUNC(num_get_wchar_do_get_ulong
)
4461 VTABLE_ADD_FUNC(num_get_wchar_do_get_long
)
4462 VTABLE_ADD_FUNC(num_get_wchar_do_get_uint
)
4463 VTABLE_ADD_FUNC(num_get_wchar_do_get_ushort
)
4464 VTABLE_ADD_FUNC(num_get_wchar_do_get_bool
));