1 // Locale support -*- C++ -*-
3 // Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
4 // Free Software Foundation, Inc.
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 2, or (at your option)
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING. If not, write to the Free
19 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22 // As a special exception, you may use this file as part of a free software
23 // library without restriction. Specifically, if other files instantiate
24 // templates or use macros or inline functions from this file, or you compile
25 // this file and link it with other files to produce an executable, this
26 // file does not by itself cause the resulting executable to be covered by
27 // the GNU General Public License. This exception does not however
28 // invalidate any other reasons why the executable file might be covered by
29 // the GNU General Public License.
32 // ISO C++ 14882: 22.1 Locales
37 // Instantiation configuration.
44 // moneypunct, money_get, and money_put
45 template class moneypunct<C, false>;
46 template class moneypunct<C, true>;
47 template struct __moneypunct_cache<C, false>;
48 template struct __moneypunct_cache<C, true>;
49 template class moneypunct_byname<C, false>;
50 template class moneypunct_byname<C, true>;
51 template class money_get<C, istreambuf_iterator<C> >;
52 template class money_put<C, ostreambuf_iterator<C> >;
54 istreambuf_iterator<C>
55 money_get<C, istreambuf_iterator<C> >::
56 _M_extract<true>(istreambuf_iterator<C>, istreambuf_iterator<C>,
57 ios_base&, ios_base::iostate&, string&) const;
60 istreambuf_iterator<C>
61 money_get<C, istreambuf_iterator<C> >::
62 _M_extract<false>(istreambuf_iterator<C>, istreambuf_iterator<C>,
63 ios_base&, ios_base::iostate&, string&) const;
66 ostreambuf_iterator<C>
67 money_put<C, ostreambuf_iterator<C> >::
68 _M_insert<true>(ostreambuf_iterator<C>, ios_base&, C,
69 const string_type&) const;
72 ostreambuf_iterator<C>
73 money_put<C, ostreambuf_iterator<C> >::
74 _M_insert<false>(ostreambuf_iterator<C>, ios_base&, C,
75 const string_type&) const;
77 // numpunct, numpunct_byname, num_get, and num_put
78 template class numpunct<C>;
79 template struct __numpunct_cache<C>;
80 template class numpunct_byname<C>;
81 template class num_get<C, istreambuf_iterator<C> >;
82 template class num_put<C, ostreambuf_iterator<C> >;
84 istreambuf_iterator<C>
85 num_get<C, istreambuf_iterator<C> >::
86 _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
87 ios_base&, ios_base::iostate&,
91 istreambuf_iterator<C>
92 num_get<C, istreambuf_iterator<C> >::
93 _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
94 ios_base&, ios_base::iostate&,
95 unsigned short&) const;
98 istreambuf_iterator<C>
99 num_get<C, istreambuf_iterator<C> >::
100 _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
101 ios_base&, ios_base::iostate&,
102 unsigned int&) const;
105 istreambuf_iterator<C>
106 num_get<C, istreambuf_iterator<C> >::
107 _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
108 ios_base&, ios_base::iostate&,
109 unsigned long&) const;
111 #ifdef _GLIBCXX_USE_LONG_LONG
113 istreambuf_iterator<C>
114 num_get<C, istreambuf_iterator<C> >::
115 _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
116 ios_base&, ios_base::iostate&,
120 istreambuf_iterator<C>
121 num_get<C, istreambuf_iterator<C> >::
122 _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
123 ios_base&, ios_base::iostate&,
124 unsigned long long&) const;
128 ostreambuf_iterator<C>
129 num_put<C, ostreambuf_iterator<C> >::
130 _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
134 ostreambuf_iterator<C>
135 num_put<C, ostreambuf_iterator<C> >::
136 _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
137 unsigned long) const;
139 #ifdef _GLIBCXX_USE_LONG_LONG
141 ostreambuf_iterator<C>
142 num_put<C, ostreambuf_iterator<C> >::
143 _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
147 ostreambuf_iterator<C>
148 num_put<C, ostreambuf_iterator<C> >::
149 _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
150 unsigned long long) const;
154 ostreambuf_iterator<C>
155 num_put<C, ostreambuf_iterator<C> >::
156 _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char,
160 ostreambuf_iterator<C>
161 num_put<C, ostreambuf_iterator<C> >::
162 _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char,
165 // time_get and time_put
166 template class __timepunct<C>;
167 template struct __timepunct_cache<C>;
168 template class time_put<C, ostreambuf_iterator<C> >;
169 template class time_put_byname<C, ostreambuf_iterator<C> >;
170 template class time_get<C, istreambuf_iterator<C> >;
171 template class time_get_byname<C, istreambuf_iterator<C> >;
174 template class messages<C>;
175 template class messages_byname<C>;
178 inline template class __ctype_abstract_base<C>;
179 template class ctype_byname<C>;
182 inline template class __codecvt_abstract_base<C, char, mbstate_t>;
183 template class codecvt_byname<C, char, mbstate_t>;
186 template class collate<C>;
187 template class collate_byname<C>;
190 // NB: use_facet<ctype> is specialized
192 const codecvt<C, char, mbstate_t>&
193 use_facet<codecvt<C, char, mbstate_t> >(const locale&);
197 use_facet<collate<C> >(const locale&);
201 use_facet<numpunct<C> >(const locale&);
205 use_facet<num_put<C> >(const locale&);
209 use_facet<num_get<C> >(const locale&);
212 const moneypunct<C, true>&
213 use_facet<moneypunct<C, true> >(const locale&);
216 const moneypunct<C, false>&
217 use_facet<moneypunct<C, false> >(const locale&);
221 use_facet<money_put<C> >(const locale&);
225 use_facet<money_get<C> >(const locale&);
228 const __timepunct<C>&
229 use_facet<__timepunct<C> >(const locale&);
233 use_facet<time_put<C> >(const locale&);
237 use_facet<time_get<C> >(const locale&);
241 use_facet<messages<C> >(const locale&);
246 has_facet<ctype<C> >(const locale&);
250 has_facet<codecvt<C, char, mbstate_t> >(const locale&);
254 has_facet<collate<C> >(const locale&);
258 has_facet<numpunct<C> >(const locale&);
262 has_facet<num_put<C> >(const locale&);
266 has_facet<num_get<C> >(const locale&);
270 has_facet<moneypunct<C> >(const locale&);
274 has_facet<money_put<C> >(const locale&);
278 has_facet<money_get<C> >(const locale&);
282 has_facet<__timepunct<C> >(const locale&);
286 has_facet<time_put<C> >(const locale&);
290 has_facet<time_get<C> >(const locale&);
294 has_facet<messages<C> >(const locale&);
300 __add_grouping<C>(C*, C, char const*, size_t,
303 template class __pad<C, char_traits<C> >;
307 __int_to_char(C*, unsigned long, const C*,
308 ios_base::fmtflags, bool);
310 #ifdef _GLIBCXX_USE_LONG_LONG
313 __int_to_char(C*, unsigned long long, const C*,
314 ios_base::fmtflags, bool);