Piotr Caban : msvcp90: Added operator+(basic_string, char) implementation.

Alexandre Julliard julliard at winehq.org
Thu Oct 13 14:10:09 CDT 2011


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Oct 13 14:08:00 2011 +0200

msvcp90: Added operator+(basic_string, char) implementation.

---

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

diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index ecde9b5..25bb0b9 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -202,12 +202,12 @@
 @ stub -arch=win64 ??$?GO at std@@YA?AV?$complex at O@0 at AEBV10@AEBO at Z
 @ cdecl -arch=win32 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at ABV10@0 at Z(ptr ptr ptr) MSVCP_basic_string_char_concatenate
 @ cdecl -arch=win64 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at AEBV10@0 at Z(ptr ptr ptr) MSVCP_basic_string_char_concatenate
-@ stub -arch=win32 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at ABV10@D at Z
-@ stub -arch=win64 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at AEBV10@D at Z
+@ cdecl -arch=win32 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at ABV10@D at Z(ptr ptr long) MSVCP_basic_string_char_concatenate_bstr_ch
+@ cdecl -arch=win64 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at AEBV10@D at Z(ptr ptr long) MSVCP_basic_string_char_concatenate_bstr_ch
 @ cdecl -arch=win32 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at ABV10@PBD at Z(ptr ptr str) MSVCP_basic_string_char_concatenate_bstr_cstr
 @ cdecl -arch=win64 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at AEBV10@PEBD at Z(ptr ptr str) MSVCP_basic_string_char_concatenate_bstr_cstr
-@ stub -arch=win32 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at DABV10@@Z
-@ stub -arch=win64 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at DAEBV10@@Z
+@ cdecl -arch=win32 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at DABV10@@Z(ptr long ptr) MSVCP_basic_string_char_concatenate_ch_bstr
+@ cdecl -arch=win64 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at DAEBV10@@Z(ptr long ptr) MSVCP_basic_string_char_concatenate_ch_bstr
 @ cdecl -arch=win32 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at PBDABV10@@Z(ptr str ptr) MSVCP_basic_string_char_concatenate_cstr_bstr
 @ cdecl -arch=win64 ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at PEBDAEBV10@@Z(ptr str ptr) MSVCP_basic_string_char_concatenate_cstr_bstr
 @ stub -arch=win32 ??$?HGU?$char_traits at G@std@@V?$allocator at G@1@@std@@YA?AV?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@0 at ABV10@0 at Z
@@ -248,12 +248,12 @@
 @ cdecl -arch=win64 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at AEBV10@0 at Z(ptr ptr ptr) MSVCP_basic_string_wchar_concatenate
 @ cdecl -arch=win32 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at ABV10@PB_W at Z(ptr ptr wstr) MSVCP_basic_string_wchar_concatenate_bstr_cstr
 @ cdecl -arch=win64 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at AEBV10@PEB_W at Z(ptr ptr wstr) MSVCP_basic_string_wchar_concatenate_bstr_cstr
-@ stub -arch=win32 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at ABV10@_W at Z
-@ stub -arch=win64 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at AEBV10@_W at Z
+@ cdecl -arch=win32 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at ABV10@_W at Z(ptr ptr long) MSVCP_basic_string_wchar_concatenate_bstr_ch
+@ cdecl -arch=win64 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at AEBV10@_W at Z(ptr ptr long) MSVCP_basic_string_wchar_concatenate_bstr_ch
 @ cdecl -arch=win32 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at PB_WABV10@@Z(ptr wstr ptr) MSVCP_basic_string_wchar_concatenate_cstr_bstr
 @ cdecl -arch=win64 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at PEB_WAEBV10@@Z(ptr wstr ptr) MSVCP_basic_string_wchar_concatenate_cstr_bstr
-@ stub -arch=win32 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at _WABV10@@Z
-@ stub -arch=win64 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at _WAEBV10@@Z
+@ cdecl -arch=win32 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at _WABV10@@Z(ptr long ptr) MSVCP_basic_string_wchar_concatenate_ch_bstr
+@ cdecl -arch=win64 ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at _WAEBV10@@Z(ptr long ptr) MSVCP_basic_string_wchar_concatenate_ch_bstr
 @ stub -arch=win32 ??$?KM at std@@YA?AV?$complex at M@0 at ABMABV10@@Z
 @ stub -arch=win64 ??$?KM at std@@YA?AV?$complex at M@0 at AEBMAEBV10@@Z
 @ stub -arch=win32 ??$?KM at std@@YA?AV?$complex at M@0 at ABV10@0 at Z
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index c89b793..59bc270 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -1078,6 +1078,30 @@ basic_string_char* __cdecl MSVCP_basic_string_char_concatenate(basic_string_char
     return ret;
 }
 
+/* ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at ABV10@D at Z */
+/* ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at AEBV10@D at Z */
+basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char *ret,
+        const basic_string_char *left, char right)
+{
+    TRACE("%p %c\n", left, right);
+
+    MSVCP_basic_string_char_copy_ctor(ret, left);
+    MSVCP_basic_string_char_append_ch(ret, right);
+    return ret;
+}
+
+/* ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at DABV10@@Z */
+/* ??$?HDU?$char_traits at D@std@@V?$allocator at D@1@@std@@YA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@0 at DAEBV10@@Z */
+basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char *ret,
+        char left, const basic_string_char *right)
+{
+    TRACE("%c %p\n", left, right);
+
+    MSVCP_basic_string_char_ctor_cstr_len(ret, &left, 1);
+    MSVCP_basic_string_char_append(ret, right);
+    return ret;
+}
+
 /* ?compare@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBEHIIPBDI at Z */
 /* ?compare@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEBAH_K0PEBD0 at Z */
 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20)
@@ -2147,6 +2171,34 @@ basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate(basic_string_wc
     return ret;
 }
 
+/* ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at ABV10@_W at Z */
+/* ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at AEBV10@_W at Z */
+basic_string_wchar __cdecl MSVCP_basic_string_wchar_concatenate_bstr_ch(
+        const basic_string_wchar *left, wchar_t right)
+{
+    basic_string_wchar ret = { 0 };
+
+    TRACE("%p %c\n", left, right);
+
+    MSVCP_basic_string_wchar_copy_ctor(&ret, left);
+    MSVCP_basic_string_wchar_append_ch(&ret, right);
+    return ret;
+}
+
+/* ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at _WABV10@@Z */
+/* ??$?H_WU?$char_traits at _W@std@@V?$allocator at _W@1@@std@@YA?AV?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@0 at _WAEBV10@@Z */
+basic_string_wchar __cdecl MSVCP_basic_string_wchar_concatenate_ch_bstr(
+        wchar_t left, const basic_string_wchar *right)
+{
+    basic_string_wchar ret = { 0 };
+
+    TRACE("%c %p\n", left, right);
+
+    MSVCP_basic_string_wchar_ctor_cstr_len(&ret, &left, 1);
+    MSVCP_basic_string_wchar_append(&ret, right);
+    return ret;
+}
+
 /* ?compare@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QBEHIIPB_WI at Z */
 /* ?compare@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEBAH_K0PEB_W0 at Z */
 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20)




More information about the wine-cvs mailing list