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