source: trunk/gcc/libstdc++-v3/src/locale-inst.cc

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 15.0 KB
Line 
1// Locale support -*- C++ -*-
2
3// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
4//
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)
9// any later version.
10
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.
15
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,
19// USA.
20
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.
29
30//
31// ISO C++ 14882: 22.1 Locales
32//
33
34#include <cstdlib>
35#include <clocale>
36#include <cstring>
37#include <locale>
38
39namespace std
40{
41 // moneypunct, money_get, and money_put
42 template class moneypunct<char, false>;
43 template class moneypunct<char, true>;
44 template class moneypunct_byname<char, false>;
45 template class moneypunct_byname<char, true>;
46 template class money_get<char, istreambuf_iterator<char> >;
47 template class money_put<char, ostreambuf_iterator<char> >;
48 template class __locale_cache<numpunct<char> >;
49
50#ifdef _GLIBCPP_USE_WCHAR_T
51 template class moneypunct<wchar_t, false>;
52 template class moneypunct<wchar_t, true>;
53 template class moneypunct_byname<wchar_t, false>;
54 template class moneypunct_byname<wchar_t, true>;
55 template class money_get<wchar_t, istreambuf_iterator<wchar_t> >;
56 template class money_put<wchar_t, ostreambuf_iterator<wchar_t> >;
57 template class __locale_cache<numpunct<wchar_t> >;
58#endif
59
60 // numpunct, numpunct_byname, num_get, and num_put
61 template class numpunct<char>;
62 template class numpunct_byname<char>;
63 template class num_get<char, istreambuf_iterator<char> >;
64 template class num_put<char, ostreambuf_iterator<char> >;
65 template
66 ostreambuf_iterator<char>
67 num_put<char, ostreambuf_iterator<char> >::
68 _M_convert_int(ostreambuf_iterator<char>, ios_base&, char,
69 long) const;
70
71 template
72 ostreambuf_iterator<char>
73 num_put<char, ostreambuf_iterator<char> >::
74 _M_convert_int(ostreambuf_iterator<char>, ios_base&, char,
75 unsigned long) const;
76
77#ifdef _GLIBCPP_USE_LONG_LONG
78 template
79 ostreambuf_iterator<char>
80 num_put<char, ostreambuf_iterator<char> >::
81 _M_convert_int(ostreambuf_iterator<char>, ios_base&, char,
82 long long) const;
83
84 template
85 ostreambuf_iterator<char>
86 num_put<char, ostreambuf_iterator<char> >::
87 _M_convert_int(ostreambuf_iterator<char>, ios_base&, char,
88 unsigned long long) const;
89#endif
90
91 template
92 ostreambuf_iterator<char>
93 num_put<char, ostreambuf_iterator<char> >::
94 _M_convert_float(ostreambuf_iterator<char>, ios_base&, char, char,
95 double) const;
96
97 template
98 ostreambuf_iterator<char>
99 num_put<char, ostreambuf_iterator<char> >::
100 _M_convert_float(ostreambuf_iterator<char>, ios_base&, char, char,
101 long double) const;
102
103#ifdef _GLIBCPP_USE_WCHAR_T
104 template class numpunct<wchar_t>;
105 template class numpunct_byname<wchar_t>;
106 template class num_get<wchar_t, istreambuf_iterator<wchar_t> >;
107 template class num_put<wchar_t, ostreambuf_iterator<wchar_t> >;
108
109 template
110 ostreambuf_iterator<wchar_t>
111 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
112 _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
113 long) const;
114
115 template
116 ostreambuf_iterator<wchar_t>
117 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
118 _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
119 unsigned long) const;
120
121#ifdef _GLIBCPP_USE_LONG_LONG
122 template
123 ostreambuf_iterator<wchar_t>
124 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
125 _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
126 long long) const;
127
128 template
129 ostreambuf_iterator<wchar_t>
130 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
131 _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
132 unsigned long long) const;
133#endif
134
135 template
136 ostreambuf_iterator<wchar_t>
137 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
138 _M_convert_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
139 double) const;
140
141 template
142 ostreambuf_iterator<wchar_t>
143 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
144 _M_convert_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
145 long double) const;
146#endif
147
148#if 1
149 // XXX GLIBCXX_ABI Deprecated, compatibility only.
150 template
151 ostreambuf_iterator<char>
152 num_put<char, ostreambuf_iterator<char> >::
153 _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
154 long) const;
155
156 template
157 ostreambuf_iterator<char>
158 num_put<char, ostreambuf_iterator<char> >::
159 _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
160 unsigned long) const;
161
162#ifdef _GLIBCPP_USE_LONG_LONG
163 template
164 ostreambuf_iterator<char>
165 num_put<char, ostreambuf_iterator<char> >::
166 _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
167 long long) const;
168
169 template
170 ostreambuf_iterator<char>
171 num_put<char, ostreambuf_iterator<char> >::
172 _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
173 unsigned long long) const;
174#endif
175
176#ifdef _GLIBCPP_USE_WCHAR_T
177 template
178 ostreambuf_iterator<wchar_t>
179 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
180 _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
181 char, long) const;
182
183 template
184 ostreambuf_iterator<wchar_t>
185 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
186 _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
187 char, unsigned long) const;
188
189#ifdef _GLIBCPP_USE_LONG_LONG
190 template
191 ostreambuf_iterator<wchar_t>
192 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
193 _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
194 char, long long) const;
195
196 template
197 ostreambuf_iterator<wchar_t>
198 num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
199 _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
200 char, unsigned long long) const;
201#endif
202#endif
203
204#endif
205
206 // time_get and time_put
207 template class __timepunct<char>;
208 template class time_put<char, ostreambuf_iterator<char> >;
209 template class time_put_byname<char, ostreambuf_iterator<char> >;
210 template class time_get<char, istreambuf_iterator<char> >;
211 template class time_get_byname<char, istreambuf_iterator<char> >;
212
213#ifdef _GLIBCPP_USE_WCHAR_T
214 template class __timepunct<wchar_t>;
215 template class time_put<wchar_t, ostreambuf_iterator<wchar_t> >;
216 template class time_put_byname<wchar_t, ostreambuf_iterator<wchar_t> >;
217 template class time_get<wchar_t, istreambuf_iterator<wchar_t> >;
218 template class time_get_byname<wchar_t, istreambuf_iterator<wchar_t> >;
219#endif
220
221 // messages
222 template class messages<char>;
223 template class messages_byname<char>;
224#ifdef _GLIBCPP_USE_WCHAR_T
225 template class messages<wchar_t>;
226 template class messages_byname<wchar_t>;
227#endif
228
229 // ctype
230 inline template class __ctype_abstract_base<char>;
231 template class ctype_byname<char>;
232#ifdef _GLIBCPP_USE_WCHAR_T
233 inline template class __ctype_abstract_base<wchar_t>;
234 template class ctype_byname<wchar_t>;
235#endif
236
237 // codecvt
238 inline template class __codecvt_abstract_base<char, char, mbstate_t>;
239 template class codecvt_byname<char, char, mbstate_t>;
240#ifdef _GLIBCPP_USE_WCHAR_T
241 inline template class __codecvt_abstract_base<wchar_t, char, mbstate_t>;
242 template class codecvt_byname<wchar_t, char, mbstate_t>;
243#endif
244
245 // collate
246 template class collate<char>;
247 template class collate_byname<char>;
248#ifdef _GLIBCPP_USE_WCHAR_T
249 template class collate<wchar_t>;
250 template class collate_byname<wchar_t>;
251#endif
252
253 // use_facet
254 // NB: use_facet<ctype> is specialized
255 template
256 const codecvt<char, char, mbstate_t>&
257 use_facet<codecvt<char, char, mbstate_t> >(const locale&);
258
259 template
260 const collate<char>&
261 use_facet<collate<char> >(const locale&);
262
263 template
264 const numpunct<char>&
265 use_facet<numpunct<char> >(const locale&);
266
267 template
268 const num_put<char>&
269 use_facet<num_put<char> >(const locale&);
270
271 template
272 const num_get<char>&
273 use_facet<num_get<char> >(const locale&);
274
275 template
276 const moneypunct<char, true>&
277 use_facet<moneypunct<char, true> >(const locale&);
278
279 template
280 const moneypunct<char, false>&
281 use_facet<moneypunct<char, false> >(const locale&);
282
283 template
284 const money_put<char>&
285 use_facet<money_put<char> >(const locale&);
286
287 template
288 const money_get<char>&
289 use_facet<money_get<char> >(const locale&);
290
291 template
292 const __timepunct<char>&
293 use_facet<__timepunct<char> >(const locale&);
294
295 template
296 const time_put<char>&
297 use_facet<time_put<char> >(const locale&);
298
299 template
300 const time_get<char>&
301 use_facet<time_get<char> >(const locale&);
302
303 template
304 const messages<char>&
305 use_facet<messages<char> >(const locale&);
306
307#ifdef _GLIBCPP_USE_WCHAR_T
308 template
309 const codecvt<wchar_t, char, mbstate_t>&
310 use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
311
312 template
313 const collate<wchar_t>&
314 use_facet<collate<wchar_t> >(const locale&);
315
316 template
317 const numpunct<wchar_t>&
318 use_facet<numpunct<wchar_t> >(const locale&);
319
320 template
321 const num_put<wchar_t>&
322 use_facet<num_put<wchar_t> >(const locale&);
323
324 template
325 const num_get<wchar_t>&
326 use_facet<num_get<wchar_t> >(const locale&);
327
328 template
329 const moneypunct<wchar_t, true>&
330 use_facet<moneypunct<wchar_t, true> >(const locale&);
331
332 template
333 const moneypunct<wchar_t, false>&
334 use_facet<moneypunct<wchar_t, false> >(const locale&);
335
336 template
337 const money_put<wchar_t>&
338 use_facet<money_put<wchar_t> >(const locale&);
339
340 template
341 const money_get<wchar_t>&
342 use_facet<money_get<wchar_t> >(const locale&);
343
344 template
345 const __timepunct<wchar_t>&
346 use_facet<__timepunct<wchar_t> >(const locale&);
347
348 template
349 const time_put<wchar_t>&
350 use_facet<time_put<wchar_t> >(const locale&);
351
352 template
353 const time_get<wchar_t>&
354 use_facet<time_get<wchar_t> >(const locale&);
355
356 template
357 const messages<wchar_t>&
358 use_facet<messages<wchar_t> >(const locale&);
359#endif
360
361 // has_facet
362 template
363 bool
364 has_facet<ctype<char> >(const locale&);
365
366 template
367 bool
368 has_facet<codecvt<char, char, mbstate_t> >(const locale&);
369
370 template
371 bool
372 has_facet<collate<char> >(const locale&);
373
374 template
375 bool
376 has_facet<numpunct<char> >(const locale&);
377
378 template
379 bool
380 has_facet<num_put<char> >(const locale&);
381
382 template
383 bool
384 has_facet<num_get<char> >(const locale&);
385
386 template
387 bool
388 has_facet<moneypunct<char> >(const locale&);
389
390 template
391 bool
392 has_facet<money_put<char> >(const locale&);
393
394 template
395 bool
396 has_facet<money_get<char> >(const locale&);
397
398 template
399 bool
400 has_facet<__timepunct<char> >(const locale&);
401
402 template
403 bool
404 has_facet<time_put<char> >(const locale&);
405
406 template
407 bool
408 has_facet<time_get<char> >(const locale&);
409
410 template
411 bool
412 has_facet<messages<char> >(const locale&);
413
414#ifdef _GLIBCPP_USE_WCHAR_T
415 template
416 bool
417 has_facet<ctype<wchar_t> >(const locale&);
418
419 template
420 bool
421 has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
422
423 template
424 bool
425 has_facet<collate<wchar_t> >(const locale&);
426
427 template
428 bool
429 has_facet<numpunct<wchar_t> >(const locale&);
430
431 template
432 bool
433 has_facet<num_put<wchar_t> >(const locale&);
434
435 template
436 bool
437 has_facet<num_get<wchar_t> >(const locale&);
438
439 template
440 bool
441 has_facet<moneypunct<wchar_t> >(const locale&);
442
443 template
444 bool
445 has_facet<money_put<wchar_t> >(const locale&);
446
447 template
448 bool
449 has_facet<money_get<wchar_t> >(const locale&);
450
451 template
452 bool
453 has_facet<__timepunct<wchar_t> >(const locale&);
454
455 template
456 bool
457 has_facet<time_put<wchar_t> >(const locale&);
458
459 template
460 bool
461 has_facet<time_get<wchar_t> >(const locale&);
462
463 template
464 bool
465 has_facet<messages<wchar_t> >(const locale&);
466#endif
467
468 // __use_cache
469 template
470 const __locale_cache<numpunct<char> >&
471 __use_cache<numpunct<char> >(const locale& __loc);
472
473#ifdef _GLIBCPP_USE_WCHAR_T
474 template
475 const __locale_cache<numpunct<wchar_t> >&
476 __use_cache<numpunct<wchar_t> >(const locale& __loc);
477#endif
478
479 // locale
480 template
481 char*
482 __add_grouping<char>(char*, char, char const*, char const*,
483 char const*, char const*);
484
485 template
486 bool
487 __verify_grouping<char>(const basic_string<char>&, basic_string<char>&);
488
489 template class __pad<char, char_traits<char> >;
490
491#ifdef _GLIBCPP_USE_WCHAR_T
492 template
493 wchar_t*
494 __add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, char const*,
495 wchar_t const*, wchar_t const*);
496 template
497 bool
498 __verify_grouping<wchar_t>(const basic_string<wchar_t>&,
499 basic_string<wchar_t>&);
500
501 template class __pad<wchar_t, char_traits<wchar_t> >;
502#endif
503
504 template
505 int
506 __convert_from_v(char*, const int, const char*, double,
507 const __c_locale&, int);
508
509 template
510 int
511 __convert_from_v(char*, const int, const char*, long double,
512 const __c_locale&, int);
513
514 template
515 int
516 __convert_from_v(char*, const int, const char*, long,
517 const __c_locale&, int);
518
519 template
520 int
521 __convert_from_v(char*, const int, const char*, unsigned long,
522 const __c_locale&, int);
523
524#ifdef _GLIBCPP_USE_LONG_LONG
525 template
526 int
527 __convert_from_v(char*, const int, const char*, long long,
528 const __c_locale&, int);
529
530 template
531 int
532 __convert_from_v(char*, const int, const char*, unsigned long long,
533 const __c_locale&, int);
534#endif
535
536 template
537 int
538 __int_to_char(char*, const int, unsigned long, const char*,
539 ios_base::fmtflags, bool);
540
541#ifdef _GLIBCPP_USE_WCHAR_T
542 template
543 int
544 __int_to_char(wchar_t*, const int, unsigned long, const wchar_t*,
545 ios_base::fmtflags, bool);
546#endif
547
548#ifdef _GLIBCPP_USE_LONG_LONG
549 template
550 int
551 __int_to_char(char*, const int, unsigned long long, const char*,
552 ios_base::fmtflags, bool);
553
554#ifdef _GLIBCPP_USE_WCHAR_T
555 template
556 int
557 __int_to_char(wchar_t*, const int, unsigned long long, const wchar_t*,
558 ios_base::fmtflags, bool);
559#endif
560#endif
561} // namespace std
Note: See TracBrowser for help on using the repository browser.