Piotr Caban : msvcp71: Added _String_base::_Xlen and _Xran implementation.
Module: wine Branch: master Commit: 5f3f9cdb9cdc11d7d3488d5d468dda54a8756d9f URL: http://source.winehq.org/git/wine.git/?a=commit;h=5f3f9cdb9cdc11d7d3488d5d46... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Fri Jul 27 09:38:49 2012 +0200 msvcp71: Added _String_base::_Xlen and _Xran implementation. --- dlls/msvcp70/msvcp70.spec | 4 ++-- dlls/msvcp71/msvcp71.c | 19 +++++++++++++++++++ dlls/msvcp71/msvcp71.spec | 4 ++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/dlls/msvcp70/msvcp70.spec b/dlls/msvcp70/msvcp70.spec index 9f0e6eb..1d61d5b 100644 --- a/dlls/msvcp70/msvcp70.spec +++ b/dlls/msvcp70/msvcp70.spec @@ -2246,8 +2246,8 @@ @ stub ?_Tidy(a)locale@std@@CAXXZ @ stub -arch=win32 ?_Tidy(a)strstreambuf@std@@IAEXXZ @ stub -arch=win64 ?_Tidy(a)strstreambuf@std@@IEAAXXZ -@ stub ?_Xlen(a)_String_base@std@@QBEXXZ -@ stub ?_Xran(a)_String_base@std@@QBEXXZ +@ thiscall -arch=win32 ?_Xlen(a)_String_base@std@@QBEXXZ(ptr) msvcp71.?_Xlen(a)_String_base@std@@QBEXXZ +@ thiscall -arch=win32 ?_Xran(a)_String_base@std@@QBEXXZ(ptr) msvcp71.?_Xran(a)_String_base@std@@QBEXXZ @ stub -arch=win32 ?abs(a)std@@YAMABV?$complex(a)M@1@@Z @ stub -arch=win64 ?abs(a)std@@YAMAEBV?$complex(a)M@1@@Z @ stub -arch=win32 ?abs(a)std@@YANABV?$complex(a)N@1@@Z diff --git a/dlls/msvcp71/msvcp71.c b/dlls/msvcp71/msvcp71.c index 0759051..c140522 100644 --- a/dlls/msvcp71/msvcp71.c +++ b/dlls/msvcp71/msvcp71.c @@ -80,6 +80,8 @@ basic_string_char* (__stdcall *pbasic_string_char_replace)(basic_string_char*, MSVCP_size_t, MSVCP_size_t, const char*, MSVCP_size_t); basic_string_wchar* (__stdcall *pbasic_string_wchar_replace)(basic_string_wchar*, MSVCP_size_t, MSVCP_size_t, const MSVCP_wchar_t*, MSVCP_size_t); +void (__cdecl *p_String_base_Xlen)(void); +void (__cdecl *p_String_base_Xran)(void); typedef struct { const char *pos; @@ -304,6 +306,20 @@ basic_string_wchar* __thiscall basic_string_wchar_append_iter(basic_string_wchar return pbasic_string_wchar_replace(this, this->size, 0, beg.pos, end.pos-beg.pos); } +/* ?_Xlen(a)_String_base@std@@QBEXXZ */ +DEFINE_THISCALL_WRAPPER(_String_base__Xlen, 4) +void __thiscall _String_base__Xlen(const void/*_String_base*/ *this) +{ + p_String_base_Xlen(); +} + +/* ?_Xran(a)_String_base@std@@QBEXXZ */ +DEFINE_THISCALL_WRAPPER(_String_base__Xran, 4) +void __thiscall _String_base__Xran(const void/*_String_base*/ *this) +{ + p_String_base_Xran(); +} + static BOOL init_funcs(void) { HMODULE hmod = GetModuleHandleA("msvcp90.dll"); @@ -313,6 +329,9 @@ static BOOL init_funcs(void) pbasic_string_char_replace = (void*)GetProcAddress(hmod, "basic_string_char_replace_helper"); pbasic_string_wchar_replace = (void*)GetProcAddress(hmod, "basic_string_wchar_replace_helper"); + p_String_base_Xlen = (void*)GetProcAddress(hmod, "?_Xlen(a)_String_base@std@@SAXXZ"); + p_String_base_Xran = (void*)GetProcAddress(hmod, "?_Xran(a)_String_base@std@@SAXXZ"); + return pbasic_string_char_replace && pbasic_string_wchar_replace; } diff --git a/dlls/msvcp71/msvcp71.spec b/dlls/msvcp71/msvcp71.spec index b7a9bc9..aa496ee 100644 --- a/dlls/msvcp71/msvcp71.spec +++ b/dlls/msvcp71/msvcp71.spec @@ -2465,8 +2465,8 @@ @ cdecl -arch=win64 ?_Unlock@?$basic_streambuf(a)_WU?$char_traits(a)_W@std@@@std@@QEAAXXZ(ptr) msvcp90.?_Unlock@?$basic_streambuf(a)_WU?$char_traits(a)_W@std@@@std@@QEAAXXZ @ thiscall -arch=win32 ?_Unlock(a)_Mutex@std@@QAEXXZ(ptr) msvcp90.?_Unlock(a)_Mutex@std@@QAEXXZ @ cdecl -arch=win64 ?_Unlock(a)_Mutex@std@@QEAAXXZ(ptr) msvcp90.?_Unlock(a)_Mutex@std@@QEAAXXZ -@ stub ?_Xlen(a)_String_base@std@@QBEXXZ -@ stub ?_Xran(a)_String_base@std@@QBEXXZ +@ thiscall -arch=win32 ?_Xlen(a)_String_base@std@@QBEXXZ(ptr) _String_base__Xlen +@ thiscall -arch=win32 ?_Xran(a)_String_base@std@@QBEXXZ(ptr) _String_base__Xran @ thiscall -arch=win32 ?always_noconv(a)codecvt_base@std@@QBE_NXZ(ptr) msvcp90.?always_noconv(a)codecvt_base@std@@QBE_NXZ @ cdecl -arch=win64 ?always_noconv(a)codecvt_base@std@@QEBA_NXZ(ptr) msvcp90.?always_noconv(a)codecvt_base@std@@QEBA_NXZ @ thiscall -arch=win32 ?append@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAAV12(a)ABV12@@Z(ptr ptr) msvcp90.?append@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAAV12(a)ABV12@@Z
participants (1)
-
Alexandre Julliard