Module: wine Branch: master Commit: 145f6c14f2f7469f903594d3258b3287edd2b3e3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=145f6c14f2f7469f903594d325... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Mon Sep 12 13:10:58 2011 +0200 msvcp90: Added basic_string::substr(size_t, size_t) implementation. --- dlls/msvcp90/msvcp90.spec | 8 ++++---- dlls/msvcp90/string.c | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index fc6cf20..66ec6a0 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -5496,12 +5496,12 @@ @ stub -arch=win64 ?str@?$basic_stringstream(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)XZ @ stub -arch=win32 ?str(a)strstreambuf@std@@QAEPADXZ @ stub -arch=win64 ?str(a)strstreambuf@std@@QEAAPEADXZ -@ stub -arch=win32 ?substr@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBE?AV12(a)II@Z -@ stub -arch=win64 ?substr@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBA?AV12(a)_K0@Z +@ thiscall -arch=win32 ?substr@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBE?AV12(a)II@Z(ptr ptr long long) MSVCP_basic_string_char_substr +@ cdecl -arch=win64 ?substr@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBA?AV12(a)_K0@Z(ptr ptr long long) MSVCP_basic_string_char_substr @ stub -arch=win32 ?substr@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QBE?AV12(a)II@Z @ stub -arch=win64 ?substr@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEBA?AV12(a)_K0@Z -@ stub -arch=win32 ?substr@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBE?AV12(a)II@Z -@ stub -arch=win64 ?substr@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBA?AV12(a)_K0@Z +@ thiscall -arch=win32 ?substr@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBE?AV12(a)II@Z(ptr ptr long long) MSVCP_basic_string_wchar_substr +@ cdecl -arch=win64 ?substr@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBA?AV12(a)_K0@Z(ptr ptr long long) MSVCP_basic_string_wchar_substr @ thiscall -arch=win32 ?sungetc@?$basic_streambuf(a)DU?$char_traits(a)D@std@@@std@@QAEHXZ(ptr) basic_streambuf_char_sungetc @ cdecl -arch=win64 ?sungetc@?$basic_streambuf(a)DU?$char_traits(a)D@std@@@std@@QEAAHXZ(ptr) basic_streambuf_char_sungetc @ stub -arch=win32 ?sungetc@?$basic_streambuf(a)GU?$char_traits(a)G@std@@@std@@QAEGXZ diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index 1d15331..2ad568c 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -847,6 +847,19 @@ void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_stri } } +/* ?substr@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBE?AV12(a)II@Z */ +/* ?substr@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBA?AV12(a)_K0@Z */ +DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_char_substr, 12) +basic_string_char __thiscall MSVCP_basic_string_char_substr( + basic_string_char *this, MSVCP_size_t off, MSVCP_size_t len) +{ + basic_string_char ret = { 0 }; + TRACE("%p %lu %lu\n", this, off, len); + + MSVCP_basic_string_char_ctor_substr(&ret, this, off, len); + return ret; +} + /* ?append@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAAV12(a)ABV12@II(a)Z */ /* ?append@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAAEAV12(a)AEBV12@_K1(a)Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_append_substr, 16) @@ -1700,6 +1713,19 @@ void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_st } } +/* ?substr@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBE?AV12(a)II@Z */ +/* ?substr@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBA?AV12(a)_K0@Z */ +DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_wchar_substr, 12) +basic_string_wchar __thiscall MSVCP_basic_string_wchar_substr( + basic_string_wchar *this, MSVCP_size_t off, MSVCP_size_t len) +{ + basic_string_wchar ret = { 0 }; + TRACE("%p %lu %lu\n", this, off, len); + + MSVCP_basic_string_wchar_ctor_substr(&ret, this, off, len); + return ret; +} + /* ?append@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEAAV12(a)ABV12@II(a)Z */ /* ?append@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAAEAV12(a)AEBV12@_K1(a)Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_append_substr, 16)