Module: wine Branch: master Commit: ce8a64470b09c156120b6eb538c35313dc5e0e17 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ce8a64470b09c156120b6eb538...
Author: Piotr Caban piotr@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@_W@std@@SAPEA_WPEA_W_K_W@Z(ptr long long) MSVCP_char_traits_wchar_assignn @ cdecl -arch=win32 ?assign@?$char_traits@_W@std@@SAXAA_WAB_W@Z(ptr ptr) MSVCP_char_traits_wchar_assign @ cdecl -arch=win64 ?assign@?$char_traits@_W@std@@SAXAEA_WAEB_W@Z(ptr ptr) MSVCP_char_traits_wchar_assign -@ stub -arch=win32 ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z -@ stub -arch=win64 ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z -@ stub -arch=win32 ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z -@ stub -arch=win64 ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z +@ thiscall -arch=win32 ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z(ptr long) MSVCP_basic_string_char_at +@ cdecl -arch=win64 ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@Z(ptr long) MSVCP_basic_string_char_at +@ thiscall -arch=win32 ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z(ptr long) MSVCP_basic_string_char_const_at +@ cdecl -arch=win64 ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@Z(ptr long) MSVCP_basic_string_char_const_at @ stub -arch=win32 ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEAAGI@Z @ stub -arch=win64 ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAAEAG_K@Z @ stub -arch=win32 ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEABGI@Z @ stub -arch=win64 ?at@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAAEBG_K@Z -@ stub -arch=win32 ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z -@ stub -arch=win64 ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z -@ stub -arch=win32 ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z -@ stub -arch=win64 ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z +@ thiscall -arch=win32 ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z(ptr long) MSVCP_basic_string_wchar_at +@ cdecl -arch=win64 ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@Z(ptr long) MSVCP_basic_string_wchar_at +@ thiscall -arch=win32 ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z(ptr long) MSVCP_basic_string_wchar_const_at +@ cdecl -arch=win64 ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@Z(ptr long) MSVCP_basic_string_wchar_const_at @ stub ?atan2@?$_Ctraits@M@std@@SAMMM@Z @ stub ?atan2@?$_Ctraits@N@std@@SANNN@Z @ stub ?atan2@?$_Ctraits@O@std@@SAOOO@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@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAADI@Z */ +/* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAD_K@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@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z */ +/* ?at@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAAEBD_K@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@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */ /* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_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@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAA_WI@Z */ +/* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAAEA_W_K@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@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEAB_WI@Z */ +/* ?at@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAAEB_W_K@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; +}