Module: wine Branch: master Commit: acf0cea825c1353dc3ec79fb1667cbd3855f7cd9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=acf0cea825c1353dc3ec79fb16... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Nov 24 19:58:45 2010 +0100 msvcp90: Added basic_string<{char,wchar}> constructor (substring) implementation. --- dlls/msvcp80/msvcp80.spec | 8 ++++---- dlls/msvcp90/msvcp90.spec | 8 ++++---- dlls/msvcp90/string.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/dlls/msvcp80/msvcp80.spec b/dlls/msvcp80/msvcp80.spec index 3cadb5f..23576f5 100644 --- a/dlls/msvcp80/msvcp80.spec +++ b/dlls/msvcp80/msvcp80.spec @@ -740,8 +740,8 @@ @ stub -arch=win64 ??0?$basic_streambuf(a)_WU?$char_traits(a)_W@std@@@std@@IEAA(a)XZ @ thiscall -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@@Z(ptr ptr) msvcp90.??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@@Z @ cdecl -arch=win64 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@@Z(ptr ptr) msvcp90.??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@@Z -@ stub -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@II(a)Z -@ stub -arch=win64 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@_K1(a)Z +@ thiscall -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@II(a)Z(ptr ptr long long) msvcp90.??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@II(a)Z +@ cdecl -arch=win64 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@_K1(a)Z(ptr ptr long long) msvcp90.??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@_K1(a)Z @ stub -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@IIABV?$allocator(a)D@1@@Z @ stub -arch=win64 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@_K1AEBV?$allocator(a)D@1@@Z @ stub -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV?$allocator(a)D@1@@Z @@ -792,8 +792,8 @@ @ stub -arch=win64 ??0?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEAA(a)_KGAEBV?$allocator(a)G@1@@Z @ thiscall -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@@Z(ptr ptr) msvcp90.??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@@Z @ cdecl -arch=win64 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@@Z(ptr ptr) msvcp90.??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@@Z -@ stub -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@II(a)Z -@ stub -arch=win64 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@_K1(a)Z +@ thiscall -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@II(a)Z(ptr ptr long long) msvcp90.??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@II(a)Z +@ cdecl -arch=win64 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@_K1(a)Z(ptr ptr long long) msvcp90.??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@_K1(a)Z @ stub -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@IIABV?$allocator(a)_W@1@@Z @ stub -arch=win64 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@_K1AEBV?$allocator(a)_W@1@@Z @ stub -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV?$allocator(a)_W@1@@Z diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index f41cf79..4162234 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -734,8 +734,8 @@ @ stub -arch=win64 ??0?$basic_streambuf(a)_WU?$char_traits(a)_W@std@@@std@@IEAA(a)XZ @ thiscall -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@@Z(ptr ptr) MSVCP_basic_string_char_copy_ctor @ cdecl -arch=win64 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@@Z(ptr ptr) MSVCP_basic_string_char_copy_ctor -@ stub -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@II(a)Z -@ stub -arch=win64 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@_K1(a)Z +@ thiscall -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@II(a)Z(ptr ptr long long) MSVCP_basic_string_char_ctor_substr +@ cdecl -arch=win64 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@_K1(a)Z(ptr ptr long long) MSVCP_basic_string_char_ctor_substr @ stub -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@IIABV?$allocator(a)D@1@@Z @ stub -arch=win64 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@_K1AEBV?$allocator(a)D@1@@Z @ stub -arch=win32 ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV?$allocator(a)D@1@@Z @@ -786,8 +786,8 @@ @ stub -arch=win64 ??0?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEAA(a)_KGAEBV?$allocator(a)G@1@@Z @ thiscall -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@@Z(ptr ptr) MSVCP_basic_string_wchar_copy_ctor @ cdecl -arch=win64 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@@Z(ptr ptr) MSVCP_basic_string_wchar_copy_ctor -@ stub -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@II(a)Z -@ stub -arch=win64 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@_K1(a)Z +@ thiscall -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@II(a)Z(ptr ptr long long) MSVCP_basic_string_wchar_ctor_substr +@ cdecl -arch=win64 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@_K1(a)Z(ptr ptr long long) MSVCP_basic_string_wchar_ctor_substr @ stub -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@IIABV?$allocator(a)_W@1@@Z @ stub -arch=win64 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@_K1AEBV?$allocator(a)_W@1@@Z @ stub -arch=win32 ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV?$allocator(a)_W@1@@Z diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index db9022f..38e6366 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -737,6 +737,20 @@ basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr( return this; } +/* ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)ABV01@II(a)Z */ +/* ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)AEBV01@_K1(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_ctor_substr, 16) +basic_string_char* __thiscall MSVCP_basic_string_char_ctor_substr( + basic_string_char *this, const basic_string_char *assign, + size_t pos, size_t len) +{ + TRACE("%p %p %lu %lu\n", this, assign, (unsigned long)pos, (unsigned long)len); + + basic_string_char_tidy(this, FALSE, 0); + MSVCP_basic_string_char_assign_substr(this, assign, pos, len); + return this; +} + /* ??1?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)XZ */ /* ??1?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAA(a)XZ */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4) @@ -1029,6 +1043,20 @@ basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr( return this; } +/* ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)ABV01@II(a)Z */ +/* ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)AEBV01@_K1(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_ctor_substr, 16) +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_substr( + basic_string_wchar *this, const basic_string_wchar *assign, + size_t pos, size_t len) +{ + TRACE("%p %p %lu %lu\n", this, assign, (unsigned long)pos, (unsigned long)len); + + basic_string_wchar_tidy(this, FALSE, 0); + MSVCP_basic_string_wchar_assign_substr(this, assign, pos, len); + return this; +} + /* ??1?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)XZ */ /* ??1?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAA(a)XZ */ DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)