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
28 #include "wine/list.h"
33 #include "wine/unicode.h"
34 #include "wine/debug.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(msvcp90
);
37 char* __cdecl
_Getdays(void);
38 char* __cdecl
_Getmonths(void);
39 void* __cdecl
_Gettnames(void);
40 unsigned int __cdecl
___lc_codepage_func(void);
41 LCID
* __cdecl
___lc_handle_func(void);
42 const locale_facet
* __thiscall
locale__Getfacet(const locale
*, MSVCP_size_t
);
50 typedef struct _locale__Locimp
{
52 locale_facet
**facetvec
;
53 MSVCP_size_t facet_cnt
;
55 MSVCP_bool transparent
;
56 basic_string_char name
;
65 basic_string_char days
;
66 basic_string_char months
;
67 basic_string_char oldlocname
;
68 basic_string_char newlocname
;
113 } codecvt_base_result
;
125 const char *grouping
;
128 const char *false_name
;
129 const char *true_name
;
134 const char *grouping
;
137 const wchar_t *false_name
;
138 const wchar_t *true_name
;
147 typedef struct _istreambuf_iterator_char
149 struct _basic_streambuf_char
*strbuf
;
152 } istreambuf_iterator_char
;
154 typedef struct _istreambuf_iterator_wchar
156 struct _basic_streambuf_wchar
*strbuf
;
159 } istreambuf_iterator_wchar
;
161 /* ?_Id_cnt@id@locale@std@@0HA */
162 int locale_id__Id_cnt
= 0;
164 static locale__Locimp
*global_locale
;
165 static locale classic_locale
;
167 /* ?_Clocptr@_Locimp@locale@std@@0PAV123@A */
168 /* ?_Clocptr@_Locimp@locale@std@@0PEAV123@EA */
169 locale__Locimp
*locale__Locimp__Clocptr
= NULL
;
171 /* ??1facet@locale@std@@UAE@XZ */
172 /* ??1facet@locale@std@@UEAA@XZ */
173 DEFINE_THISCALL_WRAPPER(locale_facet_dtor
, 4)
174 void __thiscall
locale_facet_dtor(locale_facet
*this)
176 TRACE("(%p)\n", this);
179 DEFINE_THISCALL_WRAPPER(MSVCP_locale_facet_vector_dtor
, 8)
180 #define call_locale_facet_vector_dtor(this, flags) CALL_VTBL_FUNC(this, 0, \
181 locale_facet*, (locale_facet*, unsigned int), (this, flags))
182 locale_facet
* __thiscall
MSVCP_locale_facet_vector_dtor(locale_facet
*this, unsigned int flags
)
184 TRACE("(%p %x)\n", this, flags
);
186 /* we have an array, with the number of elements stored before the first object */
187 int i
, *ptr
= (int *)this-1;
189 for(i
=*ptr
-1; i
>=0; i
--)
190 locale_facet_dtor(this+i
);
191 MSVCRT_operator_delete(ptr
);
193 locale_facet_dtor(this);
195 MSVCRT_operator_delete(this);
206 static struct list lazy_facets
= LIST_INIT(lazy_facets
);
208 static void locale_facet_register(locale_facet
*add
)
210 facets_elem
*head
= MSVCRT_operator_new(sizeof(*head
));
212 ERR("Out of memory\n");
213 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
217 list_add_head(&lazy_facets
, &head
->entry
);
220 extern const vtable_ptr MSVCP_locale_facet_vtable
;
222 /* ??0id@locale@std@@QAE@I@Z */
223 /* ??0id@locale@std@@QEAA@_K@Z */
224 DEFINE_THISCALL_WRAPPER(locale_id_ctor_id
, 8)
225 locale_id
* __thiscall
locale_id_ctor_id(locale_id
*this, MSVCP_size_t id
)
227 TRACE("(%p %lu)\n", this, id
);
233 /* ??_Fid@locale@std@@QAEXXZ */
234 /* ??_Fid@locale@std@@QEAAXXZ */
235 DEFINE_THISCALL_WRAPPER(locale_id_ctor
, 4)
236 locale_id
* __thiscall
locale_id_ctor(locale_id
*this)
238 TRACE("(%p)\n", this);
244 /* ??Bid@locale@std@@QAEIXZ */
245 /* ??Bid@locale@std@@QEAA_KXZ */
246 DEFINE_THISCALL_WRAPPER(locale_id_operator_size_t
, 4)
247 MSVCP_size_t __thiscall
locale_id_operator_size_t(locale_id
*this)
251 TRACE("(%p)\n", this);
254 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
255 this->id
= ++locale_id__Id_cnt
;
262 /* ?_Id_cnt_func@id@locale@std@@CAAAHXZ */
263 /* ?_Id_cnt_func@id@locale@std@@CAAEAHXZ */
264 int* __cdecl
locale_id__Id_cnt_func(void)
267 return &locale_id__Id_cnt
;
270 /* ??_Ffacet@locale@std@@QAEXXZ */
271 /* ??_Ffacet@locale@std@@QEAAXXZ */
272 DEFINE_THISCALL_WRAPPER(locale_facet_ctor
, 4)
273 locale_facet
* __thiscall
locale_facet_ctor(locale_facet
*this)
275 TRACE("(%p)\n", this);
276 this->vtable
= &MSVCP_locale_facet_vtable
;
281 /* ??0facet@locale@std@@IAE@I@Z */
282 /* ??0facet@locale@std@@IEAA@_K@Z */
283 DEFINE_THISCALL_WRAPPER(locale_facet_ctor_refs
, 8)
284 locale_facet
* __thiscall
locale_facet_ctor_refs(locale_facet
*this, MSVCP_size_t refs
)
286 TRACE("(%p %lu)\n", this, refs
);
287 this->vtable
= &MSVCP_locale_facet_vtable
;
292 /* ?_Incref@facet@locale@std@@QAEXXZ */
293 /* ?_Incref@facet@locale@std@@QEAAXXZ */
294 DEFINE_THISCALL_WRAPPER(locale_facet__Incref
, 4)
295 void __thiscall
locale_facet__Incref(locale_facet
*this)
299 TRACE("(%p)\n", this);
301 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
306 /* ?_Decref@facet@locale@std@@QAEPAV123@XZ */
307 /* ?_Decref@facet@locale@std@@QEAAPEAV123@XZ */
308 DEFINE_THISCALL_WRAPPER(locale_facet__Decref
, 4)
309 locale_facet
* __thiscall
locale_facet__Decref(locale_facet
*this)
314 TRACE("(%p)\n", this);
316 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
320 ret
= this->refs
? NULL
: this;
326 /* ?_Getcat@facet@locale@std@@SAIPAPBV123@PBV23@@Z */
327 /* ?_Getcat@facet@locale@std@@SA_KPEAPEBV123@PEBV23@@Z */
328 MSVCP_size_t __cdecl
locale_facet__Getcat(const locale_facet
**facet
, const locale
*loc
)
330 TRACE("(%p %p)\n", facet
, loc
);
334 /* ??0_Timevec@std@@QAE@ABV01@@Z */
335 /* ??0_Timevec@std@@QEAA@AEBV01@@Z */
336 /* This copy constructor modifies copied object */
337 DEFINE_THISCALL_WRAPPER(_Timevec_copy_ctor
, 8)
338 _Timevec
* __thiscall
_Timevec_copy_ctor(_Timevec
*this, _Timevec
*copy
)
340 TRACE("(%p %p)\n", this, copy
);
341 this->timeptr
= copy
->timeptr
;
342 copy
->timeptr
= NULL
;
346 /* ??0_Timevec@std@@QAE@PAX@Z */
347 /* ??0_Timevec@std@@QEAA@PEAX@Z */
348 DEFINE_THISCALL_WRAPPER(_Timevec_ctor_timeptr
, 8)
349 _Timevec
* __thiscall
_Timevec_ctor_timeptr(_Timevec
*this, void *timeptr
)
351 TRACE("(%p %p)\n", this, timeptr
);
352 this->timeptr
= timeptr
;
356 /* ??_F_Timevec@std@@QAEXXZ */
357 /* ??_F_Timevec@std@@QEAAXXZ */
358 DEFINE_THISCALL_WRAPPER(_Timevec_ctor
, 4)
359 _Timevec
* __thiscall
_Timevec_ctor(_Timevec
*this)
361 TRACE("(%p)\n", this);
362 this->timeptr
= NULL
;
366 /* ??1_Timevec@std@@QAE@XZ */
367 /* ??1_Timevec@std@@QEAA@XZ */
368 DEFINE_THISCALL_WRAPPER(_Timevec_dtor
, 4)
369 void __thiscall
_Timevec_dtor(_Timevec
*this)
371 TRACE("(%p)\n", this);
375 /* ??4_Timevec@std@@QAEAAV01@ABV01@@Z */
376 /* ??4_Timevec@std@@QEAAAEAV01@AEBV01@@Z */
377 DEFINE_THISCALL_WRAPPER(_Timevec_op_assign
, 8)
378 _Timevec
* __thiscall
_Timevec_op_assign(_Timevec
*this, _Timevec
*right
)
380 TRACE("(%p %p)\n", this, right
);
381 this->timeptr
= right
->timeptr
;
382 right
->timeptr
= NULL
;
386 /* ?_Getptr@_Timevec@std@@QBEPAXXZ */
387 /* ?_Getptr@_Timevec@std@@QEBAPEAXXZ */
388 DEFINE_THISCALL_WRAPPER(_Timevec__Getptr
, 4)
389 void* __thiscall
_Timevec__Getptr(_Timevec
*this)
391 TRACE("(%p)\n", this);
392 return this->timeptr
;
395 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@HPBD@Z */
396 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@HPEBD@Z */
397 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_cat_cstr(_Locinfo
*locinfo
, int category
, const char *locstr
)
399 const char *locale
= NULL
;
401 /* This function is probably modifying more global objects */
402 FIXME("(%p %d %s) semi-stub\n", locinfo
, category
, locstr
);
405 throw_exception(EXCEPTION_RUNTIME_ERROR
, "bad locale name");
407 _Lockit_ctor_locktype(&locinfo
->lock
, _LOCK_LOCALE
);
408 MSVCP_basic_string_char_ctor_cstr(&locinfo
->days
, "");
409 MSVCP_basic_string_char_ctor_cstr(&locinfo
->months
, "");
410 MSVCP_basic_string_char_ctor_cstr(&locinfo
->oldlocname
, setlocale(LC_ALL
, NULL
));
413 locale
= setlocale(LC_ALL
, locstr
);
415 locale
= setlocale(LC_ALL
, NULL
);
418 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, locale
);
420 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, "*");
425 /* ??0_Locinfo@std@@QAE@HPBD@Z */
426 /* ??0_Locinfo@std@@QEAA@HPEBD@Z */
427 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_cat_cstr
, 12)
428 _Locinfo
* __thiscall
_Locinfo_ctor_cat_cstr(_Locinfo
*this, int category
, const char *locstr
)
430 return _Locinfo__Locinfo_ctor_cat_cstr(this, category
, locstr
);
433 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
434 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
435 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_bstr(_Locinfo
*locinfo
, const basic_string_char
*locstr
)
437 return _Locinfo__Locinfo_ctor_cat_cstr(locinfo
, 1/*FIXME*/, MSVCP_basic_string_char_c_str(locstr
));
440 /* ??0_Locinfo@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
441 /* ??0_Locinfo@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
442 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_bstr
, 8)
443 _Locinfo
* __thiscall
_Locinfo_ctor_bstr(_Locinfo
*this, const basic_string_char
*locstr
)
445 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, MSVCP_basic_string_char_c_str(locstr
));
448 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@PBD@Z */
449 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@PEBD@Z */
450 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_cstr(_Locinfo
*locinfo
, const char *locstr
)
452 return _Locinfo__Locinfo_ctor_cat_cstr(locinfo
, 1/*FIXME*/, locstr
);
455 /* ??0_Locinfo@std@@QAE@PBD@Z */
456 /* ??0_Locinfo@std@@QEAA@PEBD@Z */
457 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_cstr
, 8)
458 _Locinfo
* __thiscall
_Locinfo_ctor_cstr(_Locinfo
*this, const char *locstr
)
460 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, locstr
);
463 /* ?_Locinfo_dtor@_Locinfo@std@@SAXPAV12@@Z */
464 /* ?_Locinfo_dtor@_Locinfo@std@@SAXPEAV12@@Z */
465 void __cdecl
_Locinfo__Locinfo_dtor(_Locinfo
*locinfo
)
467 TRACE("(%p)\n", locinfo
);
469 setlocale(LC_ALL
, MSVCP_basic_string_char_c_str(&locinfo
->oldlocname
));
470 MSVCP_basic_string_char_dtor(&locinfo
->days
);
471 MSVCP_basic_string_char_dtor(&locinfo
->months
);
472 MSVCP_basic_string_char_dtor(&locinfo
->oldlocname
);
473 MSVCP_basic_string_char_dtor(&locinfo
->newlocname
);
474 _Lockit_dtor(&locinfo
->lock
);
477 /* ??_F_Locinfo@std@@QAEXXZ */
478 /* ??_F_Locinfo@std@@QEAAXXZ */
479 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor
, 4)
480 _Locinfo
* __thiscall
_Locinfo_ctor(_Locinfo
*this)
482 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, "C");
485 /* ??1_Locinfo@std@@QAE@XZ */
486 /* ??1_Locinfo@std@@QEAA@XZ */
487 DEFINE_THISCALL_WRAPPER(_Locinfo_dtor
, 4)
488 void __thiscall
_Locinfo_dtor(_Locinfo
*this)
490 _Locinfo__Locinfo_dtor(this);
493 /* ?_Locinfo_Addcats@_Locinfo@std@@SAAAV12@PAV12@HPBD@Z */
494 /* ?_Locinfo_Addcats@_Locinfo@std@@SAAEAV12@PEAV12@HPEBD@Z */
495 _Locinfo
* __cdecl
_Locinfo__Locinfo_Addcats(_Locinfo
*locinfo
, int category
, const char *locstr
)
497 const char *locale
= NULL
;
499 /* This function is probably modifying more global objects */
500 FIXME("(%p %d %s) semi-stub\n", locinfo
, category
, locstr
);
502 throw_exception(EXCEPTION_RUNTIME_ERROR
, "bad locale name");
504 MSVCP_basic_string_char_dtor(&locinfo
->newlocname
);
507 locale
= setlocale(LC_ALL
, locstr
);
509 locale
= setlocale(LC_ALL
, NULL
);
512 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, locale
);
514 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, "*");
519 /* ?_Addcats@_Locinfo@std@@QAEAAV12@HPBD@Z */
520 /* ?_Addcats@_Locinfo@std@@QEAAAEAV12@HPEBD@Z */
521 DEFINE_THISCALL_WRAPPER(_Locinfo__Addcats
, 12)
522 _Locinfo
* __thiscall
_Locinfo__Addcats(_Locinfo
*this, int category
, const char *locstr
)
524 return _Locinfo__Locinfo_Addcats(this, category
, locstr
);
528 _Collvec __cdecl
_Getcoll(void)
531 _locale_t locale
= _get_current_locale();
535 ret
.page
= locale
->locinfo
->lc_collate_cp
;
536 ret
.handle
= locale
->locinfo
->lc_handle
[LC_COLLATE
];
537 _free_locale(locale
);
541 /* ?_Getcoll@_Locinfo@std@@QBE?AU_Collvec@@XZ */
542 /* ?_Getcoll@_Locinfo@std@@QEBA?AU_Collvec@@XZ */
543 DEFINE_THISCALL_WRAPPER(_Locinfo__Getcoll
, 8)
544 _Collvec
* __thiscall
_Locinfo__Getcoll(const _Locinfo
*this, _Collvec
*ret
)
551 _Ctypevec __cdecl
_Getctype(void)
554 _locale_t locale
= _get_current_locale();
559 ret
.page
= locale
->locinfo
->lc_codepage
;
560 ret
.handle
= locale
->locinfo
->lc_handle
[LC_COLLATE
];
562 table
= malloc(sizeof(short[256]));
564 _free_locale(locale
);
565 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
567 memcpy(table
, locale
->locinfo
->pctype
, sizeof(short[256]));
569 _free_locale(locale
);
573 /* ?_Getctype@_Locinfo@std@@QBE?AU_Ctypevec@@XZ */
574 /* ?_Getctype@_Locinfo@std@@QEBA?AU_Ctypevec@@XZ */
575 DEFINE_THISCALL_WRAPPER(_Locinfo__Getctype
, 8)
576 _Ctypevec
* __thiscall
_Locinfo__Getctype(const _Locinfo
*this, _Ctypevec
*ret
)
583 _Cvtvec __cdecl
_Getcvt(void)
586 _locale_t locale
= _get_current_locale();
590 ret
.page
= locale
->locinfo
->lc_codepage
;
591 ret
.handle
= locale
->locinfo
->lc_handle
[LC_CTYPE
];
592 _free_locale(locale
);
596 /* ?_Getcvt@_Locinfo@std@@QBE?AU_Cvtvec@@XZ */
597 /* ?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ */
598 DEFINE_THISCALL_WRAPPER(_Locinfo__Getcvt
, 8)
599 _Cvtvec
* __thiscall
_Locinfo__Getcvt(const _Locinfo
*this, _Cvtvec
*ret
)
605 /* ?_Getdateorder@_Locinfo@std@@QBEHXZ */
606 /* ?_Getdateorder@_Locinfo@std@@QEBAHXZ */
607 DEFINE_THISCALL_WRAPPER(_Locinfo__Getdateorder
, 4)
608 int __thiscall
_Locinfo__Getdateorder(const _Locinfo
*this)
610 FIXME("(%p) stub\n", this);
614 /* ?_Getdays@_Locinfo@std@@QBEPBDXZ */
615 /* ?_Getdays@_Locinfo@std@@QEBAPEBDXZ */
616 DEFINE_THISCALL_WRAPPER(_Locinfo__Getdays
, 4)
617 const char* __thiscall
_Locinfo__Getdays(_Locinfo
*this)
619 char *days
= _Getdays();
621 TRACE("(%p)\n", this);
624 MSVCP_basic_string_char_dtor(&this->days
);
625 MSVCP_basic_string_char_ctor_cstr(&this->days
, days
);
629 return this->days
.size
? MSVCP_basic_string_char_c_str(&this->days
) :
630 ":Sun:Sunday:Mon:Monday:Tue:Tuesday:Wed:Wednesday:Thu:Thursday:Fri:Friday:Sat:Saturday";
633 /* ?_Getmonths@_Locinfo@std@@QBEPBDXZ */
634 /* ?_Getmonths@_Locinfo@std@@QEBAPEBDXZ */
635 DEFINE_THISCALL_WRAPPER(_Locinfo__Getmonths
, 4)
636 const char* __thiscall
_Locinfo__Getmonths(_Locinfo
*this)
638 char *months
= _Getmonths();
640 TRACE("(%p)\n", this);
643 MSVCP_basic_string_char_dtor(&this->months
);
644 MSVCP_basic_string_char_ctor_cstr(&this->months
, months
);
648 return this->months
.size
? MSVCP_basic_string_char_c_str(&this->months
) :
649 ":Jan:January:Feb:February:Mar:March:Apr:April:May:May:Jun:June:Jul:July"
650 ":Aug:August:Sep:September:Oct:October:Nov:November:Dec:December";
653 /* ?_Getfalse@_Locinfo@std@@QBEPBDXZ */
654 /* ?_Getfalse@_Locinfo@std@@QEBAPEBDXZ */
655 DEFINE_THISCALL_WRAPPER(_Locinfo__Getfalse
, 4)
656 const char* __thiscall
_Locinfo__Getfalse(const _Locinfo
*this)
658 TRACE("(%p)\n", this);
662 /* ?_Gettrue@_Locinfo@std@@QBEPBDXZ */
663 /* ?_Gettrue@_Locinfo@std@@QEBAPEBDXZ */
664 DEFINE_THISCALL_WRAPPER(_Locinfo__Gettrue
, 4)
665 const char* __thiscall
_Locinfo__Gettrue(const _Locinfo
*this)
667 TRACE("(%p)\n", this);
671 /* ?_Getlconv@_Locinfo@std@@QBEPBUlconv@@XZ */
672 /* ?_Getlconv@_Locinfo@std@@QEBAPEBUlconv@@XZ */
673 DEFINE_THISCALL_WRAPPER(_Locinfo__Getlconv
, 4)
674 const struct lconv
* __thiscall
_Locinfo__Getlconv(const _Locinfo
*this)
676 TRACE("(%p)\n", this);
680 /* ?_Getname@_Locinfo@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
681 /* ?_Getname@_Locinfo@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
682 DEFINE_THISCALL_WRAPPER(_Locinfo__Getname
, 8)
683 basic_string_char
* __thiscall
_Locinfo__Getname(const _Locinfo
*this, basic_string_char
*ret
)
685 TRACE("(%p)\n", this);
687 MSVCP_basic_string_char_copy_ctor(ret
, &this->newlocname
);
691 /* ?_Gettnames@_Locinfo@std@@QBE?AV_Timevec@2@XZ */
692 /* ?_Gettnames@_Locinfo@std@@QEBA?AV_Timevec@2@XZ */
693 DEFINE_THISCALL_WRAPPER(_Locinfo__Gettnames
, 8)
694 _Timevec
*__thiscall
_Locinfo__Gettnames(const _Locinfo
*this, _Timevec
*ret
)
696 TRACE("(%p)\n", this);
698 _Timevec_ctor_timeptr(ret
, _Gettnames());
702 /* ?id@?$collate@D@std@@2V0locale@2@A */
703 locale_id collate_char_id
= {0};
705 /* ??_7?$collate@D@std@@6B@ */
706 extern const vtable_ptr MSVCP_collate_char_vtable
;
708 /* ?_Init@?$collate@D@std@@IAEXABV_Locinfo@2@@Z */
709 /* ?_Init@?$collate@D@std@@IEAAXAEBV_Locinfo@2@@Z */
710 DEFINE_THISCALL_WRAPPER(collate_char__Init
, 8)
711 void __thiscall
collate_char__Init(collate
*this, const _Locinfo
*locinfo
)
713 TRACE("(%p %p)\n", this, locinfo
);
714 _Locinfo__Getcoll(locinfo
, &this->coll
);
717 /* ??0?$collate@D@std@@IAE@PBDI@Z */
718 /* ??0?$collate@D@std@@IEAA@PEBD_K@Z */
719 DEFINE_THISCALL_WRAPPER(collate_char_ctor_name
, 12)
720 collate
* __thiscall
collate_char_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
724 TRACE("(%p %s %lu)\n", this, name
, refs
);
726 locale_facet_ctor_refs(&this->facet
, refs
);
727 this->facet
.vtable
= &MSVCP_collate_char_vtable
;
729 _Locinfo_ctor_cstr(&locinfo
, name
);
730 collate_char__Init(this, &locinfo
);
731 _Locinfo_dtor(&locinfo
);
735 /* ??0?$collate@D@std@@QAE@ABV_Locinfo@1@I@Z */
736 /* ??0?$collate@D@std@@QEAA@AEBV_Locinfo@1@_K@Z */
737 DEFINE_THISCALL_WRAPPER(collate_char_ctor_locinfo
, 12)
738 collate
* __thiscall
collate_char_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
740 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
742 locale_facet_ctor_refs(&this->facet
, refs
);
743 this->facet
.vtable
= &MSVCP_collate_char_vtable
;
744 collate_char__Init(this, locinfo
);
748 /* ??0?$collate@D@std@@QAE@I@Z */
749 /* ??0?$collate@D@std@@QEAA@_K@Z */
750 DEFINE_THISCALL_WRAPPER(collate_char_ctor_refs
, 8)
751 collate
* __thiscall
collate_char_ctor_refs(collate
*this, MSVCP_size_t refs
)
753 return collate_char_ctor_name(this, "C", refs
);
756 /* ??1?$collate@D@std@@MAE@XZ */
757 /* ??1?$collate@D@std@@MEAA@XZ */
758 DEFINE_THISCALL_WRAPPER(collate_char_dtor
, 4)
759 void __thiscall
collate_char_dtor(collate
*this)
761 TRACE("(%p)\n", this);
764 DEFINE_THISCALL_WRAPPER(MSVCP_collate_char_vector_dtor
, 8)
765 collate
* __thiscall
MSVCP_collate_char_vector_dtor(collate
*this, unsigned int flags
)
767 TRACE("(%p %x)\n", this, flags
);
769 /* we have an array, with the number of elements stored before the first object */
770 int i
, *ptr
= (int *)this-1;
772 for(i
=*ptr
-1; i
>=0; i
--)
773 collate_char_dtor(this+i
);
774 MSVCRT_operator_delete(ptr
);
776 collate_char_dtor(this);
778 MSVCRT_operator_delete(this);
784 /* ??_F?$collate@D@std@@QAEXXZ */
785 /* ??_F?$collate@D@std@@QEAAXXZ */
786 DEFINE_THISCALL_WRAPPER(collate_char_ctor
, 4)
787 collate
* __thiscall
collate_char_ctor(collate
*this)
789 return collate_char_ctor_name(this, "C", 0);
792 /* ?_Getcat@?$collate@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
793 /* ?_Getcat@?$collate@D@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
794 MSVCP_size_t __cdecl
collate_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
796 TRACE("(%p %p)\n", facet
, loc
);
798 if(facet
&& !*facet
) {
799 *facet
= MSVCRT_operator_new(sizeof(collate
));
801 ERR("Out of memory\n");
802 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
805 collate_char_ctor_name((collate
*)*facet
,
806 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0);
813 int __cdecl
_Strcoll(const char *first1
, const char *last1
, const char *first2
,
814 const char *last2
, const _Collvec
*coll
)
818 TRACE("(%s %s)\n", debugstr_an(first1
, last1
-first1
), debugstr_an(first2
, last2
-first2
));
823 lcid
= ___lc_handle_func()[LC_COLLATE
];
824 return CompareStringA(lcid
, 0, first1
, last1
-first1
, first2
, last2
-first2
)-2;
827 /* ?do_compare@?$collate@D@std@@MBEHPBD000@Z */
828 /* ?do_compare@?$collate@D@std@@MEBAHPEBD000@Z */
829 DEFINE_THISCALL_WRAPPER(collate_char_do_compare
, 20)
830 #define call_collate_char_do_compare(this, first1, last1, first2, last2) CALL_VTBL_FUNC(this, 4, int, \
831 (const collate*, const char*, const char*, const char*, const char*), \
832 (this, first1, last1, first2, last2))
833 int __thiscall
collate_char_do_compare(const collate
*this, const char *first1
,
834 const char *last1
, const char *first2
, const char *last2
)
836 TRACE("(%p %p %p %p %p)\n", this, first1
, last1
, first2
, last2
);
837 return _Strcoll(first1
, last1
, first2
, last2
, &this->coll
);
840 /* ?compare@?$collate@D@std@@QBEHPBD000@Z */
841 /* ?compare@?$collate@D@std@@QEBAHPEBD000@Z */
842 DEFINE_THISCALL_WRAPPER(collate_char_compare
, 20)
843 int __thiscall
collate_char_compare(const collate
*this, const char *first1
,
844 const char *last1
, const char *first2
, const char *last2
)
846 TRACE("(%p %p %p %p %p)\n", this, first1
, last1
, first2
, last2
);
847 return call_collate_char_do_compare(this, first1
, last1
, first2
, last2
);
850 /* ?do_hash@?$collate@D@std@@MBEJPBD0@Z */
851 /* ?do_hash@?$collate@D@std@@MEBAJPEBD0@Z */
852 DEFINE_THISCALL_WRAPPER(collate_char_do_hash
, 12)
853 #define call_collate_char_do_hash(this, first, last) CALL_VTBL_FUNC(this, 12, LONG, \
854 (const collate*, const char*, const char*), (this, first, last))
855 LONG __thiscall
collate_char_do_hash(const collate
*this,
856 const char *first
, const char *last
)
860 TRACE("(%p %p %p)\n", this, first
, last
);
862 for(; first
<last
; first
++)
863 ret
= (ret
<<8 | ret
>>24) + *first
;
867 /* ?hash@?$collate@D@std@@QBEJPBD0@Z */
868 /* ?hash@?$collate@D@std@@QEBAJPEBD0@Z */
869 DEFINE_THISCALL_WRAPPER(collate_char_hash
, 12)
870 LONG __thiscall
collate_char_hash(const collate
*this,
871 const char *first
, const char *last
)
873 TRACE("(%p %p %p)\n", this, first
, last
);
874 return call_collate_char_do_hash(this, first
, last
);
877 /* ?do_transform@?$collate@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD0@Z */
878 /* ?do_transform@?$collate@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD0@Z */
879 DEFINE_THISCALL_WRAPPER(collate_char_do_transform
, 16)
880 basic_string_char
* __thiscall
collate_char_do_transform(const collate
*this,
881 basic_string_char
*ret
, const char *first
, const char *last
)
883 FIXME("(%p %p %p) stub\n", this, first
, last
);
887 /* ?transform@?$collate@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD0@Z */
888 /* ?transform@?$collate@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD0@Z */
889 DEFINE_THISCALL_WRAPPER(collate_char_transform
, 16)
890 basic_string_char
* __thiscall
collate_char_transform(const collate
*this,
891 basic_string_char
*ret
, const char *first
, const char *last
)
893 FIXME("(%p %p %p) stub\n", this, first
, last
);
897 /* ?id@?$collate@_W@std@@2V0locale@2@A */
898 locale_id collate_wchar_id
= {0};
899 /* ?id@?$collate@G@std@@2V0locale@2@A */
900 locale_id collate_short_id
= {0};
902 /* ??_7?$collate@_W@std@@6B@ */
903 extern const vtable_ptr MSVCP_collate_wchar_vtable
;
904 /* ??_7?$collate@G@std@@6B@ */
905 extern const vtable_ptr MSVCP_collate_short_vtable
;
907 /* ?_Init@?$collate@_W@std@@IAEXABV_Locinfo@2@@Z */
908 /* ?_Init@?$collate@_W@std@@IEAAXAEBV_Locinfo@2@@Z */
909 /* ?_Init@?$collate@G@std@@IAEXABV_Locinfo@2@@Z */
910 /* ?_Init@?$collate@G@std@@IEAAXAEBV_Locinfo@2@@Z */
911 DEFINE_THISCALL_WRAPPER(collate_wchar__Init
, 8)
912 void __thiscall
collate_wchar__Init(collate
*this, const _Locinfo
*locinfo
)
914 TRACE("(%p %p)\n", this, locinfo
);
915 _Locinfo__Getcoll(locinfo
, &this->coll
);
918 /* ??0?$collate@_W@std@@IAE@PBDI@Z */
919 /* ??0?$collate@_W@std@@IEAA@PEBD_K@Z */
920 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_name
, 12)
921 collate
* __thiscall
collate_wchar_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
925 TRACE("(%p %s %lu)\n", this, name
, refs
);
927 locale_facet_ctor_refs(&this->facet
, refs
);
928 this->facet
.vtable
= &MSVCP_collate_wchar_vtable
;
930 _Locinfo_ctor_cstr(&locinfo
, name
);
931 collate_wchar__Init(this, &locinfo
);
932 _Locinfo_dtor(&locinfo
);
936 /* ??0?$collate@G@std@@IAE@PBDI@Z */
937 /* ??0?$collate@G@std@@IEAA@PEBD_K@Z */
938 DEFINE_THISCALL_WRAPPER(collate_short_ctor_name
, 12)
939 collate
* __thiscall
collate_short_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
941 collate
*ret
= collate_wchar_ctor_name(this, name
, refs
);
942 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
946 /* ??0?$collate@_W@std@@QAE@ABV_Locinfo@1@I@Z */
947 /* ??0?$collate@_W@std@@QEAA@AEBV_Locinfo@1@_K@Z */
948 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_locinfo
, 12)
949 collate
* __thiscall
collate_wchar_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
951 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
953 locale_facet_ctor_refs(&this->facet
, refs
);
954 this->facet
.vtable
= &MSVCP_collate_wchar_vtable
;
955 collate_wchar__Init(this, locinfo
);
959 /* ??0?$collate@G@std@@QAE@ABV_Locinfo@1@I@Z */
960 /* ??0?$collate@G@std@@QEAA@AEBV_Locinfo@1@_K@Z */
961 DEFINE_THISCALL_WRAPPER(collate_short_ctor_locinfo
, 12)
962 collate
* __thiscall
collate_short_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
964 collate
*ret
= collate_wchar_ctor_locinfo(this, locinfo
, refs
);
965 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
969 /* ??0?$collate@_W@std@@QAE@I@Z */
970 /* ??0?$collate@_W@std@@QEAA@_K@Z */
971 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_refs
, 8)
972 collate
* __thiscall
collate_wchar_ctor_refs(collate
*this, MSVCP_size_t refs
)
974 return collate_wchar_ctor_name(this, "C", refs
);
977 /* ??0?$collate@G@std@@QAE@I@Z */
978 /* ??0?$collate@G@std@@QEAA@_K@Z */
979 DEFINE_THISCALL_WRAPPER(collate_short_ctor_refs
, 8)
980 collate
* __thiscall
collate_short_ctor_refs(collate
*this, MSVCP_size_t refs
)
982 collate
*ret
= collate_wchar_ctor_refs(this, refs
);
983 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
987 /* ??1?$collate@_W@std@@MAE@XZ */
988 /* ??1?$collate@_W@std@@MEAA@XZ */
989 /* ??1?$collate@G@std@@MAE@XZ */
990 /* ??1?$collate@G@std@@MEAA@XZ */
991 DEFINE_THISCALL_WRAPPER(collate_wchar_dtor
, 4)
992 void __thiscall
collate_wchar_dtor(collate
*this)
994 TRACE("(%p)\n", this);
997 DEFINE_THISCALL_WRAPPER(MSVCP_collate_wchar_vector_dtor
, 8)
998 collate
* __thiscall
MSVCP_collate_wchar_vector_dtor(collate
*this, unsigned int flags
)
1000 TRACE("(%p %x)\n", this, flags
);
1002 /* we have an array, with the number of elements stored before the first object */
1003 int i
, *ptr
= (int *)this-1;
1005 for(i
=*ptr
-1; i
>=0; i
--)
1006 collate_wchar_dtor(this+i
);
1007 MSVCRT_operator_delete(ptr
);
1009 collate_wchar_dtor(this);
1011 MSVCRT_operator_delete(this);
1017 DEFINE_THISCALL_WRAPPER(MSVCP_collate_short_vector_dtor
, 8)
1018 collate
* __thiscall
MSVCP_collate_short_vector_dtor(collate
*this, unsigned int flags
)
1020 return MSVCP_collate_wchar_vector_dtor(this, flags
);
1023 /* ??_F?$collate@_W@std@@QAEXXZ */
1024 /* ??_F?$collate@_W@std@@QEAAXXZ */
1025 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor
, 4)
1026 collate
* __thiscall
collate_wchar_ctor(collate
*this)
1028 return collate_wchar_ctor_name(this, "C", 0);
1031 /* ??_F?$collate@G@std@@QAEXXZ */
1032 /* ??_F?$collate@G@std@@QEAAXXZ */
1033 DEFINE_THISCALL_WRAPPER(collate_short_ctor
, 4)
1034 collate
* __thiscall
collate_short_ctor(collate
*this)
1036 collate
*ret
= collate_wchar_ctor(this);
1037 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
1041 /* ?_Getcat@?$collate@_W@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1042 /* ?_Getcat@?$collate@_W@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1043 MSVCP_size_t __cdecl
collate_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
1045 TRACE("(%p %p)\n", facet
, loc
);
1047 if(facet
&& !*facet
) {
1048 *facet
= MSVCRT_operator_new(sizeof(collate
));
1050 ERR("Out of memory\n");
1051 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
1054 collate_wchar_ctor_name((collate
*)*facet
,
1055 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0);
1061 /* ?_Getcat@?$collate@G@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1062 /* ?_Getcat@?$collate@G@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1063 MSVCP_size_t __cdecl
collate_short__Getcat(const locale_facet
**facet
, const locale
*loc
)
1065 if(facet
&& !*facet
) {
1066 collate_wchar__Getcat(facet
, loc
);
1067 (*(locale_facet
**)facet
)->vtable
= &MSVCP_collate_short_vtable
;
1074 int __cdecl
_Wcscoll(const wchar_t *first1
, const wchar_t *last1
, const wchar_t *first2
,
1075 const wchar_t *last2
, const _Collvec
*coll
)
1079 TRACE("(%s %s)\n", debugstr_wn(first1
, last1
-first1
), debugstr_wn(first2
, last2
-first2
));
1082 lcid
= coll
->handle
;
1084 lcid
= ___lc_handle_func()[LC_COLLATE
];
1085 return CompareStringW(lcid
, 0, first1
, last1
-first1
, first2
, last2
-first2
)-2;
1088 /* ?do_compare@?$collate@_W@std@@MBEHPB_W000@Z */
1089 /* ?do_compare@?$collate@_W@std@@MEBAHPEB_W000@Z */
1090 /* ?do_compare@?$collate@G@std@@MBEHPBG000@Z */
1091 /* ?do_compare@?$collate@G@std@@MEBAHPEBG000@Z */
1092 DEFINE_THISCALL_WRAPPER(collate_wchar_do_compare
, 20)
1093 #define call_collate_wchar_do_compare(this, first1, last1, first2, last2) CALL_VTBL_FUNC(this, 4, int, \
1094 (const collate*, const wchar_t*, const wchar_t*, const wchar_t*, const wchar_t*), \
1095 (this, first1, last1, first2, last2))
1096 int __thiscall
collate_wchar_do_compare(const collate
*this, const wchar_t *first1
,
1097 const wchar_t *last1
, const wchar_t *first2
, const wchar_t *last2
)
1099 TRACE("(%p %p %p %p %p)\n", this, first1
, last1
, first2
, last2
);
1100 return _Wcscoll(first1
, last1
, first2
, last2
, &this->coll
);
1103 /* ?compare@?$collate@_W@std@@QBEHPB_W000@Z */
1104 /* ?compare@?$collate@_W@std@@QEBAHPEB_W000@Z */
1105 /* ?compare@?$collate@G@std@@QBEHPBG000@Z */
1106 /* ?compare@?$collate@G@std@@QEBAHPEBG000@Z */
1107 DEFINE_THISCALL_WRAPPER(collate_wchar_compare
, 20)
1108 int __thiscall
collate_wchar_compare(const collate
*this, const wchar_t *first1
,
1109 const wchar_t *last1
, const wchar_t *first2
, const wchar_t *last2
)
1111 TRACE("(%p %p %p %p %p)\n", this, first1
, last1
, first2
, last2
);
1112 return call_collate_wchar_do_compare(this, first1
, last1
, first2
, last2
);
1115 /* ?do_hash@?$collate@_W@std@@MBEJPB_W0@Z */
1116 /* ?do_hash@?$collate@_W@std@@MEBAJPEB_W0@Z */
1117 /* ?do_hash@?$collate@G@std@@MBEJPBG0@Z */
1118 /* ?do_hash@?$collate@G@std@@MEBAJPEBG0@Z */
1119 DEFINE_THISCALL_WRAPPER(collate_wchar_do_hash
, 12)
1120 #define call_collate_wchar_do_hash(this, first, last) CALL_VTBL_FUNC(this, 12, LONG, \
1121 (const collate*, const wchar_t*, const wchar_t*), (this, first, last))
1122 LONG __thiscall
collate_wchar_do_hash(const collate
*this,
1123 const wchar_t *first
, const wchar_t *last
)
1127 TRACE("(%p %p %p)\n", this, first
, last
);
1129 for(; first
<last
; first
++)
1130 ret
= (ret
<<8 | ret
>>24) + *first
;
1134 /* ?hash@?$collate@_W@std@@QBEJPB_W0@Z */
1135 /* ?hash@?$collate@_W@std@@QEBAJPEB_W0@Z */
1136 /* ?hash@?$collate@G@std@@QBEJPBG0@Z */
1137 /* ?hash@?$collate@G@std@@QEBAJPEBG0@Z */
1138 DEFINE_THISCALL_WRAPPER(collate_wchar_hash
, 12)
1139 LONG __thiscall
collate_wchar_hash(const collate
*this,
1140 const wchar_t *first
, const wchar_t *last
)
1142 TRACE("(%p %p %p)\n", this, first
, last
);
1143 return call_collate_wchar_do_hash(this, first
, last
);
1146 /* ?do_transform@?$collate@_W@std@@MBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PB_W0@Z */
1147 /* ?do_transform@?$collate@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W0@Z */
1148 /* ?do_transform@?$collate@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG0@Z */
1149 /* ?do_transform@?$collate@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG0@Z */
1150 DEFINE_THISCALL_WRAPPER(collate_wchar_do_transform
, 16)
1151 basic_string_wchar
* __thiscall
collate_wchar_do_transform(const collate
*this,
1152 basic_string_wchar
*ret
, const wchar_t *first
, const wchar_t *last
)
1154 FIXME("(%p %p %p) stub\n", this, first
, last
);
1158 /* ?transform@?$collate@_W@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PB_W0@Z */
1159 /* ?transform@?$collate@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W0@Z */
1160 /* ?transform@?$collate@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG0@Z */
1161 /* ?transform@?$collate@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG0@Z */
1162 DEFINE_THISCALL_WRAPPER(collate_wchar_transform
, 16)
1163 basic_string_wchar
* __thiscall
collate_wchar_transform(const collate
*this,
1164 basic_string_wchar
*ret
, const wchar_t *first
, const wchar_t *last
)
1166 FIXME("(%p %p %p) stub\n", this, first
, last
);
1170 /* ??_7ctype_base@std@@6B@ */
1171 extern const vtable_ptr MSVCP_ctype_base_vtable
;
1173 /* ??0ctype_base@std@@QAE@I@Z */
1174 /* ??0ctype_base@std@@QEAA@_K@Z */
1175 DEFINE_THISCALL_WRAPPER(ctype_base_ctor_refs
, 8)
1176 ctype_base
* __thiscall
ctype_base_ctor_refs(ctype_base
*this, MSVCP_size_t refs
)
1178 TRACE("(%p %lu)\n", this, refs
);
1179 locale_facet_ctor_refs(&this->facet
, refs
);
1180 this->facet
.vtable
= &MSVCP_ctype_base_vtable
;
1184 /* ??_Fctype_base@std@@QAEXXZ */
1185 /* ??_Fctype_base@std@@QEAAXXZ */
1186 DEFINE_THISCALL_WRAPPER(ctype_base_ctor
, 4)
1187 ctype_base
* __thiscall
ctype_base_ctor(ctype_base
*this)
1189 TRACE("(%p)\n", this);
1190 locale_facet_ctor_refs(&this->facet
, 0);
1191 this->facet
.vtable
= &MSVCP_ctype_base_vtable
;
1195 /* ??1ctype_base@std@@UAE@XZ */
1196 /* ??1ctype_base@std@@UEAA@XZ */
1197 DEFINE_THISCALL_WRAPPER(ctype_base_dtor
, 4)
1198 void __thiscall
ctype_base_dtor(ctype_base
*this)
1200 TRACE("(%p)\n", this);
1203 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_base_vector_dtor
, 8)
1204 ctype_base
* __thiscall
MSVCP_ctype_base_vector_dtor(ctype_base
*this, unsigned int flags
)
1206 TRACE("(%p %x)\n", this, flags
);
1208 /* we have an array, with the number of elements stored before the first object */
1209 int i
, *ptr
= (int *)this-1;
1211 for(i
=*ptr
-1; i
>=0; i
--)
1212 ctype_base_dtor(this+i
);
1213 MSVCRT_operator_delete(ptr
);
1215 ctype_base_dtor(this);
1217 MSVCRT_operator_delete(this);
1223 /* ?_Xran@ctype_base@std@@KAXXZ */
1224 void __cdecl
ctype_base__Xran(void)
1226 throw_exception(EXCEPTION_OUT_OF_RANGE
, "out of range in ctype<T>");
1229 /* ?id@?$ctype@D@std@@2V0locale@2@A */
1230 locale_id ctype_char_id
= {0};
1231 /* ?table_size@?$ctype@D@std@@2IB */
1232 /* ?table_size@?$ctype@D@std@@2_KB */
1233 MSVCP_size_t ctype_char_table_size
= 256;
1235 /* ??_7?$ctype@D@std@@6B@ */
1236 extern const vtable_ptr MSVCP_ctype_char_vtable
;
1238 /* ?_Id_func@?$ctype@D@std@@SAAAVid@locale@2@XZ */
1239 /* ?_Id_func@?$ctype@D@std@@SAAEAVid@locale@2@XZ */
1240 locale_id
* __cdecl
ctype_char__Id_func(void)
1243 return &ctype_char_id
;
1246 /* ?_Init@?$ctype@D@std@@IAEXABV_Locinfo@2@@Z */
1247 /* ?_Init@?$ctype@D@std@@IEAAXAEBV_Locinfo@2@@Z */
1248 DEFINE_THISCALL_WRAPPER(ctype_char__Init
, 8)
1249 void __thiscall
ctype_char__Init(ctype_char
*this, _Locinfo
*locinfo
)
1251 TRACE("(%p %p)\n", this, locinfo
);
1252 _Locinfo__Getctype(locinfo
, &this->ctype
);
1255 /* ?_Tidy@?$ctype@D@std@@IAEXXZ */
1256 /* ?_Tidy@?$ctype@D@std@@IEAAXXZ */
1257 DEFINE_THISCALL_WRAPPER(ctype_char__Tidy
, 4)
1258 void __thiscall
ctype_char__Tidy(ctype_char
*this)
1260 TRACE("(%p)\n", this);
1262 if(this->ctype
.delfl
)
1263 free((short*)this->ctype
.table
);
1266 /* ?classic_table@?$ctype@D@std@@KAPBFXZ */
1267 /* ?classic_table@?$ctype@D@std@@KAPEBFXZ */
1268 const short* __cdecl
ctype_char_classic_table(void)
1271 return &((short*)GetProcAddress(GetModuleHandleA("msvcrt.dll"), "_ctype"))[1];
1274 /* ??0?$ctype@D@std@@QAE@ABV_Locinfo@1@I@Z */
1275 /* ??0?$ctype@D@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1276 DEFINE_THISCALL_WRAPPER(ctype_char_ctor_locinfo
, 12)
1277 ctype_char
* __thiscall
ctype_char_ctor_locinfo(ctype_char
*this,
1278 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1280 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
1281 ctype_base_ctor_refs(&this->base
, refs
);
1282 this->base
.facet
.vtable
= &MSVCP_ctype_char_vtable
;
1283 ctype_char__Init(this, locinfo
);
1287 /* ??0?$ctype@D@std@@QAE@PBF_NI@Z */
1288 /* ??0?$ctype@D@std@@QEAA@PEBF_N_K@Z */
1289 DEFINE_THISCALL_WRAPPER(ctype_char_ctor_table
, 16)
1290 ctype_char
* __thiscall
ctype_char_ctor_table(ctype_char
*this,
1291 const short *table
, MSVCP_bool
delete, MSVCP_size_t refs
)
1295 TRACE("(%p %p %d %lu)\n", this, table
, delete, refs
);
1297 ctype_base_ctor_refs(&this->base
, refs
);
1298 this->base
.facet
.vtable
= &MSVCP_ctype_char_vtable
;
1300 _Locinfo_ctor(&locinfo
);
1301 ctype_char__Init(this, &locinfo
);
1302 _Locinfo_dtor(&locinfo
);
1305 ctype_char__Tidy(this);
1306 this->ctype
.table
= table
;
1307 this->ctype
.delfl
= delete;
1312 /* ??_F?$ctype@D@std@@QAEXXZ */
1313 /* ??_F?$ctype@D@std@@QEAAXXZ */
1314 DEFINE_THISCALL_WRAPPER(ctype_char_ctor
, 4)
1315 ctype_char
* __thiscall
ctype_char_ctor(ctype_char
*this)
1317 return ctype_char_ctor_table(this, NULL
, FALSE
, 0);
1320 /* ??1?$ctype@D@std@@MAE@XZ */
1321 /* ??1?$ctype@D@std@@MEAA@XZ */
1322 DEFINE_THISCALL_WRAPPER(ctype_char_dtor
, 4)
1323 void __thiscall
ctype_char_dtor(ctype_char
*this)
1325 TRACE("(%p)\n", this);
1326 ctype_char__Tidy(this);
1329 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_char_vector_dtor
, 8)
1330 ctype_char
* __thiscall
MSVCP_ctype_char_vector_dtor(ctype_char
*this, unsigned int flags
)
1332 TRACE("(%p %x)\n", this, flags
);
1334 /* we have an array, with the number of elements stored before the first object */
1335 int i
, *ptr
= (int *)this-1;
1337 for(i
=*ptr
-1; i
>=0; i
--)
1338 ctype_char_dtor(this+i
);
1339 MSVCRT_operator_delete(ptr
);
1341 ctype_char_dtor(this);
1343 MSVCRT_operator_delete(this);
1349 /* ?do_narrow@?$ctype@D@std@@MBEDDD@Z */
1350 /* ?do_narrow@?$ctype@D@std@@MEBADDD@Z */
1351 DEFINE_THISCALL_WRAPPER(ctype_char_do_narrow_ch
, 12)
1352 #define call_ctype_char_do_narrow_ch(this, ch, unused) CALL_VTBL_FUNC(this, 36, \
1353 char, (const ctype_char*, char, char), (this, ch, unused))
1354 char __thiscall
ctype_char_do_narrow_ch(const ctype_char
*this, char ch
, char unused
)
1356 TRACE("(%p %c %c)\n", this, ch
, unused
);
1360 /* ?do_narrow@?$ctype@D@std@@MBEPBDPBD0DPAD@Z */
1361 /* ?do_narrow@?$ctype@D@std@@MEBAPEBDPEBD0DPEAD@Z */
1362 DEFINE_THISCALL_WRAPPER(ctype_char_do_narrow
, 20)
1363 #define call_ctype_char_do_narrow(this, first, last, unused, dest) CALL_VTBL_FUNC(this, 32, \
1364 const char*, (const ctype_char*, const char*, const char*, char, char*), \
1365 (this, first, last, unused, dest))
1366 const char* __thiscall
ctype_char_do_narrow(const ctype_char
*this,
1367 const char *first
, const char *last
, char unused
, char *dest
)
1369 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
1370 memcpy(dest
, first
, last
-first
);
1374 /* ?_Do_narrow_s@?$ctype@D@std@@MBEPBDPBD0DPADI@Z */
1375 /* ?_Do_narrow_s@?$ctype@D@std@@MEBAPEBDPEBD0DPEAD_K@Z */
1376 DEFINE_THISCALL_WRAPPER(ctype_char__Do_narrow_s
, 24)
1377 #define call_ctype_char__Do_narrow_s(this, first, last, unused, dest, size) CALL_VTBL_FUNC(this, 40, \
1378 const char*, (const ctype_char*, const char*, const char*, char, char*, MSVCP_size_t), \
1379 (this, first, last, unused, dest, size))
1380 const char* __thiscall
ctype_char__Do_narrow_s(const ctype_char
*this, const char *first
,
1381 const char *last
, char unused
, char *dest
, MSVCP_size_t size
)
1383 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
1384 memcpy_s(dest
, size
, first
, last
-first
);
1388 /* ?narrow@?$ctype@D@std@@QBEDDD@Z */
1389 /* ?narrow@?$ctype@D@std@@QEBADDD@Z */
1390 DEFINE_THISCALL_WRAPPER(ctype_char_narrow_ch
, 12)
1391 char __thiscall
ctype_char_narrow_ch(const ctype_char
*this, char ch
, char dflt
)
1393 TRACE("(%p %c %c)\n", this, ch
, dflt
);
1394 return call_ctype_char_do_narrow_ch(this, ch
, dflt
);
1397 /* ?narrow@?$ctype@D@std@@QBEPBDPBD0DPAD@Z */
1398 /* ?narrow@?$ctype@D@std@@QEBAPEBDPEBD0DPEAD@Z */
1399 DEFINE_THISCALL_WRAPPER(ctype_char_narrow
, 20)
1400 const char* __thiscall
ctype_char_narrow(const ctype_char
*this,
1401 const char *first
, const char *last
, char dflt
, char *dest
)
1403 TRACE("(%p %p %p %c %p)\n", this, first
, last
, dflt
, dest
);
1404 return call_ctype_char_do_narrow(this, first
, last
, dflt
, dest
);
1407 /* ?_Narrow_s@?$ctype@D@std@@QBEPBDPBD0DPADI@Z */
1408 /* ?_Narrow_s@?$ctype@D@std@@QEBAPEBDPEBD0DPEAD_K@Z */
1409 DEFINE_THISCALL_WRAPPER(ctype_char__Narrow_s
, 24)
1410 const char* __thiscall
ctype_char__Narrow_s(const ctype_char
*this, const char *first
,
1411 const char *last
, char dflt
, char *dest
, MSVCP_size_t size
)
1413 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
1414 return call_ctype_char__Do_narrow_s(this, first
, last
, dflt
, dest
, size
);
1417 /* ?do_widen@?$ctype@D@std@@MBEDD@Z */
1418 /* ?do_widen@?$ctype@D@std@@MEBADD@Z */
1419 DEFINE_THISCALL_WRAPPER(ctype_char_do_widen_ch
, 8)
1420 #define call_ctype_char_do_widen_ch(this, ch) CALL_VTBL_FUNC(this, 24, \
1421 char, (const ctype_char*, char), (this, ch))
1422 char __thiscall
ctype_char_do_widen_ch(const ctype_char
*this, char ch
)
1424 TRACE("(%p %c)\n", this, ch
);
1428 /* ?do_widen@?$ctype@D@std@@MBEPBDPBD0PAD@Z */
1429 /* ?do_widen@?$ctype@D@std@@MEBAPEBDPEBD0PEAD@Z */
1430 DEFINE_THISCALL_WRAPPER(ctype_char_do_widen
, 16)
1431 #define call_ctype_char_do_widen(this, first, last, dest) CALL_VTBL_FUNC(this, 20, \
1432 const char*, (const ctype_char*, const char*, const char*, char*), \
1433 (this, first, last, dest))
1434 const char* __thiscall
ctype_char_do_widen(const ctype_char
*this,
1435 const char *first
, const char *last
, char *dest
)
1437 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
1438 memcpy(dest
, first
, last
-first
);
1442 /* ?_Do_widen_s@?$ctype@D@std@@MBEPBDPBD0PADI@Z */
1443 /* ?_Do_widen_s@?$ctype@D@std@@MEBAPEBDPEBD0PEAD_K@Z */
1444 DEFINE_THISCALL_WRAPPER(ctype_char__Do_widen_s
, 20)
1445 #define call_ctype_char__Do_widen_s(this, first, last, dest, size) CALL_VTBL_FUNC(this, 28, \
1446 const char*, (const ctype_char*, const char*, const char*, char*, MSVCP_size_t), \
1447 (this, first, last, dest, size))
1448 const char* __thiscall
ctype_char__Do_widen_s(const ctype_char
*this,
1449 const char *first
, const char *last
, char *dest
, MSVCP_size_t size
)
1451 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
1452 memcpy_s(dest
, size
, first
, last
-first
);
1456 /* ?widen@?$ctype@D@std@@QBEDD@Z */
1457 /* ?widen@?$ctype@D@std@@QEBADD@Z */
1458 DEFINE_THISCALL_WRAPPER(ctype_char_widen_ch
, 8)
1459 char __thiscall
ctype_char_widen_ch(const ctype_char
*this, char ch
)
1461 TRACE("(%p %c)\n", this, ch
);
1462 return call_ctype_char_do_widen_ch(this, ch
);
1465 /* ?widen@?$ctype@D@std@@QBEPBDPBD0PAD@Z */
1466 /* ?widen@?$ctype@D@std@@QEBAPEBDPEBD0PEAD@Z */
1467 DEFINE_THISCALL_WRAPPER(ctype_char_widen
, 16)
1468 const char* __thiscall
ctype_char_widen(const ctype_char
*this,
1469 const char *first
, const char *last
, char *dest
)
1471 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
1472 return call_ctype_char_do_widen(this, first
, last
, dest
);
1475 /* ?_Widen_s@?$ctype@D@std@@QBEPBDPBD0PADI@Z */
1476 /* ?_Widen_s@?$ctype@D@std@@QEBAPEBDPEBD0PEAD_K@Z */
1477 DEFINE_THISCALL_WRAPPER(ctype_char__Widen_s
, 20)
1478 const char* __thiscall
ctype_char__Widen_s(const ctype_char
*this,
1479 const char *first
, const char *last
, char *dest
, MSVCP_size_t size
)
1481 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
1482 return call_ctype_char__Do_widen_s(this, first
, last
, dest
, size
);
1485 /* ?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1486 /* ?_Getcat@?$ctype@D@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1487 MSVCP_size_t __cdecl
ctype_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
1489 TRACE("(%p %p)\n", facet
, loc
);
1491 if(facet
&& !*facet
) {
1494 *facet
= MSVCRT_operator_new(sizeof(ctype_char
));
1496 ERR("Out of memory\n");
1497 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
1501 _Locinfo_ctor_cstr(&locinfo
, MSVCP_basic_string_char_c_str(&loc
->ptr
->name
));
1502 ctype_char_ctor_locinfo((ctype_char
*)*facet
, &locinfo
, 0);
1503 _Locinfo_dtor(&locinfo
);
1510 int __cdecl
_Tolower(int ch
, const _Ctypevec
*ctype
)
1514 TRACE("%d %p\n", ch
, ctype
);
1519 cp
= ___lc_codepage_func();
1521 /* Don't convert to unicode in case of C locale */
1523 if(ch
>='A' && ch
<='Z')
1532 str
[0] = (ch
>>8) & 255;
1540 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, str
, size
, &wide
, 1))
1543 lower
= tolowerW(wide
);
1547 WideCharToMultiByte(cp
, 0, &lower
, 1, str
, 2, NULL
, NULL
);
1549 return str
[0] + (str
[1]<<8);
1553 /* ?do_tolower@?$ctype@D@std@@MBEDD@Z */
1554 /* ?do_tolower@?$ctype@D@std@@MEBADD@Z */
1555 #define call_ctype_char_do_tolower_ch(this, ch) CALL_VTBL_FUNC(this, 8, \
1556 char, (const ctype_char*, char), (this, ch))
1557 DEFINE_THISCALL_WRAPPER(ctype_char_do_tolower_ch
, 8)
1558 char __thiscall
ctype_char_do_tolower_ch(const ctype_char
*this, char ch
)
1560 TRACE("(%p %c)\n", this, ch
);
1561 return _Tolower(ch
, &this->ctype
);
1564 /* ?do_tolower@?$ctype@D@std@@MBEPBDPADPBD@Z */
1565 /* ?do_tolower@?$ctype@D@std@@MEBAPEBDPEADPEBD@Z */
1566 #define call_ctype_char_do_tolower(this, first, last) CALL_VTBL_FUNC(this, 4, \
1567 const char*, (const ctype_char*, char*, const char*), (this, first, last))
1568 DEFINE_THISCALL_WRAPPER(ctype_char_do_tolower
, 12)
1569 const char* __thiscall
ctype_char_do_tolower(const ctype_char
*this, char *first
, const char *last
)
1571 TRACE("(%p %p %p)\n", this, first
, last
);
1572 for(; first
<last
; first
++)
1573 *first
= _Tolower(*first
, &this->ctype
);
1577 /* ?tolower@?$ctype@D@std@@QBEDD@Z */
1578 /* ?tolower@?$ctype@D@std@@QEBADD@Z */
1579 DEFINE_THISCALL_WRAPPER(ctype_char_tolower_ch
, 8)
1580 char __thiscall
ctype_char_tolower_ch(const ctype_char
*this, char ch
)
1582 TRACE("(%p %c)\n", this, ch
);
1583 return call_ctype_char_do_tolower_ch(this, ch
);
1586 /* ?tolower@?$ctype@D@std@@QBEPBDPADPBD@Z */
1587 /* ?tolower@?$ctype@D@std@@QEBAPEBDPEADPEBD@Z */
1588 DEFINE_THISCALL_WRAPPER(ctype_char_tolower
, 12)
1589 const char* __thiscall
ctype_char_tolower(const ctype_char
*this, char *first
, const char *last
)
1591 TRACE("(%p %p %p)\n", this, first
, last
);
1592 return call_ctype_char_do_tolower(this, first
, last
);
1596 int __cdecl
_Toupper(int ch
, const _Ctypevec
*ctype
)
1600 TRACE("%d %p\n", ch
, ctype
);
1605 cp
= ___lc_codepage_func();
1607 /* Don't convert to unicode in case of C locale */
1609 if(ch
>='a' && ch
<='z')
1618 str
[0] = (ch
>>8) & 255;
1626 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, str
, size
, &wide
, 1))
1629 upper
= toupperW(wide
);
1633 WideCharToMultiByte(cp
, 0, &upper
, 1, str
, 2, NULL
, NULL
);
1635 return str
[0] + (str
[1]<<8);
1639 /* ?do_toupper@?$ctype@D@std@@MBEDD@Z */
1640 /* ?do_toupper@?$ctype@D@std@@MEBADD@Z */
1641 #define call_ctype_char_do_toupper_ch(this, ch) CALL_VTBL_FUNC(this, 16, \
1642 char, (const ctype_char*, char), (this, ch))
1643 DEFINE_THISCALL_WRAPPER(ctype_char_do_toupper_ch
, 8)
1644 char __thiscall
ctype_char_do_toupper_ch(const ctype_char
*this, char ch
)
1646 TRACE("(%p %c)\n", this, ch
);
1647 return _Toupper(ch
, &this->ctype
);
1650 /* ?do_toupper@?$ctype@D@std@@MBEPBDPADPBD@Z */
1651 /* ?do_toupper@?$ctype@D@std@@MEBAPEBDPEADPEBD@Z */
1652 #define call_ctype_char_do_toupper(this, first, last) CALL_VTBL_FUNC(this, 12, \
1653 const char*, (const ctype_char*, char*, const char*), (this, first, last))
1654 DEFINE_THISCALL_WRAPPER(ctype_char_do_toupper
, 12)
1655 const char* __thiscall
ctype_char_do_toupper(const ctype_char
*this,
1656 char *first
, const char *last
)
1658 TRACE("(%p %p %p)\n", this, first
, last
);
1659 for(; first
<last
; first
++)
1660 *first
= _Toupper(*first
, &this->ctype
);
1664 /* ?toupper@?$ctype@D@std@@QBEDD@Z */
1665 /* ?toupper@?$ctype@D@std@@QEBADD@Z */
1666 DEFINE_THISCALL_WRAPPER(ctype_char_toupper_ch
, 8)
1667 char __thiscall
ctype_char_toupper_ch(const ctype_char
*this, char ch
)
1669 TRACE("(%p %c)\n", this, ch
);
1670 return call_ctype_char_do_toupper_ch(this, ch
);
1673 /* ?toupper@?$ctype@D@std@@QBEPBDPADPBD@Z */
1674 /* ?toupper@?$ctype@D@std@@QEBAPEBDPEADPEBD@Z */
1675 DEFINE_THISCALL_WRAPPER(ctype_char_toupper
, 12)
1676 const char* __thiscall
ctype_char_toupper(const ctype_char
*this, char *first
, const char *last
)
1678 TRACE("(%p %p %p)\n", this, first
, last
);
1679 return call_ctype_char_do_toupper(this, first
, last
);
1682 /* ?is@?$ctype@D@std@@QBE_NFD@Z */
1683 /* ?is@?$ctype@D@std@@QEBA_NFD@Z */
1684 DEFINE_THISCALL_WRAPPER(ctype_char_is_ch
, 12)
1685 MSVCP_bool __thiscall
ctype_char_is_ch(const ctype_char
*this, short mask
, char ch
)
1687 TRACE("(%p %x %c)\n", this, mask
, ch
);
1688 return (this->ctype
.table
[(unsigned char)ch
] & mask
) != 0;
1691 /* ?is@?$ctype@D@std@@QBEPBDPBD0PAF@Z */
1692 /* ?is@?$ctype@D@std@@QEBAPEBDPEBD0PEAF@Z */
1693 DEFINE_THISCALL_WRAPPER(ctype_char_is
, 16)
1694 const char* __thiscall
ctype_char_is(const ctype_char
*this, const char *first
, const char *last
, short *dest
)
1696 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
1697 for(; first
<last
; first
++)
1698 *dest
++ = this->ctype
.table
[(unsigned char)*first
];
1702 /* ?scan_is@?$ctype@D@std@@QBEPBDFPBD0@Z */
1703 /* ?scan_is@?$ctype@D@std@@QEBAPEBDFPEBD0@Z */
1704 DEFINE_THISCALL_WRAPPER(ctype_char_scan_is
, 16)
1705 const char* __thiscall
ctype_char_scan_is(const ctype_char
*this, short mask
, const char *first
, const char *last
)
1707 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
1708 for(; first
<last
; first
++)
1709 if(!ctype_char_is_ch(this, mask
, *first
))
1714 /* ?scan_not@?$ctype@D@std@@QBEPBDFPBD0@Z */
1715 /* ?scan_not@?$ctype@D@std@@QEBAPEBDFPEBD0@Z */
1716 DEFINE_THISCALL_WRAPPER(ctype_char_scan_not
, 16)
1717 const char* __thiscall
ctype_char_scan_not(const ctype_char
*this, short mask
, const char *first
, const char *last
)
1719 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
1720 for(; first
<last
; first
++)
1721 if(ctype_char_is_ch(this, mask
, *first
))
1726 /* ?table@?$ctype@D@std@@IBEPBFXZ */
1727 /* ?table@?$ctype@D@std@@IEBAPEBFXZ */
1728 DEFINE_THISCALL_WRAPPER(ctype_char_table
, 4)
1729 const short* __thiscall
ctype_char_table(const ctype_char
*this)
1731 TRACE("(%p)\n", this);
1732 return this->ctype
.table
;
1735 /* ?id@?$ctype@_W@std@@2V0locale@2@A */
1736 locale_id ctype_wchar_id
= {0};
1737 /* ?id@?$ctype@G@std@@2V0locale@2@A */
1738 locale_id ctype_short_id
= {0};
1740 /* ??_7?$ctype@_W@std@@6B@ */
1741 extern const vtable_ptr MSVCP_ctype_wchar_vtable
;
1742 /* ??_7?$ctype@G@std@@6B@ */
1743 extern const vtable_ptr MSVCP_ctype_short_vtable
;
1745 /* ?_Id_func@?$ctype@_W@std@@SAAAVid@locale@2@XZ */
1746 /* ?_Id_func@?$ctype@_W@std@@SAAEAVid@locale@2@XZ */
1747 locale_id
* __cdecl
ctype_wchar__Id_func(void)
1750 return &ctype_wchar_id
;
1753 /* ?_Id_func@?$ctype@G@std@@SAAAVid@locale@2@XZ */
1754 /* ?_Id_func@?$ctype@G@std@@SAAEAVid@locale@2@XZ */
1755 locale_id
* __cdecl
ctype_short__Id_func(void)
1758 return &ctype_short_id
;
1761 /* ?_Init@?$ctype@_W@std@@IAEXABV_Locinfo@2@@Z */
1762 /* ?_Init@?$ctype@_W@std@@IEAAXAEBV_Locinfo@2@@Z */
1763 /* ?_Init@?$ctype@G@std@@IAEXABV_Locinfo@2@@Z */
1764 /* ?_Init@?$ctype@G@std@@IEAAXAEBV_Locinfo@2@@Z */
1765 DEFINE_THISCALL_WRAPPER(ctype_wchar__Init
, 8)
1766 void __thiscall
ctype_wchar__Init(ctype_wchar
*this, _Locinfo
*locinfo
)
1768 TRACE("(%p %p)\n", this, locinfo
);
1769 _Locinfo__Getctype(locinfo
, &this->ctype
);
1770 _Locinfo__Getcvt(locinfo
, &this->cvt
);
1773 /* ??0?$ctype@_W@std@@QAE@ABV_Locinfo@1@I@Z */
1774 /* ??0?$ctype@_W@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1775 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor_locinfo
, 12)
1776 ctype_wchar
* __thiscall
ctype_wchar_ctor_locinfo(ctype_wchar
*this,
1777 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1779 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
1780 ctype_base_ctor_refs(&this->base
, refs
);
1781 this->base
.facet
.vtable
= &MSVCP_ctype_wchar_vtable
;
1782 ctype_wchar__Init(this, locinfo
);
1786 /* ??0?$ctype@G@std@@QAE@ABV_Locinfo@1@I@Z */
1787 /* ??0?$ctype@G@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1788 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_locinfo
, 12)
1789 ctype_wchar
* __thiscall
ctype_short_ctor_locinfo(ctype_wchar
*this,
1790 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1792 ctype_wchar
*ret
= ctype_wchar_ctor_locinfo(this, locinfo
, refs
);
1793 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1797 /* ??0?$ctype@_W@std@@QAE@I@Z */
1798 /* ??0?$ctype@_W@std@@QEAA@_K@Z */
1799 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor_refs
, 8)
1800 ctype_wchar
* __thiscall
ctype_wchar_ctor_refs(ctype_wchar
*this, MSVCP_size_t refs
)
1804 TRACE("(%p %lu)\n", this, refs
);
1806 ctype_base_ctor_refs(&this->base
, refs
);
1807 this->base
.facet
.vtable
= &MSVCP_ctype_wchar_vtable
;
1809 _Locinfo_ctor(&locinfo
);
1810 ctype_wchar__Init(this, &locinfo
);
1811 _Locinfo_dtor(&locinfo
);
1815 /* ??0?$ctype@G@std@@QAE@I@Z */
1816 /* ??0?$ctype@G@std@@QEAA@_K@Z */
1817 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_refs
, 8)
1818 ctype_wchar
* __thiscall
ctype_short_ctor_refs(ctype_wchar
*this, MSVCP_size_t refs
)
1820 ctype_wchar
*ret
= ctype_wchar_ctor_refs(this, refs
);
1821 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1825 /* ??0?$ctype@G@std@@IAE@PBDI@Z */
1826 /* ??0?$ctype@G@std@@IEAA@PEBD_K@Z */
1827 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_name
, 12)
1828 ctype_wchar
* __thiscall
ctype_short_ctor_name(ctype_wchar
*this,
1829 const char *name
, MSVCP_size_t refs
)
1833 TRACE("(%p %s %lu)\n", this, debugstr_a(name
), refs
);
1835 ctype_base_ctor_refs(&this->base
, refs
);
1836 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1838 _Locinfo_ctor_cstr(&locinfo
, name
);
1839 ctype_wchar__Init(this, &locinfo
);
1840 _Locinfo_dtor(&locinfo
);
1844 /* ??_F?$ctype@_W@std@@QAEXXZ */
1845 /* ??_F?$ctype@_W@std@@QEAAXXZ */
1846 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor
, 4)
1847 ctype_wchar
* __thiscall
ctype_wchar_ctor(ctype_wchar
*this)
1849 TRACE("(%p)\n", this);
1850 return ctype_short_ctor_refs(this, 0);
1853 /* ??_F?$ctype@G@std@@QAEXXZ */
1854 /* ??_F?$ctype@G@std@@QEAAXXZ */
1855 DEFINE_THISCALL_WRAPPER(ctype_short_ctor
, 4)
1856 ctype_wchar
* __thiscall
ctype_short_ctor(ctype_wchar
*this)
1858 ctype_wchar
*ret
= ctype_wchar_ctor(this);
1859 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1863 /* ??1?$ctype@_W@std@@MAE@XZ */
1864 /* ??1?$ctype@_W@std@@MEAA@XZ */
1865 /* ??1?$ctype@G@std@@MAE@XZ */
1866 /* ??1?$ctype@G@std@@MEAA@XZ */
1867 DEFINE_THISCALL_WRAPPER(ctype_wchar_dtor
, 4)
1868 void __thiscall
ctype_wchar_dtor(ctype_wchar
*this)
1870 TRACE("(%p)\n", this);
1871 if(this->ctype
.delfl
)
1872 free((void*)this->ctype
.table
);
1875 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_wchar_vector_dtor
, 8)
1876 ctype_wchar
* __thiscall
MSVCP_ctype_wchar_vector_dtor(ctype_wchar
*this, unsigned int flags
)
1878 TRACE("(%p %x)\n", this, flags
);
1880 /* we have an array, with the number of elements stored before the first object */
1881 int i
, *ptr
= (int *)this-1;
1883 for(i
=*ptr
-1; i
>=0; i
--)
1884 ctype_wchar_dtor(this+i
);
1885 MSVCRT_operator_delete(ptr
);
1887 ctype_wchar_dtor(this);
1889 MSVCRT_operator_delete(this);
1895 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_short_vector_dtor
, 8)
1896 ctype_wchar
* __thiscall
MSVCP_ctype_short_vector_dtor(ctype_wchar
*this, unsigned int flags
)
1898 return MSVCP_ctype_wchar_vector_dtor(this, flags
);
1902 int __cdecl
_Wcrtomb(char *s
, wchar_t wch
, int *state
, const _Cvtvec
*cvt
)
1907 TRACE("%p %d %p %p\n", s
, wch
, state
, cvt
);
1912 cp
= ___lc_codepage_func();
1924 size
= WideCharToMultiByte(cp
, 0, &wch
, 1, s
, MB_LEN_MAX
, NULL
, &def
);
1933 /* ?_Donarrow@?$ctype@_W@std@@IBED_WD@Z */
1934 /* ?_Donarrow@?$ctype@_W@std@@IEBAD_WD@Z */
1935 /* ?_Donarrow@?$ctype@G@std@@IBEDGD@Z */
1936 /* ?_Donarrow@?$ctype@G@std@@IEBADGD@Z */
1937 DEFINE_THISCALL_WRAPPER(ctype_wchar__Donarrow
, 12)
1938 char __thiscall
ctype_wchar__Donarrow(const ctype_wchar
*this, wchar_t ch
, char dflt
)
1940 char buf
[MB_LEN_MAX
];
1942 TRACE("(%p %d %d)\n", this, ch
, dflt
);
1944 return _Wcrtomb(buf
, ch
, NULL
, &this->cvt
)==1 ? buf
[0] : dflt
;
1947 /* ?do_narrow@?$ctype@_W@std@@MBED_WD@Z */
1948 /* ?do_narrow@?$ctype@_W@std@@MEBAD_WD@Z */
1949 /* ?do_narrow@?$ctype@G@std@@MBEDGD@Z */
1950 /* ?do_narrow@?$ctype@G@std@@MEBADGD@Z */
1951 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_narrow_ch
, 12)
1952 #define call_ctype_wchar_do_narrow_ch(this, ch, dflt) CALL_VTBL_FUNC(this, 52, \
1953 char, (const ctype_wchar*, wchar_t, char), (this, ch, dflt))
1954 char __thiscall
ctype_wchar_do_narrow_ch(const ctype_wchar
*this, wchar_t ch
, char dflt
)
1956 return ctype_wchar__Donarrow(this, ch
, dflt
);
1959 /* ?do_narrow@?$ctype@_W@std@@MBEPB_WPB_W0DPAD@Z */
1960 /* ?do_narrow@?$ctype@_W@std@@MEBAPEB_WPEB_W0DPEAD@Z */
1961 /* ?do_narrow@?$ctype@G@std@@MBEPBGPBG0DPAD@Z */
1962 /* ?do_narrow@?$ctype@G@std@@MEBAPEBGPEBG0DPEAD@Z */
1963 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_narrow
, 20)
1964 #define call_ctype_wchar_do_narrow(this, first, last, dflt, dest) CALL_VTBL_FUNC(this, 48, \
1965 const wchar_t*, (const ctype_wchar*, const wchar_t*, const wchar_t*, char, char*), \
1966 (this, first, last, dflt, dest))
1967 const wchar_t* __thiscall
ctype_wchar_do_narrow(const ctype_wchar
*this,
1968 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
)
1970 TRACE("(%p %p %p %d %p)\n", this, first
, last
, dflt
, dest
);
1971 for(; first
<last
; first
++)
1972 *dest
++ = ctype_wchar__Donarrow(this, *first
, dflt
);
1976 /* ?_Do_narrow_s@?$ctype@_W@std@@MBEPB_WPB_W0DPADI@Z */
1977 /* ?_Do_narrow_s@?$ctype@_W@std@@MEBAPEB_WPEB_W0DPEAD_K@Z */
1978 /* ?_Do_narrow_s@?$ctype@G@std@@MBEPBGPBG0DPADI@Z */
1979 /* ?_Do_narrow_s@?$ctype@G@std@@MEBAPEBGPEBG0DPEAD_K@Z */
1980 DEFINE_THISCALL_WRAPPER(ctype_wchar__Do_narrow_s
, 24)
1981 #define call_ctype_wchar__Do_narrow_s(this, first, last, dflt, dest, size) CALL_VTBL_FUNC(this, 56, \
1982 const wchar_t*, (const ctype_wchar*, const wchar_t*, const wchar_t*, char, char*, MSVCP_size_t), \
1983 (this, first, last, dflt, dest, size))
1984 const wchar_t* __thiscall
ctype_wchar__Do_narrow_s(const ctype_wchar
*this,
1985 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
, MSVCP_size_t size
)
1987 TRACE("(%p %p %p %d %p %lu)\n", this, first
, last
, dflt
, dest
, size
);
1988 /* This function converts all multi-byte characters to dflt,
1989 * thanks to it result size is known before converting */
1990 if(last
-first
> size
)
1992 return ctype_wchar_do_narrow(this, first
, last
, dflt
, dest
);
1995 /* ?narrow@?$ctype@_W@std@@QBED_WD@Z */
1996 /* ?narrow@?$ctype@_W@std@@QEBAD_WD@Z */
1997 /* ?narrow@?$ctype@G@std@@QBEDGD@Z */
1998 /* ?narrow@?$ctype@G@std@@QEBADGD@Z */
1999 DEFINE_THISCALL_WRAPPER(ctype_wchar_narrow_ch
, 12)
2000 char __thiscall
ctype_wchar_narrow_ch(const ctype_wchar
*this, wchar_t ch
, char dflt
)
2002 TRACE("(%p %d %d)\n", this, ch
, dflt
);
2003 return call_ctype_wchar_do_narrow_ch(this, ch
, dflt
);
2006 /* ?narrow@?$ctype@_W@std@@QBEPB_WPB_W0DPAD@Z */
2007 /* ?narrow@?$ctype@_W@std@@QEBAPEB_WPEB_W0DPEAD@Z */
2008 /* ?narrow@?$ctype@G@std@@QBEPBGPBG0DPAD@Z */
2009 /* ?narrow@?$ctype@G@std@@QEBAPEBGPEBG0DPEAD@Z */
2010 DEFINE_THISCALL_WRAPPER(ctype_wchar_narrow
, 20)
2011 const wchar_t* __thiscall
ctype_wchar_narrow(const ctype_wchar
*this,
2012 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
)
2014 TRACE("(%p %p %p %d %p)\n", this, first
, last
, dflt
, dest
);
2015 return call_ctype_wchar_do_narrow(this, first
, last
, dflt
, dest
);
2018 /* ?_Narrow_s@?$ctype@_W@std@@QBEPB_WPB_W0DPADI@Z */
2019 /* ?_Narrow_s@?$ctype@_W@std@@QEBAPEB_WPEB_W0DPEAD_K@Z */
2020 /* ?_Narrow_s@?$ctype@G@std@@QBEPBGPBG0DPADI@Z */
2021 /* ?_Narrow_s@?$ctype@G@std@@QEBAPEBGPEBG0DPEAD_K@Z */
2022 DEFINE_THISCALL_WRAPPER(ctype_wchar__Narrow_s
, 24)
2023 const wchar_t* __thiscall
ctype_wchar__Narrow_s(const ctype_wchar
*this, const wchar_t *first
,
2024 const wchar_t *last
, char dflt
, char *dest
, MSVCP_size_t size
)
2026 TRACE("(%p %p %p %d %p %lu)\n", this, first
, last
, dflt
, dest
, size
);
2027 return call_ctype_wchar__Do_narrow_s(this, first
, last
, dflt
, dest
, size
);
2031 int __cdecl
_Mbrtowc(wchar_t *out
, const char *in
, MSVCP_size_t len
, int *state
, const _Cvtvec
*cvt
)
2037 TRACE("(%p %p %lu %p %p)\n", out
, in
, len
, state
, cvt
);
2045 cp
= ___lc_codepage_func();
2049 *out
= (unsigned char)*in
;
2056 ((char*)state
)[1] = *in
;
2058 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, (char*)state
, 2, out
, out
? 1 : 0)) {
2068 GetCPInfo(cp
, &cp_info
);
2070 for(i
=0; i
<MAX_LEADBYTES
; i
+=2) {
2071 if(!cp_info
.LeadByte
[i
+1])
2073 if((unsigned char)*in
>=cp_info
.LeadByte
[i
] && (unsigned char)*in
<=cp_info
.LeadByte
[i
+1]) {
2081 *state
= (unsigned char)*in
;
2085 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, in
, 2, out
, out
? 1 : 0)) {
2092 if(!MultiByteToWideChar(cp
, MB_ERR_INVALID_CHARS
, in
, 1, out
, out
? 1 : 0)) {
2099 /* ?_Dowiden@?$ctype@_W@std@@IBE_WD@Z */
2100 /* ?_Dowiden@?$ctype@_W@std@@IEBA_WD@Z */
2101 /* ?_Dowiden@?$ctype@G@std@@IBEGD@Z */
2102 /* ?_Dowiden@?$ctype@G@std@@IEBAGD@Z */
2103 DEFINE_THISCALL_WRAPPER(ctype_wchar__Dowiden
, 8)
2104 wchar_t __thiscall
ctype_wchar__Dowiden(const ctype_wchar
*this, char ch
)
2108 TRACE("(%p %d)\n", this, ch
);
2109 return _Mbrtowc(&ret
, &ch
, 1, &state
, &this->cvt
)<0 ? WEOF
: ret
;
2112 /* ?do_widen@?$ctype@_W@std@@MBE_WD@Z */
2113 /* ?do_widen@?$ctype@_W@std@@MEBA_WD@Z */
2114 /* ?do_widen@?$ctype@G@std@@MBEGD@Z */
2115 /* ?do_widen@?$ctype@G@std@@MEBAGD@Z */
2116 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_widen_ch
, 8)
2117 #define call_ctype_wchar_do_widen_ch(this, ch) CALL_VTBL_FUNC(this, 40, \
2118 wchar_t, (const ctype_wchar*, char), (this, ch))
2119 wchar_t __thiscall
ctype_wchar_do_widen_ch(const ctype_wchar
*this, char ch
)
2121 return ctype_wchar__Dowiden(this, ch
);
2124 /* ?do_widen@?$ctype@_W@std@@MBEPBDPBD0PA_W@Z */
2125 /* ?do_widen@?$ctype@_W@std@@MEBAPEBDPEBD0PEA_W@Z */
2126 /* ?do_widen@?$ctype@G@std@@MBEPBDPBD0PAG@Z */
2127 /* ?do_widen@?$ctype@G@std@@MEBAPEBDPEBD0PEAG@Z */
2128 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_widen
, 16)
2129 #define call_ctype_wchar_do_widen(this, first, last, dest) CALL_VTBL_FUNC(this, 36, \
2130 const char*, (const ctype_wchar*, const char*, const char*, wchar_t*), \
2131 (this, first, last, dest))
2132 const char* __thiscall
ctype_wchar_do_widen(const ctype_wchar
*this,
2133 const char *first
, const char *last
, wchar_t *dest
)
2135 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
2136 for(; first
<last
; first
++)
2137 *dest
++ = ctype_wchar__Dowiden(this, *first
);
2141 /* ?_Do_widen_s@?$ctype@_W@std@@MBEPBDPBD0PA_WI@Z */
2142 /* ?_Do_widen_s@?$ctype@_W@std@@MEBAPEBDPEBD0PEA_W_K@Z */
2143 /* ?_Do_widen_s@?$ctype@G@std@@MBEPBDPBD0PAGI@Z */
2144 /* ?_Do_widen_s@?$ctype@G@std@@MEBAPEBDPEBD0PEAG_K@Z */
2145 DEFINE_THISCALL_WRAPPER(ctype_wchar__Do_widen_s
, 20)
2146 #define call_ctype_wchar__Do_widen_s(this, first, last, dest, size) CALL_VTBL_FUNC(this, 44, \
2147 const char*, (const ctype_wchar*, const char*, const char*, wchar_t*, MSVCP_size_t), \
2148 (this, first, last, dest, size))
2149 const char* __thiscall
ctype_wchar__Do_widen_s(const ctype_wchar
*this,
2150 const char *first
, const char *last
, wchar_t *dest
, MSVCP_size_t size
)
2152 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
2153 /* This function converts all multi-byte characters to WEOF,
2154 * thanks to it result size is known before converting */
2155 if(size
< last
-first
)
2157 return ctype_wchar_do_widen(this, first
, last
, dest
);
2160 /* ?widen@?$ctype@_W@std@@QBE_WD@Z */
2161 /* ?widen@?$ctype@_W@std@@QEBA_WD@Z */
2162 /* ?widen@?$ctype@G@std@@QBEGD@Z */
2163 /* ?widen@?$ctype@G@std@@QEBAGD@Z */
2164 DEFINE_THISCALL_WRAPPER(ctype_wchar_widen_ch
, 8)
2165 wchar_t __thiscall
ctype_wchar_widen_ch(const ctype_wchar
*this, char ch
)
2167 TRACE("(%p %d)\n", this, ch
);
2168 return call_ctype_wchar_do_widen_ch(this, ch
);
2171 /* ?widen@?$ctype@_W@std@@QBEPBDPBD0PA_W@Z */
2172 /* ?widen@?$ctype@_W@std@@QEBAPEBDPEBD0PEA_W@Z */
2173 /* ?widen@?$ctype@G@std@@QBEPBDPBD0PAG@Z */
2174 /* ?widen@?$ctype@G@std@@QEBAPEBDPEBD0PEAG@Z */
2175 DEFINE_THISCALL_WRAPPER(ctype_wchar_widen
, 16)
2176 const char* __thiscall
ctype_wchar_widen(const ctype_wchar
*this,
2177 const char *first
, const char *last
, wchar_t *dest
)
2179 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
2180 return call_ctype_wchar_do_widen(this, first
, last
, dest
);
2183 /* ?_Widen_s@?$ctype@_W@std@@QBEPBDPBD0PA_WI@Z */
2184 /* ?_Widen_s@?$ctype@_W@std@@QEBAPEBDPEBD0PEA_W_K@Z */
2185 /* ?_Widen_s@?$ctype@G@std@@QBEPBDPBD0PAGI@Z */
2186 /* ?_Widen_s@?$ctype@G@std@@QEBAPEBDPEBD0PEAG_K@Z */
2187 DEFINE_THISCALL_WRAPPER(ctype_wchar__Widen_s
, 20)
2188 const char* __thiscall
ctype_wchar__Widen_s(const ctype_wchar
*this,
2189 const char *first
, const char *last
, wchar_t *dest
, MSVCP_size_t size
)
2191 TRACE("(%p %p %p %p %lu)\n", this, first
, last
, dest
, size
);
2192 return call_ctype_wchar__Do_widen_s(this, first
, last
, dest
, size
);
2195 /* ?_Getcat@?$ctype@_W@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
2196 /* ?_Getcat@?$ctype@_W@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
2197 MSVCP_size_t __cdecl
ctype_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
2199 TRACE("(%p %p)\n", facet
, loc
);
2201 if(facet
&& !*facet
) {
2204 *facet
= MSVCRT_operator_new(sizeof(ctype_wchar
));
2206 ERR("Out of memory\n");
2207 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2211 _Locinfo_ctor_cstr(&locinfo
, MSVCP_basic_string_char_c_str(&loc
->ptr
->name
));
2212 ctype_wchar_ctor_locinfo((ctype_wchar
*)*facet
, &locinfo
, 0);
2213 _Locinfo_dtor(&locinfo
);
2219 /* ?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
2220 /* ?_Getcat@?$ctype@G@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
2221 MSVCP_size_t __cdecl
ctype_short__Getcat(const locale_facet
**facet
, const locale
*loc
)
2223 if(facet
&& !*facet
) {
2224 ctype_wchar__Getcat(facet
, loc
);
2225 (*(locale_facet
**)facet
)->vtable
= &MSVCP_ctype_short_vtable
;
2232 wchar_t __cdecl
_Towlower(wchar_t ch
, const _Ctypevec
*ctype
)
2234 TRACE("(%d %p)\n", ch
, ctype
);
2235 return tolowerW(ch
);
2238 /* ?do_tolower@?$ctype@_W@std@@MBE_W_W@Z */
2239 /* ?do_tolower@?$ctype@_W@std@@MEBA_W_W@Z */
2240 /* ?do_tolower@?$ctype@G@std@@MBEGG@Z */
2241 /* ?do_tolower@?$ctype@G@std@@MEBAGG@Z */
2242 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_tolower_ch
, 8)
2243 #define call_ctype_wchar_do_tolower_ch(this, ch) CALL_VTBL_FUNC(this, 24, \
2244 wchar_t, (const ctype_wchar*, wchar_t), (this, ch))
2245 wchar_t __thiscall
ctype_wchar_do_tolower_ch(const ctype_wchar
*this, wchar_t ch
)
2247 return _Towlower(ch
, &this->ctype
);
2250 /* ?do_tolower@?$ctype@_W@std@@MBEPB_WPA_WPB_W@Z */
2251 /* ?do_tolower@?$ctype@_W@std@@MEBAPEB_WPEA_WPEB_W@Z */
2252 /* ?do_tolower@?$ctype@G@std@@MBEPBGPAGPBG@Z */
2253 /* ?do_tolower@?$ctype@G@std@@MEBAPEBGPEAGPEBG@Z */
2254 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_tolower
, 12)
2255 #define call_ctype_wchar_do_tolower(this, first, last) CALL_VTBL_FUNC(this, 20, \
2256 const wchar_t*, (const ctype_wchar*, wchar_t*, const wchar_t*), \
2257 (this, first, last))
2258 const wchar_t* __thiscall
ctype_wchar_do_tolower(const ctype_wchar
*this,
2259 wchar_t *first
, const wchar_t *last
)
2261 TRACE("(%p %p %p)\n", this, first
, last
);
2262 for(; first
<last
; first
++)
2263 *first
= _Towlower(*first
, &this->ctype
);
2267 /* ?tolower@?$ctype@_W@std@@QBE_W_W@Z */
2268 /* ?tolower@?$ctype@_W@std@@QEBA_W_W@Z */
2269 /* ?tolower@?$ctype@G@std@@QBEGG@Z */
2270 /* ?tolower@?$ctype@G@std@@QEBAGG@Z */
2271 DEFINE_THISCALL_WRAPPER(ctype_wchar_tolower_ch
, 8)
2272 wchar_t __thiscall
ctype_wchar_tolower_ch(const ctype_wchar
*this, wchar_t ch
)
2274 TRACE("(%p %d)\n", this, ch
);
2275 return call_ctype_wchar_do_tolower_ch(this, ch
);
2278 /* ?tolower@?$ctype@_W@std@@QBEPB_WPA_WPB_W@Z */
2279 /* ?tolower@?$ctype@_W@std@@QEBAPEB_WPEA_WPEB_W@Z */
2280 /* ?tolower@?$ctype@G@std@@QBEPBGPAGPBG@Z */
2281 /* ?tolower@?$ctype@G@std@@QEBAPEBGPEAGPEBG@Z */
2282 DEFINE_THISCALL_WRAPPER(ctype_wchar_tolower
, 12)
2283 const wchar_t* __thiscall
ctype_wchar_tolower(const ctype_wchar
*this,
2284 wchar_t *first
, const wchar_t *last
)
2286 TRACE("(%p %p %p)\n", this, first
, last
);
2287 return call_ctype_wchar_do_tolower(this, first
, last
);
2291 wchar_t __cdecl
_Towupper(wchar_t ch
, const _Ctypevec
*ctype
)
2293 TRACE("(%d %p)\n", ch
, ctype
);
2294 return toupperW(ch
);
2297 /* ?do_toupper@?$ctype@_W@std@@MBE_W_W@Z */
2298 /* ?do_toupper@?$ctype@_W@std@@MEBA_W_W@Z */
2299 /* ?do_toupper@?$ctype@G@std@@MBEGG@Z */
2300 /* ?do_toupper@?$ctype@G@std@@MEBAGG@Z */
2301 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_toupper_ch
, 8)
2302 #define call_ctype_wchar_do_toupper_ch(this, ch) CALL_VTBL_FUNC(this, 32, \
2303 wchar_t, (const ctype_wchar*, wchar_t), (this, ch))
2304 wchar_t __thiscall
ctype_wchar_do_toupper_ch(const ctype_wchar
*this, wchar_t ch
)
2306 return _Towupper(ch
, &this->ctype
);
2309 /* ?do_toupper@?$ctype@_W@std@@MBEPB_WPA_WPB_W@Z */
2310 /* ?do_toupper@?$ctype@_W@std@@MEBAPEB_WPEA_WPEB_W@Z */
2311 /* ?do_toupper@?$ctype@G@std@@MBEPBGPAGPBG@Z */
2312 /* ?do_toupper@?$ctype@G@std@@MEBAPEBGPEAGPEBG@Z */
2313 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_toupper
, 12)
2314 #define call_ctype_wchar_do_toupper(this, first, last) CALL_VTBL_FUNC(this, 28, \
2315 const wchar_t*, (const ctype_wchar*, wchar_t*, const wchar_t*), \
2316 (this, first, last))
2317 const wchar_t* __thiscall
ctype_wchar_do_toupper(const ctype_wchar
*this,
2318 wchar_t *first
, const wchar_t *last
)
2320 TRACE("(%p %p %p)\n", this, first
, last
);
2321 for(; first
<last
; first
++)
2322 *first
= _Towupper(*first
, &this->ctype
);
2326 /* ?toupper@?$ctype@_W@std@@QBE_W_W@Z */
2327 /* ?toupper@?$ctype@_W@std@@QEBA_W_W@Z */
2328 /* ?toupper@?$ctype@G@std@@QBEGG@Z */
2329 /* ?toupper@?$ctype@G@std@@QEBAGG@Z */
2330 DEFINE_THISCALL_WRAPPER(ctype_wchar_toupper_ch
, 8)
2331 wchar_t __thiscall
ctype_wchar_toupper_ch(const ctype_wchar
*this, wchar_t ch
)
2333 TRACE("(%p %d)\n", this, ch
);
2334 return call_ctype_wchar_do_toupper_ch(this, ch
);
2337 /* ?toupper@?$ctype@_W@std@@QBEPB_WPA_WPB_W@Z */
2338 /* ?toupper@?$ctype@_W@std@@QEBAPEB_WPEA_WPEB_W@Z */
2339 /* ?toupper@?$ctype@G@std@@QBEPBGPAGPBG@Z */
2340 /* ?toupper@?$ctype@G@std@@QEBAPEBGPEAGPEBG@Z */
2341 DEFINE_THISCALL_WRAPPER(ctype_wchar_toupper
, 12)
2342 const wchar_t* __thiscall
ctype_wchar_toupper(const ctype_wchar
*this,
2343 wchar_t *first
, const wchar_t *last
)
2345 TRACE("(%p %p %p)\n", this, first
, last
);
2346 return call_ctype_wchar_do_toupper(this, first
, last
);
2350 const wchar_t* __cdecl
_Getwctypes(const wchar_t *first
, const wchar_t *last
,
2351 short *mask
, const _Ctypevec
*ctype
)
2353 TRACE("(%p %p %p %p)\n", first
, last
, mask
, ctype
);
2354 GetStringTypeW(CT_CTYPE1
, first
, last
-first
, (WORD
*)mask
);
2359 short __cdecl
_Getwctype(wchar_t ch
, const _Ctypevec
*ctype
)
2362 _Getwctypes(&ch
, &ch
+1, &mask
, ctype
);
2366 /* ?do_is@?$ctype@_W@std@@MBE_NF_W@Z */
2367 /* ?do_is@?$ctype@_W@std@@MEBA_NF_W@Z */
2368 /* ?do_is@?$ctype@G@std@@MBE_NFG@Z */
2369 /* ?do_is@?$ctype@G@std@@MEBA_NFG@Z */
2370 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_is_ch
, 12)
2371 #define call_ctype_wchar_do_is_ch(this, mask, ch) CALL_VTBL_FUNC(this, 8, \
2372 MSVCP_bool, (const ctype_wchar*, short, wchar_t), (this, mask, ch))
2373 MSVCP_bool __thiscall
ctype_wchar_do_is_ch(const ctype_wchar
*this, short mask
, wchar_t ch
)
2375 TRACE("(%p %x %d)\n", this, mask
, ch
);
2376 return (_Getwctype(ch
, &this->ctype
) & mask
) != 0;
2379 /* ?do_is@?$ctype@_W@std@@MBEPB_WPB_W0PAF@Z */
2380 /* ?do_is@?$ctype@_W@std@@MEBAPEB_WPEB_W0PEAF@Z */
2381 /* ?do_is@?$ctype@G@std@@MBEPBGPBG0PAF@Z */
2382 /* ?do_is@?$ctype@G@std@@MEBAPEBGPEBG0PEAF@Z */
2383 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_is
, 16)
2384 #define call_ctype_wchar_do_is(this, first, last, dest) CALL_VTBL_FUNC(this, 4, \
2385 const wchar_t*, (const ctype_wchar*, const wchar_t*, const wchar_t*, short*), \
2386 (this, first, last, dest))
2387 const wchar_t* __thiscall
ctype_wchar_do_is(const ctype_wchar
*this,
2388 const wchar_t *first
, const wchar_t *last
, short *dest
)
2390 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
2391 return _Getwctypes(first
, last
, dest
, &this->ctype
);
2394 /* ?is@?$ctype@_W@std@@QBE_NF_W@Z */
2395 /* ?is@?$ctype@_W@std@@QEBA_NF_W@Z */
2396 /* ?is@?$ctype@G@std@@QBE_NFG@Z */
2397 /* ?is@?$ctype@G@std@@QEBA_NFG@Z */
2398 DEFINE_THISCALL_WRAPPER(ctype_wchar_is_ch
, 12)
2399 MSVCP_bool __thiscall
ctype_wchar_is_ch(const ctype_wchar
*this, short mask
, wchar_t ch
)
2401 TRACE("(%p %x %d)\n", this, mask
, ch
);
2402 return call_ctype_wchar_do_is_ch(this, mask
, ch
);
2405 /* ?is@?$ctype@_W@std@@QBEPB_WPB_W0PAF@Z */
2406 /* ?is@?$ctype@_W@std@@QEBAPEB_WPEB_W0PEAF@Z */
2407 /* ?is@?$ctype@G@std@@QBEPBGPBG0PAF@Z */
2408 /* ?is@?$ctype@G@std@@QEBAPEBGPEBG0PEAF@Z */
2409 DEFINE_THISCALL_WRAPPER(ctype_wchar_is
, 16)
2410 const wchar_t* __thiscall
ctype_wchar_is(const ctype_wchar
*this,
2411 const wchar_t *first
, const wchar_t *last
, short *dest
)
2413 TRACE("(%p %p %p %p)\n", this, first
, last
, dest
);
2414 return call_ctype_wchar_do_is(this, first
, last
, dest
);
2417 /* ?do_scan_is@?$ctype@_W@std@@MBEPB_WFPB_W0@Z */
2418 /* ?do_scan_is@?$ctype@_W@std@@MEBAPEB_WFPEB_W0@Z */
2419 /* ?do_scan_is@?$ctype@G@std@@MBEPBGFPBG0@Z */
2420 /* ?do_scan_is@?$ctype@G@std@@MEBAPEBGFPEBG0@Z */
2421 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_scan_is
, 16)
2422 #define call_ctype_wchar_do_scan_is(this, mask, first, last) CALL_VTBL_FUNC(this, 12, \
2423 const wchar_t*, (const ctype_wchar*, short, const wchar_t*, const wchar_t*), \
2424 (this, mask, first, last))
2425 const wchar_t* __thiscall
ctype_wchar_do_scan_is(const ctype_wchar
*this,
2426 short mask
, const wchar_t *first
, const wchar_t *last
)
2428 TRACE("(%p %d %p %p)\n", this, mask
, first
, last
);
2429 for(; first
<last
; first
++)
2430 if(!ctype_wchar_is_ch(this, mask
, *first
))
2435 /* ?scan_is@?$ctype@_W@std@@QBEPB_WFPB_W0@Z */
2436 /* ?scan_is@?$ctype@_W@std@@QEBAPEB_WFPEB_W0@Z */
2437 /* ?scan_is@?$ctype@G@std@@QBEPBGFPBG0@Z */
2438 /* ?scan_is@?$ctype@G@std@@QEBAPEBGFPEBG0@Z */
2439 DEFINE_THISCALL_WRAPPER(ctype_wchar_scan_is
, 16)
2440 const wchar_t* __thiscall
ctype_wchar_scan_is(const ctype_wchar
*this,
2441 short mask
, const wchar_t *first
, const wchar_t *last
)
2443 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
2444 return call_ctype_wchar_do_scan_is(this, mask
, first
, last
);
2447 /* ?do_scan_not@?$ctype@_W@std@@MBEPB_WFPB_W0@Z */
2448 /* ?do_scan_not@?$ctype@_W@std@@MEBAPEB_WFPEB_W0@Z */
2449 /* ?do_scan_not@?$ctype@G@std@@MBEPBGFPBG0@Z */
2450 /* ?do_scan_not@?$ctype@G@std@@MEBAPEBGFPEBG0@Z */
2451 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_scan_not
, 16)
2452 #define call_ctype_wchar_do_scan_not(this, mask, first, last) CALL_VTBL_FUNC(this, 16, \
2453 const wchar_t*, (const ctype_wchar*, short, const wchar_t*, const wchar_t*), \
2454 (this, mask, first, last))
2455 const wchar_t* __thiscall
ctype_wchar_do_scan_not(const ctype_wchar
*this,
2456 short mask
, const wchar_t *first
, const wchar_t *last
)
2458 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
2459 for(; first
<last
; first
++)
2460 if(ctype_wchar_is_ch(this, mask
, *first
))
2465 /* ?scan_not@?$ctype@_W@std@@QBEPB_WFPB_W0@Z */
2466 /* ?scan_not@?$ctype@_W@std@@QEBAPEB_WFPEB_W0@Z */
2467 /* ?scan_not@?$ctype@G@std@@QBEPBGFPBG0@Z */
2468 /* ?scan_not@?$ctype@G@std@@QEBAPEBGFPEBG0@Z */
2469 DEFINE_THISCALL_WRAPPER(ctype_wchar_scan_not
, 16)
2470 const wchar_t* __thiscall
ctype_wchar_scan_not(const ctype_wchar
*this,
2471 short mask
, const wchar_t *first
, const wchar_t *last
)
2473 TRACE("(%p %x %p %p)\n", this, mask
, first
, last
);
2474 return call_ctype_wchar_do_scan_not(this, mask
, first
, last
);
2477 /* ??_7codecvt_base@std@@6B@ */
2478 extern const vtable_ptr MSVCP_codecvt_base_vtable
;
2480 /* ??0codecvt_base@std@@QAE@I@Z */
2481 /* ??0codecvt_base@std@@QEAA@_K@Z */
2482 DEFINE_THISCALL_WRAPPER(codecvt_base_ctor_refs
, 8)
2483 codecvt_base
* __thiscall
codecvt_base_ctor_refs(codecvt_base
*this, MSVCP_size_t refs
)
2485 TRACE("(%p %lu)\n", this, refs
);
2486 locale_facet_ctor_refs(&this->facet
, refs
);
2487 this->facet
.vtable
= &MSVCP_codecvt_base_vtable
;
2491 /* ??_Fcodecvt_base@std@@QAEXXZ */
2492 /* ??_Fcodecvt_base@std@@QEAAXXZ */
2493 DEFINE_THISCALL_WRAPPER(codecvt_base_ctor
, 4)
2494 codecvt_base
* __thiscall
codecvt_base_ctor(codecvt_base
*this)
2496 return codecvt_base_ctor_refs(this, 0);
2499 /* ??1codecvt_base@std@@UAE@XZ */
2500 /* ??1codecvt_base@std@@UEAA@XZ */
2501 DEFINE_THISCALL_WRAPPER(codecvt_base_dtor
, 4)
2502 void __thiscall
codecvt_base_dtor(codecvt_base
*this)
2504 TRACE("(%p)\n", this);
2505 locale_facet_dtor(&this->facet
);
2508 DEFINE_THISCALL_WRAPPER(MSVCP_codecvt_base_vector_dtor
, 8)
2509 codecvt_base
* __thiscall
MSVCP_codecvt_base_vector_dtor(codecvt_base
*this, unsigned int flags
)
2511 TRACE("(%p %x)\n", this, flags
);
2513 /* we have an array, with the number of elements stored before the first object */
2514 int i
, *ptr
= (int *)this-1;
2516 for(i
=*ptr
-1; i
>=0; i
--)
2517 codecvt_base_dtor(this+i
);
2518 MSVCRT_operator_delete(ptr
);
2520 codecvt_base_dtor(this);
2522 MSVCRT_operator_delete(this);
2528 /* ?do_always_noconv@codecvt_base@std@@MBE_NXZ */
2529 /* ?do_always_noconv@codecvt_base@std@@MEBA_NXZ */
2530 #define call_codecvt_base_do_always_noconv(this) CALL_VTBL_FUNC(this, 4, \
2531 MSVCP_bool, (const codecvt_base*), (this))
2532 DEFINE_THISCALL_WRAPPER(codecvt_base_do_always_noconv
, 4)
2533 MSVCP_bool __thiscall
codecvt_base_do_always_noconv(const codecvt_base
*this)
2535 TRACE("(%p)\n", this);
2539 /* ?always_noconv@codecvt_base@std@@QBE_NXZ */
2540 /* ?always_noconv@codecvt_base@std@@QEBA_NXZ */
2541 DEFINE_THISCALL_WRAPPER(codecvt_base_always_noconv
, 4)
2542 MSVCP_bool __thiscall
codecvt_base_always_noconv(const codecvt_base
*this)
2544 TRACE("(%p)\n", this);
2545 return call_codecvt_base_do_always_noconv(this);
2548 /* ?do_max_length@codecvt_base@std@@MBEHXZ */
2549 /* ?do_max_length@codecvt_base@std@@MEBAHXZ */
2550 #define call_codecvt_base_do_max_length(this) CALL_VTBL_FUNC(this, 8, \
2551 int, (const codecvt_base*), (this))
2552 DEFINE_THISCALL_WRAPPER(codecvt_base_do_max_length
, 4)
2553 int __thiscall
codecvt_base_do_max_length(const codecvt_base
*this)
2555 TRACE("(%p)\n", this);
2559 /* ?max_length@codecvt_base@std@@QBEHXZ */
2560 /* ?max_length@codecvt_base@std@@QEBAHXZ */
2561 DEFINE_THISCALL_WRAPPER(codecvt_base_max_length
, 4)
2562 int __thiscall
codecvt_base_max_length(const codecvt_base
*this)
2564 TRACE("(%p)\n", this);
2565 return call_codecvt_base_do_max_length(this);
2568 /* ?do_encoding@codecvt_base@std@@MBEHXZ */
2569 /* ?do_encoding@codecvt_base@std@@MEBAHXZ */
2570 #define call_codecvt_base_do_encoding(this) CALL_VTBL_FUNC(this, 12, \
2571 int, (const codecvt_base*), (this))
2572 DEFINE_THISCALL_WRAPPER(codecvt_base_do_encoding
, 4)
2573 int __thiscall
codecvt_base_do_encoding(const codecvt_base
*this)
2575 TRACE("(%p)\n", this);
2579 /* ?encoding@codecvt_base@std@@QBEHXZ */
2580 /* ?encoding@codecvt_base@std@@QEBAHXZ */
2581 DEFINE_THISCALL_WRAPPER(codecvt_base_encoding
, 4)
2582 int __thiscall
codecvt_base_encoding(const codecvt_base
*this)
2584 TRACE("(%p)\n", this);
2585 return call_codecvt_base_do_encoding(this);
2588 /* ?id@?$codecvt@DDH@std@@2V0locale@2@A */
2589 locale_id codecvt_char_id
= {0};
2591 /* ??_7?$codecvt@DDH@std@@6B@ */
2592 extern const vtable_ptr MSVCP_codecvt_char_vtable
;
2594 /* ?_Init@?$codecvt@DDH@std@@IAEXABV_Locinfo@2@@Z */
2595 /* ?_Init@?$codecvt@DDH@std@@IEAAXAEBV_Locinfo@2@@Z */
2596 DEFINE_THISCALL_WRAPPER(codecvt_char__Init
, 8)
2597 void __thiscall
codecvt_char__Init(codecvt_char
*this, const _Locinfo
*locinfo
)
2599 TRACE("(%p %p)\n", this, locinfo
);
2602 /* ??0?$codecvt@DDH@std@@QAE@ABV_Locinfo@1@I@Z */
2603 /* ??0?$codecvt@DDH@std@@QEAA@AEBV_Locinfo@1@_K@Z */
2604 DEFINE_THISCALL_WRAPPER(codecvt_char_ctor_locinfo
, 12)
2605 codecvt_char
* __thiscall
codecvt_char_ctor_locinfo(codecvt_char
*this, const _Locinfo
*locinfo
, MSVCP_size_t refs
)
2607 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
2608 codecvt_base_ctor_refs(&this->base
, refs
);
2609 this->base
.facet
.vtable
= &MSVCP_codecvt_char_vtable
;
2613 /* ??0?$codecvt@DDH@std@@QAE@I@Z */
2614 /* ??0?$codecvt@DDH@std@@QEAA@_K@Z */
2615 DEFINE_THISCALL_WRAPPER(codecvt_char_ctor_refs
, 8)
2616 codecvt_char
* __thiscall
codecvt_char_ctor_refs(codecvt_char
*this, MSVCP_size_t refs
)
2618 return codecvt_char_ctor_locinfo(this, NULL
, refs
);
2621 /* ??_F?$codecvt@DDH@std@@QAEXXZ */
2622 /* ??_F?$codecvt@DDH@std@@QEAAXXZ */
2623 DEFINE_THISCALL_WRAPPER(codecvt_char_ctor
, 4)
2624 codecvt_char
* __thiscall
codecvt_char_ctor(codecvt_char
*this)
2626 return codecvt_char_ctor_locinfo(this, NULL
, 0);
2629 /* ??1?$codecvt@DDH@std@@MAE@XZ */
2630 /* ??1?$codecvt@DDH@std@@MEAA@XZ */
2631 DEFINE_THISCALL_WRAPPER(codecvt_char_dtor
, 4)
2632 void __thiscall
codecvt_char_dtor(codecvt_char
*this)
2634 TRACE("(%p)\n", this);
2635 codecvt_base_dtor(&this->base
);
2638 DEFINE_THISCALL_WRAPPER(MSVCP_codecvt_char_vector_dtor
, 8)
2639 codecvt_char
* __thiscall
MSVCP_codecvt_char_vector_dtor(codecvt_char
*this, unsigned int flags
)
2641 TRACE("(%p %x)\n", this, flags
);
2643 /* we have an array, with the number of elements stored before the first object */
2644 int i
, *ptr
= (int *)this-1;
2646 for(i
=*ptr
-1; i
>=0; i
--)
2647 codecvt_char_dtor(this+i
);
2648 MSVCRT_operator_delete(ptr
);
2650 codecvt_char_dtor(this);
2652 MSVCRT_operator_delete(this);
2658 /* ?_Getcat@?$codecvt@DDH@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
2659 /* ?_Getcat@?$codecvt@DDH@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
2660 MSVCP_size_t __cdecl
codecvt_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
2662 TRACE("(%p %p)\n", facet
, loc
);
2664 if(facet
&& !*facet
) {
2665 *facet
= MSVCRT_operator_new(sizeof(codecvt_char
));
2667 ERR("Out of memory\n");
2668 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2671 codecvt_char_ctor((codecvt_char
*)*facet
);
2677 codecvt_char
* codecvt_char_use_facet(locale
*loc
)
2679 static codecvt_char
*obj
= NULL
;
2682 const locale_facet
*fac
;
2684 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
2685 fac
= locale__Getfacet(loc
, codecvt_char_id
.id
);
2687 _Lockit_dtor(&lock
);
2688 return (codecvt_char
*)fac
;
2694 codecvt_char__Getcat(&fac
, loc
);
2695 obj
= (codecvt_char
*)fac
;
2696 locale_facet__Incref(&obj
->base
.facet
);
2697 locale_facet_register(&obj
->base
.facet
);
2698 _Lockit_dtor(&lock
);
2703 /* ?do_in@?$codecvt@DDH@std@@MBEHAAHPBD1AAPBDPAD3AAPAD@Z */
2704 /* ?do_in@?$codecvt@DDH@std@@MEBAHAEAHPEBD1AEAPEBDPEAD3AEAPEAD@Z */
2705 #define call_codecvt_char_do_in(this, state, from, from_end, from_next, to, to_end, to_next) \
2706 CALL_VTBL_FUNC(this, 16, int, \
2707 (const codecvt_char*, int*, const char*, const char*, const char**, char*, char*, char**), \
2708 (this, state, from, from_end, from_next, to, to_end, to_next))
2709 DEFINE_THISCALL_WRAPPER(codecvt_char_do_in
, 32)
2710 int __thiscall
codecvt_char_do_in(const codecvt_char
*this, int *state
,
2711 const char *from
, const char *from_end
, const char **from_next
,
2712 char *to
, char *to_end
, char **to_next
)
2714 TRACE("(%p %p %p %p %p %p %p %p)\n", this, state
, from
, from_end
,
2715 from_next
, to
, to_end
, to_next
);
2718 return CODECVT_noconv
;
2721 /* ?in@?$codecvt@DDH@std@@QBEHAAHPBD1AAPBDPAD3AAPAD@Z */
2722 /* ?in@?$codecvt@DDH@std@@QEBAHAEAHPEBD1AEAPEBDPEAD3AEAPEAD@Z */
2723 DEFINE_THISCALL_WRAPPER(codecvt_char_in
, 32)
2724 int __thiscall
codecvt_char_in(const codecvt_char
*this, int *state
,
2725 const char *from
, const char *from_end
, const char **from_next
,
2726 char *to
, char *to_end
, char **to_next
)
2728 TRACE("(%p %p %p %p %p %p %p %p)\n", this, state
, from
, from_end
,
2729 from_next
, to
, to_end
, to_next
);
2730 return call_codecvt_char_do_in(this, state
, from
, from_end
, from_next
,
2731 to
, to_end
, to_next
);
2734 /* ?do_out@?$codecvt@DDH@std@@MBEHAAHPBD1AAPBDPAD3AAPAD@Z */
2735 /* ?do_out@?$codecvt@DDH@std@@MEBAHAEAHPEBD1AEAPEBDPEAD3AEAPEAD@Z */
2736 #define call_codecvt_char_do_out(this, state, from, from_end, from_next, to, to_end, to_next) \
2737 CALL_VTBL_FUNC(this, 20, int, \
2738 (const codecvt_char*, int*, const char*, const char*, const char**, char*, char*, char**), \
2739 (this, state, from, from_end, from_next, to, to_end, to_next))
2740 DEFINE_THISCALL_WRAPPER(codecvt_char_do_out
, 32)
2741 int __thiscall
codecvt_char_do_out(const codecvt_char
*this, int *state
,
2742 const char *from
, const char *from_end
, const char **from_next
,
2743 char *to
, char *to_end
, char **to_next
)
2745 TRACE("(%p %p %p %p %p %p %p %p)\n", this, state
, from
,
2746 from_end
, from_next
, to
, to_end
, to_next
);
2749 return CODECVT_noconv
;
2752 /* ?out@?$codecvt@DDH@std@@QBEHAAHPBD1AAPBDPAD3AAPAD@Z */
2753 /* ?out@?$codecvt@DDH@std@@QEBAHAEAHPEBD1AEAPEBDPEAD3AEAPEAD@Z */
2754 DEFINE_THISCALL_WRAPPER(codecvt_char_out
, 32)
2755 int __thiscall
codecvt_char_out(const codecvt_char
*this, int *state
,
2756 const char *from
, const char *from_end
, const char **from_next
,
2757 char *to
, char *to_end
, char **to_next
)
2759 TRACE("(%p %p %p %p %p %p %p %p)\n", this, state
, from
, from_end
,
2760 from_next
, to
, to_end
, to_next
);
2761 return call_codecvt_char_do_out(this, state
, from
, from_end
, from_next
,
2762 to
, to_end
, to_next
);
2765 /* ?do_unshift@?$codecvt@DDH@std@@MBEHAAHPAD1AAPAD@Z */
2766 /* ?do_unshift@?$codecvt@DDH@std@@MEBAHAEAHPEAD1AEAPEAD@Z */
2767 #define call_codecvt_char_do_unshift(this, state, to, to_end, to_next) CALL_VTBL_FUNC(this, 24, \
2768 int, (const codecvt_char*, int*, char*, char*, char**), (this, state, to, to_end, to_next))
2769 DEFINE_THISCALL_WRAPPER(codecvt_char_do_unshift
, 20)
2770 int __thiscall
codecvt_char_do_unshift(const codecvt_char
*this,
2771 int *state
, char *to
, char *to_end
, char **to_next
)
2773 TRACE("(%p %p %p %p %p)\n", this, state
, to
, to_end
, to_next
);
2775 return CODECVT_noconv
;
2778 /* ?unshift@?$codecvt@DDH@std@@QBEHAAHPAD1AAPAD@Z */
2779 /* ?unshift@?$codecvt@DDH@std@@QEBAHAEAHPEAD1AEAPEAD@Z */
2780 DEFINE_THISCALL_WRAPPER(codecvt_char_unshift
, 20)
2781 int __thiscall
codecvt_char_unshift(const codecvt_char
*this,
2782 int *state
, char *to
, char *to_end
, char **to_next
)
2784 TRACE("(%p %p %p %p %p)\n", this, state
, to
, to_end
, to_next
);
2785 return call_codecvt_char_do_unshift(this, state
, to
, to_end
, to_next
);
2788 /* ?do_length@?$codecvt@DDH@std@@MBEHABHPBD1I@Z */
2789 /* ?do_length@?$codecvt@DDH@std@@MEBAHAEBHPEBD1_K@Z */
2790 #define call_codecvt_char_do_length(this, state, from, from_end, max) CALL_VTBL_FUNC(this, 28, \
2791 int, (const codecvt_char*, const int*, const char*, const char*, MSVCP_size_t), \
2792 (this, state, from, from_end, max))
2793 DEFINE_THISCALL_WRAPPER(codecvt_char_do_length
, 20)
2794 int __thiscall
codecvt_char_do_length(const codecvt_char
*this, const int *state
,
2795 const char *from
, const char *from_end
, MSVCP_size_t max
)
2797 TRACE("(%p %p %p %p %lu)\n", this, state
, from
, from_end
, max
);
2798 return (from_end
-from
> max
? max
: from_end
-from
);
2801 /* ?length@?$codecvt@DDH@std@@QBEHABHPBD1I@Z */
2802 /* ?length@?$codecvt@DDH@std@@QEBAHAEBHPEBD1_K@Z */
2803 DEFINE_THISCALL_WRAPPER(codecvt_char_length
, 20)
2804 int __thiscall
codecvt_char_length(const codecvt_char
*this, const int *state
,
2805 const char *from
, const char *from_end
, MSVCP_size_t max
)
2807 TRACE("(%p %p %p %p %lu)\n", this, state
, from
, from_end
, max
);
2808 return call_codecvt_char_do_length(this, state
, from
, from_end
, max
);
2811 /* ?id@?$numpunct@D@std@@2V0locale@2@A */
2812 locale_id numpunct_char_id
= {0};
2814 /* ??_7?$numpunct@D@std@@6B@ */
2815 extern const vtable_ptr MSVCP_numpunct_char_vtable
;
2817 /* ?_Init@?$numpunct@D@std@@IAEXABV_Locinfo@2@_N@Z */
2818 /* ?_Init@?$numpunct@D@std@@IEAAXAEBV_Locinfo@2@_N@Z */
2819 DEFINE_THISCALL_WRAPPER(numpunct_char__Init
, 12)
2820 void __thiscall
numpunct_char__Init(numpunct_char
*this, _Locinfo
*locinfo
, MSVCP_bool isdef
)
2824 TRACE("(%p %p %d)\n", this, locinfo
, isdef
);
2826 len
= strlen(_Locinfo__Getfalse(locinfo
))+1;
2827 this->false_name
= MSVCRT_operator_new(len
);
2828 if(this->false_name
)
2829 memcpy((char*)this->false_name
, _Locinfo__Getfalse(locinfo
), len
);
2831 len
= strlen(_Locinfo__Gettrue(locinfo
))+1;
2832 this->true_name
= MSVCRT_operator_new(len
);
2834 memcpy((char*)this->true_name
, _Locinfo__Gettrue(locinfo
), len
);
2837 this->grouping
= MSVCRT_operator_new(1);
2839 *(char*)this->grouping
= 0;
2844 const struct lconv
*lc
= _Locinfo__Getlconv(locinfo
);
2846 len
= strlen(lc
->grouping
)+1;
2847 this->grouping
= MSVCRT_operator_new(len
);
2849 memcpy((char*)this->grouping
, lc
->grouping
, len
);
2851 this->dp
= lc
->decimal_point
[0];
2852 this->sep
= lc
->thousands_sep
[0];
2855 if(!this->false_name
|| !this->true_name
|| !this->grouping
) {
2856 MSVCRT_operator_delete((char*)this->grouping
);
2857 MSVCRT_operator_delete((char*)this->false_name
);
2858 MSVCRT_operator_delete((char*)this->true_name
);
2860 ERR("Out of memory\n");
2861 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2865 /* ?_Tidy@?$numpunct@D@std@@AAEXXZ */
2866 /* ?_Tidy@?$numpunct@D@std@@AEAAXXZ */
2867 DEFINE_THISCALL_WRAPPER(numpunct_char__Tidy
, 4)
2868 void __thiscall
numpunct_char__Tidy(numpunct_char
*this)
2870 TRACE("(%p)\n", this);
2872 MSVCRT_operator_delete((char*)this->grouping
);
2873 MSVCRT_operator_delete((char*)this->false_name
);
2874 MSVCRT_operator_delete((char*)this->true_name
);
2877 /* ??0?$numpunct@D@std@@QAE@ABV_Locinfo@1@I_N@Z */
2878 /* ??0?$numpunct@D@std@@QEAA@AEBV_Locinfo@1@_K_N@Z */
2879 DEFINE_THISCALL_WRAPPER(numpunct_char_ctor_locinfo
, 16)
2880 numpunct_char
* __thiscall
numpunct_char_ctor_locinfo(numpunct_char
*this,
2881 _Locinfo
*locinfo
, MSVCP_size_t refs
, MSVCP_bool usedef
)
2883 TRACE("(%p %p %lu %d)\n", this, locinfo
, refs
, usedef
);
2884 locale_facet_ctor_refs(&this->facet
, refs
);
2885 this->facet
.vtable
= &MSVCP_numpunct_char_vtable
;
2886 numpunct_char__Init(this, locinfo
, usedef
);
2890 /* ??0?$numpunct@D@std@@IAE@PBDI_N@Z */
2891 /* ??0?$numpunct@D@std@@IEAA@PEBD_K_N@Z */
2892 DEFINE_THISCALL_WRAPPER(numpunct_char_ctor_name
, 16)
2893 numpunct_char
* __thiscall
numpunct_char_ctor_name(numpunct_char
*this,
2894 const char *name
, MSVCP_size_t refs
, MSVCP_bool usedef
)
2898 TRACE("(%p %s %lu %d)\n", this, debugstr_a(name
), refs
, usedef
);
2899 locale_facet_ctor_refs(&this->facet
, refs
);
2900 this->facet
.vtable
= &MSVCP_numpunct_char_vtable
;
2902 _Locinfo_ctor_cstr(&locinfo
, name
);
2903 numpunct_char__Init(this, &locinfo
, usedef
);
2904 _Locinfo_dtor(&locinfo
);
2908 /* ??0?$numpunct@D@std@@QAE@I@Z */
2909 /* ??0?$numpunct@D@std@@QEAA@_K@Z */
2910 DEFINE_THISCALL_WRAPPER(numpunct_char_ctor_refs
, 8)
2911 numpunct_char
* __thiscall
numpunct_char_ctor_refs(numpunct_char
*this, MSVCP_size_t refs
)
2913 TRACE("(%p %lu)\n", this, refs
);
2914 return numpunct_char_ctor_name(this, "C", refs
, FALSE
);
2917 /* ??_F?$numpunct@D@std@@QAEXXZ */
2918 /* ??_F?$numpunct@D@std@@QEAAXXZ */
2919 DEFINE_THISCALL_WRAPPER(numpunct_char_ctor
, 4)
2920 numpunct_char
* __thiscall
numpunct_char_ctor(numpunct_char
*this)
2922 return numpunct_char_ctor_refs(this, 0);
2925 /* ??1?$numpunct@D@std@@MAE@XZ */
2926 /* ??1?$numpunct@D@std@@MEAA@XZ */
2927 DEFINE_THISCALL_WRAPPER(numpunct_char_dtor
, 4)
2928 void __thiscall
numpunct_char_dtor(numpunct_char
*this)
2930 TRACE("(%p)\n", this);
2931 numpunct_char__Tidy(this);
2934 DEFINE_THISCALL_WRAPPER(MSVCP_numpunct_char_vector_dtor
, 8)
2935 numpunct_char
* __thiscall
MSVCP_numpunct_char_vector_dtor(numpunct_char
*this, unsigned int flags
)
2937 TRACE("(%p %x)\n", this, flags
);
2939 /* we have an array, with the number of elements stored before the first object */
2940 int i
, *ptr
= (int *)this-1;
2942 for(i
=*ptr
-1; i
>=0; i
--)
2943 numpunct_char_dtor(this+i
);
2944 MSVCRT_operator_delete(ptr
);
2946 numpunct_char_dtor(this);
2948 MSVCRT_operator_delete(this);
2954 /* ?_Getcat@?$numpunct@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
2955 /* ?_Getcat@?$numpunct@D@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
2956 MSVCP_size_t __cdecl
numpunct_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
2958 TRACE("(%p %p)\n", facet
, loc
);
2960 if(facet
&& !*facet
) {
2961 *facet
= MSVCRT_operator_new(sizeof(numpunct_char
));
2963 ERR("Out of memory\n");
2964 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2967 numpunct_char_ctor_name((numpunct_char
*)*facet
,
2968 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0, TRUE
);
2974 /* ?do_decimal_point@?$numpunct@D@std@@MBEDXZ */
2975 /* ?do_decimal_point@?$numpunct@D@std@@MEBADXZ */
2976 DEFINE_THISCALL_WRAPPER(numpunct_char_do_decimal_point
, 4)
2977 #define call_numpunct_char_do_decimal_point(this) CALL_VTBL_FUNC(this, 4, \
2978 char, (const numpunct_char *this), (this))
2979 char __thiscall
numpunct_char_do_decimal_point(const numpunct_char
*this)
2981 TRACE("(%p)\n", this);
2985 /* ?decimal_point@?$numpunct@D@std@@QBEDXZ */
2986 /* ?decimal_point@?$numpunct@D@std@@QEBADXZ */
2987 DEFINE_THISCALL_WRAPPER(numpunct_char_decimal_point
, 4)
2988 char __thiscall
numpunct_char_decimal_point(const numpunct_char
*this)
2990 TRACE("(%p)\n", this);
2991 return call_numpunct_char_do_decimal_point(this);
2994 /* ?do_thousands_sep@?$numpunct@D@std@@MBEDXZ */
2995 /* ?do_thousands_sep@?$numpunct@D@std@@MEBADXZ */
2996 DEFINE_THISCALL_WRAPPER(numpunct_char_do_thousands_sep
, 4)
2997 #define call_numpunct_char_do_thousands_sep(this) CALL_VTBL_FUNC(this, 8, \
2998 char, (const numpunct_char*), (this))
2999 char __thiscall
numpunct_char_do_thousands_sep(const numpunct_char
*this)
3001 TRACE("(%p)\n", this);
3005 /* ?thousands_sep@?$numpunct@D@std@@QBEDXZ */
3006 /* ?thousands_sep@?$numpunct@D@std@@QEBADXZ */
3007 DEFINE_THISCALL_WRAPPER(numpunct_char_thousands_sep
, 4)
3008 char __thiscall
numpunct_char_thousands_sep(const numpunct_char
*this)
3010 TRACE("(%p)\n", this);
3011 return call_numpunct_char_do_thousands_sep(this);
3014 /* ?do_grouping@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3015 /* ?do_grouping@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3016 DEFINE_THISCALL_WRAPPER(numpunct_char_do_grouping
, 8)
3017 #define call_numpunct_char_do_grouping(this, ret) CALL_VTBL_FUNC(this, 12, \
3018 basic_string_char*, (const numpunct_char*, basic_string_char*), (this, ret))
3019 basic_string_char
* __thiscall
numpunct_char_do_grouping(
3020 const numpunct_char
*this, basic_string_char
*ret
)
3022 TRACE("(%p)\n", this);
3023 return MSVCP_basic_string_char_ctor_cstr(ret
, this->grouping
);
3026 /* ?grouping@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3027 /* ?grouping@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3028 DEFINE_THISCALL_WRAPPER(numpunct_char_grouping
, 8)
3029 basic_string_char
* __thiscall
numpunct_char_grouping(const numpunct_char
*this, basic_string_char
*ret
)
3031 TRACE("(%p)\n", this);
3032 return call_numpunct_char_do_grouping(this, ret
);
3035 /* ?do_falsename@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3036 /* ?do_falsename@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3037 DEFINE_THISCALL_WRAPPER(numpunct_char_do_falsename
, 8)
3038 #define call_numpunct_char_do_falsename(this, ret) CALL_VTBL_FUNC(this, 16, \
3039 basic_string_char*, (const numpunct_char*, basic_string_char*), (this, ret))
3040 basic_string_char
* __thiscall
numpunct_char_do_falsename(
3041 const numpunct_char
*this, basic_string_char
*ret
)
3043 TRACE("(%p)\n", this);
3044 return MSVCP_basic_string_char_ctor_cstr(ret
, this->false_name
);
3047 /* ?falsename@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3048 /* ?falsename@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3049 DEFINE_THISCALL_WRAPPER(numpunct_char_falsename
, 8)
3050 basic_string_char
* __thiscall
numpunct_char_falsename(const numpunct_char
*this, basic_string_char
*ret
)
3052 TRACE("(%p)\n", this);
3053 return call_numpunct_char_do_falsename(this, ret
);
3056 /* ?do_truename@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3057 /* ?do_truename@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3058 DEFINE_THISCALL_WRAPPER(numpunct_char_do_truename
, 8)
3059 #define call_numpunct_char_do_truename(this, ret) CALL_VTBL_FUNC(this, 20, \
3060 basic_string_char*, (const numpunct_char*, basic_string_char*), (this, ret))
3061 basic_string_char
* __thiscall
numpunct_char_do_truename(
3062 const numpunct_char
*this, basic_string_char
*ret
)
3064 TRACE("(%p)\n", this);
3065 return MSVCP_basic_string_char_ctor_cstr(ret
, this->true_name
);
3068 /* ?truename@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3069 /* ?truename@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3070 DEFINE_THISCALL_WRAPPER(numpunct_char_truename
, 8)
3071 basic_string_char
* __thiscall
numpunct_char_truename(const numpunct_char
*this, basic_string_char
*ret
)
3073 TRACE("(%p)\n", this);
3074 return call_numpunct_char_do_truename(this, ret
);
3077 /* ?id@?$numpunct@_W@std@@2V0locale@2@A */
3078 locale_id numpunct_wchar_id
= {0};
3079 /* ?id@?$numpunct@G@std@@2V0locale@2@A */
3080 locale_id numpunct_short_id
= {0};
3082 /* ??_7?$numpunct@_W@std@@6B@ */
3083 extern const vtable_ptr MSVCP_numpunct_wchar_vtable
;
3084 /* ??_7?$numpunct@G@std@@6B@ */
3085 extern const vtable_ptr MSVCP_numpunct_short_vtable
;
3087 /* ?_Init@?$numpunct@_W@std@@IAEXABV_Locinfo@2@_N@Z */
3088 /* ?_Init@?$numpunct@_W@std@@IEAAXAEBV_Locinfo@2@_N@Z */
3089 /* ?_Init@?$numpunct@G@std@@IAEXABV_Locinfo@2@_N@Z */
3090 /* ?_Init@?$numpunct@G@std@@IEAAXAEBV_Locinfo@2@_N@Z */
3091 DEFINE_THISCALL_WRAPPER(numpunct_wchar__Init
, 12)
3092 void __thiscall
numpunct_wchar__Init(numpunct_wchar
*this, _Locinfo
*locinfo
, MSVCP_bool isdef
)
3094 const char *to_convert
;
3098 TRACE("(%p %p %d)\n", this, locinfo
, isdef
);
3100 _Locinfo__Getcvt(locinfo
, &cvt
);
3102 to_convert
= _Locinfo__Getfalse(locinfo
);
3103 len
= MultiByteToWideChar(cvt
.page
, 0, to_convert
, -1, NULL
, 0);
3104 this->false_name
= MSVCRT_operator_new(len
*sizeof(WCHAR
));
3105 if(this->false_name
)
3106 MultiByteToWideChar(cvt
.page
, 0, to_convert
, -1,
3107 (wchar_t*)this->false_name
, len
);
3109 to_convert
= _Locinfo__Gettrue(locinfo
);
3110 len
= MultiByteToWideChar(cvt
.page
, 0, to_convert
, -1, NULL
, 0);
3111 this->true_name
= MSVCRT_operator_new(len
*sizeof(WCHAR
));
3113 MultiByteToWideChar(cvt
.page
, 0, to_convert
, -1,
3114 (wchar_t*)this->true_name
, len
);
3117 this->grouping
= MSVCRT_operator_new(1);
3119 *(char*)this->grouping
= 0;
3124 const struct lconv
*lc
= _Locinfo__Getlconv(locinfo
);
3126 len
= strlen(lc
->grouping
)+1;
3127 this->grouping
= MSVCRT_operator_new(len
);
3129 memcpy((char*)this->grouping
, lc
->grouping
, len
);
3131 this->dp
= lc
->decimal_point
[0];
3132 this->sep
= lc
->thousands_sep
[0];
3135 if(!this->false_name
|| !this->true_name
|| !this->grouping
) {
3136 MSVCRT_operator_delete((char*)this->grouping
);
3137 MSVCRT_operator_delete((wchar_t*)this->false_name
);
3138 MSVCRT_operator_delete((wchar_t*)this->true_name
);
3140 ERR("Out of memory\n");
3141 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
3145 /* ?_Tidy@?$numpunct@_W@std@@AAEXXZ */
3146 /* ?_Tidy@?$numpunct@_W@std@@AEAAXXZ */
3147 /* ?_Tidy@?$numpunct@G@std@@AAEXXZ */
3148 /* ?_Tidy@?$numpunct@G@std@@AEAAXXZ */
3149 DEFINE_THISCALL_WRAPPER(numpunct_wchar__Tidy
, 4)
3150 void __thiscall
numpunct_wchar__Tidy(numpunct_wchar
*this)
3152 TRACE("(%p)\n", this);
3154 MSVCRT_operator_delete((char*)this->grouping
);
3155 MSVCRT_operator_delete((wchar_t*)this->false_name
);
3156 MSVCRT_operator_delete((wchar_t*)this->true_name
);
3159 /* ??0?$numpunct@_W@std@@QAE@ABV_Locinfo@1@I_N@Z */
3160 /* ??0?$numpunct@_W@std@@QEAA@AEBV_Locinfo@1@_K_N@Z */
3161 DEFINE_THISCALL_WRAPPER(numpunct_wchar_ctor_locinfo
, 16)
3162 numpunct_wchar
* __thiscall
numpunct_wchar_ctor_locinfo(numpunct_wchar
*this,
3163 _Locinfo
*locinfo
, MSVCP_size_t refs
, MSVCP_bool usedef
)
3165 TRACE("(%p %p %lu %d)\n", this, locinfo
, refs
, usedef
);
3166 locale_facet_ctor_refs(&this->facet
, refs
);
3167 this->facet
.vtable
= &MSVCP_numpunct_wchar_vtable
;
3168 numpunct_wchar__Init(this, locinfo
, usedef
);
3172 /* ??0?$numpunct@G@std@@QAE@ABV_Locinfo@1@I_N@Z */
3173 /* ??0?$numpunct@G@std@@QEAA@AEBV_Locinfo@1@_K_N@Z */
3174 DEFINE_THISCALL_WRAPPER(numpunct_short_ctor_locinfo
, 16)
3175 numpunct_wchar
* __thiscall
numpunct_short_ctor_locinfo(numpunct_wchar
*this,
3176 _Locinfo
*locinfo
, MSVCP_size_t refs
, MSVCP_bool usedef
)
3178 numpunct_wchar_ctor_locinfo(this, locinfo
, refs
, usedef
);
3179 this->facet
.vtable
= &MSVCP_numpunct_short_vtable
;
3183 /* ??0?$numpunct@_W@std@@IAE@PBDI_N@Z */
3184 /* ??0?$numpunct@_W@std@@IEAA@PEBD_K_N@Z */
3185 DEFINE_THISCALL_WRAPPER(numpunct_wchar_ctor_name
, 16)
3186 numpunct_wchar
* __thiscall
numpunct_wchar_ctor_name(numpunct_wchar
*this,
3187 const char *name
, MSVCP_size_t refs
, MSVCP_bool usedef
)
3191 TRACE("(%p %s %lu %d)\n", this, debugstr_a(name
), refs
, usedef
);
3192 locale_facet_ctor_refs(&this->facet
, refs
);
3193 this->facet
.vtable
= &MSVCP_numpunct_wchar_vtable
;
3195 _Locinfo_ctor_cstr(&locinfo
, name
);
3196 numpunct_wchar__Init(this, &locinfo
, usedef
);
3197 _Locinfo_dtor(&locinfo
);
3201 /* ??0?$numpunct@G@std@@IAE@PBDI_N@Z */
3202 /* ??0?$numpunct@G@std@@IEAA@PEBD_K_N@Z */
3203 DEFINE_THISCALL_WRAPPER(numpunct_short_ctor_name
, 16)
3204 numpunct_wchar
* __thiscall
numpunct_short_ctor_name(numpunct_wchar
*this,
3205 const char *name
, MSVCP_size_t refs
, MSVCP_bool usedef
)
3207 numpunct_wchar_ctor_name(this, name
, refs
, usedef
);
3208 this->facet
.vtable
= &MSVCP_numpunct_short_vtable
;
3212 /* ??0?$numpunct@_W@std@@QAE@I@Z */
3213 /* ??0?$numpunct@_W@std@@QEAA@_K@Z */
3214 DEFINE_THISCALL_WRAPPER(numpunct_wchar_ctor_refs
, 8)
3215 numpunct_wchar
* __thiscall
numpunct_wchar_ctor_refs(numpunct_wchar
*this, MSVCP_size_t refs
)
3217 TRACE("(%p %lu)\n", this, refs
);
3218 return numpunct_wchar_ctor_name(this, "C", refs
, FALSE
);
3221 /* ??0?$numpunct@G@std@@QAE@I@Z */
3222 /* ??0?$numpunct@G@std@@QEAA@_K@Z */
3223 DEFINE_THISCALL_WRAPPER(numpunct_short_ctor_refs
, 8)
3224 numpunct_wchar
* __thiscall
numpunct_short_ctor_refs(numpunct_wchar
*this, MSVCP_size_t refs
)
3226 numpunct_wchar_ctor_refs(this, refs
);
3227 this->facet
.vtable
= &MSVCP_numpunct_short_vtable
;
3231 /* ??_F?$numpunct@_W@std@@QAEXXZ */
3232 /* ??_F?$numpunct@_W@std@@QEAAXXZ */
3233 DEFINE_THISCALL_WRAPPER(numpunct_wchar_ctor
, 4)
3234 numpunct_wchar
* __thiscall
numpunct_wchar_ctor(numpunct_wchar
*this)
3236 return numpunct_wchar_ctor_refs(this, 0);
3239 /* ??_F?$numpunct@G@std@@QAEXXZ */
3240 /* ??_F?$numpunct@G@std@@QEAAXXZ */
3241 DEFINE_THISCALL_WRAPPER(numpunct_short_ctor
, 4)
3242 numpunct_wchar
* __thiscall
numpunct_short_ctor(numpunct_wchar
*this)
3244 return numpunct_short_ctor_refs(this, 0);
3247 /* ??1?$numpunct@_W@std@@MAE@XZ */
3248 /* ??1?$numpunct@_W@std@@MEAA@XZ */
3249 /* ??1?$numpunct@G@std@@MAE@XZ */
3250 /* ??1?$numpunct@G@std@@MEAA@XZ */
3251 DEFINE_THISCALL_WRAPPER(numpunct_wchar_dtor
, 4)
3252 void __thiscall
numpunct_wchar_dtor(numpunct_wchar
*this)
3254 TRACE("(%p)\n", this);
3255 numpunct_wchar__Tidy(this);
3258 DEFINE_THISCALL_WRAPPER(MSVCP_numpunct_wchar_vector_dtor
, 8)
3259 numpunct_wchar
* __thiscall
MSVCP_numpunct_wchar_vector_dtor(numpunct_wchar
*this, unsigned int flags
)
3261 TRACE("(%p %x)\n", this, flags
);
3263 /* we have an array, with the number of elements stored before the first object */
3264 int i
, *ptr
= (int *)this-1;
3266 for(i
=*ptr
-1; i
>=0; i
--)
3267 numpunct_wchar_dtor(this+i
);
3268 MSVCRT_operator_delete(ptr
);
3270 numpunct_wchar_dtor(this);
3272 MSVCRT_operator_delete(this);
3278 DEFINE_THISCALL_WRAPPER(MSVCP_numpunct_short_vector_dtor
, 8)
3279 numpunct_wchar
* __thiscall
MSVCP_numpunct_short_vector_dtor(numpunct_wchar
*this, unsigned int flags
)
3281 return MSVCP_numpunct_wchar_vector_dtor(this, flags
);
3284 /* ?_Getcat@?$numpunct@_W@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3285 /* ?_Getcat@?$numpunct@_W@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3286 MSVCP_size_t __cdecl
numpunct_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
3288 TRACE("(%p %p)\n", facet
, loc
);
3290 if(facet
&& !*facet
) {
3291 *facet
= MSVCRT_operator_new(sizeof(numpunct_wchar
));
3293 ERR("Out of memory\n");
3294 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
3297 numpunct_wchar_ctor_name((numpunct_wchar
*)*facet
,
3298 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0, TRUE
);
3304 /* ?_Getcat@?$numpunct@G@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3305 /* ?_Getcat@?$numpunct@G@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3306 MSVCP_size_t __cdecl
numpunct_short__Getcat(const locale_facet
**facet
, const locale
*loc
)
3308 TRACE("(%p %p)\n", facet
, loc
);
3310 if(facet
&& !*facet
) {
3311 *facet
= MSVCRT_operator_new(sizeof(numpunct_wchar
));
3313 ERR("Out of memory\n");
3314 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
3317 numpunct_short_ctor_name((numpunct_wchar
*)*facet
,
3318 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0, TRUE
);
3324 /* ?do_decimal_point@?$numpunct@_W@std@@MBE_WXZ */
3325 /* ?do_decimal_point@?$numpunct@_W@std@@MEBA_WXZ */
3326 /* ?do_decimal_point@?$numpunct@G@std@@MBEGXZ */
3327 /* ?do_decimal_point@?$numpunct@G@std@@MEBAGXZ */
3328 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_decimal_point
, 4)
3329 #define call_numpunct_wchar_do_decimal_point(this) CALL_VTBL_FUNC(this, 4, \
3330 wchar_t, (const numpunct_wchar *this), (this))
3331 wchar_t __thiscall
numpunct_wchar_do_decimal_point(const numpunct_wchar
*this)
3333 TRACE("(%p)\n", this);
3337 /* ?decimal_point@?$numpunct@_W@std@@QBE_WXZ */
3338 /* ?decimal_point@?$numpunct@_W@std@@QEBA_WXZ */
3339 /* ?decimal_point@?$numpunct@G@std@@QBEGXZ */
3340 /* ?decimal_point@?$numpunct@G@std@@QEBAGXZ */
3341 DEFINE_THISCALL_WRAPPER(numpunct_wchar_decimal_point
, 4)
3342 wchar_t __thiscall
numpunct_wchar_decimal_point(const numpunct_wchar
*this)
3344 TRACE("(%p)\n", this);
3345 return call_numpunct_wchar_do_decimal_point(this);
3348 /* ?do_thousands_sep@?$numpunct@_W@std@@MBE_WXZ */
3349 /* ?do_thousands_sep@?$numpunct@_W@std@@MEBA_WXZ */
3350 /* ?do_thousands_sep@?$numpunct@G@std@@MBEGXZ */
3351 /* ?do_thousands_sep@?$numpunct@G@std@@MEBAGXZ */
3352 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_thousands_sep
, 4)
3353 #define call_numpunct_wchar_do_thousands_sep(this) CALL_VTBL_FUNC(this, 8, \
3354 wchar_t, (const numpunct_wchar *this), (this))
3355 wchar_t __thiscall
numpunct_wchar_do_thousands_sep(const numpunct_wchar
*this)
3357 TRACE("(%p)\n", this);
3361 /* ?thousands_sep@?$numpunct@_W@std@@QBE_WXZ */
3362 /* ?thousands_sep@?$numpunct@_W@std@@QEBA_WXZ */
3363 /* ?thousands_sep@?$numpunct@G@std@@QBEGXZ */
3364 /* ?thousands_sep@?$numpunct@G@std@@QEBAGXZ */
3365 DEFINE_THISCALL_WRAPPER(numpunct_wchar_thousands_sep
, 4)
3366 wchar_t __thiscall
numpunct_wchar_thousands_sep(const numpunct_wchar
*this)
3368 TRACE("(%p)\n", this);
3369 return call_numpunct_wchar_do_thousands_sep(this);
3372 /* ?do_grouping@?$numpunct@_W@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3373 /* ?do_grouping@?$numpunct@_W@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3374 /* ?do_grouping@?$numpunct@G@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3375 /* ?do_grouping@?$numpunct@G@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3376 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_grouping
, 8)
3377 #define call_numpunct_wchar_do_grouping(this, ret) CALL_VTBL_FUNC(this, 12, \
3378 basic_string_char*, (const numpunct_wchar*, basic_string_char*), (this, ret))
3379 basic_string_char
* __thiscall
numpunct_wchar_do_grouping(const numpunct_wchar
*this, basic_string_char
*ret
)
3381 TRACE("(%p)\n", this);
3382 return MSVCP_basic_string_char_ctor_cstr(ret
, this->grouping
);
3385 /* ?grouping@?$numpunct@_W@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3386 /* ?grouping@?$numpunct@_W@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3387 /* ?grouping@?$numpunct@G@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3388 /* ?grouping@?$numpunct@G@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
3389 DEFINE_THISCALL_WRAPPER(numpunct_wchar_grouping
, 8)
3390 basic_string_char
* __thiscall
numpunct_wchar_grouping(const numpunct_wchar
*this, basic_string_char
*ret
)
3392 TRACE("(%p)\n", this);
3393 return call_numpunct_wchar_do_grouping(this, ret
);
3396 /* ?do_falsename@?$numpunct@_W@std@@MBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3397 /* ?do_falsename@?$numpunct@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3398 /* ?do_falsename@?$numpunct@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3399 /* ?do_falsename@?$numpunct@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3400 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_falsename
, 8)
3401 #define call_numpunct_wchar_do_falsename(this, ret) CALL_VTBL_FUNC(this, 16, \
3402 basic_string_wchar*, (const numpunct_wchar*, basic_string_wchar*), (this, ret))
3403 basic_string_wchar
* __thiscall
numpunct_wchar_do_falsename(const numpunct_wchar
*this, basic_string_wchar
*ret
)
3405 TRACE("(%p)\n", this);
3406 return MSVCP_basic_string_wchar_ctor_cstr(ret
, this->false_name
);
3409 /* ?falsename@?$numpunct@_W@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3410 /* ?falsename@?$numpunct@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3411 /* ?falsename@?$numpunct@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3412 /* ?falsename@?$numpunct@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3413 DEFINE_THISCALL_WRAPPER(numpunct_wchar_falsename
, 8)
3414 basic_string_wchar
* __thiscall
numpunct_wchar_falsename(const numpunct_wchar
*this, basic_string_wchar
*ret
)
3416 TRACE("(%p)\n", this);
3417 return call_numpunct_wchar_do_falsename(this, ret
);
3420 /* ?do_truename@?$numpunct@_W@std@@MBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3421 /* ?do_truename@?$numpunct@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3422 /* ?do_truename@?$numpunct@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3423 /* ?do_truename@?$numpunct@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3424 DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_truename
, 8)
3425 #define call_numpunct_wchar_do_truename(this, ret) CALL_VTBL_FUNC(this, 20, \
3426 basic_string_wchar*, (const numpunct_wchar*, basic_string_wchar*), (this, ret))
3427 basic_string_wchar
* __thiscall
numpunct_wchar_do_truename(const numpunct_wchar
*this, basic_string_wchar
*ret
)
3429 TRACE("(%p)\n", this);
3430 return MSVCP_basic_string_wchar_ctor_cstr(ret
, this->true_name
);
3433 /* ?truename@?$numpunct@_W@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3434 /* ?truename@?$numpunct@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3435 /* ?truename@?$numpunct@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3436 /* ?truename@?$numpunct@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
3437 DEFINE_THISCALL_WRAPPER(numpunct_wchar_truename
, 8)
3438 basic_string_wchar
* __thiscall
numpunct_wchar_truename(const numpunct_wchar
*this, basic_string_wchar
*ret
)
3440 TRACE("(%p)\n", this);
3441 return call_numpunct_wchar_do_truename(this, ret
);
3444 /* ?id@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@2V0locale@2@A */
3445 locale_id num_get_wchar_id
= {0};
3446 /* ?id@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@2V0locale@2@A */
3447 locale_id num_get_short_id
= {0};
3449 /* ??_7?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@6B@ */
3450 extern const vtable_ptr MSVCP_num_get_wchar_vtable
;
3451 /* ??_7?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@6B@ */
3452 extern const vtable_ptr MSVCP_num_get_short_vtable
;
3454 /* ?_Init@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IAEXABV_Locinfo@2@@Z */
3455 /* ?_Init@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@IEAAXAEBV_Locinfo@2@@Z */
3456 /* ?_Init@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@IAEXABV_Locinfo@2@@Z */
3457 /* ?_Init@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@IEAAXAEBV_Locinfo@2@@Z */
3458 DEFINE_THISCALL_WRAPPER(num_get_wchar_ctor__Init
, 8)
3459 void __thiscall
num_get_wchar_ctor__Init(num_get
*this, const _Locinfo
*locinfo
)
3461 FIXME("(%p %p) stub\n", this, locinfo
);
3464 /* ??0?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAE@ABV_Locinfo@1@I@Z */
3465 /* ??0?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAA@AEBV_Locinfo@1@_K@Z */
3466 DEFINE_THISCALL_WRAPPER(num_get_wchar_ctor_locinfo
, 12)
3467 num_get
* __thiscall
num_get_wchar_ctor_locinfo(num_get
*this,
3468 _Locinfo
*locinfo
, MSVCP_size_t refs
)
3470 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
3474 /* ??0?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QAE@ABV_Locinfo@1@I@Z */
3475 /* ??0?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEAA@AEBV_Locinfo@1@_K@Z */
3476 DEFINE_THISCALL_WRAPPER(num_get_short_ctor_locinfo
, 12)
3477 num_get
* __thiscall
num_get_short_ctor_locinfo(num_get
*this,
3478 _Locinfo
*locinfo
, MSVCP_size_t refs
)
3480 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
3484 /* ??0?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAE@I@Z */
3485 /* ??0?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAA@_K@Z */
3486 DEFINE_THISCALL_WRAPPER(num_get_wchar_ctor_refs
, 8)
3487 num_get
* __thiscall
num_get_wchar_ctor_refs(num_get
*this, MSVCP_size_t refs
)
3489 FIXME("(%p %lu) stub\n", this, refs
);
3493 /* ??0?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QAE@I@Z */
3494 /* ??0?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEAA@_K@Z */
3495 DEFINE_THISCALL_WRAPPER(num_get_short_ctor_refs
, 8)
3496 num_get
* __thiscall
num_get_short_ctor_refs(num_get
*this, MSVCP_size_t refs
)
3498 FIXME("(%p %lu) stub\n", this, refs
);
3502 /* ??_F?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ */
3503 /* ??_F?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ */
3504 DEFINE_THISCALL_WRAPPER(num_get_wchar_ctor
, 4)
3505 num_get
* __thiscall
num_get_wchar_ctor(num_get
*this)
3507 FIXME("(%p) stub\n", this);
3511 /* ??_F?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ */
3512 /* ??_F?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ */
3513 DEFINE_THISCALL_WRAPPER(num_get_short_ctor
, 4)
3514 num_get
* __thiscall
num_get_short_ctor(num_get
*this)
3516 FIXME("(%p) stub\n", this);
3520 /* ??1?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAE@XZ */
3521 /* ??1?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEAA@XZ */
3522 /* ??1?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MAE@XZ */
3523 /* ??1?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEAA@XZ */
3524 DEFINE_THISCALL_WRAPPER(num_get_wchar_dtor
, 4)
3525 void __thiscall
num_get_wchar_dtor(num_get
*this)
3527 FIXME("(%p) stub\n", this);
3530 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_wchar_vector_dtor
, 8)
3531 num_get
* __thiscall
MSVCP_num_get_wchar_vector_dtor(num_get
*this, unsigned int flags
)
3533 TRACE("(%p %x)\n", this, flags
);
3535 /* we have an array, with the number of elements stored before the first object */
3536 int i
, *ptr
= (int *)this-1;
3538 for(i
=*ptr
-1; i
>=0; i
--)
3539 num_get_wchar_dtor(this+i
);
3540 MSVCRT_operator_delete(ptr
);
3542 num_get_wchar_dtor(this);
3544 MSVCRT_operator_delete(this);
3550 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_short_vector_dtor
, 8)
3551 num_get
* __thiscall
MSVCP_num_get_short_vector_dtor(num_get
*this, unsigned int flags
)
3553 return MSVCP_num_get_wchar_vector_dtor(this, flags
);
3556 /* ?_Getcat@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3557 /* ?_Getcat@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3558 MSVCP_size_t __cdecl
num_get_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
3560 FIXME("(%p %p) stub\n", facet
, loc
);
3564 /* ?_Getcat@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3565 /* ?_Getcat@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3566 MSVCP_size_t __cdecl
num_get_short__Getcat(const locale_facet
**facet
, const locale
*loc
)
3568 FIXME("(%p %p) stub\n", facet
, loc
);
3572 /* ?_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 */
3573 /* ?_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 */
3574 /* ?_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 */
3575 /* ?_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 */
3576 int __cdecl
num_get_wchar__Getffld(num_get
*this, char *dest
, istreambuf_iterator_wchar
*first
,
3577 istreambuf_iterator_wchar
*last
, const locale
*loc
)
3579 FIXME("(%p %p %p %p) stub\n", dest
, first
, last
, loc
);
3583 /* ?_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 */
3584 /* ?_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 */
3585 /* ?_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 */
3586 /* ?_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 */
3587 int __cdecl
num_get_wchar__Getffldx(num_get
*this, char *dest
, istreambuf_iterator_wchar
*first
,
3588 istreambuf_iterator_wchar
*last
, struct _ios_base
*ios
, int *phexexp
)
3590 FIXME("(%p %p %p %p %p) stub\n", dest
, first
, last
, ios
, phexexp
);
3594 /* ?_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 */
3595 /* ?_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 */
3596 /* ?_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 */
3597 /* ?_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 */
3598 int __cdecl
num_get_wchar__Getifld(num_get
*this, char *dest
, istreambuf_iterator_wchar
*first
,
3599 istreambuf_iterator_wchar
*last
, int fmtflags
, const locale
*loc
)
3601 FIXME("(%p %p %p %04x %p) stub\n", dest
, first
, last
, fmtflags
, loc
);
3605 /* ?_Hexdig@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@ABEH_W000@Z */
3606 /* ?_Hexdig@?$num_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@AEBAH_W000@Z */
3607 /* ?_Hexdig@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@ABEHGGGG@Z */
3608 /* ?_Hexdig@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@AEBAHGGGG@Z */
3609 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_wchar__Hexdig
, 20)
3610 int __thiscall
MSVCP_num_get_wchar__Hexdig(num_get
*this, wchar_t dig
, wchar_t e0
, wchar_t al
, wchar_t au
)
3612 FIXME("(%p %c %c %c %c) stub\n", this, dig
, e0
, al
, au
);
3616 /* ?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 */
3617 /* ?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 */
3618 /* ?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 */
3619 /* ?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 */
3620 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_void
,36)
3621 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_void(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3622 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, void **pval
)
3624 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3628 /* ?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 */
3629 /* ?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 */
3630 /* ?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 */
3631 /* ?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 */
3632 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_void
,36)
3633 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_void(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3634 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, void **pval
)
3636 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3640 /* ?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 */
3641 /* ?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 */
3642 /* ?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 */
3643 /* ?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 */
3644 /* ?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 */
3645 /* ?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 */
3646 /* ?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 */
3647 /* ?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 */
3648 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_double
,36)
3649 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_double(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3650 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, double *pval
)
3652 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3656 /* ?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 */
3657 /* ?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 */
3658 /* ?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 */
3659 /* ?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 */
3660 /* ?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 */
3661 /* ?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 */
3662 /* ?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 */
3663 /* ?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 */
3664 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_double
,36)
3665 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_double(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3666 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, double *pval
)
3668 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3672 /* ?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 */
3673 /* ?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 */
3674 /* ?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 */
3675 /* ?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 */
3676 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_float
,36)
3677 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_float(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3678 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, float *pval
)
3680 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3684 /* ?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 */
3685 /* ?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 */
3686 /* ?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 */
3687 /* ?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 */
3688 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_float
,36)
3689 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_float(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3690 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, float *pval
)
3692 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3696 /* ?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 */
3697 /* ?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 */
3698 /* ?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 */
3699 /* ?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 */
3700 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_uint64
,36)
3701 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_uint64(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3702 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, ULONGLONG
*pval
)
3704 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3708 /* ?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 */
3709 /* ?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 */
3710 /* ?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 */
3711 /* ?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 */
3712 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_uint64
,36)
3713 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_uint64(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3714 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, ULONGLONG
*pval
)
3716 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3720 /* ?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 */
3721 /* ?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 */
3722 /* ?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 */
3723 /* ?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 */
3724 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_int64
,36)
3725 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_int64(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3726 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, LONGLONG
*pval
)
3728 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3732 /* ?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 */
3733 /* ?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 */
3734 /* ?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 */
3735 /* ?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 */
3736 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_int64
,36)
3737 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_int64(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3738 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, LONGLONG
*pval
)
3740 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3744 /* ?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 */
3745 /* ?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 */
3746 /* ?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 */
3747 /* ?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 */
3748 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_ulong
,36)
3749 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_ulong(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3750 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, ULONG
*pval
)
3752 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3756 /* ?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 */
3757 /* ?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 */
3758 /* ?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 */
3759 /* ?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 */
3760 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_ulong
,36)
3761 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_ulong(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3762 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, ULONG
*pval
)
3764 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3768 /* ?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 */
3769 /* ?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 */
3770 /* ?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 */
3771 /* ?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 */
3772 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_long
,36)
3773 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_long(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3774 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, LONG
*pval
)
3776 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3780 /* ?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 */
3781 /* ?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 */
3782 /* ?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 */
3783 /* ?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 */
3784 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_long
,36)
3785 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_long(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3786 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, LONG
*pval
)
3788 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3792 /* ?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 */
3793 /* ?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 */
3794 /* ?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 */
3795 /* ?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 */
3796 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_uint
,36)
3797 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_uint(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3798 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, unsigned int *pval
)
3800 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3804 /* ?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 */
3805 /* ?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 */
3806 /* ?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 */
3807 /* ?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 */
3808 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_uint
,36)
3809 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_uint(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3810 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, unsigned int *pval
)
3812 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3816 /* ?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 */
3817 /* ?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 */
3818 /* ?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 */
3819 /* ?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 */
3820 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_ushort
,36)
3821 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_ushort(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3822 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, unsigned short *pval
)
3824 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3828 /* ?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 */
3829 /* ?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 */
3830 /* ?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@ */
3831 /* ?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 */
3832 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_ushort
,36)
3833 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_ushort(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3834 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, unsigned short *pval
)
3836 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3840 /* ?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 */
3841 /* ?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 */
3842 /* ?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 */
3843 /* ?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 */
3844 DEFINE_THISCALL_WRAPPER(num_get_wchar_do_get_bool
,36)
3845 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_do_get_bool(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3846 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, MSVCP_bool
*pval
)
3848 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3852 /* ?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 */
3853 /* ?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 */
3854 /* ?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 */
3855 /* ?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 */
3856 DEFINE_THISCALL_WRAPPER(num_get_wchar_get_bool
,36)
3857 istreambuf_iterator_wchar
*__thiscall
num_get_wchar_get_bool(const num_get
*this, istreambuf_iterator_wchar
*ret
,
3858 istreambuf_iterator_wchar first
, istreambuf_iterator_wchar last
, struct _ios_base
*base
, int *state
, MSVCP_bool
*pval
)
3860 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3864 /* ?id@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@2V0locale@2@A */
3865 locale_id num_get_char_id
= {0};
3867 /* ??_7?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@6B@ */
3868 extern const vtable_ptr MSVCP_num_get_char_vtable
;
3870 /* ?_Init@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IAEXABV_Locinfo@2@@Z */
3871 /* ?_Init@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@IEAAXAEBV_Locinfo@2@@Z */
3872 DEFINE_THISCALL_WRAPPER(num_get_char_ctor__Init
, 8)
3873 void __thiscall
num_get_char_ctor__Init(num_get
*this, const _Locinfo
*locinfo
)
3875 FIXME("(%p %p) stub\n", this, locinfo
);
3878 /* ??0?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAE@ABV_Locinfo@1@I@Z */
3879 /* ??0?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAA@AEBV_Locinfo@1@_K@Z */
3880 DEFINE_THISCALL_WRAPPER(num_get_char_ctor_locinfo
, 12)
3881 num_get
* __thiscall
num_get_char_ctor_locinfo(num_get
*this,
3882 _Locinfo
*locinfo
, MSVCP_size_t refs
)
3884 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
3888 /* ??0?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAE@I@Z */
3889 /* ??0?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAA@_K@Z */
3890 DEFINE_THISCALL_WRAPPER(num_get_char_ctor_refs
, 8)
3891 num_get
* __thiscall
num_get_char_ctor_refs(num_get
*this, MSVCP_size_t refs
)
3893 FIXME("(%p %lu) stub\n", this, refs
);
3897 /* ??_F?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ */
3898 /* ??_F?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAAXXZ */
3899 DEFINE_THISCALL_WRAPPER(num_get_char_ctor
, 4)
3900 num_get
* __thiscall
num_get_char_ctor(num_get
*this)
3902 FIXME("(%p) stub\n", this);
3906 /* ??1?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ */
3907 /* ??1?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEAA@XZ */
3908 DEFINE_THISCALL_WRAPPER(num_get_char_dtor
, 4)
3909 void __thiscall
num_get_char_dtor(num_get
*this)
3911 FIXME("(%p) stub\n", this);
3914 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_char_vector_dtor
, 8)
3915 num_get
* __thiscall
MSVCP_num_get_char_vector_dtor(num_get
*this, unsigned int flags
)
3917 TRACE("(%p %x)\n", this, flags
);
3919 /* we have an array, with the number of elements stored before the first object */
3920 int i
, *ptr
= (int *)this-1;
3922 for(i
=*ptr
-1; i
>=0; i
--)
3923 num_get_char_dtor(this+i
);
3924 MSVCRT_operator_delete(ptr
);
3926 num_get_char_dtor(this);
3928 MSVCRT_operator_delete(this);
3934 /* ?_Getcat@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
3935 /* ?_Getcat@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
3936 MSVCP_size_t __cdecl
num_get_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
3938 FIXME("(%p %p) stub\n", facet
, loc
);
3942 /* ?_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 */
3943 /* ?_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 */
3944 int __cdecl
num_get_char__Getffld(num_get
*this, char *dest
, istreambuf_iterator_char
*first
,
3945 istreambuf_iterator_char
*last
, const locale
*loc
)
3947 FIXME("(%p %p %p %p) stub\n", dest
, first
, last
, loc
);
3951 /* ?_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 */
3952 /* ?_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 */
3953 int __cdecl
num_get_char__Getffldx(num_get
*this, char *dest
, istreambuf_iterator_char
*first
,
3954 istreambuf_iterator_char
*last
, struct _ios_base
*ios
, int *phexexp
)
3956 FIXME("(%p %p %p %p %p) stub\n", dest
, first
, last
, ios
, phexexp
);
3960 /* ?_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 */
3961 /* ?_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 */
3962 int __cdecl
num_get_char__Getifld(num_get
*this, char *dest
, istreambuf_iterator_char
*first
,
3963 istreambuf_iterator_char
*last
, int fmtflags
, const locale
*loc
)
3965 FIXME("(%p %p %p %04x %p) stub\n", dest
, first
, last
, fmtflags
, loc
);
3969 /* ?_Hexdig@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@ABEHD000@Z */
3970 /* ?_Hexdig@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@AEBAHD000@Z */
3971 DEFINE_THISCALL_WRAPPER(MSVCP_num_get_char__Hexdig
, 20)
3972 int __thiscall
MSVCP_num_get_char__Hexdig(num_get
*this, char dig
, char e0
, char al
, char au
)
3974 FIXME("(%p %c %c %c %c) stub\n", this, dig
, e0
, al
, au
);
3978 /* ?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 */
3979 /* ?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 */
3980 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_void
,36)
3981 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_void(const num_get
*this, istreambuf_iterator_char
*ret
,
3982 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, void **pval
)
3984 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3988 /* ?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 */
3989 /* ?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 */
3990 DEFINE_THISCALL_WRAPPER(num_get_char_get_void
,36)
3991 istreambuf_iterator_char
*__thiscall
num_get_char_get_void(const num_get
*this, istreambuf_iterator_char
*ret
,
3992 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, void **pval
)
3994 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
3998 /* ?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 */
3999 /* ?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 */
4000 /* ?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 */
4001 /* ?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 */
4002 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_double
,36)
4003 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_double(const num_get
*this, istreambuf_iterator_char
*ret
,
4004 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, double *pval
)
4006 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4010 /* ?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 */
4011 /* ?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 */
4012 /* ?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 */
4013 /* ?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 */
4014 DEFINE_THISCALL_WRAPPER(num_get_char_get_double
,36)
4015 istreambuf_iterator_char
*__thiscall
num_get_char_get_double(const num_get
*this, istreambuf_iterator_char
*ret
,
4016 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, double *pval
)
4018 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4022 /* ?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 */
4023 /* ?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 */
4024 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_float
,36)
4025 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_float(const num_get
*this, istreambuf_iterator_char
*ret
,
4026 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, float *pval
)
4028 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4032 /* ?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 */
4033 /* ?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 */
4034 DEFINE_THISCALL_WRAPPER(num_get_char_get_float
,36)
4035 istreambuf_iterator_char
*__thiscall
num_get_char_get_float(const num_get
*this, istreambuf_iterator_char
*ret
,
4036 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, float *pval
)
4038 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4042 /* ?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 */
4043 /* ?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 */
4044 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_uint64
,36)
4045 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_uint64(const num_get
*this, istreambuf_iterator_char
*ret
,
4046 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, ULONGLONG
*pval
)
4048 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4052 /* ?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 */
4053 /* ?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 */
4054 DEFINE_THISCALL_WRAPPER(num_get_char_get_uint64
,36)
4055 istreambuf_iterator_char
*__thiscall
num_get_char_get_uint64(const num_get
*this, istreambuf_iterator_char
*ret
,
4056 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, ULONGLONG
*pval
)
4058 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4062 /* ?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 */
4063 /* ?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 */
4064 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_int64
,36)
4065 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_int64(const num_get
*this, istreambuf_iterator_char
*ret
,
4066 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, LONGLONG
*pval
)
4068 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4072 /* ?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 */
4073 /* ?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 */
4074 DEFINE_THISCALL_WRAPPER(num_get_char_get_int64
,36)
4075 istreambuf_iterator_char
*__thiscall
num_get_char_get_int64(const num_get
*this, istreambuf_iterator_char
*ret
,
4076 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, LONGLONG
*pval
)
4078 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4082 /* ?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 */
4083 /* ?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 */
4084 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_ulong
,36)
4085 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_ulong(const num_get
*this, istreambuf_iterator_char
*ret
,
4086 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, ULONG
*pval
)
4088 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4092 /* ?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 */
4093 /* ?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 */
4094 DEFINE_THISCALL_WRAPPER(num_get_char_get_ulong
,36)
4095 istreambuf_iterator_char
*__thiscall
num_get_char_get_ulong(const num_get
*this, istreambuf_iterator_char
*ret
,
4096 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, ULONG
*pval
)
4098 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4102 /* ?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 */
4103 /* ?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 */
4104 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_long
,36)
4105 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_long(const num_get
*this, istreambuf_iterator_char
*ret
,
4106 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, LONG
*pval
)
4108 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4112 /* ?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 */
4113 /* ?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 */
4114 DEFINE_THISCALL_WRAPPER(num_get_char_get_long
,36)
4115 istreambuf_iterator_char
*__thiscall
num_get_char_get_long(const num_get
*this, istreambuf_iterator_char
*ret
,
4116 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, LONG
*pval
)
4118 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4122 /* ?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 */
4123 /* ?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 */
4124 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_uint
,36)
4125 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_uint(const num_get
*this, istreambuf_iterator_char
*ret
,
4126 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, unsigned int *pval
)
4128 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4132 /* ?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 */
4133 /* ?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 */
4134 DEFINE_THISCALL_WRAPPER(num_get_char_get_uint
,36)
4135 istreambuf_iterator_char
*__thiscall
num_get_char_get_uint(const num_get
*this, istreambuf_iterator_char
*ret
,
4136 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, unsigned int *pval
)
4138 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4142 /* ?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 */
4143 /* ?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 */
4144 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_ushort
,36)
4145 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_ushort(const num_get
*this, istreambuf_iterator_char
*ret
,
4146 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, unsigned short *pval
)
4148 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4152 /* ?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 */
4153 /* ?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 */
4154 DEFINE_THISCALL_WRAPPER(num_get_char_get_ushort
,36)
4155 istreambuf_iterator_char
*__thiscall
num_get_char_get_ushort(const num_get
*this, istreambuf_iterator_char
*ret
,
4156 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, unsigned short *pval
)
4158 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4162 /* ?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 */
4163 /* ?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 */
4164 DEFINE_THISCALL_WRAPPER(num_get_char_do_get_bool
,36)
4165 istreambuf_iterator_char
*__thiscall
num_get_char_do_get_bool(const num_get
*this, istreambuf_iterator_char
*ret
,
4166 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, MSVCP_bool
*pval
)
4168 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4172 /* ?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 */
4173 /* ?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 */
4174 DEFINE_THISCALL_WRAPPER(num_get_char_get_bool
,36)
4175 istreambuf_iterator_char
*__thiscall
num_get_char_get_bool(const num_get
*this, istreambuf_iterator_char
*ret
,
4176 istreambuf_iterator_char first
, istreambuf_iterator_char last
, struct _ios_base
*base
, int *state
, MSVCP_bool
*pval
)
4178 FIXME("(%p %p %p %p %p) stub\n", this, ret
, base
, state
, pval
);
4182 /* ??0_Locimp@locale@std@@AAE@_N@Z */
4183 /* ??0_Locimp@locale@std@@AEAA@_N@Z */
4184 DEFINE_THISCALL_WRAPPER(locale__Locimp_ctor_transparent
, 8)
4185 locale__Locimp
* __thiscall
locale__Locimp_ctor_transparent(locale__Locimp
*this, MSVCP_bool transparent
)
4187 TRACE("(%p %d)\n", this, transparent
);
4189 memset(this, 0, sizeof(locale__Locimp
));
4190 locale_facet_ctor_refs(&this->facet
, 1);
4191 this->transparent
= transparent
;
4192 MSVCP_basic_string_char_ctor_cstr(&this->name
, "*");
4196 /* ??_F_Locimp@locale@std@@QAEXXZ */
4197 /* ??_F_Locimp@locale@std@@QEAAXXZ */
4198 DEFINE_THISCALL_WRAPPER(locale__Locimp_ctor
, 4)
4199 locale__Locimp
* __thiscall
locale__Locimp_ctor(locale__Locimp
*this)
4201 return locale__Locimp_ctor_transparent(this, FALSE
);
4204 /* ??0_Locimp@locale@std@@AAE@ABV012@@Z */
4205 /* ??0_Locimp@locale@std@@AEAA@AEBV012@@Z */
4206 DEFINE_THISCALL_WRAPPER(locale__Locimp_copy_ctor
, 8)
4207 locale__Locimp
* __thiscall
locale__Locimp_copy_ctor(locale__Locimp
*this, const locale__Locimp
*copy
)
4212 TRACE("(%p %p)\n", this, copy
);
4214 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
4215 memcpy(this, copy
, sizeof(locale__Locimp
));
4216 locale_facet_ctor_refs(&this->facet
, 1);
4217 if(copy
->facetvec
) {
4218 this->facetvec
= MSVCRT_operator_new(copy
->facet_cnt
*sizeof(locale_facet
*));
4219 if(!this->facetvec
) {
4220 _Lockit_dtor(&lock
);
4221 ERR("Out of memory\n");
4222 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
4225 for(i
=0; i
<this->facet_cnt
; i
++)
4226 if(this->facetvec
[i
])
4227 locale_facet__Incref(this->facetvec
[i
]);
4229 MSVCP_basic_string_char_copy_ctor(&this->name
, ©
->name
);
4230 _Lockit_dtor(&lock
);
4234 /* ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z */
4235 /* ?_Locimp_ctor@_Locimp@locale@std@@CAXPEAV123@AEBV123@@Z */
4236 locale__Locimp
* __cdecl
locale__Locimp__Locimp_ctor(locale__Locimp
*this, const locale__Locimp
*copy
)
4238 return locale__Locimp_copy_ctor(this, copy
);
4241 /* ??1_Locimp@locale@std@@MAE@XZ */
4242 /* ??1_Locimp@locale@std@@MEAA@XZ */
4243 DEFINE_THISCALL_WRAPPER(locale__Locimp_dtor
, 4)
4244 void __thiscall
locale__Locimp_dtor(locale__Locimp
*this)
4246 TRACE("(%p)\n", this);
4248 if(locale_facet__Decref(&this->facet
)) {
4250 for(i
=0; i
<this->facet_cnt
; i
++)
4251 if(this->facetvec
[i
] && locale_facet__Decref(this->facetvec
[i
]))
4252 call_locale_facet_vector_dtor(this->facetvec
[i
], 0);
4254 MSVCRT_operator_delete(this->facetvec
);
4255 MSVCP_basic_string_char_dtor(&this->name
);
4259 /* ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z */
4260 /* ?_Locimp_dtor@_Locimp@locale@std@@CAXPEAV123@@Z */
4261 void __cdecl
locale__Locimp__Locimp_dtor(locale__Locimp
*this)
4263 locale__Locimp_dtor(this);
4266 DEFINE_THISCALL_WRAPPER(MSVCP_locale__Locimp_vector_dtor
, 8)
4267 locale__Locimp
* __thiscall
MSVCP_locale__Locimp_vector_dtor(locale__Locimp
*this, unsigned int flags
)
4269 TRACE("(%p %x)\n", this, flags
);
4271 /* we have an array, with the number of elements stored before the first object */
4272 int i
, *ptr
= (int *)this-1;
4274 for(i
=*ptr
-1; i
>=0; i
--)
4275 locale__Locimp_dtor(this+i
);
4276 MSVCRT_operator_delete(ptr
);
4278 locale__Locimp_dtor(this);
4280 MSVCRT_operator_delete(this);
4286 /* ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z */
4287 /* ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z */
4288 void __cdecl
locale__Locimp__Locimp_Addfac(locale__Locimp
*locimp
, locale_facet
*facet
, MSVCP_size_t id
)
4292 TRACE("(%p %p %lu)\n", locimp
, facet
, id
);
4294 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
4295 if(id
>= locimp
->facet_cnt
) {
4296 MSVCP_size_t new_size
= id
+1;
4297 locale_facet
**new_facetvec
;
4299 if(new_size
< locale_id__Id_cnt
+1)
4300 new_size
= locale_id__Id_cnt
+1;
4302 new_facetvec
= MSVCRT_operator_new(sizeof(locale_facet
*)*new_size
);
4304 _Lockit_dtor(&lock
);
4305 ERR("Out of memory\n");
4306 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
4310 memset(new_facetvec
, 0, sizeof(locale_facet
*)*new_size
);
4311 memcpy(new_facetvec
, locimp
->facetvec
, sizeof(locale_facet
*)*locimp
->facet_cnt
);
4312 MSVCRT_operator_delete(locimp
->facetvec
);
4313 locimp
->facetvec
= new_facetvec
;
4314 locimp
->facet_cnt
= new_size
;
4317 if(locimp
->facetvec
[id
] && locale_facet__Decref(locimp
->facetvec
[id
]))
4318 call_locale_facet_vector_dtor(locimp
->facetvec
[id
], 0);
4320 locimp
->facetvec
[id
] = facet
;
4322 locale_facet__Incref(facet
);
4323 _Lockit_dtor(&lock
);
4326 /* ?_Addfac@_Locimp@locale@std@@AAEXPAVfacet@23@I@Z */
4327 /* ?_Addfac@_Locimp@locale@std@@AEAAXPEAVfacet@23@_K@Z */
4328 DEFINE_THISCALL_WRAPPER(locale__Locimp__Addfac
, 12)
4329 void __thiscall
locale__Locimp__Addfac(locale__Locimp
*this, locale_facet
*facet
, MSVCP_size_t id
)
4331 locale__Locimp__Locimp_Addfac(this, facet
, id
);
4334 /* ?_Clocptr_func@_Locimp@locale@std@@CAAAPAV123@XZ */
4335 /* ?_Clocptr_func@_Locimp@locale@std@@CAAEAPEAV123@XZ */
4336 locale__Locimp
** __cdecl
locale__Locimp__Clocptr_func(void)
4342 /* ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z */
4343 /* ?_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
4344 locale__Locimp
* __cdecl
locale__Locimp__Makeloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
4346 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
4350 /* ?_Makeushloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
4351 /* ?_Makeushloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
4352 void __cdecl
locale__Locimp__Makeushloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
4354 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
4357 /* ?_Makewloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
4358 /* ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
4359 void __cdecl
locale__Locimp__Makewloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
4361 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
4364 /* ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
4365 /* ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
4366 void __cdecl
locale__Locimp__Makexloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
4368 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
4371 /* ??_7_Locimp@locale@std@@6B@ */
4372 const vtable_ptr MSVCP_locale__Locimp_vtable
[] = {
4373 (vtable_ptr
)THISCALL_NAME(MSVCP_locale__Locimp_vector_dtor
)
4376 /* ??0locale@std@@AAE@PAV_Locimp@01@@Z */
4377 /* ??0locale@std@@AEAA@PEAV_Locimp@01@@Z */
4378 DEFINE_THISCALL_WRAPPER(locale_ctor_locimp
, 8)
4379 locale
* __thiscall
locale_ctor_locimp(locale
*this, locale__Locimp
*locimp
)
4381 TRACE("(%p %p)\n", this, locimp
);
4382 /* Don't change locimp reference counter */
4387 /* ?_Init@locale@std@@CAPAV_Locimp@12@XZ */
4388 /* ?_Init@locale@std@@CAPEAV_Locimp@12@XZ */
4389 locale__Locimp
* __cdecl
locale__Init(void)
4395 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
4397 _Lockit_dtor(&lock
);
4398 return global_locale
;
4401 global_locale
= MSVCRT_operator_new(sizeof(locale__Locimp
));
4402 if(!global_locale
) {
4403 _Lockit_dtor(&lock
);
4404 ERR("Out of memory\n");
4405 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
4409 locale__Locimp_ctor(global_locale
);
4410 global_locale
->catmask
= (1<<(LC_MAX
+1))-1;
4411 MSVCP_basic_string_char_dtor(&global_locale
->name
);
4412 MSVCP_basic_string_char_ctor_cstr(&global_locale
->name
, "C");
4414 locale__Locimp__Clocptr
= global_locale
;
4415 global_locale
->facet
.refs
++;
4416 locale_ctor_locimp(&classic_locale
, locale__Locimp__Clocptr
);
4417 _Lockit_dtor(&lock
);
4419 return global_locale
;
4422 /* ??0locale@std@@QAE@ABV01@0H@Z */
4423 /* ??0locale@std@@QEAA@AEBV01@0H@Z */
4424 DEFINE_THISCALL_WRAPPER(locale_ctor_locale_locale
, 16)
4425 locale
* __thiscall
locale_ctor_locale_locale(locale
*this, const locale
*loc
, const locale
*other
, category cat
)
4427 FIXME("(%p %p %p %d) stub\n", this, loc
, other
, cat
);
4431 /* ??0locale@std@@QAE@ABV01@@Z */
4432 /* ??0locale@std@@QEAA@AEBV01@@Z */
4433 DEFINE_THISCALL_WRAPPER(locale_copy_ctor
, 8)
4434 locale
* __thiscall
locale_copy_ctor(locale
*this, const locale
*copy
)
4436 TRACE("(%p %p)\n", this, copy
);
4437 this->ptr
= copy
->ptr
;
4438 locale_facet__Incref(&this->ptr
->facet
);
4442 /* ??0locale@std@@QAE@ABV01@PBDH@Z */
4443 /* ??0locale@std@@QEAA@AEBV01@PEBDH@Z */
4444 DEFINE_THISCALL_WRAPPER(locale_ctor_locale_cstr
, 16)
4445 locale
* __thiscall
locale_ctor_locale_cstr(locale
*this, const locale
*loc
, const char *locname
, category cat
)
4447 FIXME("(%p %p %s %d) stub\n", this, loc
, locname
, cat
);
4451 /* ??0locale@std@@QAE@PBDH@Z */
4452 /* ??0locale@std@@QEAA@PEBDH@Z */
4453 DEFINE_THISCALL_WRAPPER(locale_ctor_cstr
, 12)
4454 locale
* __thiscall
locale_ctor_cstr(locale
*this, const char *locname
, category cat
)
4456 FIXME("(%p %s %d) stub\n", this, locname
, cat
);
4460 /* ??0locale@std@@QAE@W4_Uninitialized@1@@Z */
4461 /* ??0locale@std@@QEAA@W4_Uninitialized@1@@Z */
4462 DEFINE_THISCALL_WRAPPER(locale_ctor_uninitialized
, 8)
4463 locale
* __thiscall
locale_ctor_uninitialized(locale
*this, int uninitialized
)
4465 TRACE("(%p)\n", this);
4470 /* ??0locale@std@@QAE@XZ */
4471 /* ??0locale@std@@QEAA@XZ */
4472 DEFINE_THISCALL_WRAPPER(locale_ctor
, 4)
4473 locale
* __thiscall
locale_ctor(locale
*this)
4475 TRACE("(%p)\n", this);
4476 this->ptr
= locale__Init();
4477 locale_facet__Incref(&this->ptr
->facet
);
4481 /* ??1locale@std@@QAE@XZ */
4482 /* ??1locale@std@@QEAA@XZ */
4483 DEFINE_THISCALL_WRAPPER(locale_dtor
, 4)
4484 void __thiscall
locale_dtor(locale
*this)
4486 TRACE("(%p)\n", this);
4488 locale__Locimp_dtor(this->ptr
);
4491 DEFINE_THISCALL_WRAPPER(MSVCP_locale_vector_dtor
, 8)
4492 locale
* __thiscall
MSVCP_locale_vector_dtor(locale
*this, unsigned int flags
)
4494 TRACE("(%p %x)\n", this, flags
);
4496 /* we have an array, with the number of elements stored before the first object */
4497 int i
, *ptr
= (int *)this-1;
4499 for(i
=*ptr
-1; i
>=0; i
--)
4500 locale_dtor(this+i
);
4501 MSVCRT_operator_delete(ptr
);
4505 MSVCRT_operator_delete(this);
4511 /* ??4locale@std@@QAEAAV01@ABV01@@Z */
4512 /* ??4locale@std@@QEAAAEAV01@AEBV01@@Z */
4513 DEFINE_THISCALL_WRAPPER(locale_operator_assign
, 8)
4514 locale
* __thiscall
locale_operator_assign(locale
*this, const locale
*loc
)
4516 FIXME("(%p %p) stub\n", this, loc
);
4520 /* ??8locale@std@@QBE_NABV01@@Z */
4521 /* ??8locale@std@@QEBA_NAEBV01@@Z */
4522 DEFINE_THISCALL_WRAPPER(locale_operator_equal
, 8)
4523 MSVCP_bool __thiscall
locale_operator_equal(const locale
*this, const locale
*loc
)
4525 FIXME("(%p %p) stub\n", this, loc
);
4529 /* ??9locale@std@@QBE_NABV01@@Z */
4530 /* ??9locale@std@@QEBA_NAEBV01@@Z */
4531 DEFINE_THISCALL_WRAPPER(locale_operator_not_equal
, 8)
4532 MSVCP_bool __thiscall
locale_operator_not_equal(const locale
*this, locale
const *loc
)
4534 FIXME("(%p %p) stub\n", this, loc
);
4538 /* ?_Addfac@locale@std@@QAEAAV12@PAVfacet@12@II@Z */
4539 /* ?_Addfac@locale@std@@QEAAAEAV12@PEAVfacet@12@_K1@Z */
4540 DEFINE_THISCALL_WRAPPER(locale__Addfac
, 16)
4541 locale
* __thiscall
locale__Addfac(locale
*this, locale_facet
*facet
, MSVCP_size_t id
, MSVCP_size_t catmask
)
4543 TRACE("(%p %p %lu %lu)\n", this, facet
, id
, catmask
);
4545 if(this->ptr
->facet
.refs
> 1) {
4546 locale__Locimp
*new_ptr
= MSVCRT_operator_new(sizeof(locale__Locimp
));
4548 ERR("Out of memory\n");
4549 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
4552 locale__Locimp_copy_ctor(new_ptr
, this->ptr
);
4553 locale_facet__Decref(&this->ptr
->facet
);
4554 this->ptr
= new_ptr
;
4557 locale__Locimp__Addfac(this->ptr
, facet
, id
);
4560 MSVCP_basic_string_char_dtor(&this->ptr
->name
);
4561 MSVCP_basic_string_char_ctor_cstr(&this->ptr
->name
, "*");
4566 /* ?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z */
4567 /* ?_Getfacet@locale@std@@QEBAPEBVfacet@12@_K@Z */
4568 DEFINE_THISCALL_WRAPPER(locale__Getfacet
, 8)
4569 const locale_facet
* __thiscall
locale__Getfacet(const locale
*this, MSVCP_size_t id
)
4573 TRACE("(%p %lu)\n", this, id
);
4575 fac
= id
< this->ptr
->facet_cnt
? this->ptr
->facetvec
[id
] : NULL
;
4576 if(fac
|| !this->ptr
->transparent
)
4579 return id
< global_locale
->facet_cnt
? global_locale
->facetvec
[id
] : NULL
;
4582 /* ?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ */
4583 /* ?_Getgloballocale@locale@std@@CAPEAV_Locimp@12@XZ */
4584 locale__Locimp
* __cdecl
locale__Getgloballocale(void)
4587 return global_locale
;
4590 /* ?_Setgloballocale@locale@std@@CAXPAX@Z */
4591 /* ?_Setgloballocale@locale@std@@CAXPEAX@Z */
4592 void __cdecl
locale__Setgloballocale(void *locimp
)
4594 TRACE("(%p)\n", locimp
);
4595 global_locale
= locimp
;
4598 /* ?classic@locale@std@@SAABV12@XZ */
4599 /* ?classic@locale@std@@SAAEBV12@XZ */
4600 const locale
* __cdecl
locale_classic(void)
4604 return &classic_locale
;
4607 /* ?name@locale@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
4608 /* ?name@locale@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
4609 DEFINE_THISCALL_WRAPPER(locale_name
, 8)
4610 basic_string_char
* __thiscall
locale_name(const locale
*this, basic_string_char
*ret
)
4612 TRACE( "(%p)\n", this);
4613 MSVCP_basic_string_char_copy_ctor(ret
, &this->ptr
->name
);
4617 DEFINE_RTTI_DATA(locale_facet
, 0, 0, NULL
, NULL
, NULL
, ".?AVfacet@locale@std@@");
4618 DEFINE_RTTI_DATA(collate_char
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@D@std@@");
4619 DEFINE_RTTI_DATA(collate_wchar
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@_W@std@@");
4620 DEFINE_RTTI_DATA(collate_short
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@G@std@@");
4621 DEFINE_RTTI_DATA(ctype_base
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AUctype_base@std@@");
4622 DEFINE_RTTI_DATA(ctype_char
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@D@std@@");
4623 DEFINE_RTTI_DATA(ctype_wchar
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@_W@std@@");
4624 DEFINE_RTTI_DATA(ctype_short
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@G@std@@");
4625 DEFINE_RTTI_DATA(codecvt_base
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AVcodecvt_base@std@@");
4626 DEFINE_RTTI_DATA(codecvt_char
, 0, 2, &codecvt_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$codecvt@DDH@std@@");
4627 DEFINE_RTTI_DATA(numpunct_char
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$numpunct@D@std@@");
4628 DEFINE_RTTI_DATA(numpunct_wchar
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$numpunct@_W@std@@");
4629 DEFINE_RTTI_DATA(numpunct_short
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$numpunct@G@std@@");
4630 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@@");
4631 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@@");
4632 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@@");
4635 void __asm_dummy_vtables(void) {
4637 __ASM_VTABLE(locale_facet
, "");
4638 __ASM_VTABLE(collate_char
,
4639 VTABLE_ADD_FUNC(collate_char_do_compare
)
4640 VTABLE_ADD_FUNC(collate_char_do_transform
)
4641 VTABLE_ADD_FUNC(collate_char_do_hash
));
4642 __ASM_VTABLE(collate_wchar
,
4643 VTABLE_ADD_FUNC(collate_wchar_do_compare
)
4644 VTABLE_ADD_FUNC(collate_wchar_do_transform
)
4645 VTABLE_ADD_FUNC(collate_wchar_do_hash
));
4646 __ASM_VTABLE(collate_short
,
4647 VTABLE_ADD_FUNC(collate_wchar_do_compare
)
4648 VTABLE_ADD_FUNC(collate_wchar_do_transform
)
4649 VTABLE_ADD_FUNC(collate_wchar_do_hash
));
4650 __ASM_VTABLE(ctype_base
, "");
4651 __ASM_VTABLE(ctype_char
,
4652 VTABLE_ADD_FUNC(ctype_char_do_tolower
)
4653 VTABLE_ADD_FUNC(ctype_char_do_tolower_ch
)
4654 VTABLE_ADD_FUNC(ctype_char_do_toupper
)
4655 VTABLE_ADD_FUNC(ctype_char_do_toupper_ch
)
4656 VTABLE_ADD_FUNC(ctype_char_do_widen
)
4657 VTABLE_ADD_FUNC(ctype_char_do_widen_ch
)
4658 VTABLE_ADD_FUNC(ctype_char__Do_widen_s
)
4659 VTABLE_ADD_FUNC(ctype_char_do_narrow
)
4660 VTABLE_ADD_FUNC(ctype_char_do_narrow_ch
)
4661 VTABLE_ADD_FUNC(ctype_char__Do_narrow_s
));
4662 __ASM_VTABLE(ctype_wchar
,
4663 VTABLE_ADD_FUNC(ctype_wchar_do_is
)
4664 VTABLE_ADD_FUNC(ctype_wchar_do_is_ch
)
4665 VTABLE_ADD_FUNC(ctype_wchar_do_scan_is
)
4666 VTABLE_ADD_FUNC(ctype_wchar_do_scan_not
)
4667 VTABLE_ADD_FUNC(ctype_wchar_do_tolower
)
4668 VTABLE_ADD_FUNC(ctype_wchar_do_tolower_ch
)
4669 VTABLE_ADD_FUNC(ctype_wchar_do_toupper
)
4670 VTABLE_ADD_FUNC(ctype_wchar_do_toupper_ch
)
4671 VTABLE_ADD_FUNC(ctype_wchar_do_widen
)
4672 VTABLE_ADD_FUNC(ctype_wchar_do_widen_ch
)
4673 VTABLE_ADD_FUNC(ctype_wchar__Do_widen_s
)
4674 VTABLE_ADD_FUNC(ctype_wchar_do_narrow
)
4675 VTABLE_ADD_FUNC(ctype_wchar_do_narrow_ch
)
4676 VTABLE_ADD_FUNC(ctype_wchar__Do_narrow_s
));
4677 __ASM_VTABLE(ctype_short
,
4678 VTABLE_ADD_FUNC(ctype_wchar_do_is
)
4679 VTABLE_ADD_FUNC(ctype_wchar_do_is_ch
)
4680 VTABLE_ADD_FUNC(ctype_wchar_do_scan_is
)
4681 VTABLE_ADD_FUNC(ctype_wchar_do_scan_not
)
4682 VTABLE_ADD_FUNC(ctype_wchar_do_tolower
)
4683 VTABLE_ADD_FUNC(ctype_wchar_do_tolower_ch
)
4684 VTABLE_ADD_FUNC(ctype_wchar_do_toupper
)
4685 VTABLE_ADD_FUNC(ctype_wchar_do_toupper_ch
)
4686 VTABLE_ADD_FUNC(ctype_wchar_do_widen
)
4687 VTABLE_ADD_FUNC(ctype_wchar_do_widen_ch
)
4688 VTABLE_ADD_FUNC(ctype_wchar__Do_widen_s
)
4689 VTABLE_ADD_FUNC(ctype_wchar_do_narrow
)
4690 VTABLE_ADD_FUNC(ctype_wchar_do_narrow_ch
)
4691 VTABLE_ADD_FUNC(ctype_wchar__Do_narrow_s
));
4692 __ASM_VTABLE(codecvt_base
,
4693 VTABLE_ADD_FUNC(codecvt_base_do_always_noconv
)
4694 VTABLE_ADD_FUNC(codecvt_base_do_max_length
)
4695 VTABLE_ADD_FUNC(codecvt_base_do_encoding
));
4696 __ASM_VTABLE(codecvt_char
,
4697 VTABLE_ADD_FUNC(codecvt_base_do_always_noconv
)
4698 VTABLE_ADD_FUNC(codecvt_base_do_max_length
)
4699 VTABLE_ADD_FUNC(codecvt_base_do_encoding
)
4700 VTABLE_ADD_FUNC(codecvt_char_do_in
)
4701 VTABLE_ADD_FUNC(codecvt_char_do_out
)
4702 VTABLE_ADD_FUNC(codecvt_char_do_unshift
)
4703 VTABLE_ADD_FUNC(codecvt_char_do_length
));
4704 __ASM_VTABLE(numpunct_char
,
4705 VTABLE_ADD_FUNC(numpunct_char_do_decimal_point
)
4706 VTABLE_ADD_FUNC(numpunct_char_do_thousands_sep
)
4707 VTABLE_ADD_FUNC(numpunct_char_do_grouping
)
4708 VTABLE_ADD_FUNC(numpunct_char_do_falsename
)
4709 VTABLE_ADD_FUNC(numpunct_char_do_truename
));
4710 __ASM_VTABLE(numpunct_wchar
,
4711 VTABLE_ADD_FUNC(numpunct_wchar_do_decimal_point
)
4712 VTABLE_ADD_FUNC(numpunct_wchar_do_thousands_sep
)
4713 VTABLE_ADD_FUNC(numpunct_wchar_do_grouping
)
4714 VTABLE_ADD_FUNC(numpunct_wchar_do_falsename
)
4715 VTABLE_ADD_FUNC(numpunct_wchar_do_truename
));
4716 __ASM_VTABLE(numpunct_short
,
4717 VTABLE_ADD_FUNC(numpunct_wchar_do_decimal_point
)
4718 VTABLE_ADD_FUNC(numpunct_wchar_do_thousands_sep
)
4719 VTABLE_ADD_FUNC(numpunct_wchar_do_grouping
)
4720 VTABLE_ADD_FUNC(numpunct_wchar_do_falsename
)
4721 VTABLE_ADD_FUNC(numpunct_wchar_do_truename
));
4722 __ASM_VTABLE(num_get_char
,
4723 VTABLE_ADD_FUNC(num_get_char_do_get_void
)
4724 VTABLE_ADD_FUNC(num_get_char_do_get_double
)
4725 VTABLE_ADD_FUNC(num_get_char_do_get_double
)
4726 VTABLE_ADD_FUNC(num_get_char_do_get_float
)
4727 VTABLE_ADD_FUNC(num_get_char_do_get_uint64
)
4728 VTABLE_ADD_FUNC(num_get_char_do_get_int64
)
4729 VTABLE_ADD_FUNC(num_get_char_do_get_ulong
)
4730 VTABLE_ADD_FUNC(num_get_char_do_get_long
)
4731 VTABLE_ADD_FUNC(num_get_char_do_get_uint
)
4732 VTABLE_ADD_FUNC(num_get_char_do_get_ushort
)
4733 VTABLE_ADD_FUNC(num_get_char_do_get_bool
));
4734 __ASM_VTABLE(num_get_short
,
4735 VTABLE_ADD_FUNC(num_get_wchar_do_get_void
)
4736 VTABLE_ADD_FUNC(num_get_wchar_do_get_double
)
4737 VTABLE_ADD_FUNC(num_get_wchar_do_get_double
)
4738 VTABLE_ADD_FUNC(num_get_wchar_do_get_float
)
4739 VTABLE_ADD_FUNC(num_get_wchar_do_get_uint64
)
4740 VTABLE_ADD_FUNC(num_get_wchar_do_get_int64
)
4741 VTABLE_ADD_FUNC(num_get_wchar_do_get_ulong
)
4742 VTABLE_ADD_FUNC(num_get_wchar_do_get_long
)
4743 VTABLE_ADD_FUNC(num_get_wchar_do_get_uint
)
4744 VTABLE_ADD_FUNC(num_get_wchar_do_get_ushort
)
4745 VTABLE_ADD_FUNC(num_get_wchar_do_get_bool
));
4746 __ASM_VTABLE(num_get_wchar
,
4747 VTABLE_ADD_FUNC(num_get_wchar_do_get_void
)
4748 VTABLE_ADD_FUNC(num_get_wchar_do_get_double
)
4749 VTABLE_ADD_FUNC(num_get_wchar_do_get_double
)
4750 VTABLE_ADD_FUNC(num_get_wchar_do_get_float
)
4751 VTABLE_ADD_FUNC(num_get_wchar_do_get_uint64
)
4752 VTABLE_ADD_FUNC(num_get_wchar_do_get_int64
)
4753 VTABLE_ADD_FUNC(num_get_wchar_do_get_ulong
)
4754 VTABLE_ADD_FUNC(num_get_wchar_do_get_long
)
4755 VTABLE_ADD_FUNC(num_get_wchar_do_get_uint
)
4756 VTABLE_ADD_FUNC(num_get_wchar_do_get_ushort
)
4757 VTABLE_ADD_FUNC(num_get_wchar_do_get_bool
));
4762 void free_locale(void)
4764 facets_elem
*iter
, *safe
;
4767 locale__Locimp_dtor(global_locale
);
4768 locale_dtor(&classic_locale
);
4771 LIST_FOR_EACH_ENTRY_SAFE(iter
, safe
, &lazy_facets
, facets_elem
, entry
) {
4772 list_remove(&iter
->entry
);
4773 if(locale_facet__Decref(iter
->fac
))
4774 call_locale_facet_vector_dtor(iter
->fac
, 1);
4775 MSVCRT_operator_delete(iter
);