ctype_members.cc (ctype<char>::_M_narrow_init, [...]): Don't define here.

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

	* config/locale/darwin/ctype_members.cc (ctype<char>::_M_narrow_init,
	ctype<char>::_M_widen_init): Don't define here.
	* config/locale/gnu/ctype_members.cc: Likewise.
	* config/locale/generic/ctype_members.cc: Likewise.
	* src/ctype.cc: Define here.

From-SVN: r140240
This commit is contained in:
Paolo Carlini 2008-09-10 17:37:30 +00:00 committed by Paolo Carlini
parent 7666351c39
commit 1834f167ee
5 changed files with 50 additions and 124 deletions

View File

@ -1,3 +1,11 @@
2008-09-10 Paolo Carlini <paolo.carlini@oracle.com>
* config/locale/darwin/ctype_members.cc (ctype<char>::_M_narrow_init,
ctype<char>::_M_widen_init): Don't define here.
* config/locale/gnu/ctype_members.cc: Likewise.
* config/locale/generic/ctype_members.cc: Likewise.
* src/ctype.cc: Define here.
2008-09-10 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/37455

View File

@ -42,47 +42,6 @@
namespace std
{
// Fill in the narrowing cache and flag whether all values are
// valid or not. _M_narrow_ok is set to 2 if memcpy can't
// be used.
void
ctype<char>::
_M_narrow_init() const
{
char __tmp[sizeof(_M_narrow)];
for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)
__tmp[__i] = __i;
do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);
_M_narrow_ok = 1;
if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))
_M_narrow_ok = 2;
else
{
// Deal with the special case of zero: renarrow with a
// different default and compare.
char __c;
do_narrow(__tmp, __tmp + 1, 1, &__c);
if (__c == 1)
_M_narrow_ok = 2;
}
}
void
ctype<char>::
_M_widen_init() const
{
char __tmp[sizeof(_M_widen)];
for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)
__tmp[__i] = __i;
do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
_M_widen_ok = 1;
// Set _M_widen_ok to 2 if memcpy can't be used.
if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen)))
_M_widen_ok = 2;
}
// NB: The other ctype<char> specializations are in src/locale.cc and
// various /config/os/* files.

View File

@ -41,47 +41,6 @@
_GLIBCXX_BEGIN_NAMESPACE(std)
// Fill in the narrowing cache and flag whether all values are
// valid or not. _M_narrow_ok is set to 2 if memcpy can't
// be used.
void
ctype<char>::
_M_narrow_init() const
{
char __tmp[sizeof(_M_narrow)];
for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)
__tmp[__i] = __i;
do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);
_M_narrow_ok = 1;
if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))
_M_narrow_ok = 2;
else
{
// Deal with the special case of zero: renarrow with a
// different default and compare.
char __c;
do_narrow(__tmp, __tmp + 1, 1, &__c);
if (__c == 1)
_M_narrow_ok = 2;
}
}
void
ctype<char>::
_M_widen_init() const
{
char __tmp[sizeof(_M_widen)];
for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)
__tmp[__i] = __i;
do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
_M_widen_ok = 1;
// Set _M_widen_ok to 2 if memcpy can't be used.
if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen)))
_M_widen_ok = 2;
}
// NB: The other ctype<char> specializations are in src/locale.cc and
// various /config/os/* files.
ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)

View File

@ -40,47 +40,6 @@
_GLIBCXX_BEGIN_NAMESPACE(std)
// Fill in the narrowing cache and flag whether all values are
// valid or not. _M_narrow_ok is set to 2 if memcpy can't
// be used.
void
ctype<char>::
_M_narrow_init() const
{
char __tmp[sizeof(_M_narrow)];
for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)
__tmp[__i] = __i;
do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);
_M_narrow_ok = 1;
if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))
_M_narrow_ok = 2;
else
{
// Deal with the special case of zero: renarrow with a
// different default and compare.
char __c;
do_narrow(__tmp, __tmp + 1, 1, &__c);
if (__c == 1)
_M_narrow_ok = 2;
}
}
void
ctype<char>::
_M_widen_init() const
{
char __tmp[sizeof(_M_widen)];
for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)
__tmp[__i] = __i;
do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
_M_widen_ok = 1;
// Set _M_widen_ok to 2 if memcpy can't be used.
if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen)))
_M_widen_ok = 2;
}
// NB: The other ctype<char> specializations are in src/locale.cc and
// various /config/os/* files.
ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)

View File

@ -1,5 +1,5 @@
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005,
// 2006, 2007
// 2006, 2007, 2008
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@ -87,6 +87,47 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
delete[] this->table();
}
// Fill in the narrowing cache and flag whether all values are
// valid or not. _M_narrow_ok is set to 2 if memcpy can't
// be used.
void
ctype<char>::
_M_narrow_init() const
{
char __tmp[sizeof(_M_narrow)];
for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)
__tmp[__i] = __i;
do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);
_M_narrow_ok = 1;
if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))
_M_narrow_ok = 2;
else
{
// Deal with the special case of zero: renarrow with a
// different default and compare.
char __c;
do_narrow(__tmp, __tmp + 1, 1, &__c);
if (__c == 1)
_M_narrow_ok = 2;
}
}
void
ctype<char>::
_M_widen_init() const
{
char __tmp[sizeof(_M_widen)];
for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)
__tmp[__i] = __i;
do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
_M_widen_ok = 1;
// Set _M_widen_ok to 2 if memcpy can't be used.
if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen)))
_M_widen_ok = 2;
}
#ifdef _GLIBCXX_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t __refs)
: __ctype_abstract_base<wchar_t>(__refs),