Piotr Caban : msvcp90: Added basic_string<char> at implementation.
Module: wine Branch: master Commit: ce8a64470b09c156120b6eb538c35313dc5e0e17 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ce8a64470b09c156120b6eb538... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Fri Apr 29 11:15:47 2011 +0200 msvcp90: Added basic_string<char> at implementation. --- dlls/msvcp90/msvcp90.spec | 16 ++++++------ dlls/msvcp90/string.c | 57 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 8 deletions(-) diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index 8e10b85..4161ab7 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -3012,18 +3012,18 @@ @ cdecl -arch=win64 ?assign@?$char_traits(a)_W@std@@SAPEA_WPEA_W_K_W(a)Z(ptr long long) MSVCP_char_traits_wchar_assignn @ cdecl -arch=win32 ?assign@?$char_traits(a)_W@std@@SAXAA_WAB_W(a)Z(ptr ptr) MSVCP_char_traits_wchar_assign @ cdecl -arch=win64 ?assign@?$char_traits(a)_W@std@@SAXAEA_WAEB_W(a)Z(ptr ptr) MSVCP_char_traits_wchar_assign -@ stub -arch=win32 ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAADI(a)Z -@ stub -arch=win64 ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAAEAD_K(a)Z -@ stub -arch=win32 ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEABDI(a)Z -@ stub -arch=win64 ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBAAEBD_K(a)Z +@ thiscall -arch=win32 ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAADI(a)Z(ptr long) MSVCP_basic_string_char_at +@ cdecl -arch=win64 ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAAEAD_K(a)Z(ptr long) MSVCP_basic_string_char_at +@ thiscall -arch=win32 ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEABDI(a)Z(ptr long) MSVCP_basic_string_char_const_at +@ cdecl -arch=win64 ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBAAEBD_K(a)Z(ptr long) MSVCP_basic_string_char_const_at @ stub -arch=win32 ?at@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEAAGI(a)Z @ stub -arch=win64 ?at@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEAAAEAG_K(a)Z @ stub -arch=win32 ?at@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QBEABGI(a)Z @ stub -arch=win64 ?at@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEBAAEBG_K(a)Z -@ stub -arch=win32 ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEAA_WI(a)Z -@ stub -arch=win64 ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAAEA_W_K(a)Z -@ stub -arch=win32 ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEAB_WI(a)Z -@ stub -arch=win64 ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBAAEB_W_K(a)Z +@ thiscall -arch=win32 ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEAA_WI(a)Z(ptr long) MSVCP_basic_string_wchar_at +@ cdecl -arch=win64 ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAAEA_W_K(a)Z(ptr long) MSVCP_basic_string_wchar_at +@ thiscall -arch=win32 ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEAB_WI(a)Z(ptr long) MSVCP_basic_string_wchar_const_at +@ cdecl -arch=win64 ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBAAEB_W_K(a)Z(ptr long) MSVCP_basic_string_wchar_const_at @ stub ?atan2@?$_Ctraits(a)M@std@@SAMMM(a)Z @ stub ?atan2@?$_Ctraits(a)N@std@@SANNN(a)Z @ stub ?atan2@?$_Ctraits(a)O@std@@SAOOO(a)Z diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index a54f323..e65043a 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -1088,6 +1088,35 @@ size_t __thiscall MSVCP_basic_string_char_find_ch( return MSVCP_basic_string_char_find_cstr_substr(this, &ch, pos, 1); } +/* ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAADI(a)Z */ +/* ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAAEAD_K(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_at, 8) +char* __thiscall MSVCP_basic_string_char_at( + basic_string_char *this, size_t pos) +{ + TRACE("%p %lu\n", this, (unsigned long)pos); + + if(this->size <= pos) + MSVCP__String_base_Xran(); + + return basic_string_char_ptr(this)+pos; +} + +/* ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEABDI(a)Z */ +/* ?at@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBAAEBD_K(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_const_at, 8) +const char* __thiscall MSVCP_basic_string_char_const_at( + const basic_string_char *this, size_t pos) +{ + TRACE("%p %lu\n", this, (unsigned long)pos); + + if(this->size <= pos) + MSVCP__String_base_Xran(); + + return basic_string_char_const_ptr(this)+pos; +} + + /* 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 */ /* ?npos@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@2_KB */ @@ -1678,3 +1707,31 @@ size_t __thiscall MSVCP_basic_string_wchar_find_ch( { return MSVCP_basic_string_wchar_find_cstr_substr(this, &ch, pos, 1); } + +/* ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEAA_WI(a)Z */ +/* ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAAEA_W_K(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_at, 8) +wchar_t* __thiscall MSVCP_basic_string_wchar_at( + basic_string_wchar *this, size_t pos) +{ + TRACE("%p %lu\n", this, (unsigned long)pos); + + if(this->size <= pos) + MSVCP__String_base_Xran(); + + return basic_string_wchar_ptr(this)+pos; +} + +/* ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEAB_WI(a)Z */ +/* ?at@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBAAEB_W_K(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_const_at, 8) +const wchar_t* __thiscall MSVCP_basic_string_wchar_const_at( + const basic_string_wchar *this, size_t pos) +{ + TRACE("%p %lu\n", this, (unsigned long)pos); + + if(this->size <= pos) + MSVCP__String_base_Xran(); + + return basic_string_wchar_const_ptr(this)+pos; +}
participants (1)
-
Alexandre Julliard