locale-inst.cc

00001 // Locale support -*- C++ -*-
00002 
00003 // Copyright (C) 1999, 2000, 2001, 2002, 2003 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 <cstdlib>
00035 #include <clocale>
00036 #include <cstring>
00037 #include <locale>
00038 
00039 namespace std
00040 {
00041   // moneypunct, money_get, and money_put
00042   template class moneypunct<char, false>;
00043   template class moneypunct<char, true>;
00044   template class moneypunct_byname<char, false>;
00045   template class moneypunct_byname<char, true>;
00046   template class money_get<char, istreambuf_iterator<char> >;
00047   template class money_put<char, ostreambuf_iterator<char> >;
00048 
00049 #ifdef _GLIBCPP_USE_WCHAR_T
00050   template class moneypunct<wchar_t, false>;
00051   template class moneypunct<wchar_t, true>;
00052   template class moneypunct_byname<wchar_t, false>;
00053   template class moneypunct_byname<wchar_t, true>;
00054   template class money_get<wchar_t, istreambuf_iterator<wchar_t> >;
00055   template class money_put<wchar_t, ostreambuf_iterator<wchar_t> >;
00056 #endif
00057 
00058   // numpunct, numpunct_byname, num_get, and num_put
00059   template class numpunct<char>;
00060   template class numpunct_byname<char>;
00061   template class num_get<char, istreambuf_iterator<char> >;
00062   template class num_put<char, ostreambuf_iterator<char> >; 
00063   template
00064     ostreambuf_iterator<char>
00065     num_put<char, ostreambuf_iterator<char> >::
00066     _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, 
00067            long) const;
00068 
00069   template
00070     ostreambuf_iterator<char>
00071     num_put<char, ostreambuf_iterator<char> >::
00072     _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, 
00073            unsigned long) const;
00074 
00075 #ifdef _GLIBCPP_USE_LONG_LONG
00076   template
00077     ostreambuf_iterator<char>
00078     num_put<char, ostreambuf_iterator<char> >::
00079     _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, 
00080            long long) const;
00081 
00082   template
00083     ostreambuf_iterator<char>
00084     num_put<char, ostreambuf_iterator<char> >::
00085     _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, 
00086            unsigned long long) const;
00087 #endif
00088 
00089   template
00090     ostreambuf_iterator<char>
00091     num_put<char, ostreambuf_iterator<char> >::
00092     _M_convert_float(ostreambuf_iterator<char>, ios_base&, char, char, 
00093              double) const;
00094 
00095   template
00096     ostreambuf_iterator<char>
00097     num_put<char, ostreambuf_iterator<char> >::
00098     _M_convert_float(ostreambuf_iterator<char>, ios_base&, char, char, 
00099              long double) const;
00100   
00101 #ifdef _GLIBCPP_USE_WCHAR_T
00102   template class numpunct<wchar_t>;
00103   template class numpunct_byname<wchar_t>;
00104   template class num_get<wchar_t, istreambuf_iterator<wchar_t> >;
00105   template class num_put<wchar_t, ostreambuf_iterator<wchar_t> >;
00106 
00107   template
00108     ostreambuf_iterator<wchar_t>
00109     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00110     _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, 
00111            long) const;
00112 
00113   template
00114     ostreambuf_iterator<wchar_t>
00115     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00116     _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, 
00117            unsigned long) const;
00118 
00119 #ifdef _GLIBCPP_USE_LONG_LONG
00120   template
00121     ostreambuf_iterator<wchar_t>
00122     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00123     _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
00124            long long) const;
00125 
00126   template
00127     ostreambuf_iterator<wchar_t>
00128     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00129     _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
00130            unsigned long long) const;
00131 #endif
00132 
00133   template
00134     ostreambuf_iterator<wchar_t>
00135     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00136     _M_convert_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
00137              double) const;
00138 
00139   template
00140     ostreambuf_iterator<wchar_t>
00141     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00142     _M_convert_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
00143              long double) const;
00144 #endif
00145 
00146 #if 1
00147       // XXX GLIBCXX_ABI Deprecated, compatibility only.
00148   template
00149     ostreambuf_iterator<char>
00150     num_put<char, ostreambuf_iterator<char> >::
00151     _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char, 
00152            long) const;
00153 
00154   template
00155     ostreambuf_iterator<char>
00156     num_put<char, ostreambuf_iterator<char> >::
00157     _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char, 
00158            unsigned long) const;
00159 
00160 #ifdef _GLIBCPP_USE_LONG_LONG
00161   template
00162     ostreambuf_iterator<char>
00163     num_put<char, ostreambuf_iterator<char> >::
00164     _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char, 
00165            long long) const;
00166 
00167   template
00168     ostreambuf_iterator<char>
00169     num_put<char, ostreambuf_iterator<char> >::
00170     _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
00171            unsigned long long) const;
00172 #endif
00173 
00174 #ifdef _GLIBCPP_USE_WCHAR_T
00175   template
00176     ostreambuf_iterator<wchar_t>
00177     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00178     _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
00179            char, long) const;
00180 
00181   template
00182     ostreambuf_iterator<wchar_t>
00183     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00184     _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
00185            char, unsigned long) const;
00186 
00187 #ifdef _GLIBCPP_USE_LONG_LONG
00188   template
00189     ostreambuf_iterator<wchar_t>
00190     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00191     _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
00192            char, long long) const;
00193 
00194   template
00195     ostreambuf_iterator<wchar_t>
00196     num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
00197     _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
00198            char, unsigned long long) const;
00199 #endif
00200 #endif
00201 
00202 #endif
00203 
00204   // time_get and time_put
00205   template class __timepunct<char>;
00206   template class time_put<char, ostreambuf_iterator<char> >;
00207   template class time_put_byname<char, ostreambuf_iterator<char> >;
00208   template class time_get<char, istreambuf_iterator<char> >;
00209   template class time_get_byname<char, istreambuf_iterator<char> >;
00210 
00211 #ifdef _GLIBCPP_USE_WCHAR_T
00212   template class __timepunct<wchar_t>;
00213   template class time_put<wchar_t, ostreambuf_iterator<wchar_t> >;
00214   template class time_put_byname<wchar_t, ostreambuf_iterator<wchar_t> >;
00215   template class time_get<wchar_t, istreambuf_iterator<wchar_t> >;
00216   template class time_get_byname<wchar_t, istreambuf_iterator<wchar_t> >;
00217 #endif
00218 
00219   // messages
00220   template class messages<char>;
00221   template class messages_byname<char>;
00222 #ifdef _GLIBCPP_USE_WCHAR_T
00223   template class messages<wchar_t>;
00224   template class messages_byname<wchar_t>;
00225 #endif
00226   
00227   // ctype
00228   inline template class __ctype_abstract_base<char>;
00229   template class ctype_byname<char>;
00230 #ifdef _GLIBCPP_USE_WCHAR_T
00231   inline template class __ctype_abstract_base<wchar_t>;
00232   template class ctype_byname<wchar_t>;
00233 #endif
00234   
00235   // codecvt
00236   inline template class __codecvt_abstract_base<char, char, mbstate_t>;
00237   template class codecvt_byname<char, char, mbstate_t>;
00238 #ifdef _GLIBCPP_USE_WCHAR_T
00239   inline template class __codecvt_abstract_base<wchar_t, char, mbstate_t>;
00240   template class codecvt_byname<wchar_t, char, mbstate_t>;
00241 #endif
00242 
00243   // collate
00244   template class collate<char>;
00245   template class collate_byname<char>;
00246 #ifdef _GLIBCPP_USE_WCHAR_T
00247   template class collate<wchar_t>;
00248   template class collate_byname<wchar_t>;
00249 #endif
00250     
00251   // use_facet
00252   // NB: use_facet<ctype> is specialized
00253   template
00254     const codecvt<char, char, mbstate_t>& 
00255     use_facet<codecvt<char, char, mbstate_t> >(const locale&);
00256 
00257   template
00258     const collate<char>& 
00259     use_facet<collate<char> >(const locale&);
00260 
00261   template
00262     const numpunct<char>& 
00263     use_facet<numpunct<char> >(const locale&);
00264 
00265   template 
00266     const num_put<char>& 
00267     use_facet<num_put<char> >(const locale&);
00268 
00269   template 
00270     const num_get<char>& 
00271     use_facet<num_get<char> >(const locale&);
00272 
00273   template
00274     const moneypunct<char, true>& 
00275     use_facet<moneypunct<char, true> >(const locale&);
00276 
00277   template
00278     const moneypunct<char, false>& 
00279     use_facet<moneypunct<char, false> >(const locale&);
00280 
00281   template 
00282     const money_put<char>& 
00283     use_facet<money_put<char> >(const locale&);
00284 
00285   template 
00286     const money_get<char>& 
00287     use_facet<money_get<char> >(const locale&);
00288 
00289   template
00290     const __timepunct<char>& 
00291     use_facet<__timepunct<char> >(const locale&);
00292 
00293   template 
00294     const time_put<char>& 
00295     use_facet<time_put<char> >(const locale&);
00296 
00297   template 
00298     const time_get<char>& 
00299     use_facet<time_get<char> >(const locale&);
00300 
00301   template 
00302     const messages<char>& 
00303     use_facet<messages<char> >(const locale&);
00304 
00305 #ifdef _GLIBCPP_USE_WCHAR_T
00306   template
00307     const codecvt<wchar_t, char, mbstate_t>& 
00308     use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
00309 
00310   template
00311     const collate<wchar_t>& 
00312     use_facet<collate<wchar_t> >(const locale&);
00313 
00314   template
00315     const numpunct<wchar_t>& 
00316     use_facet<numpunct<wchar_t> >(const locale&);
00317 
00318   template 
00319     const num_put<wchar_t>& 
00320     use_facet<num_put<wchar_t> >(const locale&);
00321 
00322   template 
00323     const num_get<wchar_t>& 
00324     use_facet<num_get<wchar_t> >(const locale&);
00325 
00326   template
00327     const moneypunct<wchar_t, true>& 
00328     use_facet<moneypunct<wchar_t, true> >(const locale&);
00329 
00330   template
00331     const moneypunct<wchar_t, false>& 
00332     use_facet<moneypunct<wchar_t, false> >(const locale&);
00333  
00334   template 
00335     const money_put<wchar_t>& 
00336     use_facet<money_put<wchar_t> >(const locale&);
00337 
00338   template 
00339     const money_get<wchar_t>& 
00340     use_facet<money_get<wchar_t> >(const locale&);
00341 
00342   template
00343     const __timepunct<wchar_t>& 
00344     use_facet<__timepunct<wchar_t> >(const locale&);
00345 
00346   template 
00347     const time_put<wchar_t>& 
00348     use_facet<time_put<wchar_t> >(const locale&);
00349 
00350   template 
00351     const time_get<wchar_t>& 
00352     use_facet<time_get<wchar_t> >(const locale&);
00353 
00354   template 
00355     const messages<wchar_t>& 
00356     use_facet<messages<wchar_t> >(const locale&);
00357 #endif
00358 
00359   // has_facet
00360   template 
00361     bool
00362     has_facet<ctype<char> >(const locale&);
00363 
00364   template 
00365     bool
00366     has_facet<codecvt<char, char, mbstate_t> >(const locale&);
00367 
00368   template 
00369     bool
00370     has_facet<collate<char> >(const locale&);
00371 
00372   template 
00373     bool
00374     has_facet<numpunct<char> >(const locale&);
00375 
00376   template 
00377     bool
00378     has_facet<num_put<char> >(const locale&);
00379 
00380   template 
00381     bool
00382     has_facet<num_get<char> >(const locale&);
00383 
00384   template 
00385     bool
00386     has_facet<moneypunct<char> >(const locale&);
00387 
00388   template 
00389     bool
00390     has_facet<money_put<char> >(const locale&);
00391 
00392   template 
00393     bool
00394     has_facet<money_get<char> >(const locale&);
00395 
00396   template 
00397     bool
00398     has_facet<__timepunct<char> >(const locale&);
00399 
00400   template 
00401     bool
00402     has_facet<time_put<char> >(const locale&);
00403 
00404   template 
00405     bool
00406     has_facet<time_get<char> >(const locale&);
00407 
00408   template 
00409     bool
00410     has_facet<messages<char> >(const locale&);
00411 
00412 #ifdef _GLIBCPP_USE_WCHAR_T
00413  template 
00414     bool
00415     has_facet<ctype<wchar_t> >(const locale&);
00416 
00417   template 
00418     bool
00419     has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
00420 
00421   template 
00422     bool
00423     has_facet<collate<wchar_t> >(const locale&);
00424 
00425   template 
00426     bool
00427     has_facet<numpunct<wchar_t> >(const locale&);
00428 
00429   template 
00430     bool
00431     has_facet<num_put<wchar_t> >(const locale&);
00432 
00433   template 
00434     bool
00435     has_facet<num_get<wchar_t> >(const locale&);
00436 
00437   template 
00438     bool
00439     has_facet<moneypunct<wchar_t> >(const locale&);
00440 
00441   template 
00442     bool
00443     has_facet<money_put<wchar_t> >(const locale&);
00444 
00445   template 
00446     bool
00447     has_facet<money_get<wchar_t> >(const locale&);
00448 
00449   template 
00450     bool
00451     has_facet<__timepunct<wchar_t> >(const locale&);
00452 
00453   template 
00454     bool
00455     has_facet<time_put<wchar_t> >(const locale&);
00456 
00457   template 
00458     bool
00459     has_facet<time_get<wchar_t> >(const locale&);
00460 
00461   template 
00462     bool
00463     has_facet<messages<wchar_t> >(const locale&);
00464 #endif
00465 
00466   // locale
00467   template
00468     char*
00469     __add_grouping<char>(char*, char, char const*, char const*, 
00470              char const*, char const*);
00471 
00472   template
00473     bool
00474     __verify_grouping<char>(const basic_string<char>&, basic_string<char>&);
00475 
00476   template class __pad<char, char_traits<char> >;
00477 
00478 #ifdef _GLIBCPP_USE_WCHAR_T
00479   template
00480     wchar_t*
00481     __add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, char const*, 
00482                 wchar_t const*, wchar_t const*);
00483   template
00484     bool
00485     __verify_grouping<wchar_t>(const basic_string<wchar_t>&, 
00486                    basic_string<wchar_t>&);
00487 
00488   template class __pad<wchar_t, char_traits<wchar_t> >;
00489 #endif 
00490 
00491   template
00492     int
00493     __convert_from_v(char*, const int, const char*, double, 
00494              const __c_locale&, int);
00495 
00496   template
00497     int
00498     __convert_from_v(char*, const int, const char*, long double, 
00499              const __c_locale&, int);
00500 
00501   template
00502     int
00503     __convert_from_v(char*, const int, const char*, long, 
00504              const __c_locale&, int);
00505 
00506   template
00507     int
00508     __convert_from_v(char*, const int, const char*, unsigned long, 
00509              const __c_locale&, int);
00510 
00511 #ifdef _GLIBCPP_USE_LONG_LONG
00512   template
00513     int
00514     __convert_from_v(char*, const int, const char*, long long, 
00515              const __c_locale&, int);
00516 
00517   template
00518     int
00519     __convert_from_v(char*, const int, const char*, unsigned long long, 
00520              const __c_locale&, int);
00521 #endif
00522 
00523   template
00524     int
00525     __int_to_char(char*, const int, unsigned long, const char*, 
00526           ios_base::fmtflags, bool);
00527 
00528 #ifdef _GLIBCPP_USE_WCHAR_T
00529   template
00530     int
00531     __int_to_char(wchar_t*, const int, unsigned long, const wchar_t*, 
00532           ios_base::fmtflags, bool);
00533 #endif
00534 
00535 #ifdef _GLIBCPP_USE_LONG_LONG
00536   template
00537     int
00538     __int_to_char(char*, const int, unsigned long long, const char*, 
00539           ios_base::fmtflags, bool);
00540 
00541 #ifdef _GLIBCPP_USE_WCHAR_T
00542   template
00543     int
00544     __int_to_char(wchar_t*, const int, unsigned long long, const wchar_t*,
00545           ios_base::fmtflags, bool);
00546 #endif
00547 #endif
00548 
00549   template<typename _CharT>
00550     void
00551     __locale_cache<_CharT>::_S_callback(ios_base::event __ev, ios_base& __io, int);
00552 
00553   template class __locale_cache<char>;
00554 #ifdef _GLIBCPP_USE_WCHAR_T
00555   template class __locale_cache<wchar_t>;
00556 #endif
00557 } // namespace std

Generated on Tue Apr 29 20:16:21 2003 for libstdc++-v3 Source by doxygen1.3