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