mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 19:03:59 +08:00
locale_facets.h: Tweak.
2000-06-02 Benjamin Kosnik <bkoz@purist.soma.redhat.com> * bits/locale_facets.h: Tweak. * src/locale.cc (codecvt<wchar_t>): Tweak. * bits/locale_facets.h (_Format_cache): _S_ecks -> _S_x. * bits/locale_facets.tcc (num_get<char>::_M_extract): Fix for hex. * bits/basic_string.h: Move data member up. * src/string-inst.cc: Fix instantiations. * bits/string.tcc: Fix types. From-SVN: r34371
This commit is contained in:
parent
3378216a50
commit
cc4316b532
@ -1,8 +1,15 @@
|
||||
2000-06-02 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
|
||||
|
||||
* bits/locale_facets.h: Tweak.
|
||||
* src/locale.cc (codecvt<wchar_t>): Tweak.
|
||||
|
||||
* bits/locale_facets.h (_Format_cache): _S_ecks -> _S_x.
|
||||
* bits/locale_facets.tcc (num_get<char>::_M_extract): Fix for hex.
|
||||
|
||||
* bits/basic_string.h: Move data member up.
|
||||
* src/string-inst.cc: Fix instantiations.
|
||||
* bits/string.tcc: Fix types.
|
||||
|
||||
2000-06-02 Anthony Williams <anthony@anthonyw.cjb.net>
|
||||
|
||||
* testsuite/21_strings/replace.cc (test01): Qualify find with std::.
|
||||
|
@ -97,11 +97,6 @@ namespace std {
|
||||
typedef reverse_iterator<const_iterator> const_reverse_iterator;
|
||||
typedef reverse_iterator<iterator> reverse_iterator;
|
||||
|
||||
// Data Members:
|
||||
// NB: This is an unsigned type, and thus represents the maximum
|
||||
// size that the allocator can hold.
|
||||
static const size_type npos = static_cast<size_type>(-1);
|
||||
|
||||
private:
|
||||
// _Rep: string representation
|
||||
// Invariants:
|
||||
@ -222,8 +217,20 @@ namespace std {
|
||||
_CharT* _M_p; // The actual data.
|
||||
};
|
||||
|
||||
public:
|
||||
// Data Members (public):
|
||||
// NB: This is an unsigned type, and thus represents the maximum
|
||||
// size that the allocator can hold.
|
||||
static const size_type npos = static_cast<size_type>(-1);
|
||||
|
||||
private:
|
||||
// Data Members (private):
|
||||
mutable _Alloc_hider _M_dataplus;
|
||||
|
||||
// The following storage is init'd to 0 by the linker, resulting
|
||||
// (carefully) in an empty string with one reference.
|
||||
static size_type _S_empty_rep_storage[(sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type) - 1)/sizeof(size_type)];
|
||||
|
||||
_CharT*
|
||||
_M_data() const
|
||||
{ return _M_dataplus._M_p; }
|
||||
@ -299,14 +306,9 @@ namespace std {
|
||||
void
|
||||
_M_leak_hard();
|
||||
|
||||
// The following storage is init'd to 0 by the linker, resulting
|
||||
// (carefully) in an empty string with one reference.
|
||||
static size_type _S_empty_rep_storage[
|
||||
(sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type)-1)/sizeof(size_type)];
|
||||
|
||||
static _Rep&
|
||||
_S_empty_rep()
|
||||
{ return *reinterpret_cast<_Rep*> (&_S_empty_rep_storage); }
|
||||
{ return *reinterpret_cast<_Rep*>(&_S_empty_rep_storage); }
|
||||
|
||||
public:
|
||||
// Construct/copy/destroy:
|
||||
@ -840,7 +842,7 @@ namespace std {
|
||||
|
||||
private:
|
||||
static const _CharT*
|
||||
_S_find (const _CharT* __beg, const _CharT* __end, _CharT __c);
|
||||
_S_find(const _CharT* __beg, const _CharT* __end, _CharT __c);
|
||||
};
|
||||
|
||||
|
||||
|
@ -597,7 +597,7 @@ namespace std
|
||||
// Types:
|
||||
typedef _InternT intern_type;
|
||||
typedef _ExternT extern_type;
|
||||
typedef _StateT state_type;
|
||||
typedef _StateT state_type;
|
||||
|
||||
// Data Members:
|
||||
static locale::id id;
|
||||
@ -618,8 +618,8 @@ namespace std
|
||||
{
|
||||
public:
|
||||
// Types:
|
||||
typedef char intern_type;
|
||||
typedef char extern_type;
|
||||
typedef char intern_type;
|
||||
typedef char extern_type;
|
||||
typedef mbstate_t state_type;
|
||||
|
||||
explicit codecvt (size_t __refs = 0);
|
||||
@ -657,8 +657,8 @@ namespace std
|
||||
{
|
||||
public:
|
||||
// Types:
|
||||
typedef wchar_t intern_type;
|
||||
typedef char extern_type;
|
||||
typedef wchar_t intern_type;
|
||||
typedef char extern_type;
|
||||
typedef mbstate_t state_type;
|
||||
|
||||
explicit codecvt(size_t __refs = 0);
|
||||
@ -774,7 +774,7 @@ namespace std
|
||||
|
||||
// A list of valid numeric literals: for the standard "C" locale,
|
||||
// this would usually be: "-+xX0123456789abcdef0123456789ABCDEF"
|
||||
static const char _S_literals[];
|
||||
static const char _S_literals[];
|
||||
|
||||
// NB: Code depends on the order of definitions of the names
|
||||
// these are indices into _S_literals, above.
|
||||
|
@ -399,7 +399,7 @@ namespace std
|
||||
// Linker sets _S_empty_rep_storage to all 0s (one reference, empty string)
|
||||
// at static init time (before static ctors are run).
|
||||
template<typename _CharT, typename _Traits, typename _Alloc>
|
||||
typename _Alloc::size_type
|
||||
basic_string<_CharT, _Traits, _Alloc>::size_type
|
||||
basic_string<_CharT, _Traits, _Alloc>::_S_empty_rep_storage[
|
||||
(sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type) - 1)/sizeof(size_type)];
|
||||
|
||||
|
@ -41,7 +41,8 @@
|
||||
namespace std {
|
||||
|
||||
// locale::_Impl
|
||||
locale::_Impl::~_Impl() throw ()
|
||||
locale::_Impl::
|
||||
~_Impl() throw()
|
||||
{
|
||||
std::vector<facet*>::iterator it = _M_facets->begin();
|
||||
for (; it != _M_facets->end(); ++it)
|
||||
@ -50,7 +51,8 @@ namespace std {
|
||||
delete _M_category_names;
|
||||
}
|
||||
|
||||
locale::_Impl::_Impl(size_t __numfacets, size_t __refs)
|
||||
locale::_Impl::
|
||||
_Impl(size_t __numfacets, size_t __refs)
|
||||
: _M_num_references(__refs - 1)
|
||||
, _M_facets(0)
|
||||
, _M_category_names(0)
|
||||
@ -68,7 +70,8 @@ namespace std {
|
||||
_M_category_names = __pcn.release();
|
||||
}
|
||||
|
||||
locale::_Impl::_Impl(const _Impl& __other, size_t __refs)
|
||||
locale::_Impl::
|
||||
_Impl(const _Impl& __other, size_t __refs)
|
||||
: _M_num_references(__refs)
|
||||
, _M_facets(0)
|
||||
, _M_category_names(0)
|
||||
@ -95,7 +98,8 @@ namespace std {
|
||||
}
|
||||
|
||||
void
|
||||
locale::_Impl::_M_replace_categories(const _Impl* __other, category __cats)
|
||||
locale::_Impl::
|
||||
_M_replace_categories(const _Impl* __other, category __cats)
|
||||
{
|
||||
assert((__cats & locale::all) && !(__cats & ~locale::all));
|
||||
|
||||
@ -111,16 +115,16 @@ namespace std {
|
||||
}
|
||||
|
||||
void
|
||||
locale::_Impl::_M_replace_category(const _Impl* __other,
|
||||
const locale::id* const* __idpp)
|
||||
locale::_Impl::
|
||||
_M_replace_category(const _Impl* __other, const locale::id* const* __idpp)
|
||||
{
|
||||
for (; *__idpp; ++__idpp)
|
||||
_M_replace_facet(__other, *__idpp);
|
||||
}
|
||||
|
||||
void
|
||||
locale::_Impl::_M_replace_facet(const _Impl* __other,
|
||||
const locale::id* __idp)
|
||||
locale::_Impl::
|
||||
_M_replace_facet(const _Impl* __other, const locale::id* __idp)
|
||||
{
|
||||
size_t __index = __idp->_M_index;
|
||||
if (__index == 0
|
||||
@ -132,7 +136,8 @@ namespace std {
|
||||
}
|
||||
|
||||
void
|
||||
locale::_Impl::_M_install_facet(const locale::id* __idp, facet* __fp)
|
||||
locale::_Impl::
|
||||
_M_install_facet(const locale::id* __idp, facet* __fp)
|
||||
{
|
||||
if (__fp == 0)
|
||||
return;
|
||||
@ -260,11 +265,13 @@ namespace std {
|
||||
locale::_Impl* locale::_S_global; // init'd to 0 before static ctors run
|
||||
locale::_Impl* locale::_S_classic; // init'd to 0 before static ctors run
|
||||
|
||||
locale::locale(_Impl* __ip) throw ()
|
||||
locale::
|
||||
locale(_Impl* __ip) throw()
|
||||
: _M_impl(__ip)
|
||||
{ __ip->_M_add_reference(); }
|
||||
|
||||
locale::locale(const locale& __other, const locale& __one, category __cats)
|
||||
locale::
|
||||
locale(const locale& __other, const locale& __one, category __cats)
|
||||
{
|
||||
__cats = _S_normalize_category(__cats); // might throw
|
||||
_M_impl = new _Impl(*__other._M_impl, 1); // might throw
|
||||
@ -283,7 +290,8 @@ namespace std {
|
||||
}
|
||||
|
||||
const locale&
|
||||
locale::operator=(const locale& __other) throw ()
|
||||
locale::
|
||||
operator=(const locale& __other) throw()
|
||||
{
|
||||
__other._M_impl->_M_add_reference();
|
||||
_M_impl->_M_remove_reference();
|
||||
@ -292,7 +300,8 @@ namespace std {
|
||||
}
|
||||
|
||||
locale
|
||||
locale::global(const locale& __other)
|
||||
locale::
|
||||
global(const locale& __other)
|
||||
{
|
||||
// XXX MT
|
||||
_S_initialize();
|
||||
@ -306,14 +315,16 @@ namespace std {
|
||||
}
|
||||
|
||||
string
|
||||
locale::name() const
|
||||
locale::
|
||||
name() const
|
||||
{
|
||||
// XXX not done
|
||||
return "*";
|
||||
}
|
||||
|
||||
locale const&
|
||||
locale::classic()
|
||||
locale::
|
||||
classic()
|
||||
{
|
||||
static locale* __classic_locale;
|
||||
// XXX MT
|
||||
@ -321,7 +332,7 @@ namespace std {
|
||||
{
|
||||
try {
|
||||
_S_classic = _S_global = new _Impl(26u, 2u);
|
||||
// one reference for _M_classic, one for _M_global
|
||||
// One reference for _M_classic, one for _M_global
|
||||
// (constructor for (*the_classic_locale) adds a third)
|
||||
|
||||
// collate category
|
||||
@ -329,22 +340,22 @@ namespace std {
|
||||
|
||||
// ctype category
|
||||
_S_classic->_M_init_facet(new std::ctype<char>);
|
||||
_S_classic->_M_init_facet(new std::codecvt<char, char, mbstate_t>);
|
||||
_S_classic->_M_init_facet(new codecvt<char, char, mbstate_t>);
|
||||
|
||||
// monetary category
|
||||
_S_classic->_M_init_facet(new std::moneypunct<char, false>);
|
||||
_S_classic->_M_init_facet(new std::moneypunct<char,true >);
|
||||
_S_classic->_M_init_facet(new std::money_get<char>);
|
||||
_S_classic->_M_init_facet(new std::money_put<char>);
|
||||
_S_classic->_M_init_facet(new moneypunct<char, false>);
|
||||
_S_classic->_M_init_facet(new moneypunct<char,true >);
|
||||
_S_classic->_M_init_facet(new money_get<char>);
|
||||
_S_classic->_M_init_facet(new money_put<char>);
|
||||
|
||||
// numeric category
|
||||
_S_classic->_M_init_facet(new std::numpunct<char>);
|
||||
_S_classic->_M_init_facet(new std::num_get<char>);
|
||||
_S_classic->_M_init_facet(new std::num_put<char>);
|
||||
_S_classic->_M_init_facet(new numpunct<char>);
|
||||
_S_classic->_M_init_facet(new num_get<char>);
|
||||
_S_classic->_M_init_facet(new num_put<char>);
|
||||
|
||||
// time category
|
||||
_S_classic->_M_init_facet(new std::time_get<char>);
|
||||
_S_classic->_M_init_facet(new std::time_put<char>);
|
||||
_S_classic->_M_init_facet(new time_get<char>);
|
||||
_S_classic->_M_init_facet(new time_put<char>);
|
||||
|
||||
// messages category
|
||||
_S_classic->_M_init_facet(new std::messages<char>);
|
||||
@ -352,16 +363,16 @@ namespace std {
|
||||
#ifdef _GLIBCPP_USE_WCHAR_T
|
||||
_S_classic->_M_init_facet(new std::collate<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::ctype<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::codecvt<wchar_t, char, mbstate_t>);
|
||||
_S_classic->_M_init_facet(new std::moneypunct<wchar_t, false>);
|
||||
_S_classic->_M_init_facet(new std::moneypunct<wchar_t,true >);
|
||||
_S_classic->_M_init_facet(new std::money_get<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::money_put<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::numpunct<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::num_get<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::num_put<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::time_get<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::time_put<wchar_t>);
|
||||
_S_classic->_M_init_facet(new codecvt<wchar_t, char, mbstate_t>);
|
||||
_S_classic->_M_init_facet(new moneypunct<wchar_t, false>);
|
||||
_S_classic->_M_init_facet(new moneypunct<wchar_t,true >);
|
||||
_S_classic->_M_init_facet(new money_get<wchar_t>);
|
||||
_S_classic->_M_init_facet(new money_put<wchar_t>);
|
||||
_S_classic->_M_init_facet(new numpunct<wchar_t>);
|
||||
_S_classic->_M_init_facet(new num_get<wchar_t>);
|
||||
_S_classic->_M_init_facet(new num_put<wchar_t>);
|
||||
_S_classic->_M_init_facet(new time_get<wchar_t>);
|
||||
_S_classic->_M_init_facet(new time_put<wchar_t>);
|
||||
_S_classic->_M_init_facet(new std::messages<wchar_t>);
|
||||
#endif
|
||||
|
||||
@ -384,7 +395,8 @@ namespace std {
|
||||
}
|
||||
|
||||
int
|
||||
locale::_S_normalize_category(int __cats)
|
||||
locale::
|
||||
_S_normalize_category(int __cats)
|
||||
{
|
||||
if ((__cats & all) && !(__cats & ~all))
|
||||
return __cats;
|
||||
@ -408,19 +420,22 @@ namespace std {
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
locale::facet::facet(size_t __refs) throw ()
|
||||
locale::facet::
|
||||
facet(size_t __refs) throw()
|
||||
: _M_num_references(__refs - 1)
|
||||
{ }
|
||||
|
||||
void
|
||||
locale::facet::_M_add_reference() throw ()
|
||||
locale::facet::
|
||||
_M_add_reference() throw()
|
||||
{
|
||||
if (this)
|
||||
++_M_num_references;
|
||||
} // XXX MT
|
||||
|
||||
void
|
||||
locale::facet::_M_remove_reference() throw ()
|
||||
locale::facet::
|
||||
_M_remove_reference() throw()
|
||||
{
|
||||
if (this && _M_num_references-- == 0)
|
||||
{
|
||||
@ -433,10 +448,12 @@ namespace std {
|
||||
}
|
||||
|
||||
char const*
|
||||
_Bad_use_facet::what() const throw()
|
||||
_Bad_use_facet::
|
||||
what() const throw()
|
||||
{ return "bad_cast thrown from use_facet"; }
|
||||
|
||||
_Bad_use_facet::~_Bad_use_facet() throw() {}
|
||||
_Bad_use_facet::
|
||||
~_Bad_use_facet() throw() { }
|
||||
|
||||
size_t locale::id::_S_highwater; // init'd to 0 by linker
|
||||
|
||||
@ -446,11 +463,13 @@ namespace std {
|
||||
|
||||
locale::id ctype<char>::id;
|
||||
|
||||
ctype<char>::~ctype()
|
||||
ctype<char>::
|
||||
~ctype()
|
||||
{ if (_M_del) delete[] table(); }
|
||||
|
||||
char
|
||||
ctype<char>::do_widen(char __c) const
|
||||
ctype<char>::
|
||||
do_widen(char __c) const
|
||||
{ return __c; }
|
||||
|
||||
const char*
|
||||
@ -462,7 +481,8 @@ namespace std {
|
||||
}
|
||||
|
||||
char
|
||||
ctype<char>::do_narrow(char __c, char /*__dfault*/) const
|
||||
ctype<char>::
|
||||
do_narrow(char __c, char /*__dfault*/) const
|
||||
{ return __c; }
|
||||
|
||||
const char*
|
||||
@ -474,17 +494,20 @@ namespace std {
|
||||
return __high;
|
||||
}
|
||||
|
||||
ctype_byname<char>::ctype_byname(const char* /*__s*/, size_t __refs)
|
||||
: ctype<char> (new mask[table_size], true, __refs)
|
||||
ctype_byname<char>::
|
||||
ctype_byname(const char* /*__s*/, size_t __refs)
|
||||
: ctype<char>(new mask[table_size], true, __refs)
|
||||
{ }
|
||||
|
||||
locale::id codecvt<char, char, mbstate_t>::id;
|
||||
|
||||
codecvt<char, char, mbstate_t>::codecvt(size_t __refs)
|
||||
: _Codecvt<char, char, mbstate_t> (__refs)
|
||||
codecvt<char, char, mbstate_t>::
|
||||
codecvt(size_t __refs)
|
||||
: _Codecvt<char, char, mbstate_t>(__refs)
|
||||
{ }
|
||||
|
||||
codecvt<char, char, mbstate_t>::~codecvt() { }
|
||||
codecvt<char, char, mbstate_t>::
|
||||
~codecvt() { }
|
||||
|
||||
codecvt_base::result
|
||||
codecvt<char, char, mbstate_t>::
|
||||
@ -505,8 +528,7 @@ namespace std {
|
||||
codecvt_base::result
|
||||
codecvt<char, char, mbstate_t>::
|
||||
do_unshift(state_type& /*__state*/, extern_type* __to,
|
||||
extern_type* /*__to_limit*/,
|
||||
extern_type*& __to_next) const
|
||||
extern_type* /*__to_limit*/, extern_type*& __to_next) const
|
||||
{
|
||||
__to_next = __to;
|
||||
return noconv;
|
||||
@ -530,12 +552,12 @@ namespace std {
|
||||
|
||||
|
||||
int
|
||||
codecvt<char, char, mbstate_t>::do_encoding() const throw ()
|
||||
{ return 1; }
|
||||
codecvt<char, char, mbstate_t>::
|
||||
do_encoding() const throw() { return 1; }
|
||||
|
||||
bool
|
||||
codecvt<char, char, mbstate_t>::do_always_noconv() const throw ()
|
||||
{ return true; }
|
||||
codecvt<char, char, mbstate_t>::
|
||||
do_always_noconv() const throw() { return true; }
|
||||
|
||||
int
|
||||
codecvt<char, char, mbstate_t>::
|
||||
@ -544,27 +566,27 @@ namespace std {
|
||||
{ return (__max < size_t(__end - __from)) ? __max : __end - __from; }
|
||||
|
||||
int
|
||||
codecvt<char, char, mbstate_t>::do_max_length() const throw ()
|
||||
{ return 1; }
|
||||
codecvt<char, char, mbstate_t>::
|
||||
do_max_length() const throw() { return 1; }
|
||||
|
||||
codecvt_byname<char, char, mbstate_t>::
|
||||
codecvt_byname(const char* /*__s*/, size_t __refs)
|
||||
: codecvt<char, char, mbstate_t>(__refs)
|
||||
{ }
|
||||
: codecvt<char, char, mbstate_t>(__refs) { }
|
||||
|
||||
codecvt_byname<char, char, mbstate_t>::~codecvt_byname() { }
|
||||
codecvt_byname<char, char, mbstate_t>::
|
||||
~codecvt_byname() { }
|
||||
|
||||
locale::id collate<char>::id;
|
||||
|
||||
collate<char>::collate(size_t __refs)
|
||||
: _Collate<char> (__refs)
|
||||
{ }
|
||||
: _Collate<char>(__refs) { }
|
||||
|
||||
collate<char>::~collate() { }
|
||||
|
||||
int
|
||||
collate<char>::do_compare(const char* __lo1, const char* __hi1,
|
||||
const char* __lo2, const char* __hi2) const
|
||||
collate<char>::
|
||||
do_compare(const char* __lo1, const char* __hi1,
|
||||
const char* __lo2, const char* __hi2) const
|
||||
{
|
||||
for (; __lo1 < __hi1 && __lo2 < __hi2; ++__lo1, ++__lo2)
|
||||
if (*__lo1 != *__lo2)
|
||||
@ -578,11 +600,13 @@ namespace std {
|
||||
}
|
||||
|
||||
string
|
||||
collate<char>::do_transform(const char* __lo, const char* __hi) const
|
||||
collate<char>::
|
||||
do_transform(const char* __lo, const char* __hi) const
|
||||
{ return string(__lo, __hi - __lo); }
|
||||
|
||||
long
|
||||
collate<char>::do_hash(const char* __lo, const char* __hi) const
|
||||
collate<char>::
|
||||
do_hash(const char* __lo, const char* __hi) const
|
||||
{
|
||||
unsigned long __val = 0xdeadbeef;
|
||||
for (; __lo < __hi; ++__lo)
|
||||
@ -591,43 +615,43 @@ namespace std {
|
||||
return __val;
|
||||
}
|
||||
|
||||
collate_byname<char>::collate_byname(const char* /*__s*/, size_t __refs)
|
||||
: collate<char> (__refs)
|
||||
{ }
|
||||
collate_byname<char>::
|
||||
collate_byname(const char* /*__s*/, size_t __refs)
|
||||
: collate<char>(__refs) { }
|
||||
|
||||
numpunct_byname<char>::numpunct_byname(const char* /*__s*/, size_t __refs)
|
||||
: numpunct<char> (__refs)
|
||||
{ }
|
||||
numpunct_byname<char>::
|
||||
numpunct_byname(const char* /*__s*/, size_t __refs)
|
||||
: numpunct<char>(__refs) { }
|
||||
|
||||
moneypunct_byname<char, false>::
|
||||
moneypunct_byname(const char* /*__s*/, size_t __refs)
|
||||
: moneypunct<char, false> (__refs)
|
||||
{ }
|
||||
: moneypunct<char, false>(__refs) { }
|
||||
|
||||
moneypunct_byname<char, true>::
|
||||
moneypunct_byname(const char* /*__s*/, size_t __refs)
|
||||
: moneypunct<char, true> (__refs)
|
||||
{ }
|
||||
: moneypunct<char, true>(__refs) { }
|
||||
|
||||
messages_byname<char>::messages_byname(const char* /*__s*/, size_t __refs)
|
||||
: messages<char> (__refs)
|
||||
{ }
|
||||
messages_byname<char>::
|
||||
messages_byname(const char* /*__s*/, size_t __refs)
|
||||
: messages<char>(__refs) { }
|
||||
|
||||
#ifdef _GLIBCPP_USE_WCHAR_T
|
||||
locale::id ctype<wchar_t>::id;
|
||||
|
||||
ctype<wchar_t>::~ctype() { }
|
||||
ctype<wchar_t>::
|
||||
~ctype() { }
|
||||
|
||||
bool
|
||||
ctype<wchar_t>::do_is(mask __m, char_type __c) const
|
||||
ctype<wchar_t>::
|
||||
do_is(mask __m, char_type __c) const
|
||||
{
|
||||
return ((static_cast<__table_type>(__c) < _S_table_size)
|
||||
&& (_M_ctable[__c] & __m));
|
||||
}
|
||||
|
||||
const wchar_t*
|
||||
ctype<wchar_t>::do_is(const wchar_t* __low, const wchar_t* __high,
|
||||
mask* __vec) const
|
||||
ctype<wchar_t>::
|
||||
do_is(const wchar_t* __low, const wchar_t* __high, mask* __vec) const
|
||||
{
|
||||
for (; __low < __high; ++__low, ++__vec)
|
||||
*__vec = ((static_cast<__table_type>(*__low) < _S_table_size)
|
||||
@ -636,8 +660,8 @@ namespace std {
|
||||
}
|
||||
|
||||
const wchar_t*
|
||||
ctype<wchar_t>::do_scan_is(mask __m, const wchar_t* __low,
|
||||
const wchar_t* __high) const
|
||||
ctype<wchar_t>::
|
||||
do_scan_is(mask __m, const wchar_t* __low, const wchar_t* __high) const
|
||||
{
|
||||
while (__low < __high
|
||||
&& (_S_table_size < static_cast<__table_type>(*__low)
|
||||
@ -647,8 +671,8 @@ namespace std {
|
||||
}
|
||||
|
||||
const wchar_t*
|
||||
ctype<wchar_t>::do_scan_not(mask __m, const char_type* __low,
|
||||
const char_type* __high) const
|
||||
ctype<wchar_t>::
|
||||
do_scan_not(mask __m, const char_type* __low, const char_type* __high) const
|
||||
{
|
||||
while (__low < __high
|
||||
&& static_cast<__table_type>(*__low) < _S_table_size
|
||||
@ -658,12 +682,13 @@ namespace std {
|
||||
}
|
||||
|
||||
wchar_t
|
||||
ctype<wchar_t>::do_widen(char __c) const
|
||||
ctype<wchar_t>::
|
||||
do_widen(char __c) const
|
||||
{ return static_cast<wchar_t>((unsigned char)__c); }
|
||||
|
||||
const char*
|
||||
ctype<wchar_t>::do_widen(const char* __low, const char* __high,
|
||||
wchar_t* __dest) const
|
||||
ctype<wchar_t>::
|
||||
do_widen(const char* __low, const char* __high, wchar_t* __dest) const
|
||||
{
|
||||
while (__low < __high)
|
||||
*__dest++ = static_cast<wchar_t>((unsigned char)*__low++);
|
||||
@ -671,15 +696,17 @@ namespace std {
|
||||
}
|
||||
|
||||
char
|
||||
ctype<wchar_t>::do_narrow(wchar_t __c, char __dfault) const
|
||||
ctype<wchar_t>::
|
||||
do_narrow(wchar_t __c, char __dfault) const
|
||||
{
|
||||
return ((static_cast<__table_type>(__c) < _S_table_size)
|
||||
? static_cast<char>(__c) : __dfault);
|
||||
}
|
||||
|
||||
const wchar_t*
|
||||
ctype<wchar_t>::do_narrow(const wchar_t* __low, const wchar_t* __high,
|
||||
char __dfault, char* __dest) const
|
||||
ctype<wchar_t>::
|
||||
do_narrow(const wchar_t* __low, const wchar_t* __high,
|
||||
char __dfault, char* __dest) const
|
||||
{
|
||||
for (; __low < __high; ++__dest, ++__low)
|
||||
*__dest = (static_cast<__table_type>(*__low) < _S_table_size)
|
||||
@ -687,17 +714,18 @@ namespace std {
|
||||
return __high;
|
||||
}
|
||||
|
||||
ctype_byname<wchar_t>::ctype_byname(const char* /*__s*/, size_t __refs)
|
||||
: ctype<wchar_t> (__refs)
|
||||
{ }
|
||||
ctype_byname<wchar_t>::
|
||||
ctype_byname(const char* /*__s*/, size_t __refs)
|
||||
: ctype<wchar_t>(__refs) { }
|
||||
|
||||
locale::id codecvt<wchar_t, char, mbstate_t>::id;
|
||||
|
||||
codecvt<wchar_t, char, mbstate_t>::codecvt (size_t __refs)
|
||||
: _Codecvt<wchar_t, char, mbstate_t> (__refs)
|
||||
{ }
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
codecvt(size_t __refs)
|
||||
: _Codecvt<wchar_t, char, mbstate_t>(__refs) { }
|
||||
|
||||
codecvt<wchar_t, char, mbstate_t>::~codecvt() { }
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
~codecvt() { }
|
||||
|
||||
codecvt_base::result
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
@ -715,8 +743,7 @@ namespace std {
|
||||
codecvt_base::result
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
do_unshift (state_type& /*__state*/, extern_type* __to,
|
||||
extern_type* /*__to_limit*/,
|
||||
extern_type*& __to_next) const
|
||||
extern_type* /*__to_limit*/, extern_type*& __to_next) const
|
||||
{
|
||||
__to_next = __to;
|
||||
return noconv;
|
||||
@ -736,11 +763,14 @@ namespace std {
|
||||
return __from == __from_end ? ok : partial;
|
||||
}
|
||||
|
||||
int codecvt<wchar_t, char, mbstate_t>::do_encoding() const throw ()
|
||||
int
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
do_encoding() const throw()
|
||||
{ return 1; }
|
||||
|
||||
bool
|
||||
codecvt<wchar_t, char, mbstate_t>::do_always_noconv() const throw ()
|
||||
codecvt<wchar_t, char, mbstate_t>::
|
||||
do_always_noconv() const throw()
|
||||
{ return false; }
|
||||
|
||||
int
|
||||
@ -750,33 +780,35 @@ namespace std {
|
||||
{ return (__max < size_t(__end - __from)) ? __max : __end - __from; }
|
||||
|
||||
int
|
||||
codecvt<wchar_t, char, mbstate_t>::do_max_length() const throw ()
|
||||
codecvt<wchar_t, char, mbstate_t>::do_max_length() const throw()
|
||||
{ return 1; }
|
||||
|
||||
codecvt_byname<wchar_t, char, mbstate_t>::
|
||||
codecvt_byname(const char* /*__s*/, size_t __refs)
|
||||
: codecvt<wchar_t, char, mbstate_t> (__refs)
|
||||
{ }
|
||||
: codecvt<wchar_t, char, mbstate_t> (__refs) { }
|
||||
|
||||
codecvt_byname<wchar_t, char, mbstate_t>::~codecvt_byname() {}
|
||||
codecvt_byname<wchar_t, char, mbstate_t>::
|
||||
~codecvt_byname() { }
|
||||
|
||||
locale::id collate<wchar_t>::id;
|
||||
|
||||
collate<wchar_t>::collate(size_t __refs)
|
||||
: _Collate<wchar_t> (__refs)
|
||||
{ }
|
||||
collate<wchar_t>::
|
||||
collate(size_t __refs)
|
||||
: _Collate<wchar_t> (__refs) { }
|
||||
|
||||
collate<wchar_t>::~collate() { }
|
||||
collate<wchar_t>::
|
||||
~collate() { }
|
||||
|
||||
int collate<wchar_t>::
|
||||
int
|
||||
collate<wchar_t>::
|
||||
do_compare(const wchar_t* /*__lo1*/, const wchar_t* /*__hi1*/,
|
||||
const wchar_t* /*__lo2*/, const wchar_t* /*__hi2*/) const
|
||||
{
|
||||
return 0; // XXX not done
|
||||
}
|
||||
|
||||
wstring collate<wchar_t>::do_transform(const wchar_t* /*__lo*/,
|
||||
const wchar_t* /*__hi*/) const
|
||||
wstring collate<wchar_t>::
|
||||
do_transform(const wchar_t* /*__lo*/, const wchar_t* /*__hi*/) const
|
||||
{
|
||||
return wstring(); // XXX not done
|
||||
}
|
||||
@ -787,27 +819,25 @@ namespace std {
|
||||
return 0; // XXX not done
|
||||
}
|
||||
|
||||
numpunct_byname<wchar_t>::numpunct_byname(const char* /*__s*/, size_t __refs)
|
||||
: numpunct<wchar_t> (__refs)
|
||||
{ }
|
||||
numpunct_byname<wchar_t>::
|
||||
numpunct_byname(const char* /*__s*/, size_t __refs)
|
||||
: numpunct<wchar_t> (__refs) { }
|
||||
|
||||
collate_byname<wchar_t>::collate_byname(const char* /*__s*/, size_t __refs)
|
||||
: collate<wchar_t> (__refs)
|
||||
{ }
|
||||
collate_byname<wchar_t>::
|
||||
collate_byname(const char* /*__s*/, size_t __refs)
|
||||
: collate<wchar_t> (__refs) { }
|
||||
|
||||
moneypunct_byname<wchar_t, false>::
|
||||
moneypunct_byname(const char* /*__s*/, size_t __refs)
|
||||
: moneypunct<wchar_t, false> (__refs)
|
||||
{ }
|
||||
: moneypunct<wchar_t, false> (__refs) { }
|
||||
|
||||
moneypunct_byname<wchar_t, true>::
|
||||
moneypunct_byname(const char* /*__s*/, size_t __refs)
|
||||
: moneypunct<wchar_t, true> (__refs)
|
||||
{ }
|
||||
: moneypunct<wchar_t, true> (__refs) { }
|
||||
|
||||
messages_byname<wchar_t>::messages_byname(const char* /*__s*/, size_t __refs)
|
||||
: messages<wchar_t> (__refs)
|
||||
{ }
|
||||
messages_byname<wchar_t>::
|
||||
messages_byname(const char* /*__s*/, size_t __refs)
|
||||
: messages<wchar_t> (__refs) { }
|
||||
#endif // _GLIBCPP_USE_WCHAR_T
|
||||
|
||||
} // namespace std
|
||||
|
@ -57,9 +57,9 @@ namespace std
|
||||
|
||||
#ifdef MAIN
|
||||
template C S::_Rep::_S_terminal;
|
||||
// XXX Fix me: 2000-04-18 g++ ICE.
|
||||
// template S::size_type S::_S_max_size;
|
||||
// template S::allocator_type::size_type S::S_empty_rep_storage[];
|
||||
template S::size_type S::_Rep::_S_max_size;
|
||||
template S::size_type S::_S_empty_rep_storage[];
|
||||
|
||||
template S::basic_string(S const&);
|
||||
template S::_Rep* S::_Rep::_S_create(size_t, S::allocator_type const&);
|
||||
template void S::_Rep::_M_destroy(S::allocator_type const&) throw();
|
||||
|
Loading…
Reference in New Issue
Block a user