msvcp90: Add ostream::operator<<complex implementation and tests.

This commit is contained in:
YongHao Hu 2014-10-27 12:43:54 +08:00 committed by Alexandre Julliard
parent 3e1c4908ef
commit 24de856045
5 changed files with 229 additions and 18 deletions

View File

@ -50,20 +50,20 @@
@ 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
@ stub -arch=win64 ??$?6M_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@AEBV?$complex@M@0@@Z
@ stub -arch=win32 ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ cdecl -arch=win32 ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z(ptr ptr) basic_ostream_char_print_complex_double
@ cdecl -arch=win64 ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z(ptr ptr) basic_ostream_char_print_complex_double
@ stub -arch=win32 ??$?6NGU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6NGU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ stub -arch=win32 ??$?6N_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6N_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ stub -arch=win32 ??$?6ODU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@O@0@@Z
@ stub -arch=win64 ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z
@ cdecl -arch=win32 ??$?6ODU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@O@0@@Z(ptr ptr) basic_ostream_char_print_complex_ldouble
@ cdecl -arch=win64 ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z(ptr ptr) basic_ostream_char_print_complex_ldouble
@ stub -arch=win32 ??$?6OGU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$complex@O@0@@Z
@ stub -arch=win64 ??$?6OGU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$complex@O@0@@Z
@ stub -arch=win32 ??$?6O_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$complex@O@0@@Z

View File

@ -50,20 +50,20 @@
@ 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
@ stub -arch=win64 ??$?6M_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@AEBV?$complex@M@0@@Z
@ stub -arch=win32 ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ cdecl -arch=win32 ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z(ptr ptr) basic_ostream_char_print_complex_double
@ cdecl -arch=win64 ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z(ptr ptr) basic_ostream_char_print_complex_double
@ stub -arch=win32 ??$?6NGU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6NGU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ stub -arch=win32 ??$?6N_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6N_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ stub -arch=win32 ??$?6ODU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@O@0@@Z
@ stub -arch=win64 ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z
@ cdecl -arch=win32 ??$?6ODU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@O@0@@Z(ptr ptr) basic_ostream_char_print_complex_ldouble
@ cdecl -arch=win64 ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z(ptr ptr) basic_ostream_char_print_complex_ldouble
@ stub -arch=win32 ??$?6OGU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$complex@O@0@@Z
@ stub -arch=win64 ??$?6OGU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$complex@O@0@@Z
@ stub -arch=win32 ??$?6O_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$complex@O@0@@Z

View File

@ -13770,6 +13770,108 @@ static inline strstream* strstream_from_basic_ios(basic_ios_char *ptr)
return (strstream*)((char*)ptr-strstream_vbtable1[1]);
}
/* ??$?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)
{
struct {
basic_ostringstream_char obj;
basic_ios_char vbase;
} oss;
ios_base *ostringstream_ios_base, *ostream_ios_base;
locale loc;
basic_string_char str;
basic_ostringstream_char_ctor(&oss.obj);
ostringstream_ios_base = &oss.vbase.base;
ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
TRACE("(%p %p)\n", ostr, val);
ios_base_imbue(ostringstream_ios_base, &loc, ostream_ios_base->loc);
locale_dtor(&loc);
ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
basic_ostream_char_print_ch(&oss.obj.base, '(');
basic_ostream_char_print_float(&oss.obj.base, val->real);
basic_ostream_char_print_ch(&oss.obj.base, ',');
basic_ostream_char_print_float(&oss.obj.base, val->imag);
basic_ostream_char_print_ch(&oss.obj.base, ')');
basic_ostringstream_char_str_get(&oss.obj, &str);
basic_ostringstream_char_dtor(&oss.vbase);
basic_ostream_char_print_bstr(ostr, &str);
MSVCP_basic_string_char_dtor(&str);
return ostr;
}
/* ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z */
/* ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z */
basic_ostream_char* __cdecl basic_ostream_char_print_complex_double(basic_ostream_char *ostr, const complex_double *val)
{
struct {
basic_ostringstream_char obj;
basic_ios_char vbase;
} oss;
ios_base *ostringstream_ios_base, *ostream_ios_base;
locale loc;
basic_string_char str;
basic_ostringstream_char_ctor(&oss.obj);
ostringstream_ios_base = &oss.vbase.base;
ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
TRACE("(%p %p)\n", ostr, val);
ios_base_imbue(ostringstream_ios_base, &loc, ostream_ios_base->loc);
locale_dtor(&loc);
ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
basic_ostream_char_print_ch(&oss.obj.base, '(');
basic_ostream_char_print_double(&oss.obj.base, val->real);
basic_ostream_char_print_ch(&oss.obj.base, ',');
basic_ostream_char_print_double(&oss.obj.base, val->imag);
basic_ostream_char_print_ch(&oss.obj.base, ')');
basic_ostringstream_char_str_get(&oss.obj, &str);
basic_ostringstream_char_dtor(&oss.vbase);
basic_ostream_char_print_bstr(ostr, &str);
MSVCP_basic_string_char_dtor(&str);
return ostr;
}
/* ??$?6odu?$char_traits@d@std@@@std@@yaaav?$basic_ostream@du?$char_traits@d@std@@@0@aav10@abv?$complex@o@0@@Z */
/* ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z */
basic_ostream_char* __cdecl basic_ostream_char_print_complex_ldouble(basic_ostream_char *ostr, const complex_double *val)
{
struct {
basic_ostringstream_char obj;
basic_ios_char vbase;
} oss;
ios_base *ostringstream_ios_base, *ostream_ios_base;
locale loc;
basic_string_char str;
basic_ostringstream_char_ctor(&oss.obj);
ostringstream_ios_base = &oss.vbase.base;
ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
TRACE("(%p %p)\n", ostr, val);
ios_base_imbue(ostringstream_ios_base, &loc, ostream_ios_base->loc);
locale_dtor(&loc);
ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
basic_ostream_char_print_ch(&oss.obj.base, '(');
basic_ostream_char_print_ldouble(&oss.obj.base, val->real);
basic_ostream_char_print_ch(&oss.obj.base, ',');
basic_ostream_char_print_ldouble(&oss.obj.base, val->imag);
basic_ostream_char_print_ch(&oss.obj.base, ')');
basic_ostringstream_char_str_get(&oss.obj, &str);
basic_ostringstream_char_dtor(&oss.vbase);
basic_ostream_char_print_bstr(ostr, &str);
MSVCP_basic_string_char_dtor(&str);
return ostr;
}
/* ??0strstream@std@@QAE@PADHH@Z */
/* ??0strstream@std@@QEAA@PEAD_JH@Z */
#if STREAMSIZE_BITS == 64

View File

@ -50,20 +50,20 @@
@ 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
@ stub -arch=win64 ??$?6M_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@AEBV?$complex@M@0@@Z
@ stub -arch=win32 ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ cdecl -arch=win32 ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z(ptr ptr) basic_ostream_char_print_complex_double
@ cdecl -arch=win64 ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z(ptr ptr) basic_ostream_char_print_complex_double
@ stub -arch=win32 ??$?6NGU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6NGU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ stub -arch=win32 ??$?6N_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$complex@N@0@@Z
@ stub -arch=win64 ??$?6N_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@AEBV?$complex@N@0@@Z
@ stub -arch=win32 ??$?6ODU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@O@0@@Z
@ stub -arch=win64 ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z
@ cdecl -arch=win32 ??$?6ODU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@O@0@@Z(ptr ptr) basic_ostream_char_print_complex_ldouble
@ cdecl -arch=win64 ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z(ptr ptr) basic_ostream_char_print_complex_ldouble
@ stub -arch=win32 ??$?6OGU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$complex@O@0@@Z
@ stub -arch=win64 ??$?6OGU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$complex@O@0@@Z
@ stub -arch=win32 ??$?6O_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$complex@O@0@@Z

View File

@ -422,6 +422,19 @@ typedef struct {
int state;
} fpos_int;
/* class complex<float> */
typedef struct {
float real;
float imag;
} complex_float;
/* class complex<double> */
/* class complex<long double> */
typedef struct {
double real;
double imag;
} complex_double;
/* stringstream */
static basic_stringstream_char* (*__thiscall p_basic_stringstream_char_ctor)(basic_stringstream_char*);
static basic_stringstream_char* (*__thiscall p_basic_stringstream_char_ctor_str)(basic_stringstream_char*, const basic_string_char*, int, MSVCP_bool);
@ -471,6 +484,12 @@ static basic_ostream_char* (*__thiscall p_basic_ostream_char_print_double)(basic
static basic_ostream_wchar* (*__thiscall p_basic_ostream_wchar_print_double)(basic_ostream_wchar*, double);
static basic_ostream_char* (*__cdecl p_basic_ostream_char_print_complex_float)(basic_ostream_char*, complex_float*);
static basic_ostream_char* (*__cdecl p_basic_ostream_char_print_complex_double)(basic_ostream_char*, complex_double*);
static basic_ostream_char* (*__cdecl p_basic_ostream_char_print_complex_ldouble)(basic_ostream_char*, complex_double*);
static basic_ostream_wchar* (*__thiscall p_basic_ostream_short_print_ushort)(basic_ostream_wchar*, unsigned short);
/* basic_ios */
@ -703,6 +722,15 @@ static BOOL init(void)
SET(p_basic_ostream_short_print_ushort,
"??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@G@Z");
SET(p_basic_ostream_char_print_complex_float,
"??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z");
SET(p_basic_ostream_char_print_complex_double,
"??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z");
SET(p_basic_ostream_char_print_complex_ldouble,
"??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z");
SET(p_ios_base_rdstate,
"?rdstate@ios_base@std@@QEBAHXZ");
SET(p_ios_base_setf_mask,
@ -822,6 +850,15 @@ static BOOL init(void)
SET(p_basic_ostream_short_print_ushort,
"??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAAAAV01@G@Z");
SET(p_basic_ostream_char_print_complex_float,
"??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z");
SET(p_basic_ostream_char_print_complex_double,
"??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z");
SET(p_basic_ostream_char_print_complex_ldouble,
"??$?6ODU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@O@0@@Z");
SET(p_ios_base_rdstate,
"?rdstate@ios_base@std@@QBAHXZ");
SET(p_ios_base_setf_mask,
@ -940,6 +977,15 @@ static BOOL init(void)
SET(p_basic_ostream_short_print_ushort,
"??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@G@Z");
SET(p_basic_ostream_char_print_complex_float,
"??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z");
SET(p_basic_ostream_char_print_complex_double,
"??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z");
SET(p_basic_ostream_char_print_complex_ldouble,
"??$?6ODU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@O@0@@Z");
SET(p_ios_base_rdstate,
"?rdstate@ios_base@std@@QBEHXZ");
SET(p_ios_base_setf_mask,
@ -2074,6 +2120,66 @@ static void test_istream_read_double(void)
call_func1(p_basic_string_char_dtor, &str);
}
static void test_ostream_print_complex_float(void)
{
static const char complex_float_str[] = "(3.14,1.57)";
basic_stringstream_char ss;
basic_string_char pstr;
const char *str;
complex_float val = {3.14, 1.57};
call_func1(p_basic_stringstream_char_ctor, &ss);
p_basic_ostream_char_print_complex_float(&ss.base.base2, &val);
call_func2(p_basic_stringstream_char_str_get, &ss, &pstr);
str = call_func1(p_basic_string_char_cstr, &pstr);
ok(!strcmp(complex_float_str, str), "str = %s\n", str);
call_func1(p_basic_string_char_dtor, &pstr);
call_func1(p_basic_stringstream_char_vbase_dtor, &ss);
}
static void test_ostream_print_complex_double(void)
{
static const char complex_double_str[] = "(3.14159,1.23459)";
basic_stringstream_char ss;
basic_string_char pstr;
const char *str;
complex_double val= {3.14159, 1.23459};
call_func1(p_basic_stringstream_char_ctor, &ss);
p_basic_ostream_char_print_complex_double(&ss.base.base2, &val);
call_func2(p_basic_stringstream_char_str_get, &ss, &pstr);
str = call_func1(p_basic_string_char_cstr, &pstr);
ok(!strcmp(complex_double_str, str), "str = %s\n", str);
call_func1(p_basic_string_char_dtor, &pstr);
call_func1(p_basic_stringstream_char_vbase_dtor, &ss);
}
static void test_ostream_print_complex_ldouble(void)
{
static const char complex_double_str[] = "(3.14159,1.23459)";
basic_stringstream_char ss;
basic_string_char pstr;
const char *str;
complex_double val = {3.14159, 1.23459};
call_func1(p_basic_stringstream_char_ctor, &ss);
p_basic_ostream_char_print_complex_ldouble(&ss.base.base2, &val);
call_func2(p_basic_stringstream_char_str_get, &ss, &pstr);
str = call_func1(p_basic_string_char_cstr, &pstr);
ok(!strcmp(complex_double_str, str), "str = %s\n", str);
call_func1(p_basic_string_char_dtor, &pstr);
call_func1(p_basic_stringstream_char_vbase_dtor, &ss);
}
START_TEST(ios)
{
if(!init())
@ -2095,6 +2201,9 @@ START_TEST(ios)
test_ostream_wchar_print_double();
test_istream_read_float();
test_istream_read_double();
test_ostream_print_complex_float();
test_ostream_print_complex_double();
test_ostream_print_complex_ldouble();
ok(!invalid_parameter, "invalid_parameter_handler was invoked too many times\n");