[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-patches
Subject:    [PATCH 08/12] msvcp90: Added basic_string<char> resize implementation
From:       Piotr Caban <piotr () codeweavers ! com>
Date:       2011-04-29 9:16:10
Message-ID: 4DBA81DA.1000405 () codeweavers ! com
[Download RAW message or body]

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



["0008-msvcp90-Added-basic_string-char-resize-implementation.txt" (text/x-patch)]

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@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z
  @ stub -arch=win64 \
?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z  @ \
                stub ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z
-@ stub -arch=win32 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z
                
-@ stub -arch=win64 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z
                
-@ stub -arch=win32 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z
                
-@ stub -arch=win64 ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z
 +@ thiscall -arch=win32 \
?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z(ptr \
long) MSVCP_basic_string_char_resize +@ cdecl -arch=win64 \
?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z(ptr \
long) MSVCP_basic_string_char_resize +@ thiscall -arch=win32 \
?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z(ptr \
long long) MSVCP_basic_string_char_resize_ch +@ cdecl -arch=win64 \
?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@Z(ptr \
long long) MSVCP_basic_string_char_resize_ch  @ stub -arch=win32 \
?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXI@Z  @ stub \
-arch=win64 ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_K@Z
  @ stub -arch=win32 \
?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXIG@Z  @ stub \
-arch=win64 ?resize@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAX_KG@Z
                
-@ stub -arch=win32 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z
                
-@ stub -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z
                
-@ stub -arch=win32 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z
                
-@ stub -arch=win64 ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z
 +@ thiscall -arch=win32 \
?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z(ptr \
long) MSVCP_basic_string_wchar_resize +@ cdecl -arch=win64 \
?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@Z(ptr \
long) MSVCP_basic_string_wchar_resize +@ thiscall -arch=win32 \
?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z(ptr \
long long) MSVCP_basic_string_wchar_resize_ch +@ cdecl -arch=win64 \
?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@Z(ptr \
long long) MSVCP_basic_string_wchar_resize_ch  @ stub -arch=win32 \
?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIABV12@I@Z  @ \
stub -arch=win64 ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KAEBV12@_K@Z
  @ stub -arch=win32 \
                ?rfind@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIDI@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@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXID@Z */
+/* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_KD@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@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXI@Z */
+/* ?resize@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@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@_WU?$char_traits@_W@std@@V?$allocator@_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@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI_W@Z \
*/ +/* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K_W@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@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z \
*/ +/* ?resize@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAX_K@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');
+}





[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic