Piotr Caban : msvcp90: Added setprecision implementation.
Alexandre Julliard
julliard at winehq.org
Fri Jun 15 13:34:39 CDT 2012
Module: wine
Branch: master
Commit: 7fcffc7b5834d15cb83d7744a38c7ead7effb781
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7fcffc7b5834d15cb83d7744a38c7ead7effb781
Author: Piotr Caban <piotr at 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 at std@@YA?AU?$_Smanip at H@1 at H@Z */
+/* ?setprecision at std@@YA?AU?$_Smanip at _J@1 at _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 at std@@3V?$basic_istream at DU?$char_traits at D@std@@@1 at 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 at _WU?$char_traits at _W@std@@@std@@IEAAXPEA_W00 at Z(ptr ptr ptr ptr) basic_streambuf_wchar_setp_next
@ thiscall -arch=win32 ?setp@?$basic_streambuf at _WU?$char_traits at _W@std@@@std@@IAEXPA_W0 at Z(ptr ptr ptr) basic_streambuf_wchar_setp
@ cdecl -arch=win64 ?setp@?$basic_streambuf at _WU?$char_traits at _W@std@@@std@@IEAAXPEA_W0 at Z(ptr ptr ptr) basic_streambuf_wchar_setp
-@ stub -arch=win32 ?setprecision at std@@YA?AU?$_Smanip at H@1 at H@Z
-@ stub -arch=win64 ?setprecision at std@@YA?AU?$_Smanip at _J@1 at _J@Z
+@ cdecl -arch=win32 ?setprecision at std@@YA?AU?$_Smanip at H@1 at H@Z(ptr long) setprecision
+@ cdecl -arch=win64 ?setprecision at std@@YA?AU?$_Smanip at _J@1 at _J@Z(ptr long) setprecision
@ thiscall -arch=win32 ?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QAEXH_N at Z(ptr long long) basic_ios_char_setstate_reraise
@ cdecl -arch=win64 ?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QEAAXH_N at Z(ptr long long) basic_ios_char_setstate_reraise
@ thiscall -arch=win32 ?setstate@?$basic_ios at DU?$char_traits at D@std@@@std@@QAEXI at Z(ptr long) basic_ios_char_setstate
More information about the wine-cvs
mailing list