Piotr Caban : msvcp71: Added basic_string<char>::insert(iterator, char*, char*) implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 2 08:32:23 CST 2015


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Sat Jan 31 16:22:26 2015 +0100

msvcp71: Added basic_string<char>::insert(iterator, char*, char*) implementation.

---

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

diff --git a/dlls/msvcp71/msvcp71.spec b/dlls/msvcp71/msvcp71.spec
index 0bac67c..6b62d5c 100644
--- a/dlls/msvcp71/msvcp71.spec
+++ b/dlls/msvcp71/msvcp71.spec
@@ -3832,8 +3832,8 @@
 @ thiscall -arch=win32 ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at IPBDI@Z(ptr long ptr long) basic_string_char_insert_cstr_len
 @ cdecl -arch=win64 ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QEAAAEAV12 at _KPEBD@Z(ptr long str) basic_string_char_insert_cstr
 @ thiscall -arch=win32 ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXViterator at 12@ID at Z(ptr ptr long long) basic_string_char_insert_iter_chn
-@ thiscall -arch=win32 ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXViterator at 12@PBD1 at Z(ptr ptr ptr ptr) basic_string_wchar_insert_iter_ptr_ptr
-@ thiscall -arch=win32 ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXViterator at 12@Vconst_iterator at 12@1 at Z(ptr ptr ptr ptr) basic_string_wchar_insert_iter_beg_end
+@ thiscall -arch=win32 ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXViterator at 12@PBD1 at Z(ptr ptr ptr ptr) basic_string_char_insert_iter_ptr_ptr
+@ thiscall -arch=win32 ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXViterator at 12@Vconst_iterator at 12@1 at Z(ptr ptr ptr ptr) basic_string_char_insert_iter_beg_end
 @ thiscall -arch=win32 ?insert@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAE?AViterator at 12@V312@@Z(ptr ptr ptr) basic_string_wchar_insert_iter_null
 @ thiscall -arch=win32 ?insert@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAE?AViterator at 12@V312 at G@Z(ptr ptr ptr long) basic_string_wchar_insert_iter_ch
 @ thiscall -arch=win32 ?insert@?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAEAAV12 at IABV12@@Z(ptr long ptr) basic_string_wchar_insert
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
index 810fb5a..3afb375 100644
--- a/dlls/msvcp90/string.c
+++ b/dlls/msvcp90/string.c
@@ -4138,6 +4138,15 @@ basic_string_char* __thiscall basic_string_char_replace_iter_ch(basic_string_cha
     return this;
 }
 
+static basic_string_char* basic_string_char_replace_iter_ptr_ptr(basic_string_char *this,
+        basic_string_char_iterator beg, basic_string_char_iterator end,
+        const char *res_beg, const char *res_end)
+{
+    basic_string_char_iterator begin = { basic_string_char_ptr(this) };
+    return basic_string_char_replace_cstr_len(this, basic_string_char__Pdif(beg, begin),
+            basic_string_char__Pdif(end, beg), res_beg, res_end-res_beg);
+}
+
 /* ?replace@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at Viterator@12 at 0PBD1@Z */
 /* ?replace@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEAAV12 at V?$_Ptrit at DHPADAADPADAAD@2 at 0PBD1@Z */
 DEFINE_THISCALL_WRAPPER(basic_string_char_replace_iter_beg_end, 20)
@@ -4205,6 +4214,22 @@ basic_string_char_iterator* __thiscall basic_string_char_insert_iter_null(basic_
     return basic_string_char_insert_iter_ch(this, ret, where, 0);
 }
 
+/* ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXViterator at 12@PBD1 at Z */
+DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ptr_ptr, 16)
+void __thiscall basic_string_char_insert_iter_ptr_ptr(basic_string_char *this,
+        basic_string_char_iterator where, const char *beg, const char *end)
+{
+    basic_string_char_replace_iter_ptr_ptr(this, where, where, beg, end);
+}
+
+/* ?insert@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAEXViterator at 12@PBD1 at Z */
+DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_beg_end, 16)
+void __thiscall basic_string_char_insert_iter_beg_end(basic_string_char *this,
+        basic_string_char_iterator where, basic_string_char_iterator beg, basic_string_char_iterator end)
+{
+    basic_string_char_replace_iter_ptr_ptr(this, where, where, beg.pos, end.pos);
+}
+
 /* ?begin@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAE?AViterator at 12@XZ */
 /* ?begin@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QBE?AVconst_iterator at 12@XZ */
 /* ?rend@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@QAE?AV?$reverse_iterator at Viterator@?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@@2 at XZ */
@@ -4360,8 +4385,6 @@ basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_w
     return this;
 }
 
-/* ?replace@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QAEAAV12 at V?$_String_const_iterator at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@2 at 0PB_W1@Z */
-/* ?replace@?$basic_string at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@std@@QEAAAEAV12 at V?$_String_const_iterator at _WU?$char_traits at _W@std@@V?$allocator at _W@2@@2 at 0PEB_W1@Z */
 static basic_string_wchar* basic_string_wchar_replace_iter_ptr_ptr(basic_string_wchar *this,
         basic_string_wchar_iterator beg, basic_string_wchar_iterator end,
         const wchar_t *res_beg, const wchar_t *res_end)




More information about the wine-cvs mailing list