Piotr Caban : msvcp71: Added basic_string<char>::insert(iterator, char*, char*) implementation.
Module: wine Branch: master Commit: ae372f53f79a0cc22e88e63920fa83e9df5cd1e3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ae372f53f79a0cc22e88e63920... Author: Piotr Caban <piotr(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAAV12(a)IPBDI@Z(ptr long ptr long) basic_string_char_insert_cstr_len @ cdecl -arch=win64 ?insert@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAAEAV12(a)_KPEBD@Z(ptr long str) basic_string_char_insert_cstr @ thiscall -arch=win32 ?insert@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXViterator(a)12@ID(a)Z(ptr ptr long long) basic_string_char_insert_iter_chn -@ thiscall -arch=win32 ?insert@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXViterator(a)12@PBD1(a)Z(ptr ptr ptr ptr) basic_string_wchar_insert_iter_ptr_ptr -@ thiscall -arch=win32 ?insert@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXViterator(a)12@Vconst_iterator(a)12@1(a)Z(ptr ptr ptr ptr) basic_string_wchar_insert_iter_beg_end +@ thiscall -arch=win32 ?insert@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXViterator(a)12@PBD1(a)Z(ptr ptr ptr ptr) basic_string_char_insert_iter_ptr_ptr +@ thiscall -arch=win32 ?insert@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXViterator(a)12@Vconst_iterator(a)12@1(a)Z(ptr ptr ptr ptr) basic_string_char_insert_iter_beg_end @ thiscall -arch=win32 ?insert@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAE?AViterator(a)12@V312@@Z(ptr ptr ptr) basic_string_wchar_insert_iter_null @ thiscall -arch=win32 ?insert@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAE?AViterator(a)12@V312(a)G@Z(ptr ptr ptr long) basic_string_wchar_insert_iter_ch @ thiscall -arch=win32 ?insert@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEAAV12(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAAV12(a)Viterator@12(a)0PBD1@Z */ /* ?replace@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEAAV12(a)V?$_Ptrit(a)DHPADAADPADAAD@2(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXViterator(a)12@PBD1(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXViterator(a)12@PBD1(a)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(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE?AViterator(a)12@XZ */ /* ?begin@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBE?AVconst_iterator(a)12@XZ */ /* ?rend@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE?AV?$reverse_iterator(a)Viterator@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@@2(a)XZ */ @@ -4360,8 +4385,6 @@ basic_string_wchar* __thiscall basic_string_wchar_replace_iter_ch(basic_string_w return this; } -/* ?replace@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEAAV12(a)V?$_String_const_iterator(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)0PB_W1@Z */ -/* ?replace@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAAEAV12(a)V?$_String_const_iterator(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)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)
participants (1)
-
Alexandre Julliard