Module: wine Branch: master Commit: 8ed4f6e07b76c3c5afb021a1f48b2ae648b0cb39 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8ed4f6e07b76c3c5afb021a1f4... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Tue Sep 13 10:31:27 2011 +0200 msvcp90: Added basic_string::_Pdif implementation. --- dlls/msvcp90/msvcp90.spec | 8 ++++---- dlls/msvcp90/string.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index 515e05f..51a2ea1 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -2676,12 +2676,12 @@ @ stub -arch=win64 ?_Osfx@?$basic_ostream(a)GU?$char_traits(a)G@std@@@std@@QEAAXXZ @ stub -arch=win32 ?_Osfx@?$basic_ostream(a)_WU?$char_traits(a)_W@std@@@std@@QAEXXZ @ stub -arch=win64 ?_Osfx@?$basic_ostream(a)_WU?$char_traits(a)_W@std@@@std@@QEAAXXZ -@ stub -arch=win32 ?_Pdif@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@KAIV?$_String_const_iterator(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)0@Z -@ stub -arch=win64 ?_Pdif@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@KA_KV?$_String_const_iterator(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)0@Z +@ cdecl -arch=win32 ?_Pdif@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@KAIV?$_String_const_iterator(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)0@Z(ptr ptr ptr ptr) MSVCP_basic_string_char_Pdif +@ cdecl -arch=win64 ?_Pdif@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@KA_KV?$_String_const_iterator(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)0@Z(ptr ptr) MSVCP_basic_string_char_Pdif @ stub -arch=win32 ?_Pdif@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@KAIV?$_String_const_iterator(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2(a)0@Z @ stub -arch=win64 ?_Pdif@?$basic_string(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@std@@KA_KV?$_String_const_iterator(a)GU?$char_traits(a)G@std@@V?$allocator(a)G@2@@2(a)0@Z -@ stub -arch=win32 ?_Pdif@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@KAIV?$_String_const_iterator(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)0@Z -@ stub -arch=win64 ?_Pdif@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@KA_KV?$_String_const_iterator(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)0@Z +@ cdecl -arch=win32 ?_Pdif@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@KAIV?$_String_const_iterator(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)0@Z(ptr ptr ptr ptr) MSVCP_basic_string_wchar_Pdif +@ cdecl -arch=win64 ?_Pdif@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@KA_KV?$_String_const_iterator(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)0@Z(ptr ptr ptr ptr) MSVCP_basic_string_wchar_Pdif @ thiscall -arch=win32 ?_Pnavail@?$basic_streambuf(a)DU?$char_traits(a)D@std@@@std@@IBEHXZ(ptr) basic_streambuf_char__Pnavail @ cdecl -arch=win64 ?_Pnavail@?$basic_streambuf(a)DU?$char_traits(a)D@std@@@std@@IEBA_JXZ(ptr) basic_streambuf_char__Pnavail @ stub -arch=win32 ?_Pnavail@?$basic_streambuf(a)GU?$char_traits(a)G@std@@@std@@IBEHXZ diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index 47c0c03..300c8bd 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -1505,6 +1505,20 @@ String_reverse_iterator_char __thiscall MSVCP_basic_string_char_rend(basic_strin return ret; } +/* ?_Pdif@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@KAIV?$_String_const_iterator(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)0@Z */ +/* ?_Pdif@?$basic_string(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@std@@KA_KV?$_String_const_iterator(a)DU?$char_traits(a)D@std@@V?$allocator(a)D@2@@2(a)0@Z */ +MSVCP_size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, String_iterator_char i2) +{ + TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos); + + if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) { + _invalid_parameter(NULL, NULL, NULL, 0, 0); + return 0; + } + + return !i1.pos ? 0 : i1.pos-i2.pos; +} + /* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */ /* ?npos@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@2IB */ /* ?npos@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@2_KB */ @@ -2492,3 +2506,17 @@ String_reverse_iterator_wchar __thiscall MSVCP_basic_string_wchar_rend(basic_str ret.pos = basic_string_wchar_const_ptr(this); return ret; } + +/* ?_Pdif@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@KAIV?$_String_const_iterator(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)0@Z */ +/* ?_Pdif@?$basic_string(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@std@@KA_KV?$_String_const_iterator(a)_WU?$char_traits(a)_W@std@@V?$allocator(a)_W@2@@2(a)0@Z */ +MSVCP_size_t __cdecl MSVCP_basic_string_wchar_Pdif(String_iterator_wchar i1, String_iterator_wchar i2) +{ + TRACE("(%p %p) (%p %p)\n", i1.bstr, i1.pos, i2.bstr, i2.pos); + + if((!i1.bstr && i1.pos) || i1.bstr!=i2.bstr) { + _invalid_parameter(NULL, NULL, NULL, 0, 0); + return 0; + } + + return !i1.pos ? 0 : i1.pos-i2.pos; +}