* include/bits/locale_facets.h (ctype<char>): Remove throw specs not in
base class signature.
-
+ * config/os/*/bits/ctype_inline.h (is): Same.
+
2000-12-13 Benjamin Kosnik <bkoz@redhat.com>
* config/os/generic/bits/ctype_base.h (ctype_base): Consistency
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return __OBJ_DATA(__lc_ctype)->mask[__c] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !this->is(__m, *__low))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && this->is(__m, *__low) != 0)
++__low;
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{
if (__m & (digit | xdigit))
return __isctype(__c, __m);
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !this->is(__m, *__low))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && this->is(__m, *__low) != 0)
++__low;
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return _M_table[(unsigned char)(__c)] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !this->is(__m, *__low))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && this->is(__m, *__low) != 0)
++__low;
+
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{
bool __ret;
switch (__m)
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = 11; // Highest bitmask in ctype_base == 10
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !this->is(__m, *__low))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && this->is(__m, *__low) != 0)
++__low;
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return _M_table[__c] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !(_M_table[*__low] & __m))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high
&& (_M_table[*__low] & __m) != 0)
// Locale support -*- C++ -*-
-// Copyright (C) 1997-1999 Free Software Foundation, Inc.
+// Copyright (C) 1997-1999, 2000 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
struct ctype_base
{
- typedef unsigned int mask;
// Non-standard typedefs.
typedef const int* __to_type;
- enum
- {
- space = (1 << 5), // Whitespace
- print = (1 << 6), // Printing
- cntrl = (1 << 9), // Control character
- upper = (1 << 0), // UPPERCASE
- lower = (1 << 1), // lowercase
- alpha = (1 << 5), // Alphabetic
- digit = (1 << 2), // Numeric
- punct = (1 << 10),// Punctuation
- xdigit = (1 << 4),// Hexadecimal numeric
- alnum = (1 << 11),// Alphanumeric
- graph = (1 << 7) // Graphical
- };
+ // NB: Offsets into ctype<char>::_M_table force a particular size
+ // on the mask type. Because of this, we don't use an enum.
+ typedef unsigned int mask;
+ static const mask upper = 1 << 0;
+ static const mask lower = 1 << 1;
+ static const mask alpha = 1 << 2;
+ static const mask digit = 1 << 3;
+ static const mask xdigit = 1 << 4;
+ static const mask space = 1 << 5;
+ static const mask print = 1 << 6;
+ static const mask graph = 1 << 7;
+ static const mask cntrl = 1 << 8;
+ static const mask punct = 1 << 9;
+ static const mask alnum = 1 << 10;
};
-
-
-
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return _M_table[(unsigned char)(__c)] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
- while (__low < __high)
- *__vec++ = _M_table[(unsigned char)(*__low++)];
+ const int __bitmasksize = 11; // Highest bitmask in ctype_base == 10
+ for (;__low < __high; ++__vec, ++__low)
+ {
+ mask __m = _M_table[*__low];
+ int __i = 0; // Lowest bitmask in ctype_base == 0
+ while (__i < __bitmasksize && !(__m & static_cast<mask>(1 << __i)))
+ ++__i;
+ *__vec = static_cast<mask>(1 << __i);
+ }
return __high;
}
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !this->is(__m, *__low))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && this->is(__m, *__low) != 0)
++__low;
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return (_M_table)[__c] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !((_M_table)[*__low] & __m))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && ((_M_table + 1)[*__low] & __m) != 0)
++__low;
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return (_M_table + 1)[(unsigned char)(__c)] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !((_M_table + 1)[(unsigned char)(*__low)] & __m))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high
&& ((_M_table + 1)[(unsigned char)(*__low)] & __m) != 0)
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return (_M_table + 1)[(unsigned char)(__c)] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !((_M_table + 1)[(unsigned char)(*__low)] & __m))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high
&& ((_M_table + 1)[(unsigned char)(*__low)] & __m) != 0)
++__low;
return __low;
}
-
-
-
-
-
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return _M_table[__c] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !(_M_table[*__low] & __m))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high
&& (_M_table[*__low] & __m) != 0)
++__low;
return __low;
}
-
-
-
-
-
bool
ctype<char>::
- is(mask __m, char __c) const throw()
+ is(mask __m, char __c) const
{ return _M_table[__c] & __m; }
const char*
ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const throw()
+ is(const char* __low, const char* __high, mask* __vec) const
{
const int __bitmasksize = sizeof(mask) * 8;
for (;__low < __high; ++__vec, ++__low)
const char*
ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const throw()
+ scan_is(mask __m, const char* __low, const char* __high) const
{
while (__low < __high && !(_M_table[*__low] & __m))
++__low;
const char*
ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const throw()
+ scan_not(mask __m, const char* __low, const char* __high) const
{
while (__low < __high
&& (_M_table[*__low] & __m) != 0)
++__low;
return __low;
}
-
-
-
-
-