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