Piotr Caban : msvcp90: Added basic_string<char>::erase implementation.

Alexandre Julliard julliard at winehq.org
Thu Aug 19 11:44:09 CDT 2010


Module: wine
Branch: master
Commit: 935e0f53a195adced5792845880f46cb4eeabd15
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=935e0f53a195adced5792845880f46cb4eeabd15

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Aug 19 12:17:31 2010 +0200

msvcp90: Added basic_string<char>::erase implementation.

---

 dlls/msvcp90/msvcp90.spec |    4 ++--
 dlls/msvcp90/string.c     |   26 ++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec
index df3664b..1f60fb6 100644
--- a/dlls/msvcp90/msvcp90.spec
+++ b/dlls/msvcp90/msvcp90.spec
@@ -3774,8 +3774,8 @@
 @ stub -arch=win64 ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA?AV?$_String_iterator at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at V?$_String_const_iterator at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at 0@Z
 @ stub -arch=win32 ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAE?AV?$_String_iterator at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at V?$_String_const_iterator at DU?$char_traits at D@std@@V?$allocator at D@2@@2@@Z
 @ stub -arch=win64 ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA?AV?$_String_iterator at DU?$char_traits at D@std@@V?$allocator at D@2@@2 at V?$_String_const_iterator at DU?$char_traits at D@std@@V?$allocator at D@2@@2@@Z
-@ stub -arch=win32 ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at II@Z
-@ stub -arch=win64 ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at _K0@Z
+@ cdecl -arch=win32 -i386 -norelay ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at II@Z(long long) __thiscall_MSVCP_basic_string_char_erase
+@ cdecl -arch=win64 ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at _K0@Z(ptr long long) MSVCP_basic_string_char_erase
 @ stub -arch=win32 ?erase@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAE?AV?$_String_iterator at GU?$char_traits at G@std@@V?$allocator at G@2@@2 at V?$_String_const_iterator at GU?$char_traits at G@std@@V?$allocator at G@2@@2 at 0@Z
 @ stub -arch=win64 ?erase@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEAA?AV?$_String_iterator at GU?$char_traits at G@std@@V?$allocator at G@2@@2 at V?$_String_const_iterator at GU?$char_traits at G@std@@V?$allocator at G@2@@2 at 0@Z
 @ stub -arch=win32 ?erase@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAE?AV?$_String_iterator at GU?$char_traits at G@std@@V?$allocator at G@2@@2 at V?$_String_const_iterator at GU?$char_traits at G@std@@V?$allocator at G@2@@2@@Z
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index a1cba11..82397e2 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -504,6 +504,32 @@ static void basic_string_char_tidy(basic_string_char *this,
     basic_string_char_eos(this, new_size);
 }
 
+/* ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at II@Z */
+/* ?erase@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at _K0@Z */
+DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_erase, 12)
+basic_string_char* __stdcall MSVCP_basic_string_char_erase(
+        basic_string_char *this, size_t pos, size_t len)
+{
+    TRACE("%p %d %d\n", this, pos, len);
+
+    if(pos > this->size) {
+        FIXME("Throw exception (_Xran)\n");
+        return NULL;
+    }
+
+    if(len > this->size-pos)
+        len = this->size-pos;
+
+    if(len) {
+        MSVCP_char_traits_char__Move_s(basic_string_char_ptr(this)+pos,
+                this->res-pos, basic_string_char_ptr(this)+pos+len,
+                this->size-pos-len);
+        basic_string_char_eos(this, this->size-len);
+    }
+
+    return this;
+}
+
 /* ??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAE at XZ */
 /* ??0?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAA at XZ */
 DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor, 4)




More information about the wine-cvs mailing list