Whole document tree locale-inst.ccGo to the documentation of this file.00001 // Locale support -*- C++ -*- 00002 00003 // Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. 00004 // 00005 // This file is part of the GNU ISO C++ Library. This library is free 00006 // software; you can redistribute it and/or modify it under the 00007 // terms of the GNU General Public License as published by the 00008 // Free Software Foundation; either version 2, or (at your option) 00009 // any later version. 00010 00011 // This library is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU General Public License for more details. 00015 00016 // You should have received a copy of the GNU General Public License along 00017 // with this library; see the file COPYING. If not, write to the Free 00018 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 00019 // USA. 00020 00021 // As a special exception, you may use this file as part of a free software 00022 // library without restriction. Specifically, if other files instantiate 00023 // templates or use macros or inline functions from this file, or you compile 00024 // this file and link it with other files to produce an executable, this 00025 // file does not by itself cause the resulting executable to be covered by 00026 // the GNU General Public License. This exception does not however 00027 // invalidate any other reasons why the executable file might be covered by 00028 // the GNU General Public License. 00029 00030 // 00031 // ISO C++ 14882: 22.1 Locales 00032 // 00033 00034 #include <bits/std_clocale.h> 00035 #include <bits/std_cstring.h> 00036 #include <bits/std_cassert.h> 00037 #include <bits/std_limits.h> 00038 #include <exception> 00039 #include <bits/std_stdexcept.h> 00040 #include <bits/std_locale.h> 00041 #include <bits/locale_facets.tcc> 00042 #include <bits/std_istream.h> 00043 #include <bits/std_ostream.h> 00044 00045 namespace std 00046 { 00047 typedef ostreambuf_iterator<char, char_traits<char> > obuf_iterator; 00048 typedef istreambuf_iterator<char, char_traits<char> > ibuf_iterator; 00049 typedef ostreambuf_iterator<wchar_t, char_traits<wchar_t> > wobuf_iterator; 00050 typedef istreambuf_iterator<wchar_t, char_traits<wchar_t> > wibuf_iterator; 00051 00052 // moneypunct, money_get, and money_put 00053 template class moneypunct<char, false>; 00054 template class moneypunct<char, true>; 00055 template class moneypunct_byname<char, false>; 00056 template class moneypunct_byname<char, true>; 00057 template class money_get<char, obuf_iterator>; 00058 template class money_put<char, obuf_iterator>; 00059 template class money_get<char, ibuf_iterator>; 00060 template class money_put<char, ibuf_iterator>; 00061 template class _Format_cache<char>; 00062 00063 #ifdef _GLIBCPP_USE_WCHAR_T 00064 template class moneypunct<wchar_t, false>; 00065 template class moneypunct<wchar_t, true>; 00066 template class moneypunct_byname<wchar_t, false>; 00067 template class moneypunct_byname<wchar_t, true>; 00068 template class money_get<wchar_t, wobuf_iterator>; 00069 template class money_put<wchar_t, wobuf_iterator>; 00070 template class money_get<wchar_t, wibuf_iterator>; 00071 template class money_put<wchar_t, wibuf_iterator>; 00072 template class _Format_cache<wchar_t>; 00073 #endif 00074 00075 // numpunct, numpunct_byname, num_get, and num_put 00076 template class numpunct<char>; 00077 template class numpunct_byname<char>; 00078 template class num_get<char, ibuf_iterator>; 00079 template class num_put<char, obuf_iterator>; 00080 #ifdef _GLIBCPP_USE_WCHAR_T 00081 template class numpunct<wchar_t>; 00082 template class numpunct_byname<wchar_t>; 00083 template class num_get<wchar_t, wibuf_iterator>; 00084 template class num_put<wchar_t, wobuf_iterator>; 00085 #endif 00086 00087 // time_get and time_put 00088 template class time_put<char, obuf_iterator>; 00089 template class time_put_byname<char, obuf_iterator>; 00090 template class time_get<char, ibuf_iterator>; 00091 template class time_get_byname<char, ibuf_iterator>; 00092 00093 #ifdef _GLIBCPP_USE_WCHAR_T 00094 template class time_put<wchar_t, wobuf_iterator>; 00095 template class time_put_byname<wchar_t, wobuf_iterator>; 00096 template class time_get<wchar_t, wibuf_iterator>; 00097 template class time_get_byname<wchar_t, wibuf_iterator>; 00098 #endif 00099 00100 // messages 00101 template class messages<char>; 00102 template class messages_byname<char>; 00103 #ifdef _GLIBCPP_USE_WCHAR_T 00104 template class messages<wchar_t>; 00105 template class messages_byname<wchar_t>; 00106 #endif 00107 00108 // ctype 00109 template class __ctype_abstract_base<char>; 00110 template class ctype_byname<char>; 00111 #ifdef _GLIBCPP_USE_WCHAR_T 00112 template class __ctype_abstract_base<wchar_t>; 00113 template class ctype_byname<wchar_t>; 00114 #endif 00115 00116 // codecvt 00117 template class __codecvt_abstract_base<char, char, mbstate_t>; 00118 template class __codecvt_abstract_base<wchar_t, char, mbstate_t>; 00119 template class codecvt_byname<char, char, mbstate_t>; 00120 #ifdef _GLIBCPP_USE_WCHAR_T 00121 template class codecvt_byname<wchar_t, char, mbstate_t>; 00122 #endif 00123 00124 // collate 00125 template class collate<char>; 00126 template class collate_byname<char>; 00127 template class _Weekdaynames<char, int>; 00128 template class _Monthnames<char, int>; 00129 #ifdef _GLIBCPP_USE_WCHAR_T 00130 template class collate<wchar_t>; 00131 template class collate_byname<wchar_t>; 00132 template class _Weekdaynames<wchar_t, int>; 00133 template class _Monthnames<wchar_t, int>; 00134 #endif 00135 00136 // use_facet 00137 template 00138 const num_put<char, obuf_iterator >& 00139 use_facet<num_put<char, obuf_iterator> >(const locale&); 00140 template 00141 const num_get<char, ibuf_iterator >& 00142 use_facet<num_get<char, ibuf_iterator> >(const locale&); 00143 template 00144 const codecvt<char, char, mbstate_t>& 00145 use_facet<codecvt<char, char, mbstate_t> >(const locale&); 00146 template 00147 const numpunct<char>& 00148 use_facet<numpunct<char> >(const locale&); 00149 template 00150 const collate<char>& 00151 use_facet<collate<char> >(const locale&); 00152 #ifdef _GLIBCPP_USE_WCHAR_T 00153 template 00154 const num_put<wchar_t, wobuf_iterator>& 00155 use_facet<num_put<wchar_t, wobuf_iterator> >(const locale&); 00156 template 00157 const num_get<wchar_t, wibuf_iterator>& 00158 use_facet<num_get<wchar_t, wibuf_iterator> >(const locale&); 00159 template 00160 const codecvt<wchar_t, char, mbstate_t>& 00161 use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&); 00162 template 00163 const numpunct<wchar_t>& 00164 use_facet<numpunct<wchar_t> >(const locale&); 00165 template 00166 const collate<wchar_t>& 00167 use_facet<collate<wchar_t> >(const locale&); 00168 #endif 00169 00170 // has_facet 00171 template 00172 bool 00173 has_facet<numpunct<char> >(const locale&); 00174 template 00175 bool 00176 has_facet<num_put<char> >(const locale&); 00177 template 00178 bool 00179 has_facet<num_get<char> >(const locale&); 00180 template 00181 bool 00182 has_facet<ctype<char> >(const locale&); 00183 00184 #ifdef _GLIBCPP_USE_WCHAR_T 00185 template 00186 bool 00187 has_facet<numpunct<wchar_t> >(const locale&); 00188 template 00189 bool 00190 has_facet<num_put<wchar_t> >(const locale&); 00191 template 00192 bool 00193 has_facet<num_get<wchar_t> >(const locale&); 00194 template 00195 bool 00196 has_facet<ctype<wchar_t> >(const locale&); 00197 #endif 00198 00199 // 00200 // iterator 00201 // 00202 typedef vector<locale::facet*> vec_pfacet; 00203 template 00204 void 00205 vec_pfacet:: 00206 insert(vec_pfacet::iterator, vec_pfacet::size_type, 00207 const vec_pfacet::value_type&); 00208 template 00209 void 00210 vec_pfacet:: 00211 _M_fill_insert(vec_pfacet::iterator, vec_pfacet::size_type, 00212 const vec_pfacet::value_type&); 00213 00214 00215 typedef istreambuf_iterator<char, char_traits<char> > istreambuf_iter; 00216 typedef ostreambuf_iterator<char, char_traits<char> > ostreambuf_iter; 00217 00218 00219 template 00220 istreambuf_iter 00221 __match_parallel<istreambuf_iter, char> 00222 (istreambuf_iter, istreambuf_iter, int, const string*, int*, int&, bool&); 00223 00224 00225 #ifdef _GLIBCPP_USE_WCHAR_T 00226 typedef istreambuf_iterator<wchar_t,char_traits<wchar_t> > wistreambuf_iter; 00227 typedef ostreambuf_iterator<wchar_t,char_traits<wchar_t> > wostreambuf_iter; 00228 00229 template 00230 wistreambuf_iter 00231 __match_parallel<wistreambuf_iter, wchar_t> 00232 (wistreambuf_iter, wistreambuf_iter, int, const wstring*, int*, int&, bool&); 00233 #endif 00234 00235 00236 // 00237 // locale 00238 // 00239 template 00240 bool 00241 locale::operator()(const string&, const string&) const; 00242 00243 template 00244 ostreambuf_iter 00245 __pad<char, ostreambuf_iter, output_iterator_tag> 00246 (ostreambuf_iter, char, int, output_iterator_tag); 00247 00248 template 00249 ostreambuf_iter 00250 __pad_numeric<char, ostreambuf_iter> 00251 (ostreambuf_iter, ios_base::fmtflags, char, int, char const*, char const*, 00252 char const*); 00253 00254 template 00255 char* 00256 __group_digits<char>(char*, char, char const*, char const*, 00257 char const*, char const*); 00258 00259 template 00260 ostreambuf_iter 00261 __output_integer<char, ostreambuf_iter, unsigned long> 00262 (ostreambuf_iter, ios_base &, char, bool, unsigned long); 00263 00264 #ifdef _GLIBCPP_USE_LONG_LONG 00265 template 00266 ostreambuf_iter 00267 __output_integer<char, ostreambuf_iter, unsigned long long> 00268 (ostreambuf_iter, ios_base &, char, bool, unsigned long long); 00269 #endif 00270 00271 #ifdef _GLIBCPP_USE_WCHAR_T 00272 template 00273 bool 00274 locale::operator()(const wstring&, const wstring&) const; 00275 00276 typedef ostreambuf_iterator<wchar_t> wostreambuf_iter; 00277 00278 template 00279 wostreambuf_iter 00280 __pad<wchar_t, wostreambuf_iter, output_iterator_tag> 00281 (wostreambuf_iter, wchar_t, int, output_iterator_tag); 00282 00283 template 00284 wostreambuf_iter 00285 __pad_numeric<wchar_t, wostreambuf_iter> 00286 (wostreambuf_iter, ios_base::fmtflags, wchar_t __fill, int, wchar_t const*, 00287 wchar_t const*, wchar_t const*); 00288 00289 template 00290 wchar_t* 00291 __group_digits<wchar_t>(wchar_t*, wchar_t, char const*, char const*, 00292 wchar_t const*, wchar_t const*); 00293 00294 template 00295 wostreambuf_iter 00296 __output_integer<wchar_t, wostreambuf_iter, unsigned long> 00297 (wostreambuf_iter, ios_base &, wchar_t, bool, unsigned long); 00298 00299 #ifdef _GLIBCPP_USE_LONG_LONG 00300 template 00301 wostreambuf_iter 00302 __output_integer<wchar_t, wostreambuf_iter, unsigned long long> 00303 (wostreambuf_iter, ios_base &, wchar_t, bool, unsigned long long); 00304 #endif 00305 #endif // _GLIBCPP_USE_WCHAR_T 00306 00307 template 00308 locale::facet** 00309 fill_n<locale::facet**, size_t, locale::facet*> 00310 (locale::facet**, size_t, locale::facet* const&); 00311 00312 template 00313 __normal_iterator<locale::facet**, vector<locale::facet*> > 00314 fill_n(__normal_iterator<locale::facet**, vector<locale::facet*> >, 00315 size_t, locale::facet* const&); 00316 00317 template 00318 void 00319 fill(__normal_iterator<locale::facet**, vector<locale::facet*> >, 00320 __normal_iterator<locale::facet**, vector<locale::facet*> >, 00321 locale::facet* const&); 00322 } // namespace std 00323 Generated on Mon Apr 8 03:11:28 2002 for libstdc++-v3 Source by ![]() |