diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-11-16 17:45:35 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-11-16 17:45:35 +0000 |
commit | d306e628c3b12f084a5ddd20e8fe78430bbda73d (patch) | |
tree | 59ed3b5c083d11cecc6c4148fffb2bdb8d9d95c5 /libstdc++-v3/src | |
parent | 1b44c7ef97ba35d49dbe0554598bd81fcb8d8a0f (diff) | |
download | gcc-d306e628c3b12f084a5ddd20e8fe78430bbda73d.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130233 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/src')
-rw-r--r-- | libstdc++-v3/src/locale_facets.cc | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/libstdc++-v3/src/locale_facets.cc b/libstdc++-v3/src/locale_facets.cc index 46de583d513..8876f5874bc 100644 --- a/libstdc++-v3/src/locale_facets.cc +++ b/libstdc++-v3/src/locale_facets.cc @@ -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 |