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/debug.h"
29 WINE_DEFAULT_DEBUG_CHANNEL(msvcp90
);
31 char* __cdecl
_Getdays(void);
32 char* __cdecl
_Getmonths(void);
33 void* __cdecl
_Gettnames(void);
42 const vtable_ptr
*vtable
;
46 typedef struct _locale__Locimp
{
48 locale_facet
**facetvec
;
49 MSVCP_size_t facet_cnt
;
51 MSVCP_bool transparent
;
52 basic_string_char name
;
61 basic_string_char days
;
62 basic_string_char months
;
63 basic_string_char oldlocname
;
64 basic_string_char newlocname
;
104 /* ?_Id_cnt@id@locale@std@@0HA */
105 int locale_id__Id_cnt
= 0;
107 /* ?_Clocptr@_Locimp@locale@std@@0PAV123@A */
108 /* ?_Clocptr@_Locimp@locale@std@@0PEAV123@EA */
109 locale__Locimp
*locale__Locimp__Clocptr
= NULL
;
111 /* ??1facet@locale@std@@UAE@XZ */
112 /* ??1facet@locale@std@@UEAA@XZ */
113 DEFINE_THISCALL_WRAPPER(locale_facet_dtor
, 4)
114 void __thiscall
locale_facet_dtor(locale_facet
*this)
116 TRACE("(%p)\n", this);
119 DEFINE_THISCALL_WRAPPER(MSVCP_locale_facet_vector_dtor
, 8)
120 locale_facet
* __thiscall
MSVCP_locale_facet_vector_dtor(locale_facet
*this, unsigned int flags
)
122 TRACE("(%p %x)\n", this, flags
);
124 /* we have an array, with the number of elements stored before the first object */
125 int i
, *ptr
= (int *)this-1;
127 for(i
=*ptr
-1; i
>=0; i
--)
128 locale_facet_dtor(this+i
);
129 MSVCRT_operator_delete(ptr
);
131 locale_facet_dtor(this);
133 MSVCRT_operator_delete(this);
139 const vtable_ptr MSVCP_locale_facet_vtable
[] = {
140 (vtable_ptr
)THISCALL_NAME(MSVCP_locale_facet_vector_dtor
)
143 static inline locale_facet
* call_locale_facet_vector_dtor(locale_facet
*this, unsigned int flags
)
148 __asm__
__volatile__ ("pushl %3\n\tcall *%2"
149 : "=a" (ret
), "=c" (dummy
)
150 : "r" (this->vtable
[0]), "r" (flags
), "1" (this)
155 static inline locale_facet
* call_locale_facet_vector_dtor(locale_facet
*this, unsigned int flags
)
157 locale_facet
* (__thiscall
*dtor
)(locale_facet
*, unsigned int) = (void *)this->vtable
[0];
158 return dtor(this, flags
);
162 /* ??0id@locale@std@@QAE@I@Z */
163 /* ??0id@locale@std@@QEAA@_K@Z */
164 DEFINE_THISCALL_WRAPPER(locale_id_ctor_id
, 8)
165 locale_id
* __thiscall
locale_id_ctor_id(locale_id
*this, MSVCP_size_t id
)
167 TRACE("(%p %lu)\n", this, id
);
173 /* ??_Fid@locale@std@@QAEXXZ */
174 /* ??_Fid@locale@std@@QEAAXXZ */
175 DEFINE_THISCALL_WRAPPER(locale_id_ctor
, 4)
176 locale_id
* __thiscall
locale_id_ctor(locale_id
*this)
178 TRACE("(%p)\n", this);
184 /* ??Bid@locale@std@@QAEIXZ */
185 /* ??Bid@locale@std@@QEAA_KXZ */
186 DEFINE_THISCALL_WRAPPER(locale_id_operator_size_t
, 4)
187 MSVCP_size_t __thiscall
locale_id_operator_size_t(locale_id
*this)
191 TRACE("(%p)\n", this);
194 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
195 this->id
= ++locale_id__Id_cnt
;
202 /* ?_Id_cnt_func@id@locale@std@@CAAAHXZ */
203 /* ?_Id_cnt_func@id@locale@std@@CAAEAHXZ */
204 int* __cdecl
locale_id__Id_cnt_func(void)
207 return &locale_id__Id_cnt
;
210 /* ??_Ffacet@locale@std@@QAEXXZ */
211 /* ??_Ffacet@locale@std@@QEAAXXZ */
212 DEFINE_THISCALL_WRAPPER(locale_facet_ctor
, 4)
213 locale_facet
* __thiscall
locale_facet_ctor(locale_facet
*this)
215 TRACE("(%p)\n", this);
216 this->vtable
= MSVCP_locale_facet_vtable
;
221 /* ??0facet@locale@std@@IAE@I@Z */
222 /* ??0facet@locale@std@@IEAA@_K@Z */
223 DEFINE_THISCALL_WRAPPER(locale_facet_ctor_refs
, 8)
224 locale_facet
* __thiscall
locale_facet_ctor_refs(locale_facet
*this, MSVCP_size_t refs
)
226 TRACE("(%p %lu)\n", this, refs
);
227 this->vtable
= MSVCP_locale_facet_vtable
;
232 /* ?_Incref@facet@locale@std@@QAEXXZ */
233 /* ?_Incref@facet@locale@std@@QEAAXXZ */
234 DEFINE_THISCALL_WRAPPER(locale_facet__Incref
, 4)
235 void __thiscall
locale_facet__Incref(locale_facet
*this)
239 TRACE("(%p)\n", this);
241 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
246 /* ?_Decref@facet@locale@std@@QAEPAV123@XZ */
247 /* ?_Decref@facet@locale@std@@QEAAPEAV123@XZ */
248 DEFINE_THISCALL_WRAPPER(locale_facet__Decref
, 4)
249 locale_facet
* __thiscall
locale_facet__Decref(locale_facet
*this)
254 TRACE("(%p)\n", this);
256 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
260 ret
= this->refs
? NULL
: this;
266 /* ?_Getcat@facet@locale@std@@SAIPAPBV123@PBV23@@Z */
267 /* ?_Getcat@facet@locale@std@@SA_KPEAPEBV123@PEBV23@@Z */
268 MSVCP_size_t __cdecl
locale_facet__Getcat(const locale_facet
**facet
, const locale
*loc
)
270 TRACE("(%p %p)\n", facet
, loc
);
274 /* ??0_Timevec@std@@QAE@ABV01@@Z */
275 /* ??0_Timevec@std@@QEAA@AEBV01@@Z */
276 /* This copy constructor modifies copied object */
277 DEFINE_THISCALL_WRAPPER(_Timevec_copy_ctor
, 8)
278 _Timevec
* __thiscall
_Timevec_copy_ctor(_Timevec
*this, _Timevec
*copy
)
280 TRACE("(%p %p)\n", this, copy
);
281 this->timeptr
= copy
->timeptr
;
282 copy
->timeptr
= NULL
;
286 /* ??0_Timevec@std@@QAE@PAX@Z */
287 /* ??0_Timevec@std@@QEAA@PEAX@Z */
288 DEFINE_THISCALL_WRAPPER(_Timevec_ctor_timeptr
, 8)
289 _Timevec
* __thiscall
_Timevec_ctor_timeptr(_Timevec
*this, void *timeptr
)
291 TRACE("(%p %p)\n", this, timeptr
);
292 this->timeptr
= timeptr
;
296 /* ??_F_Timevec@std@@QAEXXZ */
297 /* ??_F_Timevec@std@@QEAAXXZ */
298 DEFINE_THISCALL_WRAPPER(_Timevec_ctor
, 4)
299 _Timevec
* __thiscall
_Timevec_ctor(_Timevec
*this)
301 TRACE("(%p)\n", this);
302 this->timeptr
= NULL
;
306 /* ??1_Timevec@std@@QAE@XZ */
307 /* ??1_Timevec@std@@QEAA@XZ */
308 DEFINE_THISCALL_WRAPPER(_Timevec_dtor
, 4)
309 void __thiscall
_Timevec_dtor(_Timevec
*this)
311 TRACE("(%p)\n", this);
315 /* ??4_Timevec@std@@QAEAAV01@ABV01@@Z */
316 /* ??4_Timevec@std@@QEAAAEAV01@AEBV01@@Z */
317 DEFINE_THISCALL_WRAPPER(_Timevec_op_assign
, 8)
318 _Timevec
* __thiscall
_Timevec_op_assign(_Timevec
*this, _Timevec
*right
)
320 TRACE("(%p %p)\n", this, right
);
321 this->timeptr
= right
->timeptr
;
322 right
->timeptr
= NULL
;
326 /* ?_Getptr@_Timevec@std@@QBEPAXXZ */
327 /* ?_Getptr@_Timevec@std@@QEBAPEAXXZ */
328 DEFINE_THISCALL_WRAPPER(_Timevec__Getptr
, 4)
329 void* __thiscall
_Timevec__Getptr(_Timevec
*this)
331 TRACE("(%p)\n", this);
332 return this->timeptr
;
335 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@HPBD@Z */
336 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@HPEBD@Z */
337 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_cat_cstr(_Locinfo
*locinfo
, int category
, const char *locstr
)
339 const char *locale
= NULL
;
341 /* This function is probably modifying more global objects */
342 FIXME("(%p %d %s) semi-stub\n", locinfo
, category
, locstr
);
345 throw_exception(EXCEPTION_RUNTIME_ERROR
, "bad locale name");
347 _Lockit_ctor_locktype(&locinfo
->lock
, _LOCK_LOCALE
);
348 MSVCP_basic_string_char_ctor_cstr(&locinfo
->days
, "");
349 MSVCP_basic_string_char_ctor_cstr(&locinfo
->months
, "");
350 MSVCP_basic_string_char_ctor_cstr(&locinfo
->oldlocname
, setlocale(LC_ALL
, NULL
));
353 locale
= setlocale(LC_ALL
, locstr
);
355 locale
= setlocale(LC_ALL
, NULL
);
358 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, locale
);
360 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, "*");
361 _Lockit_dtor(&locinfo
->lock
);
366 /* ??0_Locinfo@std@@QAE@HPBD@Z */
367 /* ??0_Locinfo@std@@QEAA@HPEBD@Z */
368 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_cat_cstr
, 12)
369 _Locinfo
* __thiscall
_Locinfo_ctor_cat_cstr(_Locinfo
*this, int category
, const char *locstr
)
371 return _Locinfo__Locinfo_ctor_cat_cstr(this, category
, locstr
);
374 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
375 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
376 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_bstr(_Locinfo
*locinfo
, const basic_string_char
*locstr
)
378 return _Locinfo__Locinfo_ctor_cat_cstr(locinfo
, 1/*FIXME*/, MSVCP_basic_string_char_c_str(locstr
));
381 /* ??0_Locinfo@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
382 /* ??0_Locinfo@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z */
383 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_bstr
, 8)
384 _Locinfo
* __thiscall
_Locinfo_ctor_bstr(_Locinfo
*this, const basic_string_char
*locstr
)
386 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, MSVCP_basic_string_char_c_str(locstr
));
389 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@PBD@Z */
390 /* ?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@PEBD@Z */
391 _Locinfo
* __cdecl
_Locinfo__Locinfo_ctor_cstr(_Locinfo
*locinfo
, const char *locstr
)
393 return _Locinfo__Locinfo_ctor_cat_cstr(locinfo
, 1/*FIXME*/, locstr
);
396 /* ??0_Locinfo@std@@QAE@PBD@Z */
397 /* ??0_Locinfo@std@@QEAA@PEBD@Z */
398 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor_cstr
, 8)
399 _Locinfo
* __thiscall
_Locinfo_ctor_cstr(_Locinfo
*this, const char *locstr
)
401 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, locstr
);
404 /* ?_Locinfo_dtor@_Locinfo@std@@SAXPAV12@@Z */
405 /* ?_Locinfo_dtor@_Locinfo@std@@SAXPEAV12@@Z */
406 void __cdecl
_Locinfo__Locinfo_dtor(_Locinfo
*locinfo
)
408 TRACE("(%p)\n", locinfo
);
410 setlocale(LC_ALL
, MSVCP_basic_string_char_c_str(&locinfo
->oldlocname
));
411 MSVCP_basic_string_char_dtor(&locinfo
->days
);
412 MSVCP_basic_string_char_dtor(&locinfo
->months
);
413 MSVCP_basic_string_char_dtor(&locinfo
->oldlocname
);
414 MSVCP_basic_string_char_dtor(&locinfo
->newlocname
);
417 /* ??_F_Locinfo@std@@QAEXXZ */
418 /* ??_F_Locinfo@std@@QEAAXXZ */
419 DEFINE_THISCALL_WRAPPER(_Locinfo_ctor
, 4)
420 _Locinfo
* __thiscall
_Locinfo_ctor(_Locinfo
*this)
422 return _Locinfo__Locinfo_ctor_cat_cstr(this, 1/*FIXME*/, "C");
425 /* ??1_Locinfo@std@@QAE@XZ */
426 /* ??1_Locinfo@std@@QEAA@XZ */
427 DEFINE_THISCALL_WRAPPER(_Locinfo_dtor
, 4)
428 void __thiscall
_Locinfo_dtor(_Locinfo
*this)
430 _Locinfo__Locinfo_dtor(this);
433 /* ?_Locinfo_Addcats@_Locinfo@std@@SAAAV12@PAV12@HPBD@Z */
434 /* ?_Locinfo_Addcats@_Locinfo@std@@SAAEAV12@PEAV12@HPEBD@Z */
435 _Locinfo
* __cdecl
_Locinfo__Locinfo_Addcats(_Locinfo
*locinfo
, int category
, const char *locstr
)
437 const char *locale
= NULL
;
439 /* This function is probably modifying more global objects */
440 FIXME("(%p %d %s) semi-stub\n", locinfo
, category
, locstr
);
442 throw_exception(EXCEPTION_RUNTIME_ERROR
, "bad locale name");
444 _Lockit_ctor_locktype(&locinfo
->lock
, _LOCK_LOCALE
);
445 MSVCP_basic_string_char_dtor(&locinfo
->newlocname
);
448 locale
= setlocale(LC_ALL
, locstr
);
450 locale
= setlocale(LC_ALL
, NULL
);
453 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, locale
);
455 MSVCP_basic_string_char_ctor_cstr(&locinfo
->newlocname
, "*");
456 _Lockit_dtor(&locinfo
->lock
);
461 /* ?_Addcats@_Locinfo@std@@QAEAAV12@HPBD@Z */
462 /* ?_Addcats@_Locinfo@std@@QEAAAEAV12@HPEBD@Z */
463 DEFINE_THISCALL_WRAPPER(_Locinfo__Addcats
, 12)
464 _Locinfo
* __thiscall
_Locinfo__Addcats(_Locinfo
*this, int category
, const char *locstr
)
466 return _Locinfo__Locinfo_Addcats(this, category
, locstr
);
470 _Collvec __cdecl
_Getcoll(void)
473 _locale_t locale
= _get_current_locale();
477 ret
.page
= locale
->locinfo
->lc_collate_cp
;
478 ret
.handle
= locale
->locinfo
->lc_handle
[LC_COLLATE
];
479 _free_locale(locale
);
483 /* ?_Getcoll@_Locinfo@std@@QBE?AU_Collvec@@XZ */
484 /* ?_Getcoll@_Locinfo@std@@QEBA?AU_Collvec@@XZ */
485 DEFINE_THISCALL_WRAPPER(_Locinfo__Getcoll
, 4)
486 _Collvec __thiscall
_Locinfo__Getcoll(const _Locinfo
*this)
492 _Ctypevec __cdecl
_Getctype(void)
495 _locale_t locale
= _get_current_locale();
499 ret
.page
= locale
->locinfo
->lc_codepage
;
500 ret
.handle
= locale
->locinfo
->lc_handle
[LC_COLLATE
];
502 ret
.table
= malloc(sizeof(short[256]));
504 _free_locale(locale
);
505 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
507 memcpy(ret
.table
, locale
->locinfo
->pctype
, sizeof(short[256]));
508 _free_locale(locale
);
512 /* ?_Getctype@_Locinfo@std@@QBE?AU_Ctypevec@@XZ */
513 /* ?_Getctype@_Locinfo@std@@QEBA?AU_Ctypevec@@XZ */
514 DEFINE_THISCALL_WRAPPER_RETPTR(_Locinfo__Getctype
, 4)
515 _Ctypevec __thiscall
_Locinfo__Getctype(const _Locinfo
*this)
521 _Cvtvec __cdecl
_Getcvt(void)
524 _locale_t locale
= _get_current_locale();
528 ret
.page
= locale
->locinfo
->lc_codepage
;
529 ret
.handle
= locale
->locinfo
->lc_handle
[LC_CTYPE
];
530 _free_locale(locale
);
534 /* ?_Getcvt@_Locinfo@std@@QBE?AU_Cvtvec@@XZ */
535 /* ?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ */
536 DEFINE_THISCALL_WRAPPER(_Locinfo__Getcvt
, 4)
537 _Cvtvec __thiscall
_Locinfo__Getcvt(const _Locinfo
*this)
542 /* ?_Getdateorder@_Locinfo@std@@QBEHXZ */
543 /* ?_Getdateorder@_Locinfo@std@@QEBAHXZ */
544 DEFINE_THISCALL_WRAPPER(_Locinfo__Getdateorder
, 4)
545 int __thiscall
_Locinfo__Getdateorder(const _Locinfo
*this)
547 FIXME("(%p) stub\n", this);
551 /* ?_Getdays@_Locinfo@std@@QBEPBDXZ */
552 /* ?_Getdays@_Locinfo@std@@QEBAPEBDXZ */
553 DEFINE_THISCALL_WRAPPER(_Locinfo__Getdays
, 4)
554 const char* __thiscall
_Locinfo__Getdays(_Locinfo
*this)
556 char *days
= _Getdays();
558 TRACE("(%p)\n", this);
561 MSVCP_basic_string_char_dtor(&this->days
);
562 MSVCP_basic_string_char_ctor_cstr(&this->days
, days
);
566 return this->days
.size
? MSVCP_basic_string_char_c_str(&this->days
) :
567 ":Sun:Sunday:Mon:Monday:Tue:Tuesday:Wed:Wednesday:Thu:Thursday:Fri:Friday:Sat:Saturday";
570 /* ?_Getmonths@_Locinfo@std@@QBEPBDXZ */
571 /* ?_Getmonths@_Locinfo@std@@QEBAPEBDXZ */
572 DEFINE_THISCALL_WRAPPER(_Locinfo__Getmonths
, 4)
573 const char* __thiscall
_Locinfo__Getmonths(_Locinfo
*this)
575 char *months
= _Getmonths();
577 TRACE("(%p)\n", this);
580 MSVCP_basic_string_char_dtor(&this->months
);
581 MSVCP_basic_string_char_ctor_cstr(&this->months
, months
);
585 return this->months
.size
? MSVCP_basic_string_char_c_str(&this->months
) :
586 ":Jan:January:Feb:February:Mar:March:Apr:April:May:May:Jun:June:Jul:July"
587 ":Aug:August:Sep:September:Oct:October:Nov:November:Dec:December";
590 /* ?_Getfalse@_Locinfo@std@@QBEPBDXZ */
591 /* ?_Getfalse@_Locinfo@std@@QEBAPEBDXZ */
592 DEFINE_THISCALL_WRAPPER(_Locinfo__Getfalse
, 4)
593 const char* __thiscall
_Locinfo__Getfalse(const _Locinfo
*this)
595 TRACE("(%p)\n", this);
599 /* ?_Gettrue@_Locinfo@std@@QBEPBDXZ */
600 /* ?_Gettrue@_Locinfo@std@@QEBAPEBDXZ */
601 DEFINE_THISCALL_WRAPPER(_Locinfo__Gettrue
, 4)
602 const char* __thiscall
_Locinfo__Gettrue(const _Locinfo
*this)
604 TRACE("(%p)\n", this);
608 /* ?_Getlconv@_Locinfo@std@@QBEPBUlconv@@XZ */
609 /* ?_Getlconv@_Locinfo@std@@QEBAPEBUlconv@@XZ */
610 DEFINE_THISCALL_WRAPPER(_Locinfo__Getlconv
, 4)
611 const struct lconv
* __thiscall
_Locinfo__Getlconv(const _Locinfo
*this)
613 TRACE("(%p)\n", this);
617 /* ?_Getname@_Locinfo@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
618 /* ?_Getname@_Locinfo@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
619 DEFINE_THISCALL_WRAPPER_RETPTR(_Locinfo__Getname
, 4)
620 basic_string_char __thiscall
_Locinfo__Getname(const _Locinfo
*this)
622 basic_string_char ret
;
624 TRACE("(%p)\n", this);
626 MSVCP_basic_string_char_copy_ctor(&ret
, &this->newlocname
);
630 /* ?_Gettnames@_Locinfo@std@@QBE?AV_Timevec@2@XZ */
631 /* ?_Gettnames@_Locinfo@std@@QEBA?AV_Timevec@2@XZ */
632 DEFINE_THISCALL_WRAPPER(_Locinfo__Gettnames
, 4)
633 _Timevec __thiscall
_Locinfo__Gettnames(const _Locinfo
*this)
637 TRACE("(%p)\n", this);
639 _Timevec_ctor_timeptr(&ret
, _Gettnames());
643 static const type_info locale_facet_type_info
= {
644 MSVCP_locale_facet_vtable
,
646 ".?AVfacet@locale@std@@"
649 /* ?id@?$collate@D@std@@2V0locale@2@A */
650 locale_id collate_char_id
= {0};
652 /* ??_7?$collate@D@std@@6B@ */
653 extern const vtable_ptr MSVCP_collate_char_vtable
;
655 /* ?_Init@?$collate@D@std@@IAEXABV_Locinfo@2@@Z */
656 /* ?_Init@?$collate@D@std@@IEAAXAEBV_Locinfo@2@@Z */
657 DEFINE_THISCALL_WRAPPER(collate_char__Init
, 8)
658 void __thiscall
collate_char__Init(collate
*this, const _Locinfo
*locinfo
)
660 TRACE("(%p %p)\n", this, locinfo
);
661 this->coll
= _Locinfo__Getcoll(locinfo
);
664 /* ??0?$collate@D@std@@IAE@PBDI@Z */
665 /* ??0?$collate@D@std@@IEAA@PEBD_K@Z */
666 DEFINE_THISCALL_WRAPPER(collate_char_ctor_name
, 12)
667 collate
* __thiscall
collate_char_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
672 TRACE("(%p %s %lu)\n", this, name
, refs
);
674 locale_facet_ctor_refs(&this->facet
, refs
);
675 this->facet
.vtable
= &MSVCP_collate_char_vtable
;
677 _Lockit_ctor_locktype(&lockit
, _LOCK_LOCALE
);
678 _Locinfo_ctor_cstr(&locinfo
, name
);
679 collate_char__Init(this, &locinfo
);
680 _Locinfo_dtor(&locinfo
);
681 _Lockit_dtor(&lockit
);
685 /* ??0?$collate@D@std@@QAE@ABV_Locinfo@1@I@Z */
686 /* ??0?$collate@D@std@@QEAA@AEBV_Locinfo@1@_K@Z */
687 DEFINE_THISCALL_WRAPPER(collate_char_ctor_locinfo
, 12)
688 collate
* __thiscall
collate_char_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
690 TRACE("(%p %p %lu)\n", this, locinfo
, refs
);
692 locale_facet_ctor_refs(&this->facet
, refs
);
693 this->facet
.vtable
= &MSVCP_collate_char_vtable
;
694 collate_char__Init(this, locinfo
);
698 /* ??0?$collate@D@std@@QAE@I@Z */
699 /* ??0?$collate@D@std@@QEAA@_K@Z */
700 DEFINE_THISCALL_WRAPPER(collate_char_ctor_refs
, 8)
701 collate
* __thiscall
collate_char_ctor_refs(collate
*this, MSVCP_size_t refs
)
703 return collate_char_ctor_name(this, "C", refs
);
706 /* ??1?$collate@D@std@@MAE@XZ */
707 /* ??1?$collate@D@std@@MEAA@XZ */
708 DEFINE_THISCALL_WRAPPER(collate_char_dtor
, 4)
709 void __thiscall
collate_char_dtor(collate
*this)
711 TRACE("(%p)\n", this);
714 DEFINE_THISCALL_WRAPPER(MSVCP_collate_char_vector_dtor
, 8)
715 collate
* __thiscall
MSVCP_collate_char_vector_dtor(collate
*this, unsigned int flags
)
717 TRACE("(%p %x)\n", this, flags
);
719 /* we have an array, with the number of elements stored before the first object */
720 int i
, *ptr
= (int *)this-1;
722 for(i
=*ptr
-1; i
>=0; i
--)
723 collate_char_dtor(this+i
);
724 MSVCRT_operator_delete(ptr
);
726 collate_char_dtor(this);
728 MSVCRT_operator_delete(this);
734 /* ??_F?$collate@D@std@@QAEXXZ */
735 /* ??_F?$collate@D@std@@QEAAXXZ */
736 DEFINE_THISCALL_WRAPPER(collate_char_ctor
, 4)
737 collate
* __thiscall
collate_char_ctor(collate
*this)
739 return collate_char_ctor_name(this, "C", 0);
742 /* ?_Getcat@?$collate@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
743 /* ?_Getcat@?$collate@D@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
744 MSVCP_size_t __cdecl
collate_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
746 TRACE("(%p %p)\n", facet
, loc
);
748 if(facet
&& !*facet
) {
749 *facet
= MSVCRT_operator_new(sizeof(collate
));
751 ERR("Out of memory\n");
752 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
755 collate_char_ctor_name((collate
*)*facet
,
756 MSVCP_basic_string_char_c_str(&loc
->ptr
->name
), 0);
762 /* ?do_compare@?$collate@D@std@@MBEHPBD000@Z */
763 /* ?do_compare@?$collate@D@std@@MEBAHPEBD000@Z */
764 DEFINE_THISCALL_WRAPPER(collate_char_do_compare
, 20)
765 int __thiscall
collate_char_do_compare(const collate
*this, const char *first1
,
766 const char *last1
, const char *first2
, const char *last2
)
768 FIXME("(%p %p %p %p %p) stub\n", this, first1
, last1
, first2
, last2
);
772 /* ?compare@?$collate@D@std@@QBEHPBD000@Z */
773 /* ?compare@?$collate@D@std@@QEBAHPEBD000@Z */
774 DEFINE_THISCALL_WRAPPER(collate_char_compare
, 20)
775 int __thiscall
collate_char_compare(const collate
*this, const char *first1
,
776 const char *last1
, const char *first2
, const char *last2
)
778 FIXME("(%p %p %p %p %p) stub\n", this, first1
, last1
, first2
, last2
);
782 /* ?do_hash@?$collate@D@std@@MBEJPBD0@Z */
783 /* ?do_hash@?$collate@D@std@@MEBAJPEBD0@Z */
784 DEFINE_THISCALL_WRAPPER(collate_char_do_hash
, 12)
785 LONG __thiscall
collate_char_do_hash(const collate
*this,
786 const char *first
, const char *last
)
788 FIXME("(%p %p %p) stub\n", this, first
, last
);
792 /* ?hash@?$collate@D@std@@QBEJPBD0@Z */
793 /* ?hash@?$collate@D@std@@QEBAJPEBD0@Z */
794 DEFINE_THISCALL_WRAPPER(collate_char_hash
, 12)
795 LONG __thiscall
collate_char_hash(const collate
*this,
796 const char *first
, const char *last
)
798 FIXME("(%p %p %p) stub\n", this, first
, last
);
802 /* ?do_transform@?$collate@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD0@Z */
803 /* ?do_transform@?$collate@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD0@Z */
804 DEFINE_THISCALL_WRAPPER_RETPTR(collate_char_do_transform
, 12)
805 basic_string_char __thiscall
collate_char_do_transform(const collate
*this,
806 const char *first
, const char *last
)
808 basic_string_char ret
= {0}; /* FIXME */
809 FIXME("(%p %p %p) stub\n", this, first
, last
);
813 /* ?transform@?$collate@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD0@Z */
814 /* ?transform@?$collate@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD0@Z */
815 DEFINE_THISCALL_WRAPPER_RETPTR(collate_char_transform
, 12)
816 basic_string_char __thiscall
collate_char_transform(const collate
*this,
817 const char *first
, const char *last
)
819 basic_string_char ret
= {0}; /* FIXME */
820 FIXME("(%p %p %p) stub\n", this, first
, last
);
824 /* ?id@?$collate@_W@std@@2V0locale@2@A */
825 locale_id collate_wchar_id
= {0};
826 /* ?id@?$collate@G@std@@2V0locale@2@A */
827 locale_id collate_short_id
= {0};
829 /* ??_7?$collate@_W@std@@6B@ */
830 extern const vtable_ptr MSVCP_collate_wchar_vtable
;
831 /* ??_7?$collate@G@std@@6B@ */
832 extern const vtable_ptr MSVCP_collate_short_vtable
;
834 /* ??0?$collate@_W@std@@IAE@PBDI@Z */
835 /* ??0?$collate@_W@std@@IEAA@PEBD_K@Z */
836 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_name
, 12)
837 collate
* __thiscall
collate_wchar_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
839 FIXME("(%p %s %lu) stub\n", this, name
, refs
);
840 this->facet
.vtable
= &MSVCP_collate_wchar_vtable
;
844 /* ??0?$collate@G@std@@IAE@PBDI@Z */
845 /* ??0?$collate@G@std@@IEAA@PEBD_K@Z */
846 DEFINE_THISCALL_WRAPPER(collate_short_ctor_name
, 12)
847 collate
* __thiscall
collate_short_ctor_name(collate
*this, const char *name
, MSVCP_size_t refs
)
849 collate
*ret
= collate_wchar_ctor_name(this, name
, refs
);
850 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
854 /* ??0?$collate@_W@std@@QAE@ABV_Locinfo@1@I@Z */
855 /* ??0?$collate@_W@std@@QEAA@AEBV_Locinfo@1@_K@Z */
856 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_locinfo
, 12)
857 collate
* __thiscall
collate_wchar_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
859 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
860 this->facet
.vtable
= &MSVCP_collate_wchar_vtable
;
864 /* ??0?$collate@G@std@@QAE@ABV_Locinfo@1@I@Z */
865 /* ??0?$collate@G@std@@QEAA@AEBV_Locinfo@1@_K@Z */
866 DEFINE_THISCALL_WRAPPER(collate_short_ctor_locinfo
, 12)
867 collate
* __thiscall
collate_short_ctor_locinfo(collate
*this, _Locinfo
*locinfo
, MSVCP_size_t refs
)
869 collate
*ret
= collate_wchar_ctor_locinfo(this, locinfo
, refs
);
870 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
874 /* ??0?$collate@_W@std@@QAE@I@Z */
875 /* ??0?$collate@_W@std@@QEAA@_K@Z */
876 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor_refs
, 8)
877 collate
* __thiscall
collate_wchar_ctor_refs(collate
*this, MSVCP_size_t refs
)
879 FIXME("(%p %lu) stub\n", this, refs
);
880 this->facet
.vtable
= &MSVCP_collate_wchar_vtable
;
884 /* ??0?$collate@G@std@@QAE@I@Z */
885 /* ??0?$collate@G@std@@QEAA@_K@Z */
886 DEFINE_THISCALL_WRAPPER(collate_short_ctor_refs
, 8)
887 collate
* __thiscall
collate_short_ctor_refs(collate
*this, MSVCP_size_t refs
)
889 collate
*ret
= collate_wchar_ctor_refs(this, refs
);
890 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
894 /* ??1?$collate@_W@std@@MAE@XZ */
895 /* ??1?$collate@_W@std@@MEAA@XZ */
896 /* ??1?$collate@G@std@@MAE@XZ */
897 /* ??1?$collate@G@std@@MEAA@XZ */
898 DEFINE_THISCALL_WRAPPER(collate_wchar_dtor
, 4)
899 void __thiscall
collate_wchar_dtor(collate
*this)
901 FIXME("(%p) stub\n", this);
904 DEFINE_THISCALL_WRAPPER(MSVCP_collate_wchar_vector_dtor
, 8)
905 collate
* __thiscall
MSVCP_collate_wchar_vector_dtor(collate
*this, unsigned int flags
)
907 TRACE("(%p %x)\n", this, flags
);
909 /* we have an array, with the number of elements stored before the first object */
910 int i
, *ptr
= (int *)this-1;
912 for(i
=*ptr
-1; i
>=0; i
--)
913 collate_wchar_dtor(this+i
);
914 MSVCRT_operator_delete(ptr
);
916 collate_wchar_dtor(this);
918 MSVCRT_operator_delete(this);
924 DEFINE_THISCALL_WRAPPER(MSVCP_collate_short_vector_dtor
, 8)
925 collate
* __thiscall
MSVCP_collate_short_vector_dtor(collate
*this, unsigned int flags
)
927 return MSVCP_collate_wchar_vector_dtor(this, flags
);
930 /* ??_F?$collate@_W@std@@QAEXXZ */
931 /* ??_F?$collate@_W@std@@QEAAXXZ */
932 DEFINE_THISCALL_WRAPPER(collate_wchar_ctor
, 4)
933 collate
* __thiscall
collate_wchar_ctor(collate
*this)
935 FIXME("(%p) stub\n", this);
936 this->facet
.vtable
= &MSVCP_collate_wchar_vtable
;
940 /* ??_F?$collate@G@std@@QAEXXZ */
941 /* ??_F?$collate@G@std@@QEAAXXZ */
942 DEFINE_THISCALL_WRAPPER(collate_short_ctor
, 4)
943 collate
* __thiscall
collate_short_ctor(collate
*this)
945 collate
*ret
= collate_wchar_ctor(this);
946 ret
->facet
.vtable
= &MSVCP_collate_short_vtable
;
950 /* ?_Getcat@?$collate@_W@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
951 /* ?_Getcat@?$collate@_W@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
952 /* ?_Getcat@?$collate@G@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
953 /* ?_Getcat@?$collate@G@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
954 MSVCP_size_t __cdecl
collate_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
956 FIXME("(%p %p) stub\n", facet
, loc
);
960 /* ?_Init@?$collate@_W@std@@IAEXABV_Locinfo@2@@Z */
961 /* ?_Init@?$collate@_W@std@@IEAAXAEBV_Locinfo@2@@Z */
962 /* ?_Init@?$collate@G@std@@IAEXABV_Locinfo@2@@Z */
963 /* ?_Init@?$collate@G@std@@IEAAXAEBV_Locinfo@2@@Z */
964 DEFINE_THISCALL_WRAPPER(collate_wchar__Init
, 8)
965 void __thiscall
collate_wchar__Init(collate
*this, const _Locinfo
*locinfo
)
967 FIXME("(%p %p) stub\n", this, locinfo
);
970 /* ?do_compare@?$collate@_W@std@@MBEHPB_W000@Z */
971 /* ?do_compare@?$collate@_W@std@@MEBAHPEB_W000@Z */
972 /* ?do_compare@?$collate@G@std@@MBEHPBG000@Z */
973 /* ?do_compare@?$collate@G@std@@MEBAHPEBG000@Z */
974 DEFINE_THISCALL_WRAPPER(collate_wchar_do_compare
, 20)
975 int __thiscall
collate_wchar_do_compare(const collate
*this, const wchar_t *first1
,
976 const wchar_t *last1
, const wchar_t *first2
, const wchar_t *last2
)
978 FIXME("(%p %p %p %p %p) stub\n", this, first1
, last1
, first2
, last2
);
982 /* ?compare@?$collate@_W@std@@QBEHPB_W000@Z */
983 /* ?compare@?$collate@_W@std@@QEBAHPEB_W000@Z */
984 /* ?compare@?$collate@G@std@@QBEHPBG000@Z */
985 /* ?compare@?$collate@G@std@@QEBAHPEBG000@Z */
986 DEFINE_THISCALL_WRAPPER(collate_wchar_compare
, 20)
987 int __thiscall
collate_wchar_compare(const collate
*this, const wchar_t *first1
,
988 const wchar_t *last1
, const wchar_t *first2
, const wchar_t *last2
)
990 FIXME("(%p %p %p %p %p) stub\n", this, first1
, last1
, first2
, last2
);
994 /* ?do_hash@?$collate@_W@std@@MBEJPB_W0@Z */
995 /* ?do_hash@?$collate@_W@std@@MEBAJPEB_W0@Z */
996 /* ?do_hash@?$collate@G@std@@MBEJPBG0@Z */
997 /* ?do_hash@?$collate@G@std@@MEBAJPEBG0@Z */
998 DEFINE_THISCALL_WRAPPER(collate_wchar_do_hash
, 12)
999 LONG __thiscall
collate_wchar_do_hash(const collate
*this,
1000 const wchar_t *first
, const wchar_t *last
)
1002 FIXME("(%p %p %p) stub\n", this, first
, last
);
1006 /* ?hash@?$collate@_W@std@@QBEJPB_W0@Z */
1007 /* ?hash@?$collate@_W@std@@QEBAJPEB_W0@Z */
1008 /* ?hash@?$collate@G@std@@QBEJPBG0@Z */
1009 /* ?hash@?$collate@G@std@@QEBAJPEBG0@Z */
1010 DEFINE_THISCALL_WRAPPER(collate_wchar_hash
, 12)
1011 LONG __thiscall
collate_wchar_hash(const collate
*this,
1012 const wchar_t *first
, const wchar_t *last
)
1014 FIXME("(%p %p %p) stub\n", this, first
, last
);
1018 /* ?do_transform@?$collate@_W@std@@MBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PB_W0@Z */
1019 /* ?do_transform@?$collate@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W0@Z */
1020 /* ?do_transform@?$collate@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG0@Z */
1021 /* ?do_transform@?$collate@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG0@Z */
1022 DEFINE_THISCALL_WRAPPER_RETPTR(collate_wchar_do_transform
, 12)
1023 basic_string_wchar __thiscall
collate_wchar_do_transform(const collate
*this,
1024 const wchar_t *first
, const wchar_t *last
)
1026 basic_string_wchar ret
= {0}; /* FIXME */
1027 FIXME("(%p %p %p) stub\n", this, first
, last
);
1031 /* ?transform@?$collate@_W@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PB_W0@Z */
1032 /* ?transform@?$collate@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W0@Z */
1033 /* ?transform@?$collate@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG0@Z */
1034 /* ?transform@?$collate@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG0@Z */
1035 DEFINE_THISCALL_WRAPPER_RETPTR(collate_wchar_transform
, 12)
1036 basic_string_wchar __thiscall
collate_wchar_transform(const collate
*this,
1037 const wchar_t *first
, const wchar_t *last
)
1039 basic_string_wchar ret
= {0}; /* FIXME */
1040 FIXME("(%p %p %p) stub\n", this, first
, last
);
1044 /* ??_7ctype_base@std@@6B@ */
1045 extern const vtable_ptr MSVCP_ctype_base_vtable
;
1047 /* ??0ctype_base@std@@QAE@I@Z */
1048 /* ??0ctype_base@std@@QEAA@_K@Z */
1049 DEFINE_THISCALL_WRAPPER(ctype_base_ctor_refs
, 8)
1050 ctype_base
* __thiscall
ctype_base_ctor_refs(ctype_base
*this, MSVCP_size_t refs
)
1052 TRACE("(%p %lu)\n", this, refs
);
1053 locale_facet_ctor_refs(&this->facet
, refs
);
1054 this->facet
.vtable
= &MSVCP_ctype_base_vtable
;
1058 /* ??_Fctype_base@std@@QAEXXZ */
1059 /* ??_Fctype_base@std@@QEAAXXZ */
1060 DEFINE_THISCALL_WRAPPER(ctype_base_ctor
, 4)
1061 ctype_base
* __thiscall
ctype_base_ctor(ctype_base
*this)
1063 TRACE("(%p)\n", this);
1064 locale_facet_ctor_refs(&this->facet
, 0);
1065 this->facet
.vtable
= &MSVCP_ctype_base_vtable
;
1069 /* ??1ctype_base@std@@UAE@XZ */
1070 /* ??1ctype_base@std@@UEAA@XZ */
1071 DEFINE_THISCALL_WRAPPER(ctype_base_dtor
, 4)
1072 void __thiscall
ctype_base_dtor(ctype_base
*this)
1074 TRACE("(%p)\n", this);
1077 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_base_vector_dtor
, 8)
1078 ctype_base
* __thiscall
MSVCP_ctype_base_vector_dtor(ctype_base
*this, unsigned int flags
)
1080 TRACE("(%p %x)\n", this, flags
);
1082 /* we have an array, with the number of elements stored before the first object */
1083 int i
, *ptr
= (int *)this-1;
1085 for(i
=*ptr
-1; i
>=0; i
--)
1086 ctype_base_dtor(this+i
);
1087 MSVCRT_operator_delete(ptr
);
1089 ctype_base_dtor(this);
1091 MSVCRT_operator_delete(this);
1097 /* ?_Xran@ctype_base@std@@KAXXZ */
1098 void __cdecl
ctype_base__Xran(void)
1100 throw_exception(EXCEPTION_OUT_OF_RANGE
, "out of range in ctype<T>");
1103 /* ?id@?$ctype@D@std@@2V0locale@2@A */
1104 locale_id ctype_char_id
= {0};
1105 /* ?table_size@?$ctype@D@std@@2IB */
1106 /* ?table_size@?$ctype@D@std@@2_KB */
1107 MSVCP_size_t ctype_char_table_size
= 256;
1109 /* ??_7?$ctype@D@std@@6B@ */
1110 extern const vtable_ptr MSVCP_ctype_char_vtable
;
1112 /* ?_Id_func@?$ctype@D@std@@SAAAVid@locale@2@XZ */
1113 /* ?_Id_func@?$ctype@D@std@@SAAEAVid@locale@2@XZ */
1114 locale_id
* __cdecl
ctype_char__Id_func(void)
1120 /* ?_Init@?$ctype@D@std@@IAEXABV_Locinfo@2@@Z */
1121 /* ?_Init@?$ctype@D@std@@IEAAXAEBV_Locinfo@2@@Z */
1122 DEFINE_THISCALL_WRAPPER(ctype_char__Init
, 8)
1123 void __thiscall
ctype_char__Init(ctype_char
*this, _Locinfo
*locinfo
)
1125 FIXME("(%p %p) stub\n", this, locinfo
);
1128 /* ?_Tidy@?$ctype@D@std@@IAEXXZ */
1129 /* ?_Tidy@?$ctype@D@std@@IEAAXXZ */
1130 DEFINE_THISCALL_WRAPPER(ctype_char__Tidy
, 4)
1131 void __thiscall
ctype_char__Tidy(ctype_char
*this)
1133 FIXME("(%p) stub\n", this);
1136 /* ?classic_table@?$ctype@D@std@@KAPBFXZ */
1137 /* ?classic_table@?$ctype@D@std@@KAPEBFXZ */
1138 const short* __cdecl
ctype_char_classic_table(void)
1144 /* ??0?$ctype@D@std@@QAE@ABV_Locinfo@1@I@Z */
1145 /* ??0?$ctype@D@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1146 DEFINE_THISCALL_WRAPPER(ctype_char_ctor_locinfo
, 12)
1147 ctype_char
* __thiscall
ctype_char_ctor_locinfo(ctype_char
*this,
1148 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1150 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
1151 this->base
.facet
.vtable
= &MSVCP_ctype_char_vtable
;
1155 /* ??0?$ctype@D@std@@QAE@PBF_NI@Z */
1156 /* ??0?$ctype@D@std@@QEAA@PEBF_N_K@Z */
1157 DEFINE_THISCALL_WRAPPER(ctype_char_ctor_table
, 16)
1158 ctype_char
* __thiscall
ctype_char_ctor_table(ctype_char
*this,
1159 const short *table
, MSVCP_bool
delete, MSVCP_size_t refs
)
1161 FIXME("(%p %p %d %lu) stub\n", this, table
, delete, refs
);
1162 this->base
.facet
.vtable
= &MSVCP_ctype_char_vtable
;
1166 /* ??_F?$ctype@D@std@@QAEXXZ */
1167 /* ??_F?$ctype@D@std@@QEAAXXZ */
1168 DEFINE_THISCALL_WRAPPER(ctype_char_ctor
, 4)
1169 ctype_char
* __thiscall
ctype_char_ctor(ctype_char
*this)
1171 FIXME("(%p) stub\n", this);
1172 this->base
.facet
.vtable
= &MSVCP_ctype_char_vtable
;
1176 /* ??1?$ctype@D@std@@MAE@XZ */
1177 /* ??1?$ctype@D@std@@MEAA@XZ */
1178 DEFINE_THISCALL_WRAPPER(ctype_char_dtor
, 4)
1179 void __thiscall
ctype_char_dtor(ctype_char
*this)
1181 FIXME("(%p) stub\n", this);
1184 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_char_vector_dtor
, 8)
1185 ctype_char
* __thiscall
MSVCP_ctype_char_vector_dtor(ctype_char
*this, unsigned int flags
)
1187 TRACE("(%p %x)\n", this, flags
);
1189 /* we have an array, with the number of elements stored before the first object */
1190 int i
, *ptr
= (int *)this-1;
1192 for(i
=*ptr
-1; i
>=0; i
--)
1193 ctype_char_dtor(this+i
);
1194 MSVCRT_operator_delete(ptr
);
1196 ctype_char_dtor(this);
1198 MSVCRT_operator_delete(this);
1204 /* ?do_narrow@?$ctype@D@std@@MBEDDD@Z */
1205 /* ?do_narrow@?$ctype@D@std@@MEBADDD@Z */
1206 DEFINE_THISCALL_WRAPPER(ctype_char_do_narrow_ch
, 12)
1207 char __thiscall
ctype_char_do_narrow_ch(const ctype_char
*this, char ch
, char unused
)
1209 FIXME("(%p %c %c) stub\n", this, ch
, unused
);
1213 /* ?do_narrow@?$ctype@D@std@@MBEPBDPBD0DPAD@Z */
1214 /* ?do_narrow@?$ctype@D@std@@MEBAPEBDPEBD0DPEAD@Z */
1215 DEFINE_THISCALL_WRAPPER(ctype_char_do_narrow
, 20)
1216 const char* __thiscall
ctype_char_do_narrow(const ctype_char
*this,
1217 const char *first
, const char *last
, char unused
, char *dest
)
1219 FIXME("(%p %p %p %p) stub\n", this, first
, last
, dest
);
1223 /* ?_Do_narrow_s@?$ctype@D@std@@MBEPBDPBD0DPADI@Z */
1224 /* ?_Do_narrow_s@?$ctype@D@std@@MEBAPEBDPEBD0DPEAD_K@Z */
1225 DEFINE_THISCALL_WRAPPER(ctype_char__Do_narrow_s
, 24)
1226 const char* __thiscall
ctype_char__Do_narrow_s(const ctype_char
*this, const char *first
,
1227 const char *last
, char unused
, char *dest
, MSVCP_size_t size
)
1229 FIXME("(%p %p %p %p %lu) stub\n", this, first
, last
, dest
, size
);
1233 /* ?narrow@?$ctype@D@std@@QBEDDD@Z */
1234 /* ?narrow@?$ctype@D@std@@QEBADDD@Z */
1235 DEFINE_THISCALL_WRAPPER(ctype_char_narrow_ch
, 12)
1236 char __thiscall
ctype_char_narrow_ch(const ctype_char
*this, char ch
, char dflt
)
1238 FIXME("(%p %c %c) stub\n", this, ch
, dflt
);
1242 /* ?narrow@?$ctype@D@std@@QBEPBDPBD0DPAD@Z */
1243 /* ?narrow@?$ctype@D@std@@QEBAPEBDPEBD0DPEAD@Z */
1244 DEFINE_THISCALL_WRAPPER(ctype_char_narrow
, 20)
1245 const char* __thiscall
ctype_char_narrow(const ctype_char
*this,
1246 const char *first
, const char *last
, char dflt
, char *dest
)
1248 FIXME("(%p %p %p %c %p) stub\n", this, first
, last
, dflt
, dest
);
1252 /* ?_Narrow_s@?$ctype@D@std@@QBEPBDPBD0DPADI@Z */
1253 /* ?_Narrow_s@?$ctype@D@std@@QEBAPEBDPEBD0DPEAD_K@Z */
1254 DEFINE_THISCALL_WRAPPER(ctype_char__Narrow_s
, 24)
1255 const char* __thiscall
ctype_char__Narrow_s(const ctype_char
*this, const char *first
,
1256 const char *last
, char unused
, char *dest
, MSVCP_size_t size
)
1258 FIXME("(%p %p %p %p %lu) stub\n", this, first
, last
, dest
, size
);
1262 /* ?do_widen@?$ctype@D@std@@MBEDD@Z */
1263 /* ?do_widen@?$ctype@D@std@@MEBADD@Z */
1264 DEFINE_THISCALL_WRAPPER(ctype_char_do_widen_ch
, 8)
1265 char __thiscall
ctype_char_do_widen_ch(const ctype_char
*this, char ch
)
1267 FIXME("(%p %c) stub\n", this, ch
);
1271 /* ?do_widen@?$ctype@D@std@@MBEPBDPBD0PAD@Z */
1272 /* ?do_widen@?$ctype@D@std@@MEBAPEBDPEBD0PEAD@Z */
1273 DEFINE_THISCALL_WRAPPER(ctype_char_do_widen
, 16)
1274 const char* __thiscall
ctype_char_do_widen(const ctype_char
*this,
1275 const char *first
, const char *last
, char *dest
)
1277 FIXME("(%p %p %p %p) stub\n", this, first
, last
, dest
);
1281 /* ?_Do_widen_s@?$ctype@D@std@@MBEPBDPBD0PADI@Z */
1282 /* ?_Do_widen_s@?$ctype@D@std@@MEBAPEBDPEBD0PEAD_K@Z */
1283 DEFINE_THISCALL_WRAPPER(ctype_char__Do_widen_s
, 20)
1284 const char* __thiscall
ctype_char__Do_widen_s(const ctype_char
*this,
1285 const char *first
, const char *last
, char *dest
, MSVCP_size_t size
)
1287 FIXME("(%p %p %p %p %lu) stub\n", this, first
, last
, dest
, size
);
1291 /* ?widen@?$ctype@D@std@@QBEDD@Z */
1292 /* ?widen@?$ctype@D@std@@QEBADD@Z */
1293 DEFINE_THISCALL_WRAPPER(ctype_char_widen_ch
, 8)
1294 char __thiscall
ctype_char_widen_ch(const ctype_char
*this, char ch
)
1296 FIXME("(%p %c) stub\n", this, ch
);
1300 /* ?widen@?$ctype@D@std@@QBEPBDPBD0PAD@Z */
1301 /* ?widen@?$ctype@D@std@@QEBAPEBDPEBD0PEAD@Z */
1302 DEFINE_THISCALL_WRAPPER(ctype_char_widen
, 16)
1303 const char* __thiscall
ctype_char_widen(const ctype_char
*this,
1304 const char *first
, const char *last
, char *dest
)
1306 FIXME("(%p %p %p %p) stub\n", this, first
, last
, dest
);
1310 /* ?_Widen_s@?$ctype@D@std@@QBEPBDPBD0PADI@Z */
1311 /* ?_Widen_s@?$ctype@D@std@@QEBAPEBDPEBD0PEAD_K@Z */
1312 DEFINE_THISCALL_WRAPPER(ctype_char__Widen_s
, 20)
1313 const char* __thiscall
ctype_char__Widen_s(const ctype_char
*this,
1314 const char *first
, const char *last
, char *dest
, MSVCP_size_t size
)
1316 FIXME("(%p %p %p %p %lu) stub\n", this, first
, last
, dest
, size
);
1320 /* ?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1321 /* ?_Getcat@?$ctype@D@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1322 MSVCP_size_t __cdecl
ctype_char__Getcat(const locale_facet
**facet
, const locale
*loc
)
1324 FIXME("(%p %p) stub\n", facet
, loc
);
1328 /* ?do_tolower@?$ctype@D@std@@MBEDD@Z */
1329 /* ?do_tolower@?$ctype@D@std@@MEBADD@Z */
1330 DEFINE_THISCALL_WRAPPER(ctype_char_do_tolower_ch
, 8)
1331 char __thiscall
ctype_char_do_tolower_ch(const ctype_char
*this, char ch
)
1333 FIXME("(%p %c) stub\n", this, ch
);
1337 /* ?do_tolower@?$ctype@D@std@@MBEPBDPADPBD@Z */
1338 /* ?do_tolower@?$ctype@D@std@@MEBAPEBDPEADPEBD@Z */
1339 DEFINE_THISCALL_WRAPPER(ctype_char_do_tolower
, 12)
1340 const char* __thiscall
ctype_char_do_tolower(const ctype_char
*this, char *first
, const char *last
)
1342 FIXME("(%p %p %p) stub\n", this, first
, last
);
1346 /* ?tolower@?$ctype@D@std@@QBEDD@Z */
1347 /* ?tolower@?$ctype@D@std@@QEBADD@Z */
1348 DEFINE_THISCALL_WRAPPER(ctype_char_tolower_ch
, 8)
1349 char __thiscall
ctype_char_tolower_ch(const ctype_char
*this, char ch
)
1351 FIXME("(%p %c) stub\n", this, ch
);
1355 /* ?tolower@?$ctype@D@std@@QBEPBDPADPBD@Z */
1356 /* ?tolower@?$ctype@D@std@@QEBAPEBDPEADPEBD@Z */
1357 DEFINE_THISCALL_WRAPPER(ctype_char_tolower
, 12)
1358 const char* __thiscall
ctype_char_tolower(const ctype_char
*this, char *first
, const char *last
)
1360 FIXME("(%p %p %p) stub\n", this, first
, last
);
1364 /* ?do_toupper@?$ctype@D@std@@MBEDD@Z */
1365 /* ?do_toupper@?$ctype@D@std@@MEBADD@Z */
1366 DEFINE_THISCALL_WRAPPER(ctype_char_do_toupper_ch
, 8)
1367 char __thiscall
ctype_char_do_toupper_ch(const ctype_char
*this, char ch
)
1369 FIXME("(%p %c) stub\n", this, ch
);
1373 /* ?do_toupper@?$ctype@D@std@@MBEPBDPADPBD@Z */
1374 /* ?do_toupper@?$ctype@D@std@@MEBAPEBDPEADPEBD@Z */
1375 DEFINE_THISCALL_WRAPPER(ctype_char_do_toupper
, 12)
1376 const char* __thiscall
ctype_char_do_toupper(const ctype_char
*this,
1377 char *first
, const char *last
)
1379 FIXME("(%p %p %p) stub\n", this, first
, last
);
1383 /* ?toupper@?$ctype@D@std@@QBEDD@Z */
1384 /* ?toupper@?$ctype@D@std@@QEBADD@Z */
1385 DEFINE_THISCALL_WRAPPER(ctype_char_toupper_ch
, 8)
1386 char __thiscall
ctype_char_toupper_ch(const ctype_char
*this, char ch
)
1388 FIXME("(%p %c) stub\n", this, ch
);
1392 /* ?toupper@?$ctype@D@std@@QBEPBDPADPBD@Z */
1393 /* ?toupper@?$ctype@D@std@@QEBAPEBDPEADPEBD@Z */
1394 DEFINE_THISCALL_WRAPPER(ctype_char_toupper
, 12)
1395 const char* __thiscall
ctype_char_toupper(const ctype_char
*this, char *first
, const char *last
)
1397 FIXME("(%p %p %p) stub\n", this, first
, last
);
1401 /* ?is@?$ctype@D@std@@QBE_NFD@Z */
1402 /* ?is@?$ctype@D@std@@QEBA_NFD@Z */
1403 DEFINE_THISCALL_WRAPPER(ctype_char_is_ch
, 12)
1404 MSVCP_bool __thiscall
ctype_char_is_ch(const ctype_char
*this, short mask
, char ch
)
1406 FIXME("(%p %x %c) stub\n", this, mask
, ch
);
1410 /* ?is@?$ctype@D@std@@QBEPBDPBD0PAF@Z */
1411 /* ?is@?$ctype@D@std@@QEBAPEBDPEBD0PEAF@Z */
1412 DEFINE_THISCALL_WRAPPER(ctype_char_is
, 16)
1413 const char* __thiscall
ctype_char_is(const ctype_char
*this, const char *first
, const char *last
, short *dest
)
1415 FIXME("(%p %p %p %p) stub\n", this, first
, last
, dest
);
1419 /* ?scan_is@?$ctype@D@std@@QBEPBDFPBD0@Z */
1420 /* ?scan_is@?$ctype@D@std@@QEBAPEBDFPEBD0@Z */
1421 DEFINE_THISCALL_WRAPPER(ctype_char_scan_is
, 16)
1422 const char* __thiscall
ctype_char_scan_is(const ctype_char
*this, short mask
, const char *first
, const char *last
)
1424 FIXME("(%p %x %p %p) stub\n", this, mask
, first
, last
);
1428 /* ?scan_not@?$ctype@D@std@@QBEPBDFPBD0@Z */
1429 /* ?scan_not@?$ctype@D@std@@QEBAPEBDFPEBD0@Z */
1430 DEFINE_THISCALL_WRAPPER(ctype_char_scan_not
, 16)
1431 const char* __thiscall
ctype_char_scan_not(const ctype_char
*this, short mask
, const char *first
, const char *last
)
1433 FIXME("(%p %x %p %p) stub\n", this, mask
, first
, last
);
1437 /* ?table@?$ctype@D@std@@IBEPBFXZ */
1438 /* ?table@?$ctype@D@std@@IEBAPEBFXZ */
1439 DEFINE_THISCALL_WRAPPER(ctype_char_table
, 4)
1440 const short* __thiscall
ctype_char_table(const ctype_char
*this)
1442 FIXME("(%p) stub\n", this);
1446 /* ?id@?$ctype@_W@std@@2V0locale@2@A */
1447 locale_id ctype_wchar_id
= {0};
1448 /* ?id@?$ctype@G@std@@2V0locale@2@A */
1449 locale_id ctype_short_id
= {0};
1451 /* ??_7?$ctype@_W@std@@6B@ */
1452 extern const vtable_ptr MSVCP_ctype_wchar_vtable
;
1453 /* ??_7?$ctype@G@std@@6B@ */
1454 extern const vtable_ptr MSVCP_ctype_short_vtable
;
1456 /* ?_Id_func@?$ctype@_W@std@@SAAAVid@locale@2@XZ */
1457 /* ?_Id_func@?$ctype@_W@std@@SAAEAVid@locale@2@XZ */
1458 locale_id
* __cdecl
ctype_wchar__Id_func(void)
1464 /* ?_Id_func@?$ctype@G@std@@SAAAVid@locale@2@XZ */
1465 /* ?_Id_func@?$ctype@G@std@@SAAEAVid@locale@2@XZ */
1466 locale_id
* __cdecl
ctype_short__Id_func(void)
1472 /* ?_Init@?$ctype@_W@std@@IAEXABV_Locinfo@2@@Z */
1473 /* ?_Init@?$ctype@_W@std@@IEAAXAEBV_Locinfo@2@@Z */
1474 /* ?_Init@?$ctype@G@std@@IAEXABV_Locinfo@2@@Z */
1475 /* ?_Init@?$ctype@G@std@@IEAAXAEBV_Locinfo@2@@Z */
1476 DEFINE_THISCALL_WRAPPER(ctype_wchar__Init
, 8)
1477 void __thiscall
ctype_wchar__Init(ctype_wchar
*this, _Locinfo
*locinfo
)
1479 FIXME("(%p %p) stub\n", this, locinfo
);
1482 /* ??0?$ctype@_W@std@@QAE@ABV_Locinfo@1@I@Z */
1483 /* ??0?$ctype@_W@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1484 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor_locinfo
, 12)
1485 ctype_wchar
* __thiscall
ctype_wchar_ctor_locinfo(ctype_wchar
*this,
1486 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1488 FIXME("(%p %p %lu) stub\n", this, locinfo
, refs
);
1489 this->base
.facet
.vtable
= &MSVCP_ctype_wchar_vtable
;
1493 /* ??0?$ctype@G@std@@QAE@ABV_Locinfo@1@I@Z */
1494 /* ??0?$ctype@G@std@@QEAA@AEBV_Locinfo@1@_K@Z */
1495 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_locinfo
, 12)
1496 ctype_wchar
* __thiscall
ctype_short_ctor_locinfo(ctype_wchar
*this,
1497 _Locinfo
*locinfo
, MSVCP_size_t refs
)
1499 ctype_wchar
*ret
= ctype_wchar_ctor_locinfo(this, locinfo
, refs
);
1500 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1504 /* ??0?$ctype@_W@std@@QAE@I@Z */
1505 /* ??0?$ctype@_W@std@@QEAA@_K@Z */
1506 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor_refs
, 8)
1507 ctype_wchar
* __thiscall
ctype_wchar_ctor_refs(ctype_wchar
*this, MSVCP_size_t refs
)
1509 FIXME("(%p %lu) stub\n", this, refs
);
1510 this->base
.facet
.vtable
= &MSVCP_ctype_wchar_vtable
;
1514 /* ??0?$ctype@G@std@@QAE@I@Z */
1515 /* ??0?$ctype@G@std@@QEAA@_K@Z */
1516 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_refs
, 8)
1517 ctype_wchar
* __thiscall
ctype_short_ctor_refs(ctype_wchar
*this, MSVCP_size_t refs
)
1519 ctype_wchar
*ret
= ctype_wchar_ctor_refs(this, refs
);
1520 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1524 /* ??0?$ctype@G@std@@IAE@PBDI@Z */
1525 DEFINE_THISCALL_WRAPPER(ctype_short_ctor_name
, 12)
1526 ctype_wchar
* __thiscall
ctype_short_ctor_name(ctype_wchar
*this,
1527 const char *name
, MSVCP_size_t refs
)
1529 FIXME("(%p %s %lu) stub\n", this, debugstr_a(name
), refs
);
1530 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1534 /* ??_F?$ctype@_W@std@@QAEXXZ */
1535 /* ??_F?$ctype@_W@std@@QEAAXXZ */
1536 DEFINE_THISCALL_WRAPPER(ctype_wchar_ctor
, 4)
1537 ctype_wchar
* __thiscall
ctype_wchar_ctor(ctype_wchar
*this)
1539 FIXME("(%p) stub\n", this);
1540 this->base
.facet
.vtable
= &MSVCP_ctype_wchar_vtable
;
1544 /* ??_F?$ctype@G@std@@QAEXXZ */
1545 /* ??_F?$ctype@G@std@@QEAAXXZ */
1546 DEFINE_THISCALL_WRAPPER(ctype_short_ctor
, 4)
1547 ctype_wchar
* __thiscall
ctype_short_ctor(ctype_wchar
*this)
1549 ctype_wchar
*ret
= ctype_wchar_ctor(this);
1550 this->base
.facet
.vtable
= &MSVCP_ctype_short_vtable
;
1554 /* ??1?$ctype@_W@std@@MAE@XZ */
1555 /* ??1?$ctype@_W@std@@MEAA@XZ */
1556 /* ??1?$ctype@G@std@@MAE@XZ */
1557 /* ??1?$ctype@G@std@@MEAA@XZ */
1558 DEFINE_THISCALL_WRAPPER(ctype_wchar_dtor
, 4)
1559 void __thiscall
ctype_wchar_dtor(ctype_wchar
*this)
1561 FIXME("(%p) stub\n", this);
1564 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_wchar_vector_dtor
, 8)
1565 ctype_wchar
* __thiscall
MSVCP_ctype_wchar_vector_dtor(ctype_wchar
*this, unsigned int flags
)
1567 TRACE("(%p %x)\n", this, flags
);
1569 /* we have an array, with the number of elements stored before the first object */
1570 int i
, *ptr
= (int *)this-1;
1572 for(i
=*ptr
-1; i
>=0; i
--)
1573 ctype_wchar_dtor(this+i
);
1574 MSVCRT_operator_delete(ptr
);
1576 ctype_wchar_dtor(this);
1578 MSVCRT_operator_delete(this);
1584 DEFINE_THISCALL_WRAPPER(MSVCP_ctype_short_vector_dtor
, 8)
1585 ctype_wchar
* __thiscall
MSVCP_ctype_short_vector_dtor(ctype_wchar
*this, unsigned int flags
)
1587 return MSVCP_ctype_wchar_vector_dtor(this, flags
);
1590 /* ?_Donarrow@?$ctype@_W@std@@IBED_WD@Z */
1591 /* ?_Donarrow@?$ctype@_W@std@@IEBAD_WD@Z */
1592 /* ?_Donarrow@?$ctype@G@std@@IBEDGD@Z */
1593 /* ?_Donarrow@?$ctype@G@std@@IEBADGD@Z */
1594 DEFINE_THISCALL_WRAPPER(ctype_wchar__Donarrow
, 12)
1595 char __thiscall
ctype_wchar__Donarrow(const ctype_wchar
*this, wchar_t ch
, char dflt
)
1597 FIXME("(%p %d %d) stub\n", this, ch
, dflt
);
1601 /* ?do_narrow@?$ctype@_W@std@@MBED_WD@Z */
1602 /* ?do_narrow@?$ctype@_W@std@@MEBAD_WD@Z */
1603 /* ?do_narrow@?$ctype@G@std@@MBEDGD@Z */
1604 /* ?do_narrow@?$ctype@G@std@@MEBADGD@Z */
1605 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_narrow_ch
, 12)
1606 wchar_t __thiscall
ctype_wchar_do_narrow_ch(const ctype_wchar
*this, wchar_t ch
, char dflt
)
1608 FIXME("(%p %d %d) stub\n", this, ch
, dflt
);
1612 /* ?do_narrow@?$ctype@_W@std@@MBEPB_WPB_W0DPAD@Z */
1613 /* ?do_narrow@?$ctype@_W@std@@MEBAPEB_WPEB_W0DPEAD@Z */
1614 /* ?do_narrow@?$ctype@G@std@@MBEPBGPBG0DPAD@Z */
1615 /* ?do_narrow@?$ctype@G@std@@MEBAPEBGPEBG0DPEAD@Z */
1616 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_narrow
, 20)
1617 const wchar_t* __thiscall
ctype_wchar_do_narrow(const ctype_wchar
*this,
1618 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
)
1620 FIXME("(%p %p %p %d %p) stub\n", this, first
, last
, dflt
, dest
);
1624 /* ?_Do_narrow_s@?$ctype@_W@std@@MBEPB_WPB_W0DPADI@Z */
1625 /* ?_Do_narrow_s@?$ctype@_W@std@@MEBAPEB_WPEB_W0DPEAD_K@Z */
1626 /* ?_Do_narrow_s@?$ctype@G@std@@MBEPBGPBG0DPADI@Z */
1627 /* ?_Do_narrow_s@?$ctype@G@std@@MEBAPEBGPEBG0DPEAD_K@Z */
1628 DEFINE_THISCALL_WRAPPER(ctype_wchar__Do_narrow_s
, 24)
1629 const wchar_t* __thiscall
ctype_wchar__Do_narrow_s(const ctype_wchar
*this,
1630 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
, MSVCP_size_t size
)
1632 FIXME("(%p %p %p %d %p %lu) stub\n", this, first
, last
, dflt
, dest
, size
);
1636 /* ?narrow@?$ctype@_W@std@@QBED_WD@Z */
1637 /* ?narrow@?$ctype@_W@std@@QEBAD_WD@Z */
1638 /* ?narrow@?$ctype@G@std@@QBEDGD@Z */
1639 /* ?narrow@?$ctype@G@std@@QEBADGD@Z */
1640 DEFINE_THISCALL_WRAPPER(ctype_wchar_narrow_ch
, 12)
1641 char __thiscall
ctype_wchar_narrow_ch(const ctype_wchar
*this, wchar_t ch
, char dflt
)
1643 FIXME("(%p %d %d) stub\n", this, ch
, dflt
);
1647 /* ?narrow@?$ctype@_W@std@@QBEPB_WPB_W0DPAD@Z */
1648 /* ?narrow@?$ctype@_W@std@@QEBAPEB_WPEB_W0DPEAD@Z */
1649 /* ?narrow@?$ctype@G@std@@QBEPBGPBG0DPAD@Z */
1650 /* ?narrow@?$ctype@G@std@@QEBAPEBGPEBG0DPEAD@Z */
1651 DEFINE_THISCALL_WRAPPER(ctype_wchar_narrow
, 20)
1652 const wchar_t* __thiscall
ctype_wchar_narrow(const ctype_wchar
*this,
1653 const wchar_t *first
, const wchar_t *last
, char dflt
, char *dest
)
1655 FIXME("(%p %p %p %d %p) stub\n", this, first
, last
, dflt
, dest
);
1659 /* ?_Narrow_s@?$ctype@_W@std@@QBEPB_WPB_W0DPADI@Z */
1660 /* ?_Narrow_s@?$ctype@_W@std@@QEBAPEB_WPEB_W0DPEAD_K@Z */
1661 /* ?_Narrow_s@?$ctype@G@std@@QBEPBGPBG0DPADI@Z */
1662 /* ?_Narrow_s@?$ctype@G@std@@QEBAPEBGPEBG0DPEAD_K@Z */
1663 DEFINE_THISCALL_WRAPPER(ctype_wchar__Narrow_s
, 24)
1664 const wchar_t* __thiscall
ctype_wchar__Narrow_s(const ctype_wchar
*this, const wchar_t *first
,
1665 const wchar_t *last
, char dflt
, char *dest
, unsigned int size
)
1667 FIXME("(%p %p %p %d %p %d) stub\n", this, first
, last
, dflt
, dest
, size
);
1671 /* ?_Dowiden@?$ctype@_W@std@@IBE_WD@Z */
1672 /* ?_Dowiden@?$ctype@_W@std@@IEBA_WD@Z */
1673 /* ?_Dowiden@?$ctype@G@std@@IBEGD@Z */
1674 /* ?_Dowiden@?$ctype@G@std@@IEBAGD@Z */
1675 DEFINE_THISCALL_WRAPPER(ctype_wchar__Dowiden
, 8)
1676 wchar_t __thiscall
ctype_wchar__Dowiden(const ctype_wchar
*this, char ch
)
1678 FIXME("(%p %d) stub\n", this, ch
);
1682 /* ?do_widen@?$ctype@_W@std@@MBE_WD@Z */
1683 /* ?do_widen@?$ctype@_W@std@@MEBA_WD@Z */
1684 /* ?do_widen@?$ctype@G@std@@MBEGD@Z */
1685 /* ?do_widen@?$ctype@G@std@@MEBAGD@Z */
1686 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_widen_ch
, 8)
1687 wchar_t __thiscall
ctype_wchar_do_widen_ch(const ctype_wchar
*this, char ch
)
1689 FIXME("(%p %d) stub\n", this, ch
);
1693 /* ?do_widen@?$ctype@_W@std@@MBEPBDPBD0PA_W@Z */
1694 /* ?do_widen@?$ctype@_W@std@@MEBAPEBDPEBD0PEA_W@Z */
1695 /* ?do_widen@?$ctype@G@std@@MBEPBDPBD0PAG@Z */
1696 /* ?do_widen@?$ctype@G@std@@MEBAPEBDPEBD0PEAG@Z */
1697 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_widen
, 16)
1698 const char* __thiscall
ctype_wchar_do_widen(const ctype_wchar
*this,
1699 const char *first
, const char *last
, wchar_t *dest
)
1701 FIXME("(%p %p %p %p) stub\n", this, first
, last
, dest
);
1705 /* ?_Do_widen_s@?$ctype@_W@std@@MBEPBDPBD0PA_WI@Z */
1706 /* ?_Do_widen_s@?$ctype@_W@std@@MEBAPEBDPEBD0PEA_W_K@Z */
1707 /* ?_Do_widen_s@?$ctype@G@std@@MBEPBDPBD0PAGI@Z */
1708 /* ?_Do_widen_s@?$ctype@G@std@@MEBAPEBDPEBD0PEAG_K@Z */
1709 DEFINE_THISCALL_WRAPPER(ctype_wchar__Do_widen_s
, 20)
1710 const char* __thiscall
ctype_wchar__Do_widen_s(const ctype_wchar
*this,
1711 const char *first
, const char *last
, wchar_t *dest
, MSVCP_size_t size
)
1713 FIXME("(%p %p %p %p %lu) stub\n", this, first
, last
, dest
, size
);
1717 /* ?widen@?$ctype@_W@std@@QBE_WD@Z */
1718 /* ?widen@?$ctype@_W@std@@QEBA_WD@Z */
1719 /* ?widen@?$ctype@G@std@@QBEGD@Z */
1720 /* ?widen@?$ctype@G@std@@QEBAGD@Z */
1721 DEFINE_THISCALL_WRAPPER(ctype_wchar_widen_ch
, 8)
1722 wchar_t __thiscall
ctype_wchar_widen_ch(const ctype_wchar
*this, char ch
)
1724 FIXME("(%p %d) stub\n", this, ch
);
1728 /* ?widen@?$ctype@_W@std@@QBEPBDPBD0PA_W@Z */
1729 /* ?widen@?$ctype@_W@std@@QEBAPEBDPEBD0PEA_W@Z */
1730 /* ?widen@?$ctype@G@std@@QBEPBDPBD0PAG@Z */
1731 /* ?widen@?$ctype@G@std@@QEBAPEBDPEBD0PEAG@Z */
1732 DEFINE_THISCALL_WRAPPER(ctype_wchar_widen
, 16)
1733 const char* __thiscall
ctype_wchar_widen(const ctype_wchar
*this,
1734 const char *first
, const char *last
, wchar_t *dest
)
1736 FIXME("(%p %p %p %p) stub\n", this, first
, last
, dest
);
1740 /* ?_Widen_s@?$ctype@_W@std@@QBEPBDPBD0PA_WI@Z */
1741 /* ?_Widen_s@?$ctype@_W@std@@QEBAPEBDPEBD0PEA_W_K@Z */
1742 /* ?_Widen_s@?$ctype@G@std@@QBEPBDPBD0PAGI@Z */
1743 /* ?_Widen_s@?$ctype@G@std@@QEBAPEBDPEBD0PEAG_K@Z */
1744 DEFINE_THISCALL_WRAPPER(ctype_wchar__Widen_s
, 20)
1745 const char* __thiscall
ctype_wchar__Widen_s(const ctype_wchar
*this,
1746 const char *first
, const char *last
, wchar_t *dest
, MSVCP_size_t size
)
1748 FIXME("(%p %p %p %p %lu) stub\n", this, first
, last
, dest
, size
);
1752 /* ?_Getcat@?$ctype@_W@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1753 /* ?_Getcat@?$ctype@_W@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1754 /* ?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */
1755 /* ?_Getcat@?$ctype@G@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */
1756 MSVCP_size_t __cdecl
ctype_wchar__Getcat(const locale_facet
**facet
, const locale
*loc
)
1758 FIXME("(%p %p) stub\n", facet
, loc
);
1762 /* ?do_tolower@?$ctype@_W@std@@MBE_W_W@Z */
1763 /* ?do_tolower@?$ctype@_W@std@@MEBA_W_W@Z */
1764 /* ?do_tolower@?$ctype@G@std@@MBEGG@Z */
1765 /* ?do_tolower@?$ctype@G@std@@MEBAGG@Z */
1766 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_tolower_ch
, 8)
1767 char __thiscall
ctype_wchar_do_tolower_ch(const ctype_wchar
*this, wchar_t ch
)
1769 FIXME("(%p %d) stub\n", this, ch
);
1773 /* ?do_tolower@?$ctype@_W@std@@MBEPB_WPA_WPB_W@Z */
1774 /* ?do_tolower@?$ctype@_W@std@@MEBAPEB_WPEA_WPEB_W@Z */
1775 /* ?do_tolower@?$ctype@G@std@@MBEPBGPAGPBG@Z */
1776 /* ?do_tolower@?$ctype@G@std@@MEBAPEBGPEAGPEBG@Z */
1777 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_tolower
, 12)
1778 const wchar_t* __thiscall
ctype_wchar_do_tolower(const ctype_wchar
*this,
1779 wchar_t *first
, const wchar_t *last
)
1781 FIXME("(%p %p %p) stub\n", this, first
, last
);
1785 /* ?tolower@?$ctype@_W@std@@QBE_W_W@Z */
1786 /* ?tolower@?$ctype@_W@std@@QEBA_W_W@Z */
1787 /* ?tolower@?$ctype@G@std@@QBEGG@Z */
1788 /* ?tolower@?$ctype@G@std@@QEBAGG@Z */
1789 DEFINE_THISCALL_WRAPPER(ctype_wchar_tolower_ch
, 8)
1790 wchar_t __thiscall
ctype_wchar_tolower_ch(const ctype_wchar
*this, wchar_t ch
)
1792 FIXME("(%p %d) stub\n", this, ch
);
1796 /* ?tolower@?$ctype@_W@std@@QBEPB_WPA_WPB_W@Z */
1797 /* ?tolower@?$ctype@_W@std@@QEBAPEB_WPEA_WPEB_W@Z */
1798 /* ?tolower@?$ctype@G@std@@QBEPBGPAGPBG@Z */
1799 /* ?tolower@?$ctype@G@std@@QEBAPEBGPEAGPEBG@Z */
1800 DEFINE_THISCALL_WRAPPER(ctype_wchar_tolower
, 12)
1801 const wchar_t* __thiscall
ctype_wchar_tolower(const ctype_wchar
*this,
1802 wchar_t *first
, const wchar_t *last
)
1804 FIXME("(%p %p %p) stub\n", this, first
, last
);
1808 /* ?do_toupper@?$ctype@_W@std@@MBE_W_W@Z */
1809 /* ?do_toupper@?$ctype@_W@std@@MEBA_W_W@Z */
1810 /* ?do_toupper@?$ctype@G@std@@MBEGG@Z */
1811 /* ?do_toupper@?$ctype@G@std@@MEBAGG@Z */
1812 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_toupper_ch
, 8)
1813 wchar_t __thiscall
ctype_wchar_do_toupper_ch(const ctype_wchar
*this, wchar_t ch
)
1815 FIXME("(%p %d) stub\n", this, ch
);
1819 /* ?do_toupper@?$ctype@_W@std@@MBEPB_WPA_WPB_W@Z */
1820 /* ?do_toupper@?$ctype@_W@std@@MEBAPEB_WPEA_WPEB_W@Z */
1821 /* ?do_toupper@?$ctype@G@std@@MBEPBGPAGPBG@Z */
1822 /* ?do_toupper@?$ctype@G@std@@MEBAPEBGPEAGPEBG@Z */
1823 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_toupper
, 12)
1824 const wchar_t* __thiscall
ctype_wchar_do_toupper(const ctype_wchar
*this,
1825 wchar_t *first
, const wchar_t *last
)
1827 FIXME("(%p %p %p) stub\n", this, first
, last
);
1831 /* ?toupper@?$ctype@_W@std@@QBE_W_W@Z */
1832 /* ?toupper@?$ctype@_W@std@@QEBA_W_W@Z */
1833 /* ?toupper@?$ctype@G@std@@QBEGG@Z */
1834 /* ?toupper@?$ctype@G@std@@QEBAGG@Z */
1835 DEFINE_THISCALL_WRAPPER(ctype_wchar_toupper_ch
, 8)
1836 wchar_t __thiscall
ctype_wchar_toupper_ch(const ctype_wchar
*this, wchar_t ch
)
1838 FIXME("(%p %d) stub\n", this, ch
);
1842 /* ?toupper@?$ctype@_W@std@@QBEPB_WPA_WPB_W@Z */
1843 /* ?toupper@?$ctype@_W@std@@QEBAPEB_WPEA_WPEB_W@Z */
1844 /* ?toupper@?$ctype@G@std@@QBEPBGPAGPBG@Z */
1845 /* ?toupper@?$ctype@G@std@@QEBAPEBGPEAGPEBG@Z */
1846 DEFINE_THISCALL_WRAPPER(ctype_wchar_toupper
, 12)
1847 const wchar_t* __thiscall
ctype_wchar_toupper(const ctype_wchar
*this,
1848 wchar_t *first
, const wchar_t *last
)
1850 FIXME("(%p %p %p) stub\n", this, first
, last
);
1854 /* ?do_is@?$ctype@_W@std@@MBE_NF_W@Z */
1855 /* ?do_is@?$ctype@_W@std@@MEBA_NF_W@Z */
1856 /* ?do_is@?$ctype@G@std@@MBE_NFG@Z */
1857 /* ?do_is@?$ctype@G@std@@MEBA_NFG@Z */
1858 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_is_ch
, 12)
1859 MSVCP_bool __thiscall
ctype_wchar_do_is_ch(const ctype_wchar
*this, short mask
, wchar_t ch
)
1861 FIXME("(%p %x %d) stub\n", this, mask
, ch
);
1865 /* ?do_is@?$ctype@_W@std@@MBEPB_WPB_W0PAF@Z */
1866 /* ?do_is@?$ctype@_W@std@@MEBAPEB_WPEB_W0PEAF@Z */
1867 /* ?do_is@?$ctype@G@std@@MBEPBGPBG0PAF@Z */
1868 /* ?do_is@?$ctype@G@std@@MEBAPEBGPEBG0PEAF@Z */
1869 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_is
, 16)
1870 const wchar_t* __thiscall
ctype_wchar_do_is(const ctype_wchar
*this,
1871 const wchar_t *first
, const wchar_t *last
, short *dest
)
1873 FIXME("(%p %p %p %p) stub\n", this, first
, last
, dest
);
1877 /* ?is@?$ctype@_W@std@@QBE_NF_W@Z */
1878 /* ?is@?$ctype@_W@std@@QEBA_NF_W@Z */
1879 /* ?is@?$ctype@G@std@@QBE_NFG@Z */
1880 /* ?is@?$ctype@G@std@@QEBA_NFG@Z */
1881 DEFINE_THISCALL_WRAPPER(ctype_wchar_is_ch
, 12)
1882 MSVCP_bool __thiscall
ctype_wchar_is_ch(const ctype_wchar
*this, short mask
, wchar_t ch
)
1884 FIXME("(%p %x %d) stub\n", this, mask
, ch
);
1888 /* ?is@?$ctype@_W@std@@QBEPB_WPB_W0PAF@Z */
1889 /* ?is@?$ctype@_W@std@@QEBAPEB_WPEB_W0PEAF@Z */
1890 /* ?is@?$ctype@G@std@@QBEPBGPBG0PAF@Z */
1891 /* ?is@?$ctype@G@std@@QEBAPEBGPEBG0PEAF@Z */
1892 DEFINE_THISCALL_WRAPPER(ctype_wchar_is
, 16)
1893 const wchar_t* __thiscall
ctype_wchar_is(const ctype_wchar
*this,
1894 const wchar_t *first
, const wchar_t *last
, short *dest
)
1896 FIXME("(%p %p %p %p) stub\n", this, first
, last
, dest
);
1900 /* ?do_scan_is@?$ctype@_W@std@@MBEPB_WFPB_W0@Z */
1901 /* ?do_scan_is@?$ctype@_W@std@@MEBAPEB_WFPEB_W0@Z */
1902 /* ?do_scan_is@?$ctype@G@std@@MBEPBGFPBG0@Z */
1903 /* ?do_scan_is@?$ctype@G@std@@MEBAPEBGFPEBG0@Z */
1904 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_scan_is
, 16)
1905 const wchar_t* __thiscall
ctype_wchar_do_scan_is(const ctype_wchar
*this,
1906 short mask
, const wchar_t *first
, const wchar_t *last
)
1908 FIXME("(%p %d %p %p) stub\n", this, mask
, first
, last
);
1912 /* ?scan_is@?$ctype@_W@std@@QBEPB_WFPB_W0@Z */
1913 /* ?scan_is@?$ctype@_W@std@@QEBAPEB_WFPEB_W0@Z */
1914 /* ?scan_is@?$ctype@G@std@@QBEPBGFPBG0@Z */
1915 /* ?scan_is@?$ctype@G@std@@QEBAPEBGFPEBG0@Z */
1916 DEFINE_THISCALL_WRAPPER(ctype_wchar_scan_is
, 16)
1917 const wchar_t* __thiscall
ctype_wchar_scan_is(const ctype_wchar
*this,
1918 short mask
, const wchar_t *first
, const wchar_t *last
)
1920 FIXME("(%p %x %p %p) stub\n", this, mask
, first
, last
);
1924 /* ?do_scan_not@?$ctype@_W@std@@MBEPB_WFPB_W0@Z */
1925 /* ?do_scan_not@?$ctype@_W@std@@MEBAPEB_WFPEB_W0@Z */
1926 /* ?do_scan_not@?$ctype@G@std@@MBEPBGFPBG0@Z */
1927 /* ?do_scan_not@?$ctype@G@std@@MEBAPEBGFPEBG0@Z */
1928 DEFINE_THISCALL_WRAPPER(ctype_wchar_do_scan_not
, 16)
1929 const wchar_t* __thiscall
ctype_wchar_do_scan_not(const ctype_wchar
*this,
1930 short mask
, const wchar_t *first
, const wchar_t *last
)
1932 FIXME("(%p %x %p %p) stub\n", this, mask
, first
, last
);
1936 /* ?scan_not@?$ctype@_W@std@@QBEPB_WFPB_W0@Z */
1937 /* ?scan_not@?$ctype@_W@std@@QEBAPEB_WFPEB_W0@Z */
1938 /* ?scan_not@?$ctype@G@std@@QBEPBGFPBG0@Z */
1939 /* ?scan_not@?$ctype@G@std@@QEBAPEBGFPEBG0@Z */
1940 DEFINE_THISCALL_WRAPPER(ctype_wchar_scan_not
, 16)
1941 const wchar_t* __thiscall
ctype_wchar_scan_not(const ctype_wchar
*this,
1942 short mask
, const wchar_t *first
, const wchar_t *last
)
1944 FIXME("(%p %x %p %p) stub\n", this, mask
, first
, last
);
1948 /* ??0_Locimp@locale@std@@AAE@_N@Z */
1949 /* ??0_Locimp@locale@std@@AEAA@_N@Z */
1950 DEFINE_THISCALL_WRAPPER(locale__Locimp_ctor_transparent
, 8)
1951 locale__Locimp
* __thiscall
locale__Locimp_ctor_transparent(locale__Locimp
*this, MSVCP_bool transparent
)
1953 TRACE("(%p %d)\n", this, transparent
);
1955 memset(this, 0, sizeof(locale__Locimp
));
1956 locale_facet_ctor_refs(&this->facet
, 1);
1957 this->transparent
= transparent
;
1958 MSVCP_basic_string_char_ctor_cstr(&this->name
, "*");
1962 /* ??_F_Locimp@locale@std@@QAEXXZ */
1963 /* ??_F_Locimp@locale@std@@QEAAXXZ */
1964 DEFINE_THISCALL_WRAPPER(locale__Locimp_ctor
, 4)
1965 locale__Locimp
* __thiscall
locale__Locimp_ctor(locale__Locimp
*this)
1967 return locale__Locimp_ctor_transparent(this, FALSE
);
1970 /* ??0_Locimp@locale@std@@AAE@ABV012@@Z */
1971 /* ??0_Locimp@locale@std@@AEAA@AEBV012@@Z */
1972 DEFINE_THISCALL_WRAPPER(locale__Locimp_copy_ctor
, 8)
1973 locale__Locimp
* __thiscall
locale__Locimp_copy_ctor(locale__Locimp
*this, const locale__Locimp
*copy
)
1978 TRACE("(%p %p)\n", this, copy
);
1980 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
1981 memcpy(this, copy
, sizeof(locale__Locimp
));
1982 locale_facet_ctor_refs(&this->facet
, 1);
1983 if(copy
->facetvec
) {
1984 this->facetvec
= MSVCRT_operator_new(copy
->facet_cnt
*sizeof(locale_facet
*));
1985 if(!this->facetvec
) {
1986 _Lockit_dtor(&lock
);
1987 ERR("Out of memory\n");
1988 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
1991 for(i
=0; i
<this->facet_cnt
; i
++)
1992 if(this->facetvec
[i
])
1993 locale_facet__Incref(this->facetvec
[i
]);
1995 MSVCP_basic_string_char_copy_ctor(&this->name
, ©
->name
);
1996 _Lockit_dtor(&lock
);
2000 /* ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z */
2001 /* ?_Locimp_ctor@_Locimp@locale@std@@CAXPEAV123@AEBV123@@Z */
2002 locale__Locimp
* __cdecl
locale__Locimp__Locimp_ctor(locale__Locimp
*this, const locale__Locimp
*copy
)
2004 return locale__Locimp_copy_ctor(this, copy
);
2007 /* ??1_Locimp@locale@std@@MAE@XZ */
2008 /* ??1_Locimp@locale@std@@MEAA@XZ */
2009 DEFINE_THISCALL_WRAPPER(locale__Locimp_dtor
, 4)
2010 void __thiscall
locale__Locimp_dtor(locale__Locimp
*this)
2012 TRACE("(%p)\n", this);
2014 if(locale_facet__Decref(&this->facet
)) {
2016 for(i
=0; i
<this->facet_cnt
; i
++)
2017 if(this->facetvec
[i
] && locale_facet__Decref(this->facetvec
[i
]))
2018 call_locale_facet_vector_dtor(this->facetvec
[i
], 0);
2020 MSVCRT_operator_delete(this->facetvec
);
2021 MSVCP_basic_string_char_dtor(&this->name
);
2025 /* ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z */
2026 /* ?_Locimp_dtor@_Locimp@locale@std@@CAXPEAV123@@Z */
2027 void __cdecl
locale__Locimp__Locimp_dtor(locale__Locimp
*this)
2029 locale__Locimp_dtor(this);
2032 DEFINE_THISCALL_WRAPPER(MSVCP_locale__Locimp_vector_dtor
, 8)
2033 locale__Locimp
* __thiscall
MSVCP_locale__Locimp_vector_dtor(locale__Locimp
*this, unsigned int flags
)
2035 TRACE("(%p %x)\n", this, flags
);
2037 /* we have an array, with the number of elements stored before the first object */
2038 int i
, *ptr
= (int *)this-1;
2040 for(i
=*ptr
-1; i
>=0; i
--)
2041 locale__Locimp_dtor(this+i
);
2042 MSVCRT_operator_delete(ptr
);
2044 locale__Locimp_dtor(this);
2046 MSVCRT_operator_delete(this);
2052 /* ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z */
2053 /* ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z */
2054 void __cdecl
locale__Locimp__Locimp_Addfac(locale__Locimp
*locimp
, locale_facet
*facet
, MSVCP_size_t id
)
2058 TRACE("(%p %p %lu)\n", locimp
, facet
, id
);
2060 _Lockit_ctor_locktype(&lock
, _LOCK_LOCALE
);
2061 if(id
>= locimp
->facet_cnt
) {
2062 MSVCP_size_t new_size
= id
+1;
2063 locale_facet
**new_facetvec
;
2065 if(new_size
< locale_id__Id_cnt
+1)
2066 new_size
= locale_id__Id_cnt
+1;
2068 new_facetvec
= MSVCRT_operator_new(sizeof(locale_facet
*)*new_size
);
2070 _Lockit_dtor(&lock
);
2071 ERR("Out of memory\n");
2072 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2076 memset(new_facetvec
, 0, sizeof(locale_facet
*)*new_size
);
2077 memcpy(new_facetvec
, locimp
->facetvec
, sizeof(locale_facet
*)*locimp
->facet_cnt
);
2078 MSVCRT_operator_delete(locimp
->facetvec
);
2079 locimp
->facetvec
= new_facetvec
;
2080 locimp
->facet_cnt
= new_size
;
2083 if(locimp
->facetvec
[id
] && locale_facet__Decref(locimp
->facetvec
[id
]))
2084 call_locale_facet_vector_dtor(locimp
->facetvec
[id
], 0);
2086 locimp
->facetvec
[id
] = facet
;
2088 locale_facet__Incref(facet
);
2089 _Lockit_dtor(&lock
);
2092 /* ?_Addfac@_Locimp@locale@std@@AAEXPAVfacet@23@I@Z */
2093 /* ?_Addfac@_Locimp@locale@std@@AEAAXPEAVfacet@23@_K@Z */
2094 DEFINE_THISCALL_WRAPPER(locale__Locimp__Addfac
, 12)
2095 void __thiscall
locale__Locimp__Addfac(locale__Locimp
*this, locale_facet
*facet
, MSVCP_size_t id
)
2097 locale__Locimp__Locimp_Addfac(this, facet
, id
);
2100 /* ?_Clocptr_func@_Locimp@locale@std@@CAAAPAV123@XZ */
2101 /* ?_Clocptr_func@_Locimp@locale@std@@CAAEAPEAV123@XZ */
2102 locale__Locimp
** __cdecl
locale__Locimp__Clocptr_func(void)
2108 /* ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z */
2109 /* ?_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
2110 locale__Locimp
* __cdecl
locale__Locimp__Makeloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
2112 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
2116 /* ?_Makeushloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
2117 /* ?_Makeushloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
2118 void __cdecl
locale__Locimp__Makeushloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
2120 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
2123 /* ?_Makewloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
2124 /* ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
2125 void __cdecl
locale__Locimp__Makewloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
2127 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
2130 /* ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
2131 /* ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
2132 void __cdecl
locale__Locimp__Makexloc(const _Locinfo
*locinfo
, category cat
, locale__Locimp
*locimp
, const locale
*loc
)
2134 FIXME("(%p %d %p %p) stub\n", locinfo
, cat
, locimp
, loc
);
2137 /* ??_7_Locimp@locale@std@@6B@ */
2138 const vtable_ptr MSVCP_locale__Locimp_vtable
[] = {
2139 (vtable_ptr
)THISCALL_NAME(MSVCP_locale__Locimp_vector_dtor
)
2142 /* ??0locale@std@@AAE@PAV_Locimp@01@@Z */
2143 /* ??0locale@std@@AEAA@PEAV_Locimp@01@@Z */
2144 DEFINE_THISCALL_WRAPPER(locale_ctor_locimp
, 8)
2145 locale
* __thiscall
locale_ctor_locimp(locale
*this, locale__Locimp
*locimp
)
2147 TRACE("(%p %p)\n", this, locimp
);
2148 /* Don't change locimp reference counter */
2153 /* ??0locale@std@@QAE@ABV01@0H@Z */
2154 /* ??0locale@std@@QEAA@AEBV01@0H@Z */
2155 DEFINE_THISCALL_WRAPPER(locale_ctor_locale_locale
, 16)
2156 locale
* __thiscall
locale_ctor_locale_locale(locale
*this, const locale
*loc
, const locale
*other
, category cat
)
2158 FIXME("(%p %p %p %d) stub\n", this, loc
, other
, cat
);
2162 /* ??0locale@std@@QAE@ABV01@@Z */
2163 /* ??0locale@std@@QEAA@AEBV01@@Z */
2164 DEFINE_THISCALL_WRAPPER(locale_copy_ctor
, 8)
2165 locale
* __thiscall
locale_copy_ctor(locale
*this, const locale
*copy
)
2167 TRACE("(%p %p)\n", this, copy
);
2168 this->ptr
= copy
->ptr
;
2169 locale_facet__Incref(&this->ptr
->facet
);
2173 /* ??0locale@std@@QAE@ABV01@PBDH@Z */
2174 /* ??0locale@std@@QEAA@AEBV01@PEBDH@Z */
2175 DEFINE_THISCALL_WRAPPER(locale_ctor_locale_cstr
, 16)
2176 locale
* __thiscall
locale_ctor_locale_cstr(locale
*this, const locale
*loc
, const char *locname
, category cat
)
2178 FIXME("(%p %p %s %d) stub\n", this, loc
, locname
, cat
);
2182 /* ??0locale@std@@QAE@PBDH@Z */
2183 /* ??0locale@std@@QEAA@PEBDH@Z */
2184 DEFINE_THISCALL_WRAPPER(locale_ctor_cstr
, 12)
2185 locale
* __thiscall
locale_ctor_cstr(locale
*this, const char *locname
, category cat
)
2187 FIXME("(%p %s %d) stub\n", this, locname
, cat
);
2191 /* ??0locale@std@@QAE@W4_Uninitialized@1@@Z */
2192 /* ??0locale@std@@QEAA@W4_Uninitialized@1@@Z */
2193 DEFINE_THISCALL_WRAPPER(locale_ctor_uninitialized
, 8)
2194 locale
* __thiscall
locale_ctor_uninitialized(locale
*this, int uninitialized
)
2196 TRACE("(%p)\n", this);
2201 /* ??0locale@std@@QAE@XZ */
2202 /* ??0locale@std@@QEAA@XZ */
2203 DEFINE_THISCALL_WRAPPER(locale_ctor
, 4)
2204 locale
* __thiscall
locale_ctor(locale
*this)
2206 TRACE("(%p)\n", this);
2207 this->ptr
= MSVCRT_operator_new(sizeof(locale__Locimp
));
2209 ERR("Out of memory\n");
2210 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2214 locale__Locimp_ctor(this->ptr
);
2218 /* ??1locale@std@@QAE@XZ */
2219 /* ??1locale@std@@QEAA@XZ */
2220 DEFINE_THISCALL_WRAPPER(locale_dtor
, 4)
2221 void __thiscall
locale_dtor(locale
*this)
2223 TRACE("(%p)\n", this);
2225 locale__Locimp_dtor(this->ptr
);
2228 DEFINE_THISCALL_WRAPPER(MSVCP_locale_vector_dtor
, 8)
2229 locale
* __thiscall
MSVCP_locale_vector_dtor(locale
*this, unsigned int flags
)
2231 TRACE("(%p %x)\n", this, flags
);
2233 /* we have an array, with the number of elements stored before the first object */
2234 int i
, *ptr
= (int *)this-1;
2236 for(i
=*ptr
-1; i
>=0; i
--)
2237 locale_dtor(this+i
);
2238 MSVCRT_operator_delete(ptr
);
2242 MSVCRT_operator_delete(this);
2248 /* ??4locale@std@@QAEAAV01@ABV01@@Z */
2249 /* ??4locale@std@@QEAAAEAV01@AEBV01@@Z */
2250 DEFINE_THISCALL_WRAPPER(locale_operator_assign
, 8)
2251 locale
* __thiscall
locale_operator_assign(locale
*this, const locale
*loc
)
2253 FIXME("(%p %p) stub\n", this, loc
);
2257 /* ??8locale@std@@QBE_NABV01@@Z */
2258 /* ??8locale@std@@QEBA_NAEBV01@@Z */
2259 DEFINE_THISCALL_WRAPPER(locale_operator_equal
, 8)
2260 MSVCP_bool __thiscall
locale_operator_equal(const locale
*this, const locale
*loc
)
2262 FIXME("(%p %p) stub\n", this, loc
);
2266 /* ??9locale@std@@QBE_NABV01@@Z */
2267 /* ??9locale@std@@QEBA_NAEBV01@@Z */
2268 DEFINE_THISCALL_WRAPPER(locale_operator_not_equal
, 8)
2269 MSVCP_bool __thiscall
locale_operator_not_equal(const locale
*this, locale
const *loc
)
2271 FIXME("(%p %p) stub\n", this, loc
);
2275 /* ?_Addfac@locale@std@@QAEAAV12@PAVfacet@12@II@Z */
2276 /* ?_Addfac@locale@std@@QEAAAEAV12@PEAVfacet@12@_K1@Z */
2277 DEFINE_THISCALL_WRAPPER(locale__Addfac
, 16)
2278 locale
* __thiscall
locale__Addfac(locale
*this, locale_facet
*facet
, MSVCP_size_t id
, MSVCP_size_t catmask
)
2280 TRACE("(%p %p %lu %lu)\n", this, facet
, id
, catmask
);
2282 if(this->ptr
->facet
.refs
> 1) {
2283 locale__Locimp
*new_ptr
= MSVCRT_operator_new(sizeof(locale__Locimp
));
2285 ERR("Out of memory\n");
2286 throw_exception(EXCEPTION_BAD_ALLOC
, NULL
);
2289 locale__Locimp_copy_ctor(new_ptr
, this->ptr
);
2290 locale_facet__Decref(&this->ptr
->facet
);
2291 this->ptr
= new_ptr
;
2294 locale__Locimp__Addfac(this->ptr
, facet
, id
);
2297 MSVCP_basic_string_char_dtor(&this->ptr
->name
);
2298 MSVCP_basic_string_char_ctor_cstr(&this->ptr
->name
, "*");
2303 /* ?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z */
2304 /* ?_Getfacet@locale@std@@QEBAPEBVfacet@12@_K@Z */
2305 DEFINE_THISCALL_WRAPPER(locale__Getfacet
, 8)
2306 const locale_facet
* __thiscall
locale__Getfacet(const locale
*this, MSVCP_size_t id
)
2308 FIXME("(%p %lu) stub\n", this, id
);
2312 /* ?_Init@locale@std@@CAPAV_Locimp@12@XZ */
2313 /* ?_Init@locale@std@@CAPEAV_Locimp@12@XZ */
2314 locale__Locimp
* __cdecl
locale__Init(void)
2320 /* ?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ */
2321 /* ?_Getgloballocale@locale@std@@CAPEAV_Locimp@12@XZ */
2322 locale__Locimp
* __cdecl
locale__Getgloballocale(void)
2328 /* ?_Setgloballocale@locale@std@@CAXPAX@Z */
2329 /* ?_Setgloballocale@locale@std@@CAXPEAX@Z */
2330 void __cdecl
locale__Setgloballocale(void *locimp
)
2332 FIXME("(%p) stub\n", locimp
);
2335 /* ?classic@locale@std@@SAABV12@XZ */
2336 /* ?classic@locale@std@@SAAEBV12@XZ */
2337 const locale
* __cdecl
locale_classic(void)
2343 /* ?name@locale@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2344 /* ?name@locale@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
2345 DEFINE_THISCALL_WRAPPER_RETPTR(locale_name
, 4)
2346 basic_string_char __thiscall
locale_name(const locale
*this)
2348 TRACE( "(%p)\n", this);
2349 return this->ptr
->name
;
2352 static const rtti_base_descriptor locale_facet_rtti_base_descriptor
= {
2353 &locale_facet_type_info
,
2359 DEFINE_RTTI_DATA(collate_char
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@D@std@@");
2360 DEFINE_RTTI_DATA(collate_wchar
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@_W@std@@");
2361 DEFINE_RTTI_DATA(collate_short
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AV?$collate@G@std@@");
2362 DEFINE_RTTI_DATA(ctype_base
, 0, 1, &locale_facet_rtti_base_descriptor
, NULL
, NULL
, ".?AUctype_base@std@@");
2363 DEFINE_RTTI_DATA(ctype_char
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@D@std@@");
2364 DEFINE_RTTI_DATA(ctype_wchar
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@_W@std@@");
2365 DEFINE_RTTI_DATA(ctype_short
, 0, 2, &ctype_base_rtti_base_descriptor
, &locale_facet_rtti_base_descriptor
, NULL
, ".?AV?$ctype@G@std@@");
2368 void __asm_dummy_vtables(void) {
2370 __ASM_VTABLE(collate_char
,
2371 VTABLE_ADD_FUNC(collate_char_do_compare
)
2372 VTABLE_ADD_FUNC(collate_char_do_transform
)
2373 VTABLE_ADD_FUNC(collate_char_do_hash
));
2374 __ASM_VTABLE(collate_wchar
,
2375 VTABLE_ADD_FUNC(collate_wchar_do_compare
)
2376 VTABLE_ADD_FUNC(collate_wchar_do_transform
)
2377 VTABLE_ADD_FUNC(collate_wchar_do_hash
));
2378 __ASM_VTABLE(collate_short
,
2379 VTABLE_ADD_FUNC(collate_wchar_do_compare
)
2380 VTABLE_ADD_FUNC(collate_wchar_do_transform
)
2381 VTABLE_ADD_FUNC(collate_wchar_do_hash
));
2382 __ASM_VTABLE(ctype_base
, "");
2383 __ASM_VTABLE(ctype_char
,
2384 VTABLE_ADD_FUNC(ctype_char_do_tolower
)
2385 VTABLE_ADD_FUNC(ctype_char_do_tolower_ch
)
2386 VTABLE_ADD_FUNC(ctype_char_do_toupper
)
2387 VTABLE_ADD_FUNC(ctype_char_do_toupper_ch
)
2388 VTABLE_ADD_FUNC(ctype_char_do_widen
)
2389 VTABLE_ADD_FUNC(ctype_char_do_widen_ch
)
2390 VTABLE_ADD_FUNC(ctype_char__Do_widen_s
)
2391 VTABLE_ADD_FUNC(ctype_char_do_narrow
)
2392 VTABLE_ADD_FUNC(ctype_char_do_narrow_ch
)
2393 VTABLE_ADD_FUNC(ctype_char__Do_narrow_s
));
2394 __ASM_VTABLE(ctype_wchar
,
2395 VTABLE_ADD_FUNC(ctype_wchar_do_is
)
2396 VTABLE_ADD_FUNC(ctype_wchar_do_is_ch
)
2397 VTABLE_ADD_FUNC(ctype_wchar_do_scan_is
)
2398 VTABLE_ADD_FUNC(ctype_wchar_do_scan_not
)
2399 VTABLE_ADD_FUNC(ctype_wchar_do_tolower
)
2400 VTABLE_ADD_FUNC(ctype_wchar_do_tolower_ch
)
2401 VTABLE_ADD_FUNC(ctype_wchar_do_toupper
)
2402 VTABLE_ADD_FUNC(ctype_wchar_do_toupper_ch
)
2403 VTABLE_ADD_FUNC(ctype_wchar_do_widen
)
2404 VTABLE_ADD_FUNC(ctype_wchar_do_widen_ch
)
2405 VTABLE_ADD_FUNC(ctype_wchar__Do_widen_s
)
2406 VTABLE_ADD_FUNC(ctype_wchar_do_narrow
)
2407 VTABLE_ADD_FUNC(ctype_wchar_do_narrow_ch
)
2408 VTABLE_ADD_FUNC(ctype_wchar__Do_narrow_s
));
2409 __ASM_VTABLE(ctype_short
,
2410 VTABLE_ADD_FUNC(ctype_wchar_do_is
)
2411 VTABLE_ADD_FUNC(ctype_wchar_do_is_ch
)
2412 VTABLE_ADD_FUNC(ctype_wchar_do_scan_is
)
2413 VTABLE_ADD_FUNC(ctype_wchar_do_scan_not
)
2414 VTABLE_ADD_FUNC(ctype_wchar_do_tolower
)
2415 VTABLE_ADD_FUNC(ctype_wchar_do_tolower_ch
)
2416 VTABLE_ADD_FUNC(ctype_wchar_do_toupper
)
2417 VTABLE_ADD_FUNC(ctype_wchar_do_toupper_ch
)
2418 VTABLE_ADD_FUNC(ctype_wchar_do_widen
)
2419 VTABLE_ADD_FUNC(ctype_wchar_do_widen_ch
)
2420 VTABLE_ADD_FUNC(ctype_wchar__Do_widen_s
)
2421 VTABLE_ADD_FUNC(ctype_wchar_do_narrow
)
2422 VTABLE_ADD_FUNC(ctype_wchar_do_narrow_ch
)
2423 VTABLE_ADD_FUNC(ctype_wchar__Do_narrow_s
));