Piotr Caban : msvcp71: Added _String_base::_Xlen and _Xran implementation.

Alexandre Julliard julliard at winehq.org
Fri Jul 27 13:13:55 CDT 2012


Module: wine
Branch: master
Commit: 5f3f9cdb9cdc11d7d3488d5d468dda54a8756d9f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5f3f9cdb9cdc11d7d3488d5d468dda54a8756d9f

Author: Piotr Caban <piotr at 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 at locale@std@@CAXXZ
 @ stub -arch=win32 ?_Tidy at strstreambuf@std@@IAEXXZ
 @ stub -arch=win64 ?_Tidy at strstreambuf@std@@IEAAXXZ
-@ stub ?_Xlen at _String_base@std@@QBEXXZ
-@ stub ?_Xran at _String_base@std@@QBEXXZ
+@ thiscall -arch=win32 ?_Xlen at _String_base@std@@QBEXXZ(ptr) msvcp71.?_Xlen at _String_base@std@@QBEXXZ
+@ thiscall -arch=win32 ?_Xran at _String_base@std@@QBEXXZ(ptr) msvcp71.?_Xran at _String_base@std@@QBEXXZ
 @ stub -arch=win32 ?abs at std@@YAMABV?$complex at M@1@@Z
 @ stub -arch=win64 ?abs at std@@YAMAEBV?$complex at M@1@@Z
 @ stub -arch=win32 ?abs at std@@YANABV?$complex at 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 at _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 at _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 at _String_base@std@@SAXXZ");
+    p_String_base_Xran = (void*)GetProcAddress(hmod, "?_Xran at _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 at _WU?$char_traits at _W@std@@@std@@QEAAXXZ(ptr) msvcp90.?_Unlock@?$basic_streambuf at _WU?$char_traits at _W@std@@@std@@QEAAXXZ
 @ thiscall -arch=win32 ?_Unlock at _Mutex@std@@QAEXXZ(ptr) msvcp90.?_Unlock at _Mutex@std@@QAEXXZ
 @ cdecl -arch=win64 ?_Unlock at _Mutex@std@@QEAAXXZ(ptr) msvcp90.?_Unlock at _Mutex@std@@QEAAXXZ
-@ stub ?_Xlen at _String_base@std@@QBEXXZ
-@ stub ?_Xran at _String_base@std@@QBEXXZ
+@ thiscall -arch=win32 ?_Xlen at _String_base@std@@QBEXXZ(ptr) _String_base__Xlen
+@ thiscall -arch=win32 ?_Xran at _String_base@std@@QBEXXZ(ptr) _String_base__Xran
 @ thiscall -arch=win32 ?always_noconv at codecvt_base@std@@QBE_NXZ(ptr) msvcp90.?always_noconv at codecvt_base@std@@QBE_NXZ
 @ cdecl -arch=win64 ?always_noconv at codecvt_base@std@@QEBA_NXZ(ptr) msvcp90.?always_noconv at codecvt_base@std@@QEBA_NXZ
 @ thiscall -arch=win32 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at ABV12@@Z(ptr ptr) msvcp90.?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at ABV12@@Z




More information about the wine-cvs mailing list