Piotr Caban : msvcp90: Added setprecision implementation.
Module: wine Branch: master Commit: 7fcffc7b5834d15cb83d7744a38c7ead7effb781 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7fcffc7b5834d15cb83d7744a3... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Fri Jun 15 11:08:31 2012 +0200 msvcp90: Added setprecision implementation. --- dlls/msvcp90/ios.c | 21 +++++++++++++++++++++ dlls/msvcp90/msvcp90.spec | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c index 5232ecf..2c47137 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -132,6 +132,11 @@ static inline const char* debugstr_fpos_int(fpos_int *fpos) } typedef struct { + void (__cdecl *pfunc)(ios_base*, streamsize); + streamsize arg; +} manip_streamsize; + +typedef struct { const vtable_ptr *vtable; mutex lock; char *rbuf; @@ -5541,6 +5546,22 @@ basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char return (basic_filebuf_char*)&this->filebuf; } +static void __cdecl setprecision_func(ios_base *base, streamsize prec) +{ + ios_base_precision_set(base, prec); +} + +/* ?setprecision(a)std@@YA?AU?$_Smanip(a)H@1(a)H@Z */ +/* ?setprecision(a)std@@YA?AU?$_Smanip(a)_J@1(a)_J@Z */ +manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec) +{ + TRACE("(%p %ld)\n", ret, prec); + + ret->pfunc = setprecision_func; + ret->arg = prec; + return ret; +} + static basic_filebuf_char filebuf_stdin; /* ?cin(a)std@@3V?$basic_istream(a)DU?$char_traits(a)D@std@@@1(a)A */ struct { diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index fb873b5..fccc07d 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -5348,8 +5348,8 @@ @ cdecl -arch=win64 ?setp@?$basic_streambuf(a)_WU?$char_traits(a)_W@std@@@std@@IEAAXPEA_W00(a)Z(ptr ptr ptr ptr) basic_streambuf_wchar_setp_next @ thiscall -arch=win32 ?setp@?$basic_streambuf(a)_WU?$char_traits(a)_W@std@@@std@@IAEXPA_W0(a)Z(ptr ptr ptr) basic_streambuf_wchar_setp @ cdecl -arch=win64 ?setp@?$basic_streambuf(a)_WU?$char_traits(a)_W@std@@@std@@IEAAXPEA_W0(a)Z(ptr ptr ptr) basic_streambuf_wchar_setp -@ stub -arch=win32 ?setprecision(a)std@@YA?AU?$_Smanip(a)H@1(a)H@Z -@ stub -arch=win64 ?setprecision(a)std@@YA?AU?$_Smanip(a)_J@1(a)_J@Z +@ cdecl -arch=win32 ?setprecision(a)std@@YA?AU?$_Smanip(a)H@1(a)H@Z(ptr long) setprecision +@ cdecl -arch=win64 ?setprecision(a)std@@YA?AU?$_Smanip(a)_J@1(a)_J@Z(ptr long) setprecision @ thiscall -arch=win32 ?setstate@?$basic_ios(a)DU?$char_traits(a)D@std@@@std@@QAEXH_N(a)Z(ptr long long) basic_ios_char_setstate_reraise @ cdecl -arch=win64 ?setstate@?$basic_ios(a)DU?$char_traits(a)D@std@@@std@@QEAAXH_N(a)Z(ptr long long) basic_ios_char_setstate_reraise @ thiscall -arch=win32 ?setstate@?$basic_ios(a)DU?$char_traits(a)D@std@@@std@@QAEXI(a)Z(ptr long) basic_ios_char_setstate
participants (1)
-
Alexandre Julliard