# locale-inst.cc

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