Piotr Caban : msvcp90: Added basic_string<char> resize implementation.

Alexandre Julliard julliard at winehq.org
Fri Apr 29 11:09:16 CDT 2011


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Apr 29 11:16:10 2011 +0200

msvcp90: Added basic_string<char> resize implementation.

---

 dlls/msvcp90/msvcp90.spec |   16 +++++++-------
 dlls/msvcp90/string.c     |   46 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 8 deletions(-)

diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index 2601900..f52c824 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -5174,18 +5174,18 @@
 @ stub -arch=win32 ?reserve@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXI at Z
 @ stub -arch=win64 ?reserve@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAX_K at Z
 @ stub ?resetiosflags at std@@YA?AU?$_Smanip at H@1 at H@Z
-@ stub -arch=win32 ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXI at Z
-@ stub -arch=win64 ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAX_K at Z
-@ stub -arch=win32 ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXID at Z
-@ stub -arch=win64 ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAX_KD at Z
+@ thiscall -arch=win32 ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXI at Z(ptr long) MSVCP_basic_string_char_resize
+@ cdecl -arch=win64 ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAX_K at Z(ptr long) MSVCP_basic_string_char_resize
+@ thiscall -arch=win32 ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXID at Z(ptr long long) MSVCP_basic_string_char_resize_ch
+@ cdecl -arch=win64 ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAX_KD at Z(ptr long long) MSVCP_basic_string_char_resize_ch
 @ stub -arch=win32 ?resize@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAEXI at Z
 @ stub -arch=win64 ?resize@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEAAX_K at Z
 @ stub -arch=win32 ?resize@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAEXIG at Z
 @ stub -arch=win64 ?resize@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEAAX_KG at Z
-@ stub -arch=win32 ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXI at Z
-@ stub -arch=win64 ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAX_K at Z
-@ stub -arch=win32 ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXI_W at Z
-@ stub -arch=win64 ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAX_K_W at Z
+@ thiscall -arch=win32 ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXI at Z(ptr long) MSVCP_basic_string_wchar_resize
+@ cdecl -arch=win64 ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAX_K at Z(ptr long) MSVCP_basic_string_wchar_resize
+@ thiscall -arch=win32 ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXI_W at Z(ptr long long) MSVCP_basic_string_wchar_resize_ch
+@ cdecl -arch=win64 ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAX_K_W at Z(ptr long long) MSVCP_basic_string_wchar_resize_ch
 @ stub -arch=win32 ?rfind@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEIABV12 at I@Z
 @ stub -arch=win64 ?rfind@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBA_KAEBV12 at _K@Z
 @ stub -arch=win32 ?rfind@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEIDI at Z
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index 2c565c0..0503a41 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -1120,6 +1120,29 @@ const char* __thiscall MSVCP_basic_string_char_const_at(
     return basic_string_char_const_ptr(this)+pos;
 }
 
+/* ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXID at Z */
+/* ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAX_KD at Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12)
+void __thiscall MSVCP_basic_string_char_resize_ch(
+        basic_string_char *this, size_t size, char ch)
+{
+    TRACE("%p %lu %c\n", this, (unsigned long)size, ch);
+
+    if(size <= this->size)
+        MSVCP_basic_string_char_erase(this, size, this->size);
+    else
+        MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch);
+}
+
+/* ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXI at Z */
+/* ?resize@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAX_K at Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize, 8)
+void __thiscall MSVCP_basic_string_char_resize(
+        basic_string_char *this, size_t size)
+{
+    MSVCP_basic_string_char_resize_ch(this, size, '\0');
+}
+
 
 /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
 /* ?npos@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@2IB */
@@ -1743,3 +1766,26 @@ const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at(
 
     return basic_string_wchar_const_ptr(this)+pos;
 }
+
+/* ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXI_W at Z */
+/* ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAX_K_W at Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch, 12)
+void __thiscall MSVCP_basic_string_wchar_resize_ch(
+        basic_string_wchar *this, size_t size, wchar_t ch)
+{
+    TRACE("%p %lu %c\n", this, (unsigned long)size, ch);
+
+    if(size <= this->size)
+        MSVCP_basic_string_wchar_erase(this, size, this->size);
+    else
+        MSVCP_basic_string_wchar_append_len_ch(this, size-this->size, ch);
+}
+
+/* ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXI at Z */
+/* ?resize@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAX_K at Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize, 8)
+void __thiscall MSVCP_basic_string_wchar_resize(
+        basic_string_wchar *this, size_t size)
+{
+    MSVCP_basic_string_wchar_resize_ch(this, size, '\0');
+}




More information about the wine-cvs mailing list