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