From 9e5c7dba50d3ad60d6920b76c1e20e0e401927e6 Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Wed, 12 Dec 2001 23:16:35 +0000 Subject: Named locale support for ctype. 2001-12-12 Benjamin Kosnik Named locale support for ctype. * config/locale/c_locale_gnu.h (_GLIBCPP_C_LOCALE_GNU): New. * config/os/gnu-linux/bits/ctype_noninline.h (ctype): Add definitions for alternate constructor. * 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/irix6.5/bits/ctype_noninline.h (ctype): Same. * config/os/irix/irix5.2/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/djgpp/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. * config/os/aix/bits/ctype_noninline.h (ctype): Same. * include/bits/locale_facets.h (ctype<_CharT>): Remove dummy definitions for all virtual functions. These are now explicitly undefined for non-required factets, ie any non-char, non-wchar_t instantiations. * src/localename.cc (locale::_Impl::_Impl(string, size_t): Named locales use alternate constructor for ctype facet. * include/bits/locale_facets.h (ctype::ctype(__c_locale, const mask*, bool, size_t): Add. (ctype::ctype(__c_locale, size_t): Add. * src/locale.cc (ctype::ctype(__c_locale, size_t)): Add definition. * testsuite/22_locale/ctype_members_char.cc (test02): Add, mark XFAIL for non-gnu locale models. From-SVN: r47953 --- libstdc++-v3/src/locale.cc | 7 +++++-- libstdc++-v3/src/localename.cc | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'libstdc++-v3/src') diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index 14938d9d730..d827a256436 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -484,8 +484,11 @@ namespace std // NB: These ctype methods are not configuration-specific, // unlike the ctype bits. - ctype::ctype(size_t __refs) : __ctype_abstract_base(__refs) - { } + ctype::ctype(size_t __refs) + : __ctype_abstract_base(__refs) { } + + ctype::ctype(__c_locale /*__cloc*/, size_t __refs) + : __ctype_abstract_base(__refs) { } wchar_t ctype::do_toupper(wchar_t __c) const diff --git a/libstdc++-v3/src/localename.cc b/libstdc++-v3/src/localename.cc index 738acdef203..2bd34cd4ac8 100644 --- a/libstdc++-v3/src/localename.cc +++ b/libstdc++-v3/src/localename.cc @@ -92,7 +92,7 @@ namespace std // Construct all standard facets and add them to _M_facets. // XXX How to deal cleanly, consistently with null ("C") __cloc? _M_init_facet(new std::collate(__cloc)); - _M_init_facet(new std::ctype); + _M_init_facet(new std::ctype(__cloc)); _M_init_facet(new codecvt); _M_init_facet(new moneypunct(__cloc)); _M_init_facet(new moneypunct(__cloc)); @@ -108,7 +108,7 @@ namespace std #ifdef _GLIBCPP_USE_WCHAR_T _M_init_facet(new std::collate(__cloc)); - _M_init_facet(new std::ctype); + _M_init_facet(new std::ctype(__cloc)); _M_init_facet(new codecvt); _M_init_facet(new moneypunct(__cloc)); _M_init_facet(new moneypunct(__cloc)); -- cgit v1.2.3