mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-26 15:44:50 +08:00
locale_facets.tcc (num_put::_M_widen_int): Deal correctly with grouped, showbased (oct or hex) zero.
2002-09-27 Paolo Carlini <pcarlini@unitus.it> * include/bits/locale_facets.tcc (num_put::_M_widen_int): Deal correctly with grouped, showbased (oct or hex) zero. * testsuite/22_locale/num_put_members_char.cc: Add test05. * testsuite/22_locale/num_put_members_wchar_t.cc: Ditto. From-SVN: r57598
This commit is contained in:
parent
2a5de0f14b
commit
b1af5a30a5
@ -1,3 +1,10 @@
|
||||
2002-09-27 Paolo Carlini <pcarlini@unitus.it>
|
||||
|
||||
* include/bits/locale_facets.tcc (num_put::_M_widen_int):
|
||||
Deal correctly with grouped, showbased (oct or hex) zero.
|
||||
* testsuite/22_locale/num_put_members_char.cc: Add test05.
|
||||
* testsuite/22_locale/num_put_members_wchar_t.cc: Ditto.
|
||||
|
||||
2002-09-27 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/os/hpux/cpu_limits.h: Remove.
|
||||
|
@ -798,8 +798,10 @@ namespace std
|
||||
// By itself __add_grouping cannot deal correctly with __ws when
|
||||
// ios::showbase is set and ios_base::oct || ios_base::hex.
|
||||
// Therefore we take care "by hand" of the initial 0, 0x or 0X.
|
||||
// However, remember that the latter do not occur if the number
|
||||
// printed is '0' (__len == 1).
|
||||
streamsize __off = 0;
|
||||
if (__io.flags() & ios_base::showbase)
|
||||
if ((__io.flags() & ios_base::showbase) && __len > 1)
|
||||
if (__basefield == ios_base::oct)
|
||||
{
|
||||
__off = 1;
|
||||
|
@ -326,12 +326,50 @@ void test04()
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure that, in a locale that expects grouping, when showbase
|
||||
// is true, an hexadecimal or octal zero is correctly output (the case
|
||||
// of zero is special since there is no 0x, 0 respectively, prefix)
|
||||
void test05()
|
||||
{
|
||||
using namespace std;
|
||||
bool test = true;
|
||||
|
||||
// A locale that expects grouping.
|
||||
locale loc_de("de_DE");
|
||||
|
||||
const string empty;
|
||||
string result;
|
||||
|
||||
ostringstream oss;
|
||||
oss.imbue(loc_de);
|
||||
const num_put<char>& np = use_facet<num_put<char> >(oss.getloc());
|
||||
|
||||
long l = 0;
|
||||
|
||||
oss.str(empty);
|
||||
oss.clear();
|
||||
oss.setf(ios::showbase);
|
||||
oss.setf(ios::hex, ios::basefield);
|
||||
np.put(oss.rdbuf(), oss, '+', l);
|
||||
result = oss.str();
|
||||
VERIFY( result == "0" );
|
||||
|
||||
oss.str(empty);
|
||||
oss.clear();
|
||||
oss.setf(ios::showbase);
|
||||
oss.setf(ios::oct, ios::basefield);
|
||||
np.put(oss.rdbuf(), oss, '+', l);
|
||||
result = oss.str();
|
||||
VERIFY( result == "0" );
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
test02();
|
||||
test03();
|
||||
test04();
|
||||
test05();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -325,6 +325,43 @@ void test04()
|
||||
VERIFY( preLANG == postLANG );
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure that, in a locale that expects grouping, when showbase
|
||||
// is true, an hexadecimal or octal zero is correctly output (the case
|
||||
// of zero is special since there is no 0x, 0 respectively, prefix)
|
||||
void test05()
|
||||
{
|
||||
using namespace std;
|
||||
bool test = true;
|
||||
|
||||
// A locale that expects grouping.
|
||||
locale loc_de("de_DE");
|
||||
|
||||
const wstring empty;
|
||||
wstring result;
|
||||
|
||||
wostringstream oss;
|
||||
oss.imbue(loc_de);
|
||||
const num_put<wchar_t>& np = use_facet<num_put<wchar_t> >(oss.getloc());
|
||||
|
||||
long l = 0;
|
||||
|
||||
oss.str(empty);
|
||||
oss.clear();
|
||||
oss.setf(ios::showbase);
|
||||
oss.setf(ios::hex, ios::basefield);
|
||||
np.put(oss.rdbuf(), oss, L'+', l);
|
||||
result = oss.str();
|
||||
VERIFY( result == L"0" );
|
||||
|
||||
oss.str(empty);
|
||||
oss.clear();
|
||||
oss.setf(ios::showbase);
|
||||
oss.setf(ios::oct, ios::basefield);
|
||||
np.put(oss.rdbuf(), oss, L'+', l);
|
||||
result = oss.str();
|
||||
VERIFY( result == L"0" );
|
||||
}
|
||||
#endif
|
||||
|
||||
int main()
|
||||
@ -334,6 +371,7 @@ int main()
|
||||
test02();
|
||||
test03();
|
||||
test04();
|
||||
test05();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user