From 08280758dd84a7bfac239371896201b65c0b06ef Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 27 Nov 2012 21:12:04 +0000 Subject: [PATCH] msvcp60: Added locale::_Getfacet export. --- dlls/msvcp60/locale.c | 42 ++++++++++++++++++++------------------- dlls/msvcp60/msvcp60.spec | 4 ++-- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/dlls/msvcp60/locale.c b/dlls/msvcp60/locale.c index f225b4d6641..d6bd5425284 100644 --- a/dlls/msvcp60/locale.c +++ b/dlls/msvcp60/locale.c @@ -42,7 +42,7 @@ char* __cdecl _Getmonths(void); void* __cdecl _Gettnames(void); unsigned int __cdecl ___lc_codepage_func(void); LCID* __cdecl ___lc_handle_func(void); -static const locale_facet* locale__Getfacet(const locale*, MSVCP_size_t); +const locale_facet* __thiscall locale__Getfacet(const locale*, MSVCP_size_t, MSVCP_bool); typedef int category; @@ -1318,7 +1318,7 @@ ctype_char* ctype_char_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&ctype_char_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&ctype_char_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (ctype_char*)fac; @@ -1965,7 +1965,7 @@ ctype_wchar* ctype_wchar_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&ctype_wchar_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&ctype_wchar_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (ctype_wchar*)fac; @@ -1993,7 +1993,7 @@ ctype_wchar* ctype_short_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&ctype_short_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&ctype_short_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (ctype_wchar*)fac; @@ -2460,7 +2460,7 @@ codecvt_char* codecvt_char_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&codecvt_char_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&codecvt_char_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (codecvt_char*)fac; @@ -2698,7 +2698,7 @@ static codecvt_wchar* codecvt_wchar_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&codecvt_wchar_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&codecvt_wchar_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (codecvt_wchar*)fac; @@ -2750,7 +2750,7 @@ codecvt_wchar* codecvt_short_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&codecvt_short_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&codecvt_short_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (codecvt_wchar*)fac; @@ -3120,7 +3120,7 @@ static numpunct_char* numpunct_char_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&numpunct_char_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&numpunct_char_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (numpunct_char*)fac; @@ -3456,7 +3456,7 @@ static numpunct_wchar* numpunct_wchar_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&numpunct_wchar_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&numpunct_wchar_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (numpunct_wchar*)fac; @@ -3504,7 +3504,7 @@ static numpunct_wchar* numpunct_short_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&numpunct_short_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&numpunct_short_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (numpunct_wchar*)fac; @@ -3866,7 +3866,7 @@ static num_get* num_get_wchar_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_get_wchar_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_get_wchar_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (num_get*)fac; @@ -3906,7 +3906,7 @@ num_get* num_get_short_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_get_short_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_get_short_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (num_get*)fac; @@ -4878,7 +4878,7 @@ num_get* num_get_char_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_get_char_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_get_char_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (num_get*)fac; @@ -5632,7 +5632,7 @@ num_put* num_put_char_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_put_char_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_put_char_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (num_put*)fac; @@ -6242,7 +6242,7 @@ static num_put* num_put_wchar_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_put_wchar_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_put_wchar_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (num_put*)fac; @@ -6270,7 +6270,7 @@ num_put* num_put_short_use_facet(const locale *loc) const locale_facet *fac; _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); - fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_put_short_id)); + fac = locale__Getfacet(loc, locale_id_operator_size_t(&num_put_short_id), TRUE); if(fac) { _Lockit_dtor(&lock); return (num_put*)fac; @@ -7559,16 +7559,18 @@ locale* __thiscall locale__Addfac(locale *this, locale_facet *facet, MSVCP_size_ return this; } -/* ?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z */ -/* ?_Getfacet@locale@std@@QEBAPEBVfacet@12@_K@Z */ -static const locale_facet* locale__Getfacet(const locale *this, MSVCP_size_t id) +/* ?_Getfacet@locale@std@@QBEPBVfacet@12@I_N@Z */ +/* ?_Getfacet@locale@std@@QEBAPEBVfacet@12@_K_N@Z */ +DEFINE_THISCALL_WRAPPER(locale__Getfacet, 12) +const locale_facet* __thiscall locale__Getfacet(const locale *this, + MSVCP_size_t id, MSVCP_bool allow_transparent) { locale_facet *fac; TRACE("(%p %lu)\n", this, id); fac = id < this->ptr->facet_cnt ? this->ptr->facetvec[id] : NULL; - if(fac || !this->ptr->transparent) + if(fac || !this->ptr->transparent || !allow_transparent) return fac; return id < global_locale->facet_cnt ? global_locale->facetvec[id] : NULL; diff --git a/dlls/msvcp60/msvcp60.spec b/dlls/msvcp60/msvcp60.spec index 121cf117df6..6e8bddd92e1 100644 --- a/dlls/msvcp60/msvcp60.spec +++ b/dlls/msvcp60/msvcp60.spec @@ -2148,8 +2148,8 @@ @ cdecl -arch=win64 ?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ(ptr ptr) _Locinfo__Getcvt @ thiscall -arch=win32 ?_Getdays@_Locinfo@std@@QBEPBDXZ(ptr) _Locinfo__Getdays @ cdecl -arch=win64 ?_Getdays@_Locinfo@std@@QEBAPEBDXZ(ptr) _Locinfo__Getdays -@ stub -arch=win32 ?_Getfacet@locale@std@@QBEPBVfacet@12@I_N@Z -@ stub -arch=win64 ?_Getfacet@locale@std@@QEBAPEBVfacet@12@_K_N@Z +@ thiscall -arch=win32 ?_Getfacet@locale@std@@QBEPBVfacet@12@I_N@Z(ptr long long) locale__Getfacet +@ cdecl -arch=win64 ?_Getfacet@locale@std@@QEBAPEBVfacet@12@_K_N@Z(ptr long long) locale__Getfacet @ thiscall -arch=win32 ?_Getfalse@_Locinfo@std@@QBEPBDXZ(ptr) _Locinfo__Getfalse @ cdecl -arch=win64 ?_Getfalse@_Locinfo@std@@QEBAPEBDXZ(ptr) _Locinfo__Getfalse @ stub -arch=win32 ?_Getffld@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@CAHPADAAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@1ABVlocale@2@@Z