Piotr Caban : msvcp90: Added num_put<char>::put(bool) implementation.

Alexandre Julliard julliard at winehq.org
Fri Jun 22 10:52:03 CDT 2012


Module: wine
Branch: master
Commit: 8003b0ab3da1422ba3367428404eb8b16e52a90d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8003b0ab3da1422ba3367428404eb8b16e52a90d

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Jun 22 10:27:16 2012 +0200

msvcp90: Added num_put<char>::put(bool) implementation.

---

 dlls/msvcp90/locale.c |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index eabdef8..2e48c79 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -5744,8 +5744,32 @@ DEFINE_THISCALL_WRAPPER(num_put_char_do_put_bool, 28)
 ostreambuf_iterator_char* __thiscall num_put_char_do_put_bool(const num_put *this, ostreambuf_iterator_char *ret,
         ostreambuf_iterator_char dest, ios_base *base, char fill, MSVCP_bool v)
 {
-    FIXME("(%p %p %p %d %d) stub\n", this, ret, base, fill, v);
-    return NULL;
+    TRACE("(%p %p %p %d %d)\n", this, ret, base, fill, v);
+
+    if(base->fmtfl & FMTFLAG_boolalpha) {
+        numpunct_char *numpunct = numpunct_char_use_facet(base->loc);
+        basic_string_char str;
+        MSVCP_size_t pad, len;
+
+        if(v)
+            numpunct_char_truename(numpunct, &str);
+        else
+            numpunct_char_falsename(numpunct, &str);
+
+        len = MSVCP_basic_string_char_length(&str);
+        pad = (len>base->wide ? 0 : base->wide-len);
+        base->wide = 0;
+
+        if((base->fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
+            num_put_char__Rep(this, &dest, dest, fill, pad);
+            pad = 0;
+        }
+        num_put_char__Putc(this, &dest, dest, MSVCP_basic_string_char_c_str(&str), len);
+        MSVCP_basic_string_char_dtor(&str);
+        return num_put_char__Rep(this, ret, dest, fill, pad);
+    }
+
+    return num_put_char_put_long(this, ret, dest, base, fill, v);
 }
 
 /* ?put@?$num_put at DV?$ostreambuf_iterator at DU?$char_traits at D@std@@@std@@@std@@QBE?AV?$ostreambuf_iterator at DU?$char_traits at D@std@@@2 at V32@AAVios_base at 2@D_N at Z */




More information about the wine-cvs mailing list