Module: wine Branch: master Commit: d7ff552b71cd7d2cd0f3cfa1db05a60af0a4164a URL: http://source.winehq.org/git/wine.git/?a=commit;h=d7ff552b71cd7d2cd0f3cfa1db... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Thu Oct 13 14:08:14 2011 +0200 msvcp90: Added basic_string::reserve implementation. --- dlls/msvcp90/msvcp90.spec | 8 ++++---- dlls/msvcp90/string.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index 25bb0b9..9ace7d7 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -5167,12 +5167,12 @@ @ stub -arch=win64 ?replace@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAAEAV12(a)_K0PEB_W0@Z @ stub -arch=win32 ?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_WI@Z @ stub -arch=win64 ?replace@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAAEAV12(a)_K0PEB_W@Z -@ stub -arch=win32 ?reserve@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXI(a)Z -@ stub -arch=win64 ?reserve@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_K(a)Z +@ thiscall -arch=win32 ?reserve@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXI(a)Z(ptr long) MSVCP_basic_string_char_reserve +@ cdecl -arch=win64 ?reserve@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_K(a)Z(ptr long) MSVCP_basic_string_char_reserve @ stub -arch=win32 ?reserve@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QAEXI(a)Z @ stub -arch=win64 ?reserve@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@QEAAX_K(a)Z -@ stub -arch=win32 ?reserve@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI(a)Z -@ stub -arch=win64 ?reserve@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K(a)Z +@ thiscall -arch=win32 ?reserve@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI(a)Z(ptr long) MSVCP_basic_string_wchar_reserve +@ cdecl -arch=win64 ?reserve@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K(a)Z(ptr long) MSVCP_basic_string_wchar_reserve @ stub ?resetiosflags(a)std@@YA?AU?$_Smanip(a)H@1(a)H@Z @ thiscall -arch=win32 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXI(a)Z(ptr long) MSVCP_basic_string_char_resize @ cdecl -arch=win64 ?resize@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_K(a)Z(ptr long) MSVCP_basic_string_char_resize diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index 59bc270..ba10c20 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -780,6 +780,23 @@ MSVCP_size_t __thiscall MSVCP_basic_string_char_capacity(basic_string_char *this return this->res; } +/* ?reserve@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAEXI(a)Z */ +/* ?reserve@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QEAAX_K(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_reserve, 8) +void __thiscall MSVCP_basic_string_char_reserve(basic_string_char *this, MSVCP_size_t size) +{ + MSVCP_size_t len; + + TRACE("%p %ld\n", this, size); + + len = this->size; + if(len > size) + return; + + basic_string_char_grow(this, size, FALSE); + basic_string_char_eos(this, len); +} + /* ??0?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@QAE(a)XZ */ /* ??0?$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_ctor, 4) @@ -1873,6 +1890,23 @@ MSVCP_size_t __thiscall MSVCP_basic_string_wchar_capacity(basic_string_wchar *th return this->res; } +/* ?reserve@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAEXI(a)Z */ +/* ?reserve@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QEAAX_K(a)Z */ +DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_reserve, 8) +void __thiscall MSVCP_basic_string_wchar_reserve(basic_string_wchar *this, MSVCP_size_t size) +{ + MSVCP_size_t len; + + TRACE("%p %ld\n", this, size); + + len = this->size; + if(len > size) + return; + + basic_string_wchar_grow(this, size, FALSE); + basic_string_wchar_eos(this, len); +} + /* ??0?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@QAE(a)XZ */ /* ??0?$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_ctor, 4)