Piotr Caban : msvcp90: Added basic_string::substr(size_t, size_t) implementation.

Alexandre Julliard julliard at winehq.org
Mon Sep 12 11:43:01 CDT 2011


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Sep 12 13:10:58 2011 +0200

msvcp90: Added basic_string::substr(size_t, size_t) implementation.

---

 dlls/msvcp90/msvcp90.spec |    8 ++++----
 dlls/msvcp90/string.c     |   26 ++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index fc6cf20..66ec6a0 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -5496,12 +5496,12 @@
 @ stub -arch=win64 ?str@?$basic_stringstream at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@2 at XZ
 @ stub -arch=win32 ?str at strstreambuf@std@@QAEPADXZ
 @ stub -arch=win64 ?str at strstreambuf@std@@QEAAPEADXZ
-@ stub -arch=win32 ?substr@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBE?AV12 at II@Z
-@ stub -arch=win64 ?substr@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA?AV12 at _K0@Z
+@ thiscall -arch=win32 ?substr@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBE?AV12 at II@Z(ptr ptr long long) MSVCP_basic_string_char_substr
+@ cdecl -arch=win64 ?substr@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA?AV12 at _K0@Z(ptr ptr long long) MSVCP_basic_string_char_substr
 @ stub -arch=win32 ?substr@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QBE?AV12 at II@Z
 @ stub -arch=win64 ?substr@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEBA?AV12 at _K0@Z
-@ stub -arch=win32 ?substr@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBE?AV12 at II@Z
-@ stub -arch=win64 ?substr@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBA?AV12 at _K0@Z
+@ thiscall -arch=win32 ?substr@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBE?AV12 at II@Z(ptr ptr long long) MSVCP_basic_string_wchar_substr
+@ cdecl -arch=win64 ?substr@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBA?AV12 at _K0@Z(ptr ptr long long) MSVCP_basic_string_wchar_substr
 @ thiscall -arch=win32 ?sungetc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QAEHXZ(ptr) basic_streambuf_char_sungetc
 @ cdecl -arch=win64 ?sungetc@?$basic_streambuf at DU?$char_traits at D@std@@@std@@QEAAHXZ(ptr) basic_streambuf_char_sungetc
 @ stub -arch=win32 ?sungetc@?$basic_streambuf at GU?$char_traits at G@std@@@std@@QAEGXZ
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index 1d15331..2ad568c 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -847,6 +847,19 @@ void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_stri
     }
 }
 
+/* ?substr@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBE?AV12 at II@Z */
+/* ?substr@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA?AV12 at _K0@Z */
+DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_char_substr, 12)
+basic_string_char __thiscall MSVCP_basic_string_char_substr(
+        basic_string_char *this, MSVCP_size_t off, MSVCP_size_t len)
+{
+    basic_string_char ret = { 0 };
+    TRACE("%p %lu %lu\n", this, off, len);
+
+    MSVCP_basic_string_char_ctor_substr(&ret, this, off, len);
+    return ret;
+}
+
 /* ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at ABV12@II at Z */
 /* ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@_K1 at Z */
 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr, 16)
@@ -1700,6 +1713,19 @@ void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_st
     }
 }
 
+/* ?substr@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBE?AV12 at II@Z */
+/* ?substr@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBA?AV12 at _K0@Z */
+DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_wchar_substr, 12)
+basic_string_wchar __thiscall MSVCP_basic_string_wchar_substr(
+        basic_string_wchar *this, MSVCP_size_t off, MSVCP_size_t len)
+{
+    basic_string_wchar ret = { 0 };
+    TRACE("%p %lu %lu\n", this, off, len);
+
+    MSVCP_basic_string_wchar_ctor_substr(&ret, this, off, len);
+    return ret;
+}
+
 /* ?append@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEAAV12 at ABV12@II at Z */
 /* ?append@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAAEAV12 at AEBV12@_K1 at Z */
 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr, 16)




More information about the wine-cvs mailing list