1 // Locale support -*- C++ -*-
3 // Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING. If not, write to the Free
18 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
21 // As a special exception, you may use this file as part of a free software
22 // library without restriction. Specifically, if other files instantiate
23 // templates or use macros or inline functions from this file, or you compile
24 // this file and link it with other files to produce an executable, this
25 // file does not by itself cause the resulting executable to be covered by
26 // the GNU General Public License. This exception does not however
27 // invalidate any other reasons why the executable file might be covered by
28 // the GNU General Public License.
31 // ISO C++ 14882: 22.1 Locales
46 // moneypunct, money_get, and money_put
47 template class moneypunct
<char, false>;
48 template class moneypunct
<char, true>;
49 template class moneypunct_byname
<char, false>;
50 template class moneypunct_byname
<char, true>;
51 template class money_get
<char, istreambuf_iterator
<char> >;
52 template class money_put
<char, ostreambuf_iterator
<char> >;
54 #ifdef _GLIBCPP_USE_WCHAR_T
55 template class moneypunct
<wchar_t, false>;
56 template class moneypunct
<wchar_t, true>;
57 template class moneypunct_byname
<wchar_t, false>;
58 template class moneypunct_byname
<wchar_t, true>;
59 template class money_get
<wchar_t, istreambuf_iterator
<wchar_t> >;
60 template class money_put
<wchar_t, ostreambuf_iterator
<wchar_t> >;
63 // numpunct, numpunct_byname, num_get, and num_put
64 template class numpunct
<char>;
65 template class numpunct_byname
<char>;
66 template class num_get
<char, istreambuf_iterator
<char> >;
67 template class num_put
<char, ostreambuf_iterator
<char> >;
69 ostreambuf_iterator
<char>
70 num_put
<char, ostreambuf_iterator
<char> >::
71 _M_convert_int(ostreambuf_iterator
<char>, ios_base
&, char, char, char,
75 ostreambuf_iterator
<char>
76 num_put
<char, ostreambuf_iterator
<char> >::
77 _M_convert_int(ostreambuf_iterator
<char>, ios_base
&, char, char, char,
80 #ifdef _GLIBCPP_USE_LONG_LONG
82 ostreambuf_iterator
<char>
83 num_put
<char, ostreambuf_iterator
<char> >::
84 _M_convert_int(ostreambuf_iterator
<char>, ios_base
&, char, char, char,
88 ostreambuf_iterator
<char>
89 num_put
<char, ostreambuf_iterator
<char> >::
90 _M_convert_int(ostreambuf_iterator
<char>, ios_base
&, char, char, char,
91 unsigned long long) const;
95 ostreambuf_iterator
<char>
96 num_put
<char, ostreambuf_iterator
<char> >::
97 _M_convert_float(ostreambuf_iterator
<char>, ios_base
&, char, char,
101 ostreambuf_iterator
<char>
102 num_put
<char, ostreambuf_iterator
<char> >::
103 _M_convert_float(ostreambuf_iterator
<char>, ios_base
&, char, char,
106 #ifdef _GLIBCPP_USE_WCHAR_T
107 template class numpunct
<wchar_t>;
108 template class numpunct_byname
<wchar_t>;
109 template class num_get
<wchar_t, istreambuf_iterator
<wchar_t> >;
110 template class num_put
<wchar_t, ostreambuf_iterator
<wchar_t> >;
113 ostreambuf_iterator
<wchar_t>
114 num_put
<wchar_t, ostreambuf_iterator
<wchar_t> >::
115 _M_convert_int(ostreambuf_iterator
<wchar_t>, ios_base
&, wchar_t, char,
119 ostreambuf_iterator
<wchar_t>
120 num_put
<wchar_t, ostreambuf_iterator
<wchar_t> >::
121 _M_convert_int(ostreambuf_iterator
<wchar_t>, ios_base
&, wchar_t, char,
122 char, unsigned long) const;
124 #ifdef _GLIBCPP_USE_LONG_LONG
126 ostreambuf_iterator
<wchar_t>
127 num_put
<wchar_t, ostreambuf_iterator
<wchar_t> >::
128 _M_convert_int(ostreambuf_iterator
<wchar_t>, ios_base
&, wchar_t, char,
129 char, long long) const;
132 ostreambuf_iterator
<wchar_t>
133 num_put
<wchar_t, ostreambuf_iterator
<wchar_t> >::
134 _M_convert_int(ostreambuf_iterator
<wchar_t>, ios_base
&, wchar_t, char,
135 char, unsigned long long) const;
139 ostreambuf_iterator
<wchar_t>
140 num_put
<wchar_t, ostreambuf_iterator
<wchar_t> >::
141 _M_convert_float(ostreambuf_iterator
<wchar_t>, ios_base
&, wchar_t, char,
145 ostreambuf_iterator
<wchar_t>
146 num_put
<wchar_t, ostreambuf_iterator
<wchar_t> >::
147 _M_convert_float(ostreambuf_iterator
<wchar_t>, ios_base
&, wchar_t, char,
151 // time_get and time_put
152 template class __timepunct
<char>;
153 template class time_put
<char, ostreambuf_iterator
<char> >;
154 template class time_put_byname
<char, ostreambuf_iterator
<char> >;
155 template class time_get
<char, istreambuf_iterator
<char> >;
156 template class time_get_byname
<char, istreambuf_iterator
<char> >;
158 #ifdef _GLIBCPP_USE_WCHAR_T
159 template class __timepunct
<wchar_t>;
160 template class time_put
<wchar_t, ostreambuf_iterator
<wchar_t> >;
161 template class time_put_byname
<wchar_t, ostreambuf_iterator
<wchar_t> >;
162 template class time_get
<wchar_t, istreambuf_iterator
<wchar_t> >;
163 template class time_get_byname
<wchar_t, istreambuf_iterator
<wchar_t> >;
167 template class messages
<char>;
168 template class messages_byname
<char>;
169 #ifdef _GLIBCPP_USE_WCHAR_T
170 template class messages
<wchar_t>;
171 template class messages_byname
<wchar_t>;
175 inline template class __ctype_abstract_base
<char>;
176 template class ctype_byname
<char>;
177 #ifdef _GLIBCPP_USE_WCHAR_T
178 inline template class __ctype_abstract_base
<wchar_t>;
179 template class ctype_byname
<wchar_t>;
183 inline template class __codecvt_abstract_base
<char, char, mbstate_t>;
184 template class codecvt_byname
<char, char, mbstate_t>;
185 #ifdef _GLIBCPP_USE_WCHAR_T
186 inline template class __codecvt_abstract_base
<wchar_t, char, mbstate_t>;
187 template class codecvt_byname
<wchar_t, char, mbstate_t>;
191 template class collate
<char>;
192 template class collate_byname
<char>;
193 #ifdef _GLIBCPP_USE_WCHAR_T
194 template class collate
<wchar_t>;
195 template class collate_byname
<wchar_t>;
199 // NB: use_facet<ctype> is specialized
201 const codecvt
<char, char, mbstate_t>&
202 use_facet
<codecvt
<char, char, mbstate_t> >(const locale
&);
206 use_facet
<collate
<char> >(const locale
&);
209 const numpunct
<char>&
210 use_facet
<numpunct
<char> >(const locale
&);
214 use_facet
<num_put
<char> >(const locale
&);
218 use_facet
<num_get
<char> >(const locale
&);
221 const moneypunct
<char, true>&
222 use_facet
<moneypunct
<char, true> >(const locale
&);
225 const moneypunct
<char, false>&
226 use_facet
<moneypunct
<char, false> >(const locale
&);
229 const money_put
<char>&
230 use_facet
<money_put
<char> >(const locale
&);
233 const money_get
<char>&
234 use_facet
<money_get
<char> >(const locale
&);
237 const __timepunct
<char>&
238 use_facet
<__timepunct
<char> >(const locale
&);
241 const time_put
<char>&
242 use_facet
<time_put
<char> >(const locale
&);
245 const time_get
<char>&
246 use_facet
<time_get
<char> >(const locale
&);
249 const messages
<char>&
250 use_facet
<messages
<char> >(const locale
&);
252 #ifdef _GLIBCPP_USE_WCHAR_T
254 const codecvt
<wchar_t, char, mbstate_t>&
255 use_facet
<codecvt
<wchar_t, char, mbstate_t> >(locale
const&);
258 const collate
<wchar_t>&
259 use_facet
<collate
<wchar_t> >(const locale
&);
262 const numpunct
<wchar_t>&
263 use_facet
<numpunct
<wchar_t> >(const locale
&);
266 const num_put
<wchar_t>&
267 use_facet
<num_put
<wchar_t> >(const locale
&);
270 const num_get
<wchar_t>&
271 use_facet
<num_get
<wchar_t> >(const locale
&);
274 const moneypunct
<wchar_t, true>&
275 use_facet
<moneypunct
<wchar_t, true> >(const locale
&);
278 const moneypunct
<wchar_t, false>&
279 use_facet
<moneypunct
<wchar_t, false> >(const locale
&);
282 const money_put
<wchar_t>&
283 use_facet
<money_put
<wchar_t> >(const locale
&);
286 const money_get
<wchar_t>&
287 use_facet
<money_get
<wchar_t> >(const locale
&);
290 const __timepunct
<wchar_t>&
291 use_facet
<__timepunct
<wchar_t> >(const locale
&);
294 const time_put
<wchar_t>&
295 use_facet
<time_put
<wchar_t> >(const locale
&);
298 const time_get
<wchar_t>&
299 use_facet
<time_get
<wchar_t> >(const locale
&);
302 const messages
<wchar_t>&
303 use_facet
<messages
<wchar_t> >(const locale
&);
309 has_facet
<ctype
<char> >(const locale
&);
313 has_facet
<codecvt
<char, char, mbstate_t> >(const locale
&);
317 has_facet
<collate
<char> >(const locale
&);
321 has_facet
<numpunct
<char> >(const locale
&);
325 has_facet
<num_put
<char> >(const locale
&);
329 has_facet
<num_get
<char> >(const locale
&);
333 has_facet
<moneypunct
<char> >(const locale
&);
337 has_facet
<money_put
<char> >(const locale
&);
341 has_facet
<money_get
<char> >(const locale
&);
345 has_facet
<__timepunct
<char> >(const locale
&);
349 has_facet
<time_put
<char> >(const locale
&);
353 has_facet
<time_get
<char> >(const locale
&);
357 has_facet
<messages
<char> >(const locale
&);
359 #ifdef _GLIBCPP_USE_WCHAR_T
362 has_facet
<ctype
<wchar_t> >(const locale
&);
366 has_facet
<codecvt
<wchar_t, char, mbstate_t> >(const locale
&);
370 has_facet
<collate
<wchar_t> >(const locale
&);
374 has_facet
<numpunct
<wchar_t> >(const locale
&);
378 has_facet
<num_put
<wchar_t> >(const locale
&);
382 has_facet
<num_get
<wchar_t> >(const locale
&);
386 has_facet
<moneypunct
<wchar_t> >(const locale
&);
390 has_facet
<money_put
<wchar_t> >(const locale
&);
394 has_facet
<money_get
<wchar_t> >(const locale
&);
398 has_facet
<__timepunct
<wchar_t> >(const locale
&);
402 has_facet
<time_put
<wchar_t> >(const locale
&);
406 has_facet
<time_get
<wchar_t> >(const locale
&);
410 has_facet
<messages
<wchar_t> >(const locale
&);
416 __add_grouping
<char>(char*, char, char const*, char const*,
417 char const*, char const*);
421 __verify_grouping
<char>(const basic_string
<char>&, basic_string
<char>&);
425 __pad
<char>(ios_base
&, char, char*, const char *, streamsize
,
426 streamsize
, const bool);
430 __pad
<char, char_traits
<char> >(ios_base
&, char, char*, const char *,
431 streamsize
, streamsize
, const bool);
433 #ifdef _GLIBCPP_USE_WCHAR_T
436 __add_grouping
<wchar_t>(wchar_t*, wchar_t, char const*, char const*,
437 wchar_t const*, wchar_t const*);
440 __verify_grouping
<wchar_t>(const basic_string
<wchar_t>&,
441 basic_string
<wchar_t>&);
445 __pad
<wchar_t>(ios_base
&, wchar_t, wchar_t*, const wchar_t*,
446 streamsize
, streamsize
, const bool);
450 __pad
<wchar_t, char_traits
<wchar_t> >(ios_base
&, wchar_t, wchar_t*,
451 const wchar_t*, streamsize
,
452 streamsize
, const bool);
453 #endif // _GLIBCPP_USE_WCHAR_T
457 __convert_from_v(char*, const int, const char*, double, const __c_locale
&, int);
461 __convert_from_v(char*, const int, const char*, long double, const __c_locale
&, int);
465 __convert_from_v(char*, const int, const char*, long, const __c_locale
&, int);
469 __convert_from_v(char*, const int, const char*, unsigned long,
470 const __c_locale
&, int);
474 __convert_from_v(char*, const int, const char*, long long, const __c_locale
&, int);
478 __convert_from_v(char*, const int, const char*, unsigned long long,
479 const __c_locale
&, int);