Piotr Caban : msvcp90: Added basic_string<char> resize implementation.
Module: wine Branch: master Commit: 35b4d8eb9d424ce088e5f05c810d03c0691a958b URL: http://source.winehq.org/git/wine.git/?a=commit;h=35b4d8eb9d424ce088e5f05c81... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Fri Apr 29 11:16:10 2011 +0200 msvcp90: Added basic_string<char> resize implementation. --- dlls/msvcp90/msvcp90.spec | 16 +++++++------- dlls/msvcp90/string.c | 46 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index 2601900..f52c824 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -5174,18 +5174,18 @@ @ stub -arch=win32 ?reserve@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI(a)Z @ stub -arch=win64 ?reserve@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K(a)Z @ stub ?resetiosflags(a)std@@YA?AU?$_Smanip(a)H@1(a)H@Z -@ stub -arch=win32 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXI(a)Z -@ stub -arch=win64 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_K(a)Z -@ stub -arch=win32 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXID(a)Z -@ stub -arch=win64 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_KD(a)Z +@ thiscall -arch=win32 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXI(a)Z(ptr long) MSVCP_basic_string_char_resize +@ cdecl -arch=win64 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_K(a)Z(ptr long) MSVCP_basic_string_char_resize +@ thiscall -arch=win32 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXID(a)Z(ptr long long) MSVCP_basic_string_char_resize_ch +@ cdecl -arch=win64 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_KD(a)Z(ptr long long) MSVCP_basic_string_char_resize_ch @ stub -arch=win32 ?resize@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXI(a)Z @ stub -arch=win64 ?resize@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEAAX_K(a)Z @ stub -arch=win32 ?resize@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXIG(a)Z @ stub -arch=win64 ?resize@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEAAX_KG(a)Z -@ stub -arch=win32 ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI(a)Z -@ stub -arch=win64 ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K(a)Z -@ stub -arch=win32 ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI_W(a)Z -@ stub -arch=win64 ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K_W(a)Z +@ thiscall -arch=win32 ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI(a)Z(ptr long) MSVCP_basic_string_wchar_resize +@ cdecl -arch=win64 ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K(a)Z(ptr long) MSVCP_basic_string_wchar_resize +@ thiscall -arch=win32 ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI_W(a)Z(ptr long long) MSVCP_basic_string_wchar_resize_ch +@ cdecl -arch=win64 ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K_W(a)Z(ptr long long) MSVCP_basic_string_wchar_resize_ch @ stub -arch=win32 ?rfind@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEIABV12(a)I@Z @ stub -arch=win64 ?rfind@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBA_KAEBV12(a)_K@Z @ stub -arch=win32 ?rfind@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEIDI(a)Z diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index 2c565c0..0503a41 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -1120,6 +1120,29 @@ const char* __thiscall MSVCP_basic_string_char_const_at( return basic_string_char_const_ptr(this)+pos; } +/* ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXID(a)Z */ +/* ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_KD(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize_ch, 12) +void __thiscall MSVCP_basic_string_char_resize_ch( + basic_string_char *this, size_t size, char ch) +{ + TRACE("%p %lu %c\n", this, (unsigned long)size, ch); + + if(size <= this->size) + MSVCP_basic_string_char_erase(this, size, this->size); + else + MSVCP_basic_string_char_append_len_ch(this, size-this->size, ch); +} + +/* ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXI(a)Z */ +/* ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_K(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_resize, 8) +void __thiscall MSVCP_basic_string_char_resize( + basic_string_char *this, size_t size) +{ + MSVCP_basic_string_char_resize_ch(this, size, '\0'); +} + /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */ /* ?npos@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@2IB */ @@ -1743,3 +1766,26 @@ const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at( return basic_string_wchar_const_ptr(this)+pos; } + +/* ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI_W(a)Z */ +/* ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K_W(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize_ch, 12) +void __thiscall MSVCP_basic_string_wchar_resize_ch( + basic_string_wchar *this, size_t size, wchar_t ch) +{ + TRACE("%p %lu %c\n", this, (unsigned long)size, ch); + + if(size <= this->size) + MSVCP_basic_string_wchar_erase(this, size, this->size); + else + MSVCP_basic_string_wchar_append_len_ch(this, size-this->size, ch); +} + +/* ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI(a)Z */ +/* ?resize@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_resize, 8) +void __thiscall MSVCP_basic_string_wchar_resize( + basic_string_wchar *this, size_t size) +{ + MSVCP_basic_string_wchar_resize_ch(this, size, '\0'); +}
participants (1)
-
Alexandre Julliard