Vincas Miliūnas : msvcp90: Added basic_string<char>:: swap implementation.
Alexandre Julliard
julliard at winehq.org
Wed Nov 17 10:38:02 CST 2010
Module: wine
Branch: master
Commit: 676d0d41f5662538478fa80312dde49bf923e3ef
URL: http://source.winehq.org/git/wine.git/?a=commit;h=676d0d41f5662538478fa80312dde49bf923e3ef
Author: Vincas Miliūnas <vincas.miliunas at gmail.com>
Date: Tue Nov 16 20:58:15 2010 +0200
msvcp90: Added basic_string<char>::swap implementation.
---
dlls/msvcp80/msvcp80.spec | 4 ++--
dlls/msvcp90/msvcp90.spec | 4 ++--
dlls/msvcp90/string.c | 22 ++++++++++++++++++++++
3 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/dlls/msvcp80/msvcp80.spec b/dlls/msvcp80/msvcp80.spec
index f05b53d..ec1458f 100644
--- a/dlls/msvcp80/msvcp80.spec
+++ b/dlls/msvcp80/msvcp80.spec
@@ -5477,8 +5477,8 @@
@ stub -arch=win64 ?sungetc@?$basic_streambuf at GU?$char_traits at G@std@@@std@@QEAAGXZ
@ stub -arch=win32 ?sungetc@?$basic_streambuf at _WU?$char_traits at _W@std@@@std@@QAEGXZ
@ stub -arch=win64 ?sungetc@?$basic_streambuf at _WU?$char_traits at _W@std@@@std@@QEAAGXZ
-@ stub -arch=win32 ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXAAV12@@Z
-@ stub -arch=win64 ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAXAEAV12@@Z
+@ thiscall -arch=win32 ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXAAV12@@Z(ptr ptr) msvcp90.?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXAAV12@@Z
+@ cdecl -arch=win64 ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAXAEAV12@@Z (ptr ptr) msvcp90.?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAXAEAV12@@Z
@ stub -arch=win32 ?swap@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAEXAAV12@@Z
@ stub -arch=win64 ?swap@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEAAXAEAV12@@Z
@ stub -arch=win32 ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXAAV12@@Z
diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index 9ed37ec..2520ab3 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -5508,8 +5508,8 @@
@ stub -arch=win64 ?sungetc@?$basic_streambuf at GU?$char_traits at G@std@@@std@@QEAAGXZ
@ stub -arch=win32 ?sungetc@?$basic_streambuf at _WU?$char_traits at _W@std@@@std@@QAEGXZ
@ stub -arch=win64 ?sungetc@?$basic_streambuf at _WU?$char_traits at _W@std@@@std@@QEAAGXZ
-@ stub -arch=win32 ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXAAV12@@Z
-@ stub -arch=win64 ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAXAEAV12@@Z
+@ thiscall -arch=win32 ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXAAV12@@Z(ptr ptr) MSVCP_basic_string_char_swap
+@ cdecl -arch=win64 ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAXAEAV12@@Z(ptr ptr) MSVCP_basic_string_char_swap
@ stub -arch=win32 ?swap@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAEXAAV12@@Z
@ stub -arch=win64 ?swap@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEAAXAEAV12@@Z
@ stub -arch=win32 ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXAAV12@@Z
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index cc4ff1b..68eb921 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -1017,3 +1017,25 @@ size_t __thiscall MSVCP_basic_string_wchar_length(basic_string_wchar *this)
TRACE("%p\n", this);
return this->size;
}
+
+/* ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXAAV12@@Z */
+/* ?swap@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAXAEAV12@@Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_swap, 8)
+void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_string_char *str)
+{
+ if(this != str) {
+ char tmp[sizeof(this->data)];
+ const size_t size = this->size;
+ const size_t res = this->res;
+
+ memcpy(tmp, this->data.buf, sizeof(this->data));
+ memcpy(this->data.buf, str->data.buf, sizeof(this->data));
+ memcpy(str->data.buf, tmp, sizeof(this->data));
+
+ this->size = str->size;
+ this->res = str->res;
+
+ str->size = size;
+ str->res = res;
+ }
+}
More information about the wine-cvs
mailing list