locale_facets.tcc (__verify_grouping): Move...

2007-11-16  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/locale_facets.tcc (__verify_grouping): Move...
	* src/locale_facets.cc: ... here.
	* config/abi/pre/gnu.ver: Update exports.

From-SVN: r130233
This commit is contained in:
Paolo Carlini 2007-11-16 17:45:35 +00:00 committed by Paolo Carlini
parent 06bcd7510e
commit c68e412864
4 changed files with 35 additions and 27 deletions

View File

@ -1,3 +1,9 @@
2007-11-16 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (__verify_grouping): Move...
* src/locale_facets.cc: ... here.
* config/abi/pre/gnu.ver: Update exports.
2007-11-15 Paolo Carlini <pcarlini@suse.de>
* include/bits/istream.tcc (basic_istream<>::sentry::

View File

@ -786,6 +786,8 @@ GLIBCXX_3.4.10 {
_ZNSt15basic_streambufI[cw]St11char_traitsI[cw]EE6stosscEv;
_ZSt17__verify_grouping*;
} GLIBCXX_3.4.9;
# Symbols in the support library (libsupc++) have their own tag.

View File

@ -121,7 +121,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// 1,222,444 == __grouping_tmp of "\1\3\3"
// __grouping is parsed R to L
// 1,222,444 == __grouping of "\3" == "\3\3\3"
static bool
bool
__verify_grouping(const char* __grouping, size_t __grouping_size,
const string& __grouping_tmp);
@ -1237,30 +1237,6 @@ _GLIBCXX_END_LDBL_NAMESPACE
_Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
}
bool
__verify_grouping(const char* __grouping, size_t __grouping_size,
const string& __grouping_tmp)
{
const size_t __n = __grouping_tmp.size() - 1;
const size_t __min = std::min(__n, size_t(__grouping_size - 1));
size_t __i = __n;
bool __test = true;
// Parsed number groupings have to match the
// numpunct::grouping string exactly, starting at the
// right-most point of the parsed sequence of elements ...
for (size_t __j = 0; __j < __min && __test; --__i, ++__j)
__test = __grouping_tmp[__i] == __grouping[__j];
for (; __i && __test; --__i)
__test = __grouping_tmp[__i] == __grouping[__min];
// ... but the first parsed grouping can be <= numpunct
// grouping (only do the check if the numpunct char is > 0
// because <= 0 means any size is ok).
if (static_cast<signed char>(__grouping[__min]) > 0)
__test &= __grouping_tmp[0] <= __grouping[__min];
return __test;
}
template<typename _CharT>
_CharT*
__add_grouping(_CharT* __s, _CharT __sep,

View File

@ -1,4 +1,5 @@
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
// 2006, 2006
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@ -90,5 +91,28 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*__fptr = '\0';
}
_GLIBCXX_END_NAMESPACE
bool
__verify_grouping(const char* __grouping, size_t __grouping_size,
const string& __grouping_tmp)
{
const size_t __n = __grouping_tmp.size() - 1;
const size_t __min = std::min(__n, size_t(__grouping_size - 1));
size_t __i = __n;
bool __test = true;
// Parsed number groupings have to match the
// numpunct::grouping string exactly, starting at the
// right-most point of the parsed sequence of elements ...
for (size_t __j = 0; __j < __min && __test; --__i, ++__j)
__test = __grouping_tmp[__i] == __grouping[__j];
for (; __i && __test; --__i)
__test = __grouping_tmp[__i] == __grouping[__min];
// ... but the first parsed grouping can be <= numpunct
// grouping (only do the check if the numpunct char is > 0
// because <= 0 means any size is ok).
if (static_cast<signed char>(__grouping[__min]) > 0)
__test &= __grouping_tmp[0] <= __grouping[__min];
return __test;
}
_GLIBCXX_END_NAMESPACE