From 8003b0ab3da1422ba3367428404eb8b16e52a90d Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Fri, 22 Jun 2012 10:27:16 +0200 Subject: [PATCH] msvcp90: Added num_put::put(bool) implementation. --- dlls/msvcp90/locale.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index eabdef8c5f4..2e48c791a0e 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@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AAVios_base@2@D_N@Z */ -- 2.11.4.GIT