This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [v3] libstdc++/37455


... humpf, no need to duplicate the definitions. I'm checking in the below.

Paolo.

////////////////
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.
Index: src/ctype.cc
===================================================================
*** src/ctype.cc	(revision 140238)
--- src/ctype.cc	(working copy)
***************
*** 1,5 ****
  // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005,
! // 2006, 2007
  // Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
--- 1,5 ----
  // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005,
! // 2006, 2007, 2008
  // Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
*************** _GLIBCXX_BEGIN_NAMESPACE(std)
*** 87,92 ****
--- 87,133 ----
        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), 
Index: config/locale/darwin/ctype_members.cc
===================================================================
*** config/locale/darwin/ctype_members.cc	(revision 140238)
--- config/locale/darwin/ctype_members.cc	(working copy)
***************
*** 42,88 ****
  
  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.
  
--- 42,47 ----
Index: config/locale/gnu/ctype_members.cc
===================================================================
*** config/locale/gnu/ctype_members.cc	(revision 140238)
--- config/locale/gnu/ctype_members.cc	(working copy)
***************
*** 40,86 ****
  
  _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)
--- 40,45 ----
Index: config/locale/generic/ctype_members.cc
===================================================================
*** config/locale/generic/ctype_members.cc	(revision 140238)
--- config/locale/generic/ctype_members.cc	(working copy)
***************
*** 41,87 ****
  
  _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)
--- 41,46 ----

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]