Vincas Miliūnas : msvcp90: Added basic_string<wchar_t> ::swap implementation.
Alexandre Julliard
julliard at winehq.org
Wed Nov 17 10:38:02 CST 2010
Module: wine
Branch: master
Commit: 96e4e219971143fbfafa6e35d4c918d9c5667db2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=96e4e219971143fbfafa6e35d4c918d9c5667db2
Author: Vincas Miliūnas <vincas.miliunas at gmail.com>
Date: Tue Nov 16 20:58:44 2010 +0200
msvcp90: Added basic_string<wchar_t>::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 ec1458f..79dc7e4 100644
--- a/dlls/msvcp80/msvcp80.spec
+++ b/dlls/msvcp80/msvcp80.spec
@@ -5481,8 +5481,8 @@
@ 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
-@ stub -arch=win64 ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAXAEAV12@@Z
+@ thiscall -arch=win32 ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXAAV12@@Z(ptr ptr) msvcp90.?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXAAV12@@Z
+@ cdecl -arch=win64 ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAXAEAV12@@Z(ptr ptr) msvcp90.?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAXAEAV12@@Z
@ stub -arch=win32 ?sync@?$basic_filebuf at DU?$char_traits at D@std@@@std@@MAEHXZ
@ stub -arch=win64 ?sync@?$basic_filebuf at DU?$char_traits at D@std@@@std@@MEAAHXZ
@ stub -arch=win32 ?sync@?$basic_filebuf at GU?$char_traits at G@std@@@std@@MAEHXZ
diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index 2520ab3..dbbf0b5 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -5512,8 +5512,8 @@
@ 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
-@ stub -arch=win64 ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAXAEAV12@@Z
+@ thiscall -arch=win32 ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXAAV12@@Z(ptr ptr) MSVCP_basic_string_wchar_swap
+@ cdecl -arch=win64 ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAXAEAV12@@Z(ptr ptr) MSVCP_basic_string_wchar_swap
@ stub -arch=win32 ?sync@?$basic_filebuf at DU?$char_traits at D@std@@@std@@MAEHXZ
@ stub -arch=win64 ?sync@?$basic_filebuf at DU?$char_traits at D@std@@@std@@MEAAHXZ
@ stub -arch=win32 ?sync@?$basic_filebuf at GU?$char_traits at G@std@@@std@@MAEHXZ
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index 68eb921..fb51ae4 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -1039,3 +1039,25 @@ void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_stri
str->res = res;
}
}
+
+/* ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEXAAV12@@Z */
+/* ?swap@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAXAEAV12@@Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_swap, 8)
+void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_string_wchar *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