Commit 08376e28 by Paolo Carlini Committed by Paolo Carlini

ctype.cc (use_facet<ctype<char> >, [...]): Remove specializations.

2008-09-10  Paolo Carlini  <paolo.carlini@oracle.com>

	* src/ctype.cc (use_facet<ctype<char> >, use_facet<ctype<wchar_t>):
	Remove specializations.
	* src/locale-inst.cc (use_facet<ctype<C> >): Instantiate.
	* include/bits/locale_facets.tcc (use_facet<ctype<char> >,
	use_facet<ctype<wchar_t>): Declare as extern template.
	* include/bits/locale_facets.h (use_facet<ctype<char> >,
	use_facet<ctype<wchar_t>): Do not declare as specializations.

From-SVN: r140251
parent 5bcb0cc3
2008-09-10 Paolo Carlini <paolo.carlini@oracle.com> 2008-09-10 Paolo Carlini <paolo.carlini@oracle.com>
* src/ctype.cc (use_facet<ctype<char> >, use_facet<ctype<wchar_t>):
Remove specializations.
* src/locale-inst.cc (use_facet<ctype<C> >): Instantiate.
* include/bits/locale_facets.tcc (use_facet<ctype<char> >,
use_facet<ctype<wchar_t>): Declare as extern template.
* include/bits/locale_facets.h (use_facet<ctype<char> >,
use_facet<ctype<wchar_t>): Do not declare as specializations.
2008-09-10 Paolo Carlini <paolo.carlini@oracle.com>
* config/locale/darwin/ctype_members.cc (ctype<char>::_M_narrow_init, * config/locale/darwin/ctype_members.cc (ctype<char>::_M_narrow_init,
ctype<char>::_M_widen_init): Don't define here. ctype<char>::_M_widen_init): Don't define here.
* config/locale/gnu/ctype_members.cc: Likewise. * config/locale/gnu/ctype_members.cc: Likewise.
......
...@@ -1165,10 +1165,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -1165,10 +1165,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
void _M_widen_init() const; void _M_widen_init() const;
}; };
template<>
const ctype<char>&
use_facet<ctype<char> >(const locale& __loc);
#ifdef _GLIBCXX_USE_WCHAR_T #ifdef _GLIBCXX_USE_WCHAR_T
// 22.2.1.3 ctype<wchar_t> specialization // 22.2.1.3 ctype<wchar_t> specialization
/** /**
...@@ -1470,10 +1466,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -1470,10 +1466,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
void void
_M_initialize_ctype(); _M_initialize_ctype();
}; };
template<>
const ctype<wchar_t>&
use_facet<ctype<wchar_t> >(const locale& __loc);
#endif //_GLIBCXX_USE_WCHAR_T #endif //_GLIBCXX_USE_WCHAR_T
/// class ctype_byname [22.2.1.2]. /// class ctype_byname [22.2.1.2].
......
// Locale support -*- C++ -*- // Locale support -*- C++ -*-
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
// 2006, 2007 // 2006, 2007, 2008
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -1284,6 +1284,10 @@ _GLIBCXX_END_LDBL_NAMESPACE ...@@ -1284,6 +1284,10 @@ _GLIBCXX_END_LDBL_NAMESPACE
extern template class ctype_byname<char>; extern template class ctype_byname<char>;
extern template extern template
const ctype<char>&
use_facet<ctype<char> >(const locale&);
extern template
const numpunct<char>& const numpunct<char>&
use_facet<numpunct<char> >(const locale&); use_facet<numpunct<char> >(const locale&);
...@@ -1319,6 +1323,10 @@ _GLIBCXX_END_LDBL_NAMESPACE ...@@ -1319,6 +1323,10 @@ _GLIBCXX_END_LDBL_NAMESPACE
extern template class ctype_byname<wchar_t>; extern template class ctype_byname<wchar_t>;
extern template extern template
const ctype<wchar_t>&
use_facet<ctype<wchar_t> >(const locale&);
extern template
const numpunct<wchar_t>& const numpunct<wchar_t>&
use_facet<numpunct<wchar_t> >(const locale&); use_facet<numpunct<wchar_t> >(const locale&);
......
...@@ -53,26 +53,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -53,26 +53,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
locale::id ctype<wchar_t>::id; locale::id ctype<wchar_t>::id;
#endif #endif
template<>
const ctype<char>&
use_facet<ctype<char> >(const locale& __loc)
{
size_t __i = ctype<char>::id._M_id();
const locale::_Impl* __tmp = __loc._M_impl;
return static_cast<const ctype<char>&>(*(__tmp->_M_facets[__i]));
}
#ifdef _GLIBCXX_USE_WCHAR_T
template<>
const ctype<wchar_t>&
use_facet<ctype<wchar_t> >(const locale& __loc)
{
size_t __i = ctype<wchar_t>::id._M_id();
const locale::_Impl* __tmp = __loc._M_impl;
return static_cast<const ctype<wchar_t>&>(*(__tmp->_M_facets[__i]));
}
#endif
// XXX At some point, just rename this file to ctype_configure_char.cc // XXX At some point, just rename this file to ctype_configure_char.cc
// and compile it as a separate file instead of including it here. // and compile it as a separate file instead of including it here.
// Platform-specific initialization code for ctype tables. // Platform-specific initialization code for ctype tables.
......
// Locale support -*- C++ -*- // Locale support -*- C++ -*-
// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 // Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
// Free Software Foundation, Inc. // Free Software Foundation, Inc.
// //
// This file is part of the GNU ISO C++ Library. This library is free // This file is part of the GNU ISO C++ Library. This library is free
...@@ -192,7 +192,10 @@ _GLIBCXX_END_LDBL_NAMESPACE ...@@ -192,7 +192,10 @@ _GLIBCXX_END_LDBL_NAMESPACE
template class collate_byname<C>; template class collate_byname<C>;
// use_facet // use_facet
// NB: use_facet<ctype> is specialized template
const ctype<C>&
use_facet<ctype<C> >(const locale&);
template template
const codecvt<C, char, mbstate_t>& const codecvt<C, char, mbstate_t>&
use_facet<codecvt<C, char, mbstate_t> >(const locale&); use_facet<codecvt<C, char, mbstate_t> >(const locale&);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment