Commit 088eb5a2 by Benjamin Kosnik

[multiple changes]


2000-06-12  Benjamin Kosnik  <bkoz@purist.soma.redhat.com>

	* bits/locale_facets.h (ctype<wchar_t>): Remove unnecessary data
	members.
	* src/locale.cc: Add cwchar include here. Remove incorrect
	definitions, and stub them out.
	* config/generic/ctype.cc (ctype): Remove ctype<wchar_t> bits.
	* config/solaris/solaris2.7/ctype.cc (ctype): Same.
	* config/solaris/solaris2.5/ctype.cc (ctype): Same.
	* config/newlib/ctype.cc: Same.
	* config/gnu-linux/ctype.cc: Same.
	* config/bsd/ctype.cc: Same.
	* config/aix/ctype.cc: Same.

2000-06-12  Branko Cibej  <branko.cibej@hermes.si>

        * config/solaris/solaris2.6/ctype.cc (do_toupper, do_tolower): Use
        towupper and towlower to convert wide characters.

From-SVN: r34511
parent d54a528a
2000-06-12 Benjamin Kosnik <bkoz@purist.soma.redhat.com> 2000-06-12 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
* bits/locale_facets.h (ctype<wchar_t>): Remove unnecessary data
members.
* src/locale.cc: Add cwchar include here. Remove incorrect
definitions, and stub them out.
* config/generic/ctype.cc (ctype): Remove ctype<wchar_t> bits.
* config/solaris/solaris2.7/ctype.cc (ctype): Same.
* config/solaris/solaris2.5/ctype.cc (ctype): Same.
* config/newlib/ctype.cc: Same.
* config/gnu-linux/ctype.cc: Same.
* config/bsd/ctype.cc: Same.
* config/aix/ctype.cc: Same.
2000-06-12 Branko Cibej <branko.cibej@hermes.si>
* config/solaris/solaris2.6/ctype.cc (do_toupper, do_tolower): Use
towupper and towlower to convert wide characters.
2000-06-12 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
* mkcheck.in: Clean up confusion regarding NAME, PRE_NAME. * mkcheck.in: Clean up confusion regarding NAME, PRE_NAME.
2000-06-08 Branko Cibej <branko.cibej@hermes.si> 2000-06-08 Branko Cibej <branko.cibej@hermes.si>
......
...@@ -390,15 +390,7 @@ namespace std ...@@ -390,15 +390,7 @@ namespace std
// Types: // Types:
typedef wchar_t char_type; typedef wchar_t char_type;
typedef ctype::mask mask; typedef ctype::mask mask;
typedef size_t __table_type;
private:
__to_type const& _M_toupper;
__to_type const& _M_tolower;
const mask* const& _M_ctable;
static const __table_type _S_table_size = ctype<char>::table_size;
public:
static locale::id id; static locale::id id;
explicit explicit
......
...@@ -69,42 +69,3 @@ ...@@ -69,42 +69,3 @@
} }
return __high; return __high;
} }
#ifdef _GLIBCPP_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t /*__refs*/) throw()
: _M_toupper(NULL), _M_tolower(NULL),
_M_ctable(NULL)
{ }
wchar_t
ctype<wchar_t>::do_toupper(wchar_t __c) const
{ return towupper(__c); }
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* low, const wchar_t* high) const
{
for (;low < high; ++low)
if (*low < _S_table_size)
*low = this->do_toupper(*low);
return high;
}
wchar_t
ctype<wchar_t>::do_tolower(wchar_t __c) const
{ return towlower(__c); }
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* __low, const wchar_t* __high) const
{
for (; __low < __high; ++__low)
if (*__low < _S_table_size)
*__low = this->do_tolower(*__low);
return __high;
}
#endif
...@@ -69,38 +69,3 @@ ...@@ -69,38 +69,3 @@
} }
return __high; return __high;
} }
#ifdef _GLIBCPP_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t /*__refs*/) throw()
: _M_toupper(NULL), _M_tolower(NULL),
_M_ctable(NULL)
{ }
wchar_t
ctype<wchar_t>::do_toupper(char_type __c) const
{ return (__c < _S_table_size) ? _S_toupper[__c] : __c; }
const wchar_t*
ctype<wchar_t>::do_toupper(char_type* low, const char_type* high) const
{
for (;low < high; ++low)
if (*low < _S_table_size)
*low = _S_toupper[*low];
return high;
}
wchar_t
ctype<wchar_t>::do_tolower(char_type __c) const
{ return (__c < _S_table_size) ? _S_tolower[__c] : __c; }
const wchar_t*
ctype<wchar_t>::do_tolower(char_type* __low, const char_type* __high) const
{
for (; __low < __high; ++__low)
if (*__low < _S_table_size)
*__low = _S_toupper[*__low];
return __high;
}
#endif
...@@ -69,38 +69,3 @@ ...@@ -69,38 +69,3 @@
} }
return __high; return __high;
} }
#ifdef _GLIBCPP_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t /*__refs*/) throw()
: _M_toupper(NULL), _M_tolower(NULL),
_M_ctable(NULL)
{ }
wchar_t
ctype<wchar_t>::do_toupper(char_type __c) const
{ return (__c < _S_table_size) ? _S_toupper[__c] : __c; }
const wchar_t*
ctype<wchar_t>::do_toupper(char_type* low, const char_type* high) const
{
for (;low < high; ++low)
if (*low < _S_table_size)
*low = _S_toupper[*low];
return high;
}
wchar_t
ctype<wchar_t>::do_tolower(char_type __c) const
{ return (__c < _S_table_size) ? _S_tolower[__c] : __c; }
const wchar_t*
ctype<wchar_t>::do_tolower(char_type* __low, const char_type* __high) const
{
for (; __low < __high; ++__low)
if (*__low < _S_table_size)
*__low = _S_toupper[*__low];
return __high;
}
#endif
...@@ -70,43 +70,3 @@ ...@@ -70,43 +70,3 @@
return __high; return __high;
} }
#ifdef _GLIBCPP_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t /*__refs*/) throw()
: _M_toupper(__ctype_toupper), _M_tolower(__ctype_tolower),
_M_ctable(__ctype_b)
{ }
wchar_t
ctype<wchar_t>::do_toupper(wchar_t __c) const
{
return ((static_cast<__table_type>(__c) < _S_table_size)
? _M_toupper[__c] : __c);
}
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* low, const wchar_t* high) const
{
for (;low < high; ++low)
if (static_cast<__table_type>(*low) < _S_table_size)
*low = _M_toupper[*low];
return high;
}
wchar_t
ctype<wchar_t>::do_tolower(wchar_t __c) const
{
return ((static_cast<__table_type>(__c) < _S_table_size)
? _M_tolower[__c] : __c);
}
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* __low, const wchar_t* __high) const
{
for (; __low < __high; ++__low)
if (static_cast<__table_type>(*__low) < _S_table_size)
*__low = _M_toupper[*__low];
return __high;
}
#endif
...@@ -76,45 +76,3 @@ ...@@ -76,45 +76,3 @@
return __high; return __high;
} }
#ifdef _GLIBCPP_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t /*__refs*/) throw()
: _M_toupper(NULL), _M_tolower(NULL),
_M_ctable(_ctype_)
{ }
wchar_t
ctype<wchar_t>::do_toupper(wchar_t __c) const
{
int __x = __c;
bool __testok = __c < _S_table_size && this->is(ctype_base::upper, __c);
return (__testok ? (__x - 'A' + 'a') : __x);
}
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* low, const wchar_t* high) const
{
for (;low < high; ++low)
if (*low < _S_table_size)
*low = this->do_toupper(*low);
return high;
}
wchar_t
ctype<wchar_t>::do_tolower(wchar_t __c) const
{
int __x = __c;
bool __testok = __c < _S_table_size && this->is(ctype_base::lower, __c);
return (__testok ? (__x - 'A' + 'a') : __x);
}
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* __low, const wchar_t* __high) const
{
for (; __low < __high; ++__low)
if (*__low < _S_table_size)
*__low = this->do_tolower(*__low);
return __high;
}
#endif
...@@ -70,49 +70,3 @@ ...@@ -70,49 +70,3 @@
return __high; return __high;
} }
#ifdef _GLIBCPP_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t /*__refs*/) throw()
: _M_toupper(NULL), _M_tolower(NULL),
_M_ctable(__ctype)
{ }
wchar_t
ctype<wchar_t>::do_toupper(wchar_t __c) const
{
int __x = __c;
bool __testok = __c < _S_table_size && this->is(ctype_base::upper, __c);
return (__testok ? __x : (__x - 'a' + 'A'));
}
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* low, const wchar_t* high) const
{
for (;low < high; ++low)
if (*low < _S_table_size)
*low = this->do_toupper(*low);
return high;
}
wchar_t
ctype<wchar_t>::do_tolower(wchar_t __c) const
{
int __x = __c;
bool __testok = __c < _S_table_size && this->is(ctype_base::lower, __c);
return (__testok ? __x: (__x - 'A' + 'a'));
}
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* __low, const wchar_t* __high) const
{
for (; __low < __high; ++__low)
if (*__low < _S_table_size)
*__low = this->do_tolower(*__low);
return __high;
}
#endif
...@@ -69,39 +69,3 @@ ...@@ -69,39 +69,3 @@
} }
return __high; return __high;
} }
#ifdef _GLIBCPP_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t /*__refs*/) throw()
: _M_toupper(__trans_upper), _M_tolower(__trans_lower),
_M_ctable(__ctype_mask)
{ }
wchar_t
ctype<wchar_t>::do_toupper(wchar_t __c) const
{ return (__c < _S_table_size) ? _M_toupper[__c] : __c; }
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* low, const wchar_t* high) const
{
for (;low < high; ++low)
if (*low < _S_table_size)
*low = _M_toupper[*low];
return high;
}
wchar_t
ctype<wchar_t>::do_tolower(wchar_t __c) const
{ return (__c < _S_table_size) ? _M_tolower[__c] : __c; }
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* __low, const wchar_t* __high) const
{
for (; __low < __high; ++__low)
if (*__low < _S_table_size)
*__low = _M_toupper[*__low];
return __high;
}
#endif
...@@ -70,41 +70,4 @@ ...@@ -70,41 +70,4 @@
return __high; return __high;
} }
#ifdef _GLIBCPP_USE_WCHAR_T
ctype<wchar_t>::ctype(size_t /*__refs*/) throw()
: _M_toupper(__trans_upper), _M_tolower(__trans_lower),
_M_ctable(__ctype_mask)
{ }
wchar_t
ctype<wchar_t>::do_toupper(wchar_t __c) const
{ return (static_cast<__table_type>(__c) < _S_table_size) ? _M_toupper[__c] : __c; }
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* low, const wchar_t* high) const
{
for (;low < high; ++low)
if (static_cast<__table_type>(*low) < _S_table_size)
*low = _M_toupper[*low];
return high;
}
wchar_t
ctype<wchar_t>::do_tolower(wchar_t __c) const
{ return (static_cast<__table_type>(__c) < _S_table_size) ? _M_tolower[__c] : __c; }
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* __low, const wchar_t* __high) const
{
for (; __low < __high; ++__low)
if (static_cast<__table_type>(*__low) < _S_table_size)
*__low = _M_toupper[*__low];
return __high;
}
#endif
...@@ -37,7 +37,9 @@ ...@@ -37,7 +37,9 @@
#include <bits/std_ostream.h> #include <bits/std_ostream.h>
#include <bits/std_vector.h> #include <bits/std_vector.h>
#include <bits/std_memory.h> // for auto_ptr #include <bits/std_memory.h> // for auto_ptr
#ifdef _GLIBCPP_USE_WCHAR_T
#include <bits/std_cwctype.h> // for towupper, etc.
#endif
namespace std { namespace std {
// locale::_Impl // locale::_Impl
...@@ -641,76 +643,104 @@ namespace std { ...@@ -641,76 +643,104 @@ namespace std {
ctype<wchar_t>:: ctype<wchar_t>::
~ctype() { } ~ctype() { }
// NB: These ctype<wchar_t> methods are not configuration-specific,
// unlike the ctype<char> bits.
ctype<wchar_t>::ctype(size_t /*__refs*/) throw() { }
wchar_t
ctype<wchar_t>::do_toupper(wchar_t __c) const
{ return ::towupper(__c); }
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* __low, const wchar_t* __high) const
{
while (__low < __high)
{
*__low = ::towupper(*__low);
++__low;
}
return __high;
}
wchar_t
ctype<wchar_t>::do_tolower(wchar_t __c) const
{ return ::towlower(__c); }
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* __low, const wchar_t* __high) const
{
while (__low < __high)
{
*__low = ::towlower(*__low);
++__low;
}
return __high;
}
bool bool
ctype<wchar_t>:: ctype<wchar_t>::
do_is(mask __m, char_type __c) const do_is(mask /*__m*/, char_type /*__c*/) const
{ {
return ((static_cast<__table_type>(__c) < _S_table_size) // XXX
&& (_M_ctable[__c] & __m)); return false;
} }
const wchar_t* const wchar_t*
ctype<wchar_t>:: ctype<wchar_t>::
do_is(const wchar_t* __low, const wchar_t* __high, mask* __vec) const do_is(const wchar_t* __low, const wchar_t* /*__high*/, mask* /*__vec*/) const
{ {
for (; __low < __high; ++__low, ++__vec) // XXX
*__vec = ((static_cast<__table_type>(*__low) < _S_table_size) return __low;
? _M_ctable[*__low] : mask(0));
return __high;
} }
const wchar_t* const wchar_t*
ctype<wchar_t>:: ctype<wchar_t>::
do_scan_is(mask __m, const wchar_t* __low, const wchar_t* __high) const do_scan_is(mask /*__m*/, const wchar_t* __low, const wchar_t* /*__high*/) const
{ {
while (__low < __high // XXX
&& (_S_table_size < static_cast<__table_type>(*__low)
|| !(_M_ctable[*__low] & __m)))
++__low;
return __low; return __low;
} }
const wchar_t* const wchar_t*
ctype<wchar_t>:: ctype<wchar_t>::
do_scan_not(mask __m, const char_type* __low, const char_type* __high) const do_scan_not(mask /*__m*/, const char_type* __low,
const char_type* /*__high*/) const
{ {
while (__low < __high // XXX
&& static_cast<__table_type>(*__low) < _S_table_size
&& (_M_ctable[*__low] & __m))
++__low;
return __low; return __low;
} }
wchar_t wchar_t
ctype<wchar_t>:: ctype<wchar_t>::
do_widen(char __c) const do_widen(char __c) const
{ return static_cast<wchar_t>((unsigned char)__c); } {
// XXX
return static_cast<wchar_t>((unsigned char)__c);
}
const char* const char*
ctype<wchar_t>:: ctype<wchar_t>::
do_widen(const char* __low, const char* __high, wchar_t* __dest) const do_widen(const char* /*__low*/, const char* __high,
wchar_t* /*__dest*/) const
{ {
while (__low < __high) // XXX
*__dest++ = static_cast<wchar_t>((unsigned char)*__low++);
return __high; return __high;
} }
char char
ctype<wchar_t>:: ctype<wchar_t>::
do_narrow(wchar_t __c, char __dfault) const do_narrow(wchar_t /*__c*/, char __dfault) const
{ {
return ((static_cast<__table_type>(__c) < _S_table_size) // XXX
? static_cast<char>(__c) : __dfault); return __dfault;
} }
const wchar_t* const wchar_t*
ctype<wchar_t>:: ctype<wchar_t>::
do_narrow(const wchar_t* __low, const wchar_t* __high, do_narrow(const wchar_t* /*__low*/, const wchar_t* __high,
char __dfault, char* __dest) const char /*__dfault*/, char* /*__dest*/) const
{ {
for (; __low < __high; ++__dest, ++__low) // XXX
*__dest = (static_cast<__table_type>(*__low) < _S_table_size)
? static_cast<char>(*__low) : __dfault;
return __high; return __high;
} }
......
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