From: YongHao Hu Subject: msvcp90: Add complex_float << implementation Message-Id: <53E72E27.3050308@gmail.com> Date: Sun, 10 Aug 2014 16:32:39 +0800 --- dlls/msvcp90/ios.c | 28 ++++++++++++++++++++++++++++ dlls/msvcp90/msvcp90.spec | 4 ++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c index 43daab0..91db96e 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -6540,6 +6540,34 @@ basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ost return ostr; } +/* ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z */ +/* ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z */ +basic_ostream_char* __cdecl basic_ostream_char_print_complex_float(basic_ostream_char *ostr, const complex_float *val) +{ + basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr); + IOSB_iostate state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", ostr, val); + + if(basic_ostream_char_sentry_create(ostr)) { + basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base); + const num_put *numput = num_put_char_use_facet(strbuf->loc); + ostreambuf_iterator_char dest; + + memset(&dest, 0, sizeof(dest)); + dest.strbuf = strbuf; + basic_streambuf_char_sputc(base->strbuf, '('); + num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val->real); + basic_streambuf_char_sputc(base->strbuf, ','); + num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val->imag); + basic_streambuf_char_sputc(base->strbuf, ')'); + } + basic_ostream_char_sentry_destroy(ostr); + + basic_ios_char_setstate(base, state); + return ostr; +} + /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */ /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */ DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8) diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index f5ef279..745af9d 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -50,8 +50,8 @@ @ cdecl -arch=win64 ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z(ptr ptr) basic_ostream_char_print_str @ cdecl -arch=win32 ??$?6GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z(ptr ptr) basic_ostream_wchar_print_bstr @ cdecl -arch=win64 ??$?6GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z(ptr ptr) basic_ostream_wchar_print_bstr -@ stub -arch=win32 ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z -@ stub -arch=win64 ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z +@ cdecl -arch=win32 ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z(ptr ptr) basic_ostream_char_print_complex_float +@ cdecl -arch=win64 ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z(ptr ptr) basic_ostream_char_print_complex_float @ stub -arch=win32 ??$?6MGU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$complex@M@0@@Z @ stub -arch=win64 ??$?6MGU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$complex@M@0@@Z @ stub -arch=win32 ??$?6M_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$complex@M@0@@Z