msvcp71: Added _String_base::_Xlen and _Xran implementation.

This commit is contained in:
Piotr Caban 2012-07-27 09:38:49 +02:00 committed by Alexandre Julliard
parent a7e1b7c6ea
commit 5f3f9cdb9c
3 changed files with 23 additions and 4 deletions

View File

@ -2246,8 +2246,8 @@
@ stub ?_Tidy@locale@std@@CAXXZ
@ stub -arch=win32 ?_Tidy@strstreambuf@std@@IAEXXZ
@ stub -arch=win64 ?_Tidy@strstreambuf@std@@IEAAXXZ
@ stub ?_Xlen@_String_base@std@@QBEXXZ
@ stub ?_Xran@_String_base@std@@QBEXXZ
@ thiscall -arch=win32 ?_Xlen@_String_base@std@@QBEXXZ(ptr) msvcp71.?_Xlen@_String_base@std@@QBEXXZ
@ thiscall -arch=win32 ?_Xran@_String_base@std@@QBEXXZ(ptr) msvcp71.?_Xran@_String_base@std@@QBEXXZ
@ stub -arch=win32 ?abs@std@@YAMABV?$complex@M@1@@Z
@ stub -arch=win64 ?abs@std@@YAMAEBV?$complex@M@1@@Z
@ stub -arch=win32 ?abs@std@@YANABV?$complex@N@1@@Z

View File

@ -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@_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@_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@_String_base@std@@SAXXZ");
p_String_base_Xran = (void*)GetProcAddress(hmod, "?_Xran@_String_base@std@@SAXXZ");
return pbasic_string_char_replace && pbasic_string_wchar_replace;
}

View File

@ -2465,8 +2465,8 @@
@ cdecl -arch=win64 ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ(ptr) msvcp90.?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ
@ thiscall -arch=win32 ?_Unlock@_Mutex@std@@QAEXXZ(ptr) msvcp90.?_Unlock@_Mutex@std@@QAEXXZ
@ cdecl -arch=win64 ?_Unlock@_Mutex@std@@QEAAXXZ(ptr) msvcp90.?_Unlock@_Mutex@std@@QEAAXXZ
@ stub ?_Xlen@_String_base@std@@QBEXXZ
@ stub ?_Xran@_String_base@std@@QBEXXZ
@ thiscall -arch=win32 ?_Xlen@_String_base@std@@QBEXXZ(ptr) _String_base__Xlen
@ thiscall -arch=win32 ?_Xran@_String_base@std@@QBEXXZ(ptr) _String_base__Xran
@ thiscall -arch=win32 ?always_noconv@codecvt_base@std@@QBE_NXZ(ptr) msvcp90.?always_noconv@codecvt_base@std@@QBE_NXZ
@ cdecl -arch=win64 ?always_noconv@codecvt_base@std@@QEBA_NXZ(ptr) msvcp90.?always_noconv@codecvt_base@std@@QEBA_NXZ
@ thiscall -arch=win32 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z(ptr ptr) msvcp90.?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z