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

Alexandre Julliard julliard at winehq.org
Thu Nov 18 11:09:29 CST 2010


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Nov 18 12:19:59 2010 +0100

msvcp90: Added basic_string<char>::append implementation.

---

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

diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index dbbf0b5..f3bfd74 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -2916,10 +2916,10 @@
 @ cdecl -arch=win64 ?allocate@?$allocator at _W@std@@QEAAPEA_W_KPEBX at Z(ptr long ptr) MSVCP_allocator_wchar_allocate_hint
 @ stub -arch=win32 ?always_noconv at codecvt_base@std@@QBE_NXZ
 @ stub -arch=win64 ?always_noconv at codecvt_base@std@@QEBA_NXZ
-@ stub -arch=win32 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at ABV12@@Z
-@ stub -arch=win64 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z
-@ stub -arch=win32 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at ABV12@II at Z
-@ stub -arch=win64 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@_K1 at Z
+@ 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) MSVCP_basic_string_char_append
+@ cdecl -arch=win64 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z(ptr ptr) MSVCP_basic_string_char_append
+@ thiscall -arch=win32 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at ABV12@II at Z(ptr ptr long long) MSVCP_basic_string_char_append_substr
+@ cdecl -arch=win64 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@_K1 at Z(ptr ptr long long) MSVCP_basic_string_char_append_substr
 @ stub -arch=win32 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at ID@Z
 @ stub -arch=win64 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at PEBD0@Z
 @ stub -arch=win32 ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at PBD0@Z
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index fb51ae4..6fa65bd 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -757,6 +757,37 @@ size_t __thiscall MSVCP_basic_string_char_length(basic_string_char *this)
     return this->size;
 }
 
+/* ?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)
+basic_string_char* __thiscall MSVCP_basic_string_char_append_substr(basic_string_char *this,
+        basic_string_char *append, size_t offset, size_t count)
+{
+    if(append->size < offset)
+        MSVCP__String_base_Xran();
+
+    if(count > append->size-offset)
+        count = append->size-offset;
+
+    if(basic_string_char_grow(this, this->size+count, FALSE)) {
+        MSVCP_char_traits_char__Copy_s(basic_string_char_ptr(this)+this->size,
+                this->res-this->size, basic_string_char_ptr(append)+offset, count);
+        basic_string_char_eos(this, this->size+count);
+    }
+
+    return this;
+}
+
+/* ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at ABV12@@Z */
+/* ?append@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at AEBV12@@Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append, 8)
+basic_string_char* __thiscall MSVCP_basic_string_char_append(
+        basic_string_char *this, basic_string_char *append)
+{
+    return MSVCP_basic_string_char_append_substr(this, append,
+            0, MSVCP_basic_string_char_npos);
+}
+
 
 /* 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 */




More information about the wine-cvs mailing list