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