Commit f2e7381d by Paolo Carlini Committed by Paolo Carlini

2002-01-30 Paolo Carlini <pcarlini@unitus.it>

        * config/locale/numpunct_members_gnu.cc
	(numpunct<char, wchar_t>::_M_initialize_numpunct()):
	Fix initialization of _M_grouping for locales which have
	_M_thousands_sep == '\0'(L'\0', respectively).
	* testsuite/22_locale/numpunct_byname.cc (test02): Add test.

From-SVN: r49343
parent a852d50f
2002-01-30 Paolo Carlini <pcarlini@unitus.it> 2002-01-30 Paolo Carlini <pcarlini@unitus.it>
* config/locale/numpunct_members_gnu.cc
(numpunct<char, wchar_t>::_M_initialize_numpunct()):
Fix initialization of _M_grouping for locales which have
_M_thousands_sep == '\0'(L'\0', respectively).
* testsuite/22_locale/numpunct_byname.cc (test02): Add test.
2002-01-30 Paolo Carlini <pcarlini@unitus.it>
* testsuite/27_io/ostream_inserter_arith.cc (test03): * testsuite/27_io/ostream_inserter_arith.cc (test03):
Better fix for 32/64 bit architectures, avoiding the Better fix for 32/64 bit architectures, avoiding the
implicit assumption that CHAR_BIT == 8. implicit assumption that CHAR_BIT == 8.
......
...@@ -53,7 +53,11 @@ namespace std ...@@ -53,7 +53,11 @@ namespace std
// Named locale. // Named locale.
_M_decimal_point = *(__nl_langinfo_l(RADIXCHAR, __cloc)); _M_decimal_point = *(__nl_langinfo_l(RADIXCHAR, __cloc));
_M_thousands_sep = *(__nl_langinfo_l(THOUSEP, __cloc)); _M_thousands_sep = *(__nl_langinfo_l(THOUSEP, __cloc));
_M_grouping = __nl_langinfo_l(GROUPING, __cloc); // Check for NUL, which implies no grouping.
if (_M_thousands_sep == '\0')
_M_grouping = "";
else
_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
} }
// NB: There is no way to extact this info from posix locales. // NB: There is no way to extact this info from posix locales.
// _M_truename = __nl_langinfo_l(YESSTR, __cloc); // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
...@@ -79,7 +83,10 @@ namespace std ...@@ -79,7 +83,10 @@ namespace std
// Named locale. // Named locale.
_M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); _M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w);
_M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); _M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w);
_M_grouping = __nl_langinfo_l(GROUPING, __cloc); if (_M_thousands_sep == L'\0')
_M_grouping = "";
else
_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
} }
// NB: There is no way to extact this info from posix locales. // NB: There is no way to extact this info from posix locales.
// _M_truename = __nl_langinfo_l(YESSTR, __cloc); // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
......
...@@ -72,9 +72,26 @@ void test01() ...@@ -72,9 +72,26 @@ void test01()
VERIFY( dp1 != dp3 ); VERIFY( dp1 != dp3 );
} }
void test02()
{
using namespace std;
bool test = true;
locale loc_it("it_IT");
const numpunct<char>& nump_it = use_facet<numpunct<char> >(loc_it);
string g = nump_it.grouping();
VERIFY( g == "" );
}
int main() int main()
{ {
test01(); test01();
test02();
return 0; return 0;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment