summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/config
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2000-12-07 06:44:49 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2000-12-07 06:44:49 +0000
commit7943f969d8272002108ef9f24acbd69c7e485eee (patch)
treef85bdfe4fbaf081d0d210ba2392500106495c57b /libstdc++-v3/config
parent024c970382a3e24f7df8fb5164ddeb4514fe8ed2 (diff)
downloadppe42-gcc-7943f969d8272002108ef9f24acbd69c7e485eee.tar.gz
ppe42-gcc-7943f969d8272002108ef9f24acbd69c7e485eee.zip
2000-12-06 Benjamin Kosnik <bkoz@kredhat.com>
* include/bits/locale_facets.h (ctype): Remove _Ctype_nois and _Ctype and replace with common __ctype_abstract_base. (ctype<wchar_t>::_M_convert_to_wmask): Move to locale.cc. * config/os/gnu-linux/bits/ctype_noninline.h (ctype<char>::ctype): And here. * config/os/solaris/solaris2.7/bits/ctype_noninline.h (ctype): Same. * config/os/solaris/solaris2.6/bits/ctype_noninline.h (ctype): Same. * config/os/solaris/solaris2.5/bits/ctype_noninline.h (ctype): Same. * config/os/newlib/bits/ctype_noninline.h (ctype): Same. * config/os/irix/bits/ctype_noninline.h (ctype): Same. * config/os/hpux/bits/ctype_noninline.h (ctype): Same. * config/os/generic/bits/ctype_noninline.h (ctype): Same. * config/os/aix/bits/ctype_noninline.h (ctype): Same. * config/os/bsd/netbsd/bits/ctype_noninline.h (ctype): Same. * config/os/bsd/freebsd/bits/ctype_noninline.h (ctype): Same. * src/locale-inst.cc: Clean instantiations. * src/locale.cc (ctype<char>): Add definitions here. (ctype<wchar_t>::_M_wmask): Move definitions here. * config/os/generic/bits/ctype_inline.h (ctype<char>::is): Implement in a generic way, with only "C" functionality and no knowlege of the target os. * config/os/generic/bits/os_defines.h: Change comments to C++ style. * testsuite/22_locale/ctype_char_members.cc (test01): Add tests. * include/bits/codecvt.h (ctype_byname): Remove specializations, as not required. * include/bits/localefwd.h (codecvt_byname): And here. * src/codecvt.cc: Remove codecvt_byname specializations. * include/c/bits/std_cstdio.h: Include c++config.h. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38100 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/config')
-rw-r--r--libstdc++-v3/config/os/aix/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/bsd/netbsd/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/generic/bits/ctype_inline.h50
-rw-r--r--libstdc++-v3/config/os/generic/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/generic/bits/os_defines.h8
-rw-r--r--libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/hpux/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/irix/bits/ctype_noninline.h6
-rw-r--r--libstdc++-v3/config/os/newlib/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_noninline.h2
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h2
13 files changed, 62 insertions, 22 deletions
diff --git a/libstdc++-v3/config/os/aix/bits/ctype_noninline.h b/libstdc++-v3/config/os/aix/bits/ctype_noninline.h
index c58fbaa7f7c..54f546c75cb 100644
--- a/libstdc++-v3/config/os/aix/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/aix/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_ctable(NULL), _M_table(__table == 0 ? _M_ctable: __table)
{ }
diff --git a/libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h b/libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h
index 24fdcdb23ea..5de223ba852 100644
--- a/libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_ctable(NULL), _M_table(__table == 0 ? _M_ctable: __table)
{ }
diff --git a/libstdc++-v3/config/os/bsd/netbsd/bits/ctype_noninline.h b/libstdc++-v3/config/os/bsd/netbsd/bits/ctype_noninline.h
index c5b3370cda7..395c066da53 100644
--- a/libstdc++-v3/config/os/bsd/netbsd/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/bsd/netbsd/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_ctable(NULL), _M_table(__table == 0 ? (_ctype_ + 1) : __table)
{ }
diff --git a/libstdc++-v3/config/os/generic/bits/ctype_inline.h b/libstdc++-v3/config/os/generic/bits/ctype_inline.h
index 952b0da8c98..20648a1dcbf 100644
--- a/libstdc++-v3/config/os/generic/bits/ctype_inline.h
+++ b/libstdc++-v3/config/os/generic/bits/ctype_inline.h
@@ -34,11 +34,57 @@
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
// functions go in ctype.cc
+// The following definitions are portable, but insanely slow. If one
+// cares at all about performance, then specialized ctype
+// functionality should be added for the native os in question: see
+// the config/os/bits/ctype_*.h files.
+
bool
ctype<char>::
is(mask __m, char __c) const throw()
- { return _M_table[(unsigned char)(__c)] & __m; }
-
+ {
+ bool __ret = false;
+ switch (__m)
+ {
+ case space:
+ __ret = isspace(__c);
+ break;
+ case print:
+ __ret = isprint(__c);
+ break;
+ case cntrl:
+ __ret = iscntrl(__c);
+ break;
+ case upper:
+ __ret = isupper(__c);
+ break;
+ case lower:
+ __ret = islower(__c);
+ break;
+ case alpha:
+ __ret = isalpha(__c);
+ break;
+ case digit:
+ __ret = isdigit(__c);
+ break;
+ case punct:
+ __ret = ispunct(__c);
+ break;
+ case xdigit:
+ __ret = isxdigit(__c);
+ break;
+ case alnum:
+ __ret = isalnum(__c);
+ break;
+ case graph:
+ __ret = isgraph(__c);
+ break;
+ default:
+ break;
+ }
+ return __ret;
+ }
+
const char*
ctype<char>::
is(const char* __low, const char* __high, mask* __vec) const throw()
diff --git a/libstdc++-v3/config/os/generic/bits/ctype_noninline.h b/libstdc++-v3/config/os/generic/bits/ctype_noninline.h
index bc99064b0dc..38edd40c7a9 100644
--- a/libstdc++-v3/config/os/generic/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/generic/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_ctable(NULL), _M_table(__table == 0 ? _M_ctable: __table)
{ }
diff --git a/libstdc++-v3/config/os/generic/bits/os_defines.h b/libstdc++-v3/config/os/generic/bits/os_defines.h
index c21e775be26..5c99e09428c 100644
--- a/libstdc++-v3/config/os/generic/bits/os_defines.h
+++ b/libstdc++-v3/config/os/generic/bits/os_defines.h
@@ -31,11 +31,7 @@
#ifndef _GLIBCPP_OS_DEFINES
# define _GLIBCPP_OS_DEFINES
-
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
-
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#endif
-
-
diff --git a/libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h b/libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h
index 63032425c70..a03af593222 100644
--- a/libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h
@@ -40,7 +40,7 @@
#endif
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(__ctype_toupper), _M_tolower(__ctype_tolower),
_M_ctable(__ctype_b), _M_table(__table == 0 ? _M_ctable: __table)
{ }
diff --git a/libstdc++-v3/config/os/hpux/bits/ctype_noninline.h b/libstdc++-v3/config/os/hpux/bits/ctype_noninline.h
index bc99064b0dc..38edd40c7a9 100644
--- a/libstdc++-v3/config/os/hpux/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/hpux/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_ctable(NULL), _M_table(__table == 0 ? _M_ctable: __table)
{ }
diff --git a/libstdc++-v3/config/os/irix/bits/ctype_noninline.h b/libstdc++-v3/config/os/irix/bits/ctype_noninline.h
index 50f87a9c51d..0fb25d189c0 100644
--- a/libstdc++-v3/config/os/irix/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/irix/bits/ctype_noninline.h
@@ -35,10 +35,8 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
- _M_toupper(NULL),
- _M_tolower(NULL),
- _M_ctable(NULL),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
+ _M_toupper(NULL), _M_tolower(NULL), _M_ctable(NULL),
_M_table(!__table
? (const mask*) (__libc_attr._ctype_tbl->_class + 1)
: __table)
diff --git a/libstdc++-v3/config/os/newlib/bits/ctype_noninline.h b/libstdc++-v3/config/os/newlib/bits/ctype_noninline.h
index 63c400f2493..30494d34b30 100644
--- a/libstdc++-v3/config/os/newlib/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/newlib/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_ctable(_ctype_), _M_table(__table == 0 ? _M_ctable: __table)
{ }
diff --git a/libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_noninline.h b/libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_noninline.h
index 7c518406b8e..867607742b8 100644
--- a/libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_ctable(__ctype), _M_table(__table == 0 ? _M_ctable: __table)
{ }
diff --git a/libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_noninline.h b/libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_noninline.h
index 32381112d60..29ecc9eb7a1 100644
--- a/libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(__trans_upper), _M_tolower(__trans_lower),
_M_ctable(__ctype_mask), _M_table(__table == 0 ? _M_ctable: __table)
{ }
diff --git a/libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h b/libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h
index f5ec1717ce8..ae3d6fb07be 100644
--- a/libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h
+++ b/libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h
@@ -35,7 +35,7 @@
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
size_t __refs = 0)
- : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
+ : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(__trans_upper), _M_tolower(__trans_lower),
_M_ctable(__ctype_mask), _M_table(__table == 0 ? _M_ctable: __table)
{ }
OpenPOWER on IntegriCloud