Vincas Miliūnas : msvcp90: Added basic_string<wchar_t> ::swap implementation.
Module: wine Branch: master Commit: 96e4e219971143fbfafa6e35d4c918d9c5667db2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=96e4e219971143fbfafa6e35d4... Author: Vincas Miliūnas <vincas.miliunas(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAXAEAV12@@Z (ptr ptr) msvcp90.?swap@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAXAEAV12@@Z @ stub -arch=win32 ?swap@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXAAV12@@Z @ stub -arch=win64 ?swap@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEAAXAEAV12@@Z -@ stub -arch=win32 ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXAAV12@@Z -@ stub -arch=win64 ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAXAEAV12@@Z +@ thiscall -arch=win32 ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXAAV12@@Z(ptr ptr) msvcp90.?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXAAV12@@Z +@ cdecl -arch=win64 ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAXAEAV12@@Z(ptr ptr) msvcp90.?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAXAEAV12@@Z @ stub -arch=win32 ?sync@?$basic_filebuf(a)DU?$char_traits(a)D@std@@@std@@MAEHXZ @ stub -arch=win64 ?sync@?$basic_filebuf(a)DU?$char_traits(a)D@std@@@std@@MEAAHXZ @ stub -arch=win32 ?sync@?$basic_filebuf(a)GU?$char_traits(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAXAEAV12@@Z(ptr ptr) MSVCP_basic_string_char_swap @ stub -arch=win32 ?swap@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXAAV12@@Z @ stub -arch=win64 ?swap@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEAAXAEAV12@@Z -@ stub -arch=win32 ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXAAV12@@Z -@ stub -arch=win64 ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAXAEAV12@@Z +@ thiscall -arch=win32 ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXAAV12@@Z(ptr ptr) MSVCP_basic_string_wchar_swap +@ cdecl -arch=win64 ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAXAEAV12@@Z(ptr ptr) MSVCP_basic_string_wchar_swap @ stub -arch=win32 ?sync@?$basic_filebuf(a)DU?$char_traits(a)D@std@@@std@@MAEHXZ @ stub -arch=win64 ?sync@?$basic_filebuf(a)DU?$char_traits(a)D@std@@@std@@MEAAHXZ @ stub -arch=win32 ?sync@?$basic_filebuf(a)GU?$char_traits(a)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(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXAAV12@@Z */ +/* ?swap@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_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; + } +}
participants (1)
-
Alexandre Julliard