Module: wine Branch: master Commit: 5d1af4b6f6bdcf3a8789a21bcdd26c82d8a4bb47 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5d1af4b6f6bdcf3a8789a21bcd... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Thu Oct 13 14:08:00 2011 +0200 msvcp90: Added operator+(basic_string, char) implementation. --- dlls/msvcp90/msvcp90.spec | 16 +++++++------- dlls/msvcp90/string.c | 52 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index ecde9b5..25bb0b9 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -202,12 +202,12 @@ @ stub -arch=win64 ??$?GO(a)std@@YA?AV?$complex(a)O@0(a)AEBV10@AEBO(a)Z @ cdecl -arch=win32 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)ABV10@0(a)Z(ptr ptr ptr) MSVCP_basic_string_char_concatenate @ cdecl -arch=win64 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)AEBV10@0(a)Z(ptr ptr ptr) MSVCP_basic_string_char_concatenate -@ stub -arch=win32 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)ABV10@D(a)Z -@ stub -arch=win64 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)AEBV10@D(a)Z +@ cdecl -arch=win32 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)ABV10@D(a)Z(ptr ptr long) MSVCP_basic_string_char_concatenate_bstr_ch +@ cdecl -arch=win64 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)AEBV10@D(a)Z(ptr ptr long) MSVCP_basic_string_char_concatenate_bstr_ch @ cdecl -arch=win32 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)ABV10@PBD(a)Z(ptr ptr str) MSVCP_basic_string_char_concatenate_bstr_cstr @ cdecl -arch=win64 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)AEBV10@PEBD(a)Z(ptr ptr str) MSVCP_basic_string_char_concatenate_bstr_cstr -@ stub -arch=win32 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)DABV10@@Z -@ stub -arch=win64 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)DAEBV10@@Z +@ cdecl -arch=win32 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)DABV10@@Z(ptr long ptr) MSVCP_basic_string_char_concatenate_ch_bstr +@ cdecl -arch=win64 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)DAEBV10@@Z(ptr long ptr) MSVCP_basic_string_char_concatenate_ch_bstr @ cdecl -arch=win32 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)PBDABV10@@Z(ptr str ptr) MSVCP_basic_string_char_concatenate_cstr_bstr @ cdecl -arch=win64 ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)PEBDAEBV10@@Z(ptr str ptr) MSVCP_basic_string_char_concatenate_cstr_bstr @ stub -arch=win32 ??$?HGU?$char_traits(a)G@std@@V?$allocator(a)G@1@@std@@YA?AV?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@0(a)ABV10@0(a)Z @@ -248,12 +248,12 @@ @ cdecl -arch=win64 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)AEBV10@0(a)Z(ptr ptr ptr) MSVCP_basic_string_wchar_concatenate @ cdecl -arch=win32 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)ABV10@PB_W(a)Z(ptr ptr wstr) MSVCP_basic_string_wchar_concatenate_bstr_cstr @ cdecl -arch=win64 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)AEBV10@PEB_W(a)Z(ptr ptr wstr) MSVCP_basic_string_wchar_concatenate_bstr_cstr -@ stub -arch=win32 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)ABV10@_W(a)Z -@ stub -arch=win64 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)AEBV10@_W(a)Z +@ cdecl -arch=win32 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)ABV10@_W(a)Z(ptr ptr long) MSVCP_basic_string_wchar_concatenate_bstr_ch +@ cdecl -arch=win64 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)AEBV10@_W(a)Z(ptr ptr long) MSVCP_basic_string_wchar_concatenate_bstr_ch @ cdecl -arch=win32 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)PB_WABV10@@Z(ptr wstr ptr) MSVCP_basic_string_wchar_concatenate_cstr_bstr @ cdecl -arch=win64 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)PEB_WAEBV10@@Z(ptr wstr ptr) MSVCP_basic_string_wchar_concatenate_cstr_bstr -@ stub -arch=win32 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)_WABV10@@Z -@ stub -arch=win64 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)_WAEBV10@@Z +@ cdecl -arch=win32 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)_WABV10@@Z(ptr long ptr) MSVCP_basic_string_wchar_concatenate_ch_bstr +@ cdecl -arch=win64 ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)_WAEBV10@@Z(ptr long ptr) MSVCP_basic_string_wchar_concatenate_ch_bstr @ stub -arch=win32 ??$?KM(a)std@@YA?AV?$complex(a)M@0(a)ABMABV10@@Z @ stub -arch=win64 ??$?KM(a)std@@YA?AV?$complex(a)M@0(a)AEBMAEBV10@@Z @ stub -arch=win32 ??$?KM(a)std@@YA?AV?$complex(a)M@0(a)ABV10@0(a)Z diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index c89b793..59bc270 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -1078,6 +1078,30 @@ basic_string_char* __cdecl MSVCP_basic_string_char_concatenate(basic_string_char return ret; } +/* ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)ABV10@D(a)Z */ +/* ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)AEBV10@D(a)Z */ +basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_bstr_ch(basic_string_char *ret, + const basic_string_char *left, char right) +{ + TRACE("%p %c\n", left, right); + + MSVCP_basic_string_char_copy_ctor(ret, left); + MSVCP_basic_string_char_append_ch(ret, right); + return ret; +} + +/* ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)DABV10@@Z */ +/* ??$?HDU?$char_traits(a)D@std@@V?$allocator(a)D@1@@std@@YA?AV?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@0(a)DAEBV10@@Z */ +basic_string_char* __cdecl MSVCP_basic_string_char_concatenate_ch_bstr(basic_string_char *ret, + char left, const basic_string_char *right) +{ + TRACE("%c %p\n", left, right); + + MSVCP_basic_string_char_ctor_cstr_len(ret, &left, 1); + MSVCP_basic_string_char_append(ret, right); + return ret; +} + /* ?compare@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QBEHIIPBDI(a)Z */ /* ?compare@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEBAH_K0PEBD0(a)Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20) @@ -2147,6 +2171,34 @@ basic_string_wchar* __cdecl MSVCP_basic_string_wchar_concatenate(basic_string_wc return ret; } +/* ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)ABV10@_W(a)Z */ +/* ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)AEBV10@_W(a)Z */ +basic_string_wchar __cdecl MSVCP_basic_string_wchar_concatenate_bstr_ch( + const basic_string_wchar *left, wchar_t right) +{ + basic_string_wchar ret = { 0 }; + + TRACE("%p %c\n", left, right); + + MSVCP_basic_string_wchar_copy_ctor(&ret, left); + MSVCP_basic_string_wchar_append_ch(&ret, right); + return ret; +} + +/* ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)_WABV10@@Z */ +/* ??$?H_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@1@@std@@YA?AV?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@0(a)_WAEBV10@@Z */ +basic_string_wchar __cdecl MSVCP_basic_string_wchar_concatenate_ch_bstr( + wchar_t left, const basic_string_wchar *right) +{ + basic_string_wchar ret = { 0 }; + + TRACE("%c %p\n", left, right); + + MSVCP_basic_string_wchar_ctor_cstr_len(&ret, &left, 1); + MSVCP_basic_string_wchar_append(&ret, right); + return ret; +} + /* ?compare@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QBEHIIPB_WI(a)Z */ /* ?compare@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEBAH_K0PEB_W0(a)Z */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_compare_substr_cstr_len, 20)