00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
#include <locale>
00030
00031
namespace std
00032 {
00033
00034
const ctype_base::mask ctype_base::space;
00035
const ctype_base::mask ctype_base::print;
00036
const ctype_base::mask ctype_base::cntrl;
00037
const ctype_base::mask ctype_base::upper;
00038
const ctype_base::mask ctype_base::lower;
00039
const ctype_base::mask ctype_base::alpha;
00040
const ctype_base::mask ctype_base::digit;
00041
const ctype_base::mask ctype_base::punct;
00042
const ctype_base::mask ctype_base::xdigit;
00043
const ctype_base::mask ctype_base::alnum;
00044
const ctype_base::mask ctype_base::graph;
00045
00046
00047 locale::id ctype<char>::id;
00048
00049
#ifdef _GLIBCXX_USE_WCHAR_T
00050
locale::id ctype<wchar_t>::id;
00051
#endif
00052
00053
template<>
00054
const ctype<char>&
00055 use_facet<ctype<char> >(
const locale& __loc)
00056 {
00057 size_t __i =
ctype<char>::id._M_id();
00058
const locale::_Impl* __tmp = __loc._M_impl;
00059
return static_cast<const ctype<char>&>(*(__tmp->_M_facets[__i]));
00060 }
00061
00062
#ifdef _GLIBCXX_USE_WCHAR_T
00063
template<>
00064
const ctype<wchar_t>&
00065 use_facet<ctype<wchar_t> >(
const locale& __loc)
00066 {
00067 size_t __i =
ctype<wchar_t>::id._M_id();
00068
const locale::_Impl* __tmp = __loc._M_impl;
00069
return static_cast<const ctype<wchar_t>&>(*(__tmp->_M_facets[__i]));
00070 }
00071
#endif
00072
00073
00074
00075
00076
#include <bits/ctype_noninline.h>
00077
00078 const size_t
ctype<char>::table_size;
00079
00080 ctype<char>::~ctype()
00081 {
00082 _S_destroy_c_locale(_M_c_locale_ctype);
00083
if (_M_del)
00084
delete[] this->table();
00085 }
00086
00087
#ifdef _GLIBCXX_USE_WCHAR_T
00088
ctype<wchar_t>::ctype(size_t __refs)
00089 : __ctype_abstract_base<wchar_t>(__refs),
00090 _M_c_locale_ctype(_S_get_c_locale()), _M_narrow_ok(false)
00091 { _M_initialize_ctype(); }
00092
00093 ctype<wchar_t>::ctype(__c_locale __cloc, size_t __refs)
00094 : __ctype_abstract_base<wchar_t>(__refs),
00095 _M_c_locale_ctype(_S_clone_c_locale(__cloc)), _M_narrow_ok(false)
00096 { _M_initialize_ctype(); }
00097
00098 ctype<wchar_t>::~ctype()
00099 { _S_destroy_c_locale(_M_c_locale_ctype); }
00100
00101
template<>
00102 ctype_byname<wchar_t>::ctype_byname(
const char* __s, size_t __refs)
00103 : ctype<wchar_t>(__refs)
00104 {
00105
if (std::strcmp(__s,
"C") != 0 && std::strcmp(__s,
"POSIX") != 0)
00106 {
00107 this->_S_destroy_c_locale(this->_M_c_locale_ctype);
00108 this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
00109 this->_M_initialize_ctype();
00110 }
00111 }
00112
#endif
00113
}
00114