msvcp90: Add codecvt ctors and dtors

William Panlener wpanlener at gmail.com
Sun Apr 15 19:50:59 CDT 2012


---
 dlls/msvcp90/locale.c     |  362 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/msvcp90/msvcp90.h    |   18 +++
 dlls/msvcp90/msvcp90.spec |  110 +++++++-------
 3 files changed, 435 insertions(+), 55 deletions(-)

diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index 396f9ec..f659edd 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -88,6 +88,27 @@ typedef struct {
 } _Cvtvec;
 
 typedef struct {
+   locale_facet facet;
+   /* FIXME: type definition in standard but var here */
+   enum { ok, partial, error, noconv } result;
+} codecvt_base;
+
+typedef struct {
+   codecvt_base base;
+   /* FIXME: incomplete struct definition */
+} codecvt_char_char_mbstate;
+
+typedef struct {
+   codecvt_base base;
+   /* FIXME: incomplete struct definition */
+} codecvt_short_char_mbstate;
+
+typedef struct {
+   codecvt_base base;
+   /* FIXME: incomplete struct definition */
+} codecvt_wchar_char_mbstate;
+
+typedef struct {
     locale_facet facet;
     _Collvec coll;
 } collate;
@@ -664,6 +685,339 @@ _Timevec*__thiscall _Locinfo__Gettnames(const _Locinfo *this, _Timevec *ret)
     return ret;
 }
 
+/* FIXME: Potentially unused */
+/* ?id@?$codecvt at DDH@std@@2V0locale at 2@A */
+locale_id codecvt_char_char_mbstate_id = {0};
+
+/* ?id@?$codecvt at GDH@std@@2V0locale at 2@A */
+locale_id codecvt_short_char_mbstate_id = {0};
+
+/* ?id@?$codecvt at _WDH@std@@2V0locale at 2@A */
+locale_id codecvt_wchar_char_mbstate_id = {0};
+
+/* ??_7codecvt_base at std@@6B@ */
+extern const vtable_ptr MSVCP_codecvt_base_vtable;
+
+/* ??_7?$codecvt at DDH@std@@6B@ */
+extern const vtable_ptr MSVCP_codecvt_char_char_mbstate_vtable;
+
+/* ??_7?$codecvt at GDH@std@@6B@ */
+extern const vtable_ptr MSVCP_codecvt_short_char_mbstate_vtable;
+
+/* ??_7?$codecvt at _WDH@std@@6B@ */
+extern const vtable_ptr MSVCP_codecvt_wchar_char_mbstate_vtable;
+
+/* ?_Id_func@?$codecvt at GDH@std@@SAAAVid at locale@2 at XZ */
+/* ?_Id_func@?$codecvt at GDH@std@@SAAEAVid at locale@2 at XZ */
+locale_id* __cdecl codecvt_short_char_mbstate__Id_func(void)
+{
+    TRACE("()\n");
+    return &codecvt_short_char_mbstate_id;
+}
+
+/* ?_Id_func@?$codecvt at _WDH@std@@SAAAVid at locale@2 at XZ */
+/* ?_Id_func@?$codecvt at _WDH@std@@SAAEAVid at locale@2 at XZ */
+locale_id* __cdecl codecvt_wchar_char_mbstate__Id_func(void)
+{
+    TRACE("()\n");
+    return &codecvt_wchar_char_mbstate_id;
+}
+
+/* ?_Init@?$codecvt at DDH@std@@IAEXABV_Locinfo at 2@@Z */
+/* ?_Init@?$codecvt at DDH@std@@IEAAXAEBV_Locinfo at 2@@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_char_char_mbstate__Init, 8)
+void __thiscall codecvt_char_char_mbstate__Init(codecvt_char_char_mbstate *this, const _Locinfo *locinfo)
+{
+   FIXME("(%p %p): stub!\n", this, locinfo);
+}
+
+/* ?_Init@?$codecvt at GDH@std@@IAEXABV_Locinfo at 2@@Z */
+/* ?_Init@?$codecvt at GDH@std@@IEAAXAEBV_Locinfo at 2@@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_short_char_mbstate__Init, 8)
+void __thiscall codecvt_short_char_mbstate__Init(codecvt_short_char_mbstate *this, const _Locinfo *locinfo)
+{
+   FIXME("(%p %p): stub!\n", this, locinfo);
+}
+
+/* ?_Init@?$codecvt at _WDH@std@@IAEXABV_Locinfo at 2@@Z */
+/* ?_Init@?$codecvt at _WDH@std@@IEAAXAEBV_Locinfo at 2@@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_wchar_char_mbstate__Init, 8)
+void __thiscall codecvt_wchar_char_mbstate__Init(codecvt_wchar_char_mbstate *this, const _Locinfo *locinfo)
+{
+   FIXME("(%p %p): stub!\n", this, locinfo);
+}
+
+/* ??0codecvt_base at std@@QAE at I@Z */
+/* ??0codecvt_base at std@@QEAA at _K@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_base_ctor_refs, 8)
+codecvt_base* __thiscall codecvt_base_ctor_refs(codecvt_base *this, MSVCP_size_t refs)
+{
+    TRACE("(%p %lu)\n", this, refs);
+    locale_facet_ctor_refs(&this->facet, refs);
+    this->facet.vtable = &MSVCP_codecvt_base_vtable;
+    return this;
+}
+
+/* ??0?$codecvt at DDH@std@@QAE at I@Z */
+/* ??0?$codecvt at DDH@std@@QEAA at _K@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_char_char_mbstate_ctor_refs, 8)
+codecvt_char_char_mbstate* __thiscall codecvt_char_char_mbstate_ctor_refs(codecvt_char_char_mbstate *this, MSVCP_size_t refs)
+{
+    _Locinfo locinfo;
+
+    TRACE("(%p %lu)\n", this, refs);
+
+    codecvt_base_ctor_refs(&this->base, refs);
+    this->base.facet.vtable = &MSVCP_codecvt_char_char_mbstate_vtable;
+
+    _Locinfo_ctor(&locinfo);
+    codecvt_char_char_mbstate__Init(this, &locinfo);
+    _Locinfo_dtor(&locinfo);
+    return this;
+}
+
+/* ??0?$codecvt at GDH@std@@QAE at I@Z */
+/* ??0?$codecvt at DDH@std@@QEAA at _K@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_short_char_mbstate_ctor_refs, 8)
+codecvt_short_char_mbstate* __thiscall codecvt_short_char_mbstate_ctor_refs(codecvt_short_char_mbstate *this, MSVCP_size_t refs)
+{
+    _Locinfo locinfo;
+
+    TRACE("(%p %lu)\n", this, refs);
+
+    codecvt_base_ctor_refs(&this->base, refs);
+    this->base.facet.vtable = &MSVCP_codecvt_short_char_mbstate_vtable;
+
+    _Locinfo_ctor(&locinfo);
+    codecvt_short_char_mbstate__Init(this, &locinfo);
+    _Locinfo_dtor(&locinfo);
+    return this;
+}
+
+/* ??0?$codecvt at _WDH@std@@QAE at I@Z */
+/* ??0?$codecvt at _WDH@std@@QEAA at _K@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_wchar_char_mbstate_ctor_refs, 8)
+codecvt_wchar_char_mbstate* __thiscall codecvt_wchar_char_mbstate_ctor_refs(codecvt_wchar_char_mbstate *this, MSVCP_size_t refs)
+{
+    _Locinfo locinfo;
+
+    TRACE("(%p %lu)\n", this, refs);
+
+    codecvt_base_ctor_refs(&this->base, refs);
+    this->base.facet.vtable = &MSVCP_codecvt_wchar_char_mbstate_vtable;
+
+    _Locinfo_ctor(&locinfo);
+    codecvt_wchar_char_mbstate__Init(this, &locinfo);
+    _Locinfo_dtor(&locinfo);
+    return this;
+}
+
+/* ??0?$codecvt at GDH@std@@IAE at PBDI@Z */
+/* ??0?$codecvt at GDH@std@@IEAA at PEBD_K@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_short_char_mbstate_ctor_name, 12)
+codecvt_short_char_mbstate* __thiscall codecvt_short_char_mbstate_ctor_name(codecvt_short_char_mbstate *this, const char *name, MSVCP_size_t refs)
+{
+    _Locinfo locinfo;
+
+    TRACE("(%p %p %lu)\n", this, name, refs);
+
+    codecvt_base_ctor_refs(&this->base, refs);
+    this->base.facet.vtable = &MSVCP_codecvt_short_char_mbstate_vtable;
+
+    _Locinfo_ctor_cstr(&locinfo, name);
+    codecvt_short_char_mbstate__Init(this, &locinfo);
+    _Locinfo_dtor(&locinfo);
+    return this;
+}
+
+/* ??0?$codecvt at DDH@std@@QAE at ABV_Locinfo@1 at I@Z */
+/* ??0?$codecvt at DDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_char_char_mbstate_ctor_locinfo, 12)
+codecvt_char_char_mbstate* __thiscall codecvt_char_char_mbstate_ctor_locinfo(codecvt_char_char_mbstate *this, _Locinfo *locinfo, MSVCP_size_t refs)
+{
+    TRACE("(%p %p %lu)\n", this, locinfo, refs);
+    codecvt_base_ctor_refs(&this->base, refs);
+    this->base.facet.vtable = &MSVCP_codecvt_char_char_mbstate_vtable;
+    codecvt_char_char_mbstate__Init(this, locinfo);
+    return this;
+}
+
+/* ??0?$codecvt at GDH@std@@QAE at ABV_Locinfo@1 at I@Z */
+/* ??0?$codecvt at GDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_short_char_mbstate_ctor_locinfo, 12)
+codecvt_short_char_mbstate* __thiscall codecvt_short_char_mbstate_ctor_locinfo(codecvt_short_char_mbstate *this, _Locinfo *locinfo, MSVCP_size_t refs)
+{
+    TRACE("(%p %p %lu)\n", this, locinfo, refs);
+    codecvt_base_ctor_refs(&this->base, refs);
+    this->base.facet.vtable = &MSVCP_codecvt_short_char_mbstate_vtable;
+    codecvt_short_char_mbstate__Init(this, locinfo);
+    return this;
+}
+
+/* ??0?$codecvt at _WDH@std@@QAE at ABV_Locinfo@1 at I@Z */
+/* ??0?$codecvt at _WDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z */
+DEFINE_THISCALL_WRAPPER(codecvt_wchar_char_mbstate_ctor_locinfo, 12)
+codecvt_wchar_char_mbstate* __thiscall codecvt_wchar_char_mbstate_ctor_locinfo(codecvt_wchar_char_mbstate *this, _Locinfo *locinfo, MSVCP_size_t refs)
+{
+    TRACE("(%p %p %lu)\n", this, locinfo, refs);
+    codecvt_base_ctor_refs(&this->base, refs);
+    this->base.facet.vtable = &MSVCP_codecvt_wchar_char_mbstate_vtable;
+    codecvt_wchar_char_mbstate__Init(this, locinfo);
+    return this;
+}
+
+/* ??_Fcodecvt_base at std@@QAEXXZ */
+/* ??_Fcodecvt_base at std@@QEAAXXZ */
+DEFINE_THISCALL_WRAPPER(codecvt_base_ctor, 4)
+codecvt_base* __thiscall codecvt_base_ctor(codecvt_base *this)
+{
+    TRACE("(%p)\n", this);
+    return codecvt_base_ctor_refs(this, 0);
+}
+
+/* ??_F?$codecvt at DDH@std@@QAEXXZ */
+/* ??_F?$codecvt at DDH@std@@QEAAXXZ */
+DEFINE_THISCALL_WRAPPER(codecvt_char_char_mbstate_ctor, 4)
+codecvt_char_char_mbstate* __thiscall codecvt_char_char_mbstate_ctor(codecvt_char_char_mbstate *this)
+{
+    TRACE("(%p)\n", this);
+    return codecvt_char_char_mbstate_ctor_refs(this, 0);
+}
+
+/* ??_F?$codecvt at GDH@std@@QAEXXZ */
+/* ??_F?$codecvt at GDH@std@@QEAAXXZ */
+DEFINE_THISCALL_WRAPPER(codecvt_short_char_mbstate_ctor, 4)
+codecvt_short_char_mbstate* __thiscall codecvt_short_char_mbstate_ctor(codecvt_short_char_mbstate *this)
+{
+    TRACE("(%p)\n", this);
+    return codecvt_short_char_mbstate_ctor_refs(this, 0);
+}
+
+/* ??_F?$codecvt at _WDH@std@@QAEXXZ */
+/* ??_F?$codecvt at _WDH@std@@QEAAXXZ */
+DEFINE_THISCALL_WRAPPER(codecvt_wchar_char_mbstate_ctor, 4)
+codecvt_wchar_char_mbstate* __thiscall codecvt_wchar_char_mbstate_ctor(codecvt_wchar_char_mbstate *this)
+{
+    TRACE("(%p)\n", this);
+    return codecvt_wchar_char_mbstate_ctor_refs(this, 0);
+}
+
+/* ?_Getcat@?$codecvt at DDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
+/* ?_Getcat@?$codecvt at DDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
+MSVCP_size_t __cdecl codecvt_char_char_mbstate__Getcat(const locale_facet **facet, const locale *loc)
+{
+    TRACE("(%p %p)\n", facet, loc);
+
+    if(facet && !*facet) {
+        _Locinfo locinfo;
+
+        *facet = MSVCRT_operator_new(sizeof(codecvt_char_char_mbstate));
+        if(!*facet) {
+            ERR("Out of memory\n");
+            throw_exception(EXCEPTION_BAD_ALLOC, NULL);
+            return 0;
+        }
+
+        _Locinfo_ctor_cstr(&locinfo, MSVCP_basic_string_char_c_str(&loc->ptr->name));
+        codecvt_char_char_mbstate_ctor_locinfo((codecvt_char_char_mbstate*)*facet, &locinfo, 0);
+        _Locinfo_dtor(&locinfo);
+    }
+
+    return LC_CTYPE;
+}
+
+/* ?_Getcat@?$codecvt at GDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
+/* ?_Getcat@?$codecvt at GDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
+MSVCP_size_t __cdecl codecvt_short_char_mbstate__Getcat(const locale_facet **facet, const locale *loc)
+{
+    TRACE("(%p %p)\n", facet, loc);
+
+    if(facet && !*facet) {
+        _Locinfo locinfo;
+
+        *facet = MSVCRT_operator_new(sizeof(codecvt_short_char_mbstate));
+        if(!*facet) {
+            ERR("Out of memory\n");
+            throw_exception(EXCEPTION_BAD_ALLOC, NULL);
+            return 0;
+        }
+
+        _Locinfo_ctor_cstr(&locinfo, MSVCP_basic_string_char_c_str(&loc->ptr->name));
+        codecvt_short_char_mbstate_ctor_locinfo((codecvt_short_char_mbstate*)*facet, &locinfo, 0);
+        _Locinfo_dtor(&locinfo);
+    }
+
+    return LC_CTYPE;
+}
+
+/* ?_Getcat@?$codecvt at _WDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z */
+/* ?_Getcat@?$codecvt at _WDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z */
+MSVCP_size_t __cdecl codecvt_wchar_char_mbstate__Getcat(const locale_facet **facet, const locale *loc)
+{
+    TRACE("(%p %p)\n", facet, loc);
+
+    if(facet && !*facet) {
+        _Locinfo locinfo;
+
+        *facet = MSVCRT_operator_new(sizeof(codecvt_wchar_char_mbstate));
+        if(!*facet) {
+            ERR("Out of memory\n");
+            throw_exception(EXCEPTION_BAD_ALLOC, NULL);
+            return 0;
+        }
+
+        _Locinfo_ctor_cstr(&locinfo, MSVCP_basic_string_char_c_str(&loc->ptr->name));
+        codecvt_wchar_char_mbstate_ctor_locinfo((codecvt_wchar_char_mbstate*)*facet, &locinfo, 0);
+        _Locinfo_dtor(&locinfo);
+    }
+
+    return LC_CTYPE;
+}
+
+/* ??1codecvt_base at std@@UAE at XZ */
+/* ??1codecvt_base at std@@UEAA at XZ */
+DEFINE_THISCALL_WRAPPER(codecvt_base_dtor, 4)
+void __thiscall codecvt_base_dtor(codecvt_base *this)
+{
+    FIXME("(%p)\n stub!", this);
+    TRACE("(%p)\n", this);
+}
+
+/* ??1?$codecvt at DDH@std@@MAE at XZ */
+/* ??1?$codecvt at DDH@std@@MEAA at XZ */
+DEFINE_THISCALL_WRAPPER(codecvt_char_char_mbstate_dtor, 4)
+void __thiscall codecvt_char_char_mbstate_dtor(codecvt_char_char_mbstate *this)
+{
+    /*FIXME stub*/
+    codecvt_base_dtor(&this->base);
+    TRACE("(%p)\n", this);
+}
+
+/* ??1?$codecvt at GDH@std@@MAE at XZ */
+/* ??1?$codecvt at GDH@std@@MEAA at XZ */
+DEFINE_THISCALL_WRAPPER(codecvt_short_char_mbstate_dtor, 4)
+void __thiscall codecvt_short_char_mbstate_dtor(codecvt_short_char_mbstate *this)
+{
+    /*FIXME stub*/
+    codecvt_base_dtor(&this->base);
+    TRACE("(%p)\n", this);
+}
+
+/* ??1?$codecvt at _WDH@std@@MAE at XZ */
+/* ??1?$codecvt at _WDH@std@@MEAA at XZ */
+DEFINE_THISCALL_WRAPPER(codecvt_wchar_char_mbstate_dtor, 4)
+void __thiscall codecvt_wchar_char_mbstate_dtor(codecvt_wchar_char_mbstate *this)
+{
+    /*FIXME stub*/
+    codecvt_base_dtor(&this->base);
+    TRACE("(%p)\n", this);
+}
+
+MSVCP_VECTOR_DTOR(codecvt_base)
+MSVCP_VECTOR_DTOR(codecvt_short_char_mbstate)
+MSVCP_VECTOR_DTOR(codecvt_char_char_mbstate)
+MSVCP_VECTOR_DTOR(codecvt_wchar_char_mbstate)
+
 /* ?id@?$collate at D@std@@2V0locale at 2@A */
 locale_id collate_char_id = {0};
 
@@ -4216,6 +4570,10 @@ basic_string_char* __thiscall locale_name(const locale *this, basic_string_char
 }
 
 DEFINE_RTTI_DATA(locale_facet, 0, 0, NULL, NULL, NULL, ".?AVfacet at locale@std@@");
+DEFINE_RTTI_DATA(codecvt_base, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AV?$codecvt_base at std@@");
+DEFINE_RTTI_DATA(codecvt_char_char_mbstate, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, " ?AV?$codecvt at DDH@std@@");
+DEFINE_RTTI_DATA(codecvt_short_char_mbstate, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, " ?AV?$codecvt at GDH@std@@");
+DEFINE_RTTI_DATA(codecvt_wchar_char_mbstate, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AV?$codecvt at _WDH@std@@");
 DEFINE_RTTI_DATA(collate_char, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AV?$collate at D@std@@");
 DEFINE_RTTI_DATA(collate_wchar, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AV?$collate at _W@std@@");
 DEFINE_RTTI_DATA(collate_short, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NULL, ".?AV?$collate at G@std@@");
@@ -4234,6 +4592,10 @@ DEFINE_RTTI_DATA(num_get_short, 0, 1, &locale_facet_rtti_base_descriptor, NULL,
 void __asm_dummy_vtables(void) {
 #endif
     __ASM_VTABLE(locale_facet, "");
+    __ASM_VTABLE(codecvt_base, ""/*FIXME*/);
+    __ASM_VTABLE(codecvt_char_char_mbstate, ""/*FIXME*/);
+    __ASM_VTABLE(codecvt_short_char_mbstate, ""/*FIXME*/);
+    __ASM_VTABLE(codecvt_wchar_char_mbstate, ""/*FIXME*/);
     __ASM_VTABLE(collate_char,
             VTABLE_ADD_FUNC(collate_char_do_compare)
             VTABLE_ADD_FUNC(collate_char_do_transform)
diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h
index 1b40b55..0dbd3f6 100644
--- a/dlls/msvcp90/msvcp90.h
+++ b/dlls/msvcp90/msvcp90.h
@@ -119,6 +119,24 @@ const rtti_object_locator name ## _rtti = { \
     &name ## _hierarchy \
 }
 
+#define MSVCP_VECTOR_DTOR(type) \
+DEFINE_THISCALL_WRAPPER(MSVCP_ ## type ## _vector_dtor, 8) \
+type* __thiscall MSVCP_ ## type ## _vector_dtor(type* this, unsigned int flags) \
+{ \
+    TRACE("(%p %x)\n", this, flags); \
+    if(flags & 2) { \
+        int i, *ptr = (int *)this-1; \
+        for(i=*ptr-1; i>=0; i--) \
+            type ## _dtor(this+i); \
+        MSVCRT_operator_delete(ptr); \
+    } else { \
+        type ## _dtor(this); \
+        if(flags & 1) \
+            MSVCRT_operator_delete(this); \
+    } \
+    return this; \
+}
+
 #ifdef __i386__
 
 #define CALL_VTBL_FUNC(this, off, ret, type, args) ((ret (WINAPI*)type)&vtbl_wrapper_##off)args
diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index ff2f8c5..954afd5 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -834,20 +834,20 @@
 @ stub -arch=win64 ??0?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAA at AEBV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@1 at H@Z
 @ stub -arch=win32 ??0?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAE at H@Z
 @ stub -arch=win64 ??0?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAA at H@Z
-@ stub -arch=win32 ??0?$codecvt at DDH@std@@QAE at ABV_Locinfo@1 at I@Z
-@ stub -arch=win64 ??0?$codecvt at DDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z
-@ stub -arch=win32 ??0?$codecvt at DDH@std@@QAE at I@Z
-@ stub -arch=win64 ??0?$codecvt at DDH@std@@QEAA at _K@Z
-@ stub -arch=win32 ??0?$codecvt at GDH@std@@IAE at PBDI@Z
-@ stub -arch=win64 ??0?$codecvt at GDH@std@@IEAA at PEBD_K@Z
-@ stub -arch=win32 ??0?$codecvt at GDH@std@@QAE at ABV_Locinfo@1 at I@Z
-@ stub -arch=win64 ??0?$codecvt at GDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z
-@ stub -arch=win32 ??0?$codecvt at GDH@std@@QAE at I@Z
-@ stub -arch=win64 ??0?$codecvt at GDH@std@@QEAA at _K@Z
-@ stub -arch=win32 ??0?$codecvt at _WDH@std@@QAE at ABV_Locinfo@1 at I@Z
-@ stub -arch=win64 ??0?$codecvt at _WDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z
-@ stub -arch=win32 ??0?$codecvt at _WDH@std@@QAE at I@Z
-@ stub -arch=win64 ??0?$codecvt at _WDH@std@@QEAA at _K@Z
+@ thiscall -arch=win32 ??0?$codecvt at DDH@std@@QAE at ABV_Locinfo@1 at I@Z(ptr ptr long) codecvt_char_char_mbstate_ctor_locinfo
+@ cdecl -arch=win64 ??0?$codecvt at DDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z(ptr ptr long) codecvt_char_char_mbstate_ctor_locinfo
+@ thiscall -arch=win32 ??0?$codecvt at DDH@std@@QAE at I@Z(ptr long) codecvt_char_char_mbstate_ctor_refs
+@ cdecl -arch=win64 ??0?$codecvt at DDH@std@@QEAA at _K@Z(ptr long) codecvt_char_char_mbstate_ctor_refs
+@ thiscall -arch=win32 ??0?$codecvt at GDH@std@@IAE at PBDI@Z(ptr ptr long) codecvt_short_char_mbstate_ctor_name
+@ cdecl -arch=win64 ??0?$codecvt at GDH@std@@IEAA at PEBD_K@Z(ptr ptr long) codecvt_short_char_mbstate_ctor_name
+@ thiscall -arch=win32 ??0?$codecvt at GDH@std@@QAE at ABV_Locinfo@1 at I@Z(ptr ptr long) codecvt_short_char_mbstate_ctor_locinfo
+@ cdecl -arch=win64 ??0?$codecvt at GDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z(ptr ptr long) codecvt_short_char_mbstate_ctor_locinfo
+@ thiscall -arch=win32 ??0?$codecvt at GDH@std@@QAE at I@Z(ptr long) codecvt_short_char_mbstate_ctor_refs
+@ cdecl -arch=win64 ??0?$codecvt at GDH@std@@QEAA at _K@Z(ptr long) codecvt_short_char_mbstate_ctor_refs
+@ thiscall -arch=win32 ??0?$codecvt at _WDH@std@@QAE at ABV_Locinfo@1 at I@Z(ptr ptr long) codecvt_wchar_char_mbstate_ctor_locinfo
+@ cdecl -arch=win64 ??0?$codecvt at _WDH@std@@QEAA at AEBV_Locinfo@1 at _K@Z(ptr ptr long) codecvt_wchar_char_mbstate_ctor_locinfo
+@ thiscall -arch=win32 ??0?$codecvt at _WDH@std@@QAE at I@Z(ptr long) codecvt_wchar_char_mbstate_ctor_refs
+@ cdecl -arch=win64 ??0?$codecvt at _WDH@std@@QEAA at _K@Z(ptr long) codecvt_wchar_char_mbstate_ctor_refs
 @ thiscall -arch=win32 ??0?$collate at D@std@@IAE at PBDI@Z(ptr str long) collate_char_ctor_name
 @ cdecl -arch=win64 ??0?$collate at D@std@@IEAA at PEBD_K@Z(ptr str long) collate_char_ctor_name
 @ thiscall -arch=win32 ??0?$collate at D@std@@QAE at ABV_Locinfo@1 at I@Z(ptr ptr long) collate_char_ctor_locinfo
@@ -1092,8 +1092,8 @@
 @ stub -arch=win64 ??0_UShinit at std@@QEAA at XZ
 @ stub -arch=win32 ??0_Winit at std@@QAE at XZ
 @ stub -arch=win64 ??0_Winit at std@@QEAA at XZ
-@ stub -arch=win32 ??0codecvt_base at std@@QAE at I@Z
-@ stub -arch=win64 ??0codecvt_base at std@@QEAA at _K@Z
+@ thiscall -arch=win32 ??0codecvt_base at std@@QAE at I@Z(ptr long) codecvt_base_ctor_refs
+@ cdecl -arch=win64 ??0codecvt_base at std@@QEAA at _K@Z(ptr long) codecvt_base_ctor_refs
 @ thiscall -arch=win32 ??0ctype_base at std@@QAE at I@Z(ptr long) ctype_base_ctor_refs
 @ cdecl -arch=win64 ??0ctype_base at std@@QEAA at _K@Z(ptr long) ctype_base_ctor_refs
 @ thiscall -arch=win32 ??0facet at locale@std@@IAE at I@Z(ptr long) locale_facet_ctor_refs
@@ -1230,12 +1230,12 @@
 @ stub -arch=win64 ??1?$basic_stringstream at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@UEAA at XZ
 @ stub -arch=win32 ??1?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@UAE at XZ
 @ stub -arch=win64 ??1?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@UEAA at XZ
-@ stub -arch=win32 ??1?$codecvt at DDH@std@@MAE at XZ
-@ stub -arch=win64 ??1?$codecvt at DDH@std@@MEAA at XZ
-@ stub -arch=win32 ??1?$codecvt at GDH@std@@MAE at XZ
-@ stub -arch=win64 ??1?$codecvt at GDH@std@@MEAA at XZ
-@ stub -arch=win32 ??1?$codecvt at _WDH@std@@MAE at XZ
-@ stub -arch=win64 ??1?$codecvt at _WDH@std@@MEAA at XZ
+@ thiscall -arch=win32 ??1?$codecvt at DDH@std@@MAE at XZ(ptr) codecvt_char_char_mbstate_dtor
+@ cdecl -arch=win64 ??1?$codecvt at DDH@std@@MEAA at XZ(ptr) codecvt_char_char_mbstate_dtor
+@ thiscall -arch=win32 ??1?$codecvt at GDH@std@@MAE at XZ(ptr) codecvt_short_char_mbstate_dtor
+@ cdecl -arch=win64 ??1?$codecvt at GDH@std@@MEAA at XZ(ptr) codecvt_short_char_mbstate_dtor
+@ thiscall -arch=win32 ??1?$codecvt at _WDH@std@@MAE at XZ(ptr) codecvt_wchar_char_mbstate_dtor
+@ cdecl -arch=win64 ??1?$codecvt at _WDH@std@@MEAA at XZ(ptr) codecvt_wchar_char_mbstate_dtor
 @ thiscall -arch=win32 ??1?$collate at D@std@@MAE at XZ(ptr) collate_char_dtor
 @ cdecl -arch=win64 ??1?$collate at D@std@@MEAA at XZ(ptr) collate_char_dtor
 @ thiscall -arch=win32 ??1?$collate at G@std@@MAE at XZ(ptr) collate_wchar_dtor
@@ -1326,8 +1326,8 @@
 @ stub -arch=win64 ??1_UShinit at std@@QEAA at XZ
 @ stub -arch=win32 ??1_Winit at std@@QAE at XZ
 @ stub -arch=win64 ??1_Winit at std@@QEAA at XZ
-@ stub -arch=win32 ??1codecvt_base at std@@UAE at XZ
-@ stub -arch=win64 ??1codecvt_base at std@@UEAA at XZ
+@ thiscall -arch=win32 ??1codecvt_base at std@@UAE at XZ(ptr) codecvt_base_dtor
+@ cdecl -arch=win64 ??1codecvt_base at std@@UEAA at XZ(ptr) codecvt_base_dtor
 @ thiscall -arch=win32 ??1ctype_base at std@@UAE at XZ(ptr) ctype_base_dtor
 @ cdecl -arch=win64 ??1ctype_base at std@@UEAA at XZ(ptr) ctype_base_dtor
 @ thiscall -arch=win32 ??1facet at locale@std@@UAE at XZ(ptr) locale_facet_dtor
@@ -1818,9 +1818,9 @@
 # extern ??_7?$basic_stringstream at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@6B@
 # extern ??_7?$basic_stringstream at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@6B@
 # extern ??_7?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@6B@
-# extern ??_7?$codecvt at DDH@std@@6B@
-# extern ??_7?$codecvt at GDH@std@@6B@
-# extern ??_7?$codecvt at _WDH@std@@6B@
+@ extern ??_7?$codecvt at DDH@std@@6B@ MSVCP_codecvt_char_char_mbstate_vtable
+@ extern ??_7?$codecvt at GDH@std@@6B@ MSVCP_codecvt_short_char_mbstate_vtable
+@ extern ??_7?$codecvt at _WDH@std@@6B@ MSVCP_codecvt_wchar_char_mbstate_vtable
 @ extern ??_7?$collate at D@std@@6B@ MSVCP_collate_char_vtable
 @ extern ??_7?$collate at G@std@@6B@ MSVCP_collate_short_vtable
 @ extern ??_7?$collate at _W@std@@6B@ MSVCP_collate_wchar_vtable
@@ -1858,7 +1858,7 @@
 # extern ??_7?$time_put at GV?$ostreambuf_iterator at GU?$char_traits at G@std@@@std@@@std@@6B@
 # extern ??_7?$time_put at _WV?$ostreambuf_iterator at _WU?$char_traits at _W@std@@@std@@@std@@6B@
 @ extern ??_7_Locimp at locale@std@@6B@ MSVCP_locale__Locimp_vtable
-# extern ??_7codecvt_base at std@@6B@
+@ extern ??_7codecvt_base at std@@6B@ MSVCP_codecvt_base_vtable
 @ extern ??_7ctype_base at std@@6B@ MSVCP_ctype_base_vtable
 @ extern ??_7ios_base at std@@6B@ MSVCP_ios_base_vtable
 # extern ??_7messages_base at std@@6B@
@@ -1991,12 +1991,12 @@
 @ stub -arch=win64 ??_F?$basic_stringstream at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEAAXXZ
 @ stub -arch=win32 ??_F?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXXZ
 @ stub -arch=win64 ??_F?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAXXZ
-@ stub -arch=win32 ??_F?$codecvt at DDH@std@@QAEXXZ
-@ stub -arch=win64 ??_F?$codecvt at DDH@std@@QEAAXXZ
-@ stub -arch=win32 ??_F?$codecvt at GDH@std@@QAEXXZ
-@ stub -arch=win64 ??_F?$codecvt at GDH@std@@QEAAXXZ
-@ stub -arch=win32 ??_F?$codecvt at _WDH@std@@QAEXXZ
-@ stub -arch=win64 ??_F?$codecvt at _WDH@std@@QEAAXXZ
+@ thiscall -arch=win32 ??_F?$codecvt at DDH@std@@QAEXXZ(ptr) codecvt_char_char_mbstate_ctor
+@ cdecl -arch=win64 ??_F?$codecvt at DDH@std@@QEAAXXZ(ptr) codecvt_char_char_mbstate_ctor
+@ thiscall -arch=win32 ??_F?$codecvt at GDH@std@@QAEXXZ(ptr) codecvt_short_char_mbstate_ctor
+@ cdecl -arch=win64 ??_F?$codecvt at GDH@std@@QEAAXXZ(ptr) codecvt_short_char_mbstate_ctor
+@ thiscall -arch=win32 ??_F?$codecvt at _WDH@std@@QAEXXZ(ptr) codecvt_wchar_char_mbstate_ctor
+@ cdecl -arch=win64 ??_F?$codecvt at _WDH@std@@QEAAXXZ(ptr) codecvt_wchar_char_mbstate_ctor
 @ thiscall -arch=win32 ??_F?$collate at D@std@@QAEXXZ(ptr) collate_char_ctor
 @ cdecl -arch=win64 ??_F?$collate at D@std@@QEAAXXZ(ptr) collate_char_ctor
 @ thiscall -arch=win32 ??_F?$collate at G@std@@QAEXXZ(ptr) collate_short_ctor
@@ -2081,8 +2081,8 @@
 @ cdecl -arch=win64 ??_F_Locinfo at std@@QEAAXXZ(ptr) _Locinfo_ctor
 @ thiscall -arch=win32 ??_F_Timevec at std@@QAEXXZ(ptr) _Timevec_ctor
 @ cdecl -arch=win64 ??_F_Timevec at std@@QEAAXXZ(ptr) _Timevec_ctor
-@ stub -arch=win32 ??_Fcodecvt_base at std@@QAEXXZ
-@ stub -arch=win64 ??_Fcodecvt_base at std@@QEAAXXZ
+@ thiscall -arch=win32 ??_Fcodecvt_base at std@@QAEXXZ(ptr) codecvt_base_ctor
+@ cdecl -arch=win64 ??_Fcodecvt_base at std@@QEAAXXZ(ptr) codecvt_base_ctor
 @ thiscall -arch=win32 ??_Fctype_base at std@@QAEXXZ(ptr) ctype_base_ctor
 @ cdecl -arch=win64 ??_Fctype_base at std@@QEAAXXZ(ptr) ctype_base_ctor
 @ thiscall -arch=win32 ??_Ffacet at locale@std@@QAEXXZ(ptr) locale_facet_ctor
@@ -2221,12 +2221,12 @@
 @ extern ?_Fpz at std@@3_JA std_Fpz
 @ cdecl -arch=win32 ?_Fpz_func at std@@YAAA_JXZ() std_Fpz_func
 @ cdecl -arch=win64 ?_Fpz_func at std@@YAAEA_JXZ() std_Fpz_func
-@ stub -arch=win32 ?_Getcat@?$codecvt at DDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z
-@ stub -arch=win64 ?_Getcat@?$codecvt at DDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z
-@ stub -arch=win32 ?_Getcat@?$codecvt at GDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z
-@ stub -arch=win64 ?_Getcat@?$codecvt at GDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z
-@ stub -arch=win32 ?_Getcat@?$codecvt at _WDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z
-@ stub -arch=win64 ?_Getcat@?$codecvt at _WDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z
+@ cdecl -arch=win32 ?_Getcat@?$codecvt at DDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) codecvt_char_char_mbstate__Getcat
+@ cdecl -arch=win64 ?_Getcat@?$codecvt at DDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) codecvt_char_char_mbstate__Getcat
+@ cdecl -arch=win32 ?_Getcat@?$codecvt at GDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) codecvt_short_char_mbstate__Getcat
+@ cdecl -arch=win64 ?_Getcat@?$codecvt at GDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) codecvt_short_char_mbstate__Getcat
+@ cdecl -arch=win32 ?_Getcat@?$codecvt at _WDH@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) codecvt_wchar_char_mbstate__Getcat
+@ cdecl -arch=win64 ?_Getcat@?$codecvt at _WDH@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) codecvt_wchar_char_mbstate__Getcat
 @ cdecl -arch=win32 ?_Getcat@?$collate at D@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) collate_char__Getcat
 @ cdecl -arch=win64 ?_Getcat@?$collate at D@std@@SA_KPEAPEBVfacet at locale@2 at PEBV42@@Z(ptr ptr) collate_char__Getcat
 @ cdecl -arch=win32 ?_Getcat@?$collate at G@std@@SAIPAPBVfacet at locale@2 at PBV42@@Z(ptr ptr) collate_short__Getcat
@@ -2404,10 +2404,10 @@
 @ extern ?_Id_cnt at id@locale at std@@0HA locale_id__Id_cnt
 @ cdecl -arch=win32 ?_Id_cnt_func at id@locale at std@@CAAAHXZ() locale_id__Id_cnt_func
 @ cdecl -arch=win64 ?_Id_cnt_func at id@locale at std@@CAAEAHXZ() locale_id__Id_cnt_func
-@ stub -arch=win32 ?_Id_func@?$codecvt at GDH@std@@SAAAVid at locale@2 at XZ
-@ stub -arch=win64 ?_Id_func@?$codecvt at GDH@std@@SAAEAVid at locale@2 at XZ
-@ stub -arch=win32 ?_Id_func@?$codecvt at _WDH@std@@SAAAVid at locale@2 at XZ
-@ stub -arch=win64 ?_Id_func@?$codecvt at _WDH@std@@SAAEAVid at locale@2 at XZ
+@ cdecl -arch=win32 ?_Id_func@?$codecvt at GDH@std@@SAAAVid at locale@2 at XZ() codecvt_short_char_mbstate__Id_func
+@ cdecl -arch=win64 ?_Id_func@?$codecvt at GDH@std@@SAAEAVid at locale@2 at XZ() codecvt_short_char_mbstate__Id_func
+@ cdecl -arch=win32 ?_Id_func@?$codecvt at _WDH@std@@SAAAVid at locale@2 at XZ() codecvt_wchar_char_mbstate__Id_func
+@ cdecl -arch=win64 ?_Id_func@?$codecvt at _WDH@std@@SAAEAVid at locale@2 at XZ() codecvt_wchar_char_mbstate__Id_func
 @ cdecl -arch=win32 ?_Id_func@?$ctype at D@std@@SAAAVid at locale@2 at XZ() ctype_char__Id_func
 @ cdecl -arch=win64 ?_Id_func@?$ctype at D@std@@SAAEAVid at locale@2 at XZ() ctype_char__Id_func
 @ cdecl -arch=win32 ?_Id_func@?$ctype at G@std@@SAAAVid at locale@2 at XZ() ctype_short__Id_func
@@ -2458,12 +2458,12 @@
 @ stub -arch=win64 ?_Init@?$basic_stringbuf at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@IEAAXPEBG_KH at Z
 @ stub -arch=win32 ?_Init@?$basic_stringbuf at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@IAEXPB_WIH at Z
 @ stub -arch=win64 ?_Init@?$basic_stringbuf at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@IEAAXPEB_W_KH at Z
-@ stub -arch=win32 ?_Init@?$codecvt at DDH@std@@IAEXABV_Locinfo at 2@@Z
-@ stub -arch=win64 ?_Init@?$codecvt at DDH@std@@IEAAXAEBV_Locinfo at 2@@Z
-@ stub -arch=win32 ?_Init@?$codecvt at GDH@std@@IAEXABV_Locinfo at 2@@Z
-@ stub -arch=win64 ?_Init@?$codecvt at GDH@std@@IEAAXAEBV_Locinfo at 2@@Z
-@ stub -arch=win32 ?_Init@?$codecvt at _WDH@std@@IAEXABV_Locinfo at 2@@Z
-@ stub -arch=win64 ?_Init@?$codecvt at _WDH@std@@IEAAXAEBV_Locinfo at 2@@Z
+@ thiscall -arch=win32 ?_Init@?$codecvt at DDH@std@@IAEXABV_Locinfo at 2@@Z(ptr ptr) codecvt_char_char_mbstate__Init
+@ cdecl -arch=win64 ?_Init@?$codecvt at DDH@std@@IEAAXAEBV_Locinfo at 2@@Z(ptr ptr) codecvt_char_char_mbstate__Init
+@ thiscall -arch=win32 ?_Init@?$codecvt at GDH@std@@IAEXABV_Locinfo at 2@@Z(ptr ptr) codecvt_short_char_mbstate__Init
+@ cdecl -arch=win64 ?_Init@?$codecvt at GDH@std@@IEAAXAEBV_Locinfo at 2@@Z(ptr ptr) codecvt_short_char_mbstate__Init
+@ thiscall -arch=win32 ?_Init@?$codecvt at _WDH@std@@IAEXABV_Locinfo at 2@@Z(ptr ptr) codecvt_wchar_char_mbstate__Init
+@ cdecl -arch=win64 ?_Init@?$codecvt at _WDH@std@@IEAAXAEBV_Locinfo at 2@@Z(ptr ptr) codecvt_wchar_char_mbstate__Init
 @ thiscall -arch=win32 ?_Init@?$collate at D@std@@IAEXABV_Locinfo at 2@@Z(ptr ptr) collate_char__Init
 @ cdecl -arch=win64 ?_Init@?$collate at D@std@@IEAAXAEBV_Locinfo at 2@@Z(ptr ptr) collate_char__Init
 @ thiscall -arch=win32 ?_Init@?$collate at G@std@@IAEXABV_Locinfo at 2@@Z(ptr ptr) collate_wchar__Init
@@ -4193,9 +4193,9 @@
 @ cdecl -arch=win64 ?hash@?$collate at G@std@@QEBAJPEBG0 at Z(ptr ptr ptr) collate_wchar_hash
 @ thiscall -arch=win32 ?hash@?$collate at _W@std@@QBEJPB_W0 at Z(ptr ptr ptr) collate_wchar_hash
 @ cdecl -arch=win64 ?hash@?$collate at _W@std@@QEBAJPEB_W0 at Z(ptr ptr ptr) collate_wchar_hash
-# extern ?id@?$codecvt at DDH@std@@2V0locale at 2@A
-# extern ?id@?$codecvt at GDH@std@@2V0locale at 2@A
-# extern ?id@?$codecvt at _WDH@std@@2V0locale at 2@A
+@ extern ?id@?$codecvt at DDH@std@@2V0locale at 2@A codecvt_char_char_mbstate_id
+@ extern ?id@?$codecvt at GDH@std@@2V0locale at 2@A codecvt_short_char_mbstate_id
+@ extern ?id@?$codecvt at _WDH@std@@2V0locale at 2@A codecvt_wchar_char_mbstate_id
 @ extern ?id@?$collate at D@std@@2V0locale at 2@A collate_char_id
 @ extern ?id@?$collate at G@std@@2V0locale at 2@A collate_short_id
 @ extern ?id@?$collate at _W@std@@2V0locale at 2@A collate_wchar_id
-- 
1.7.9.5




More information about the wine-patches mailing list