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