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
This commit is contained in:
Paolo Carlini 2002-01-30 22:00:40 +01:00 committed by Paolo Carlini
parent a852d50fb4
commit f2e7381d8e
3 changed files with 34 additions and 2 deletions

View File

@ -1,3 +1,11 @@
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> 2002-01-30 Paolo Carlini <pcarlini@unitus.it>
* testsuite/27_io/ostream_inserter_arith.cc (test03): * testsuite/27_io/ostream_inserter_arith.cc (test03):

View File

@ -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
// 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);

View File

@ -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;
} }