gcc41 removal: Part 1 of 2: makefiles
[dragonfly.git] / contrib / gcc-4.1 / libstdc++-v3 / src / locale-inst.cc
1 // Locale support -*- C++ -*-
2
3 // Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
4 // Free Software Foundation, Inc.
5 //
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)
10 // any later version.
11
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.
16
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,
20 // USA.
21
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.
30
31 //
32 // ISO C++ 14882: 22.1  Locales
33 //
34
35 #include <locale>
36
37 // Instantiation configuration.
38 #ifndef C
39 # define C char
40 #endif
41
42 namespace std
43 {
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> >;
53   template
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;
58
59   template
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;
64
65   template
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;
70
71   template
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;
76
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> >; 
83   template
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&,
88                    long&) const;
89
90   template
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;
96
97   template
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;
103
104   template
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;
110
111 #ifdef _GLIBCXX_USE_LONG_LONG
112   template
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&,
117                    long long&) const;
118
119   template
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;
125 #endif
126
127   template
128     ostreambuf_iterator<C>
129     num_put<C, ostreambuf_iterator<C> >::
130     _M_insert_int(ostreambuf_iterator<C>, ios_base&, C, 
131                   long) const;
132
133   template
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;
138
139 #ifdef _GLIBCXX_USE_LONG_LONG
140   template
141     ostreambuf_iterator<C>
142     num_put<C, ostreambuf_iterator<C> >::
143     _M_insert_int(ostreambuf_iterator<C>, ios_base&, C, 
144                   long long) const;
145
146   template
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;
151 #endif
152
153   template
154     ostreambuf_iterator<C>
155     num_put<C, ostreambuf_iterator<C> >::
156     _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char, 
157                     double) const;
158
159   template
160     ostreambuf_iterator<C>
161     num_put<C, ostreambuf_iterator<C> >::
162     _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char, 
163                     long double) const;
164   
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> >;
172
173   // messages
174   template class messages<C>;
175   template class messages_byname<C>;
176   
177   // ctype
178   inline template class __ctype_abstract_base<C>;
179   template class ctype_byname<C>;
180   
181   // codecvt
182   inline template class __codecvt_abstract_base<C, char, mbstate_t>;
183   template class codecvt_byname<C, char, mbstate_t>;
184
185   // collate
186   template class collate<C>;
187   template class collate_byname<C>;
188     
189   // use_facet
190   // NB: use_facet<ctype> is specialized
191   template
192     const codecvt<C, char, mbstate_t>& 
193     use_facet<codecvt<C, char, mbstate_t> >(const locale&);
194
195   template
196     const collate<C>& 
197     use_facet<collate<C> >(const locale&);
198
199   template
200     const numpunct<C>& 
201     use_facet<numpunct<C> >(const locale&);
202
203   template 
204     const num_put<C>& 
205     use_facet<num_put<C> >(const locale&);
206
207   template 
208     const num_get<C>& 
209     use_facet<num_get<C> >(const locale&);
210
211   template
212     const moneypunct<C, true>& 
213     use_facet<moneypunct<C, true> >(const locale&);
214
215   template
216     const moneypunct<C, false>& 
217     use_facet<moneypunct<C, false> >(const locale&);
218
219   template 
220     const money_put<C>& 
221     use_facet<money_put<C> >(const locale&);
222
223   template 
224     const money_get<C>& 
225     use_facet<money_get<C> >(const locale&);
226
227   template
228     const __timepunct<C>& 
229     use_facet<__timepunct<C> >(const locale&);
230
231   template 
232     const time_put<C>& 
233     use_facet<time_put<C> >(const locale&);
234
235   template 
236     const time_get<C>& 
237     use_facet<time_get<C> >(const locale&);
238
239   template 
240     const messages<C>& 
241     use_facet<messages<C> >(const locale&);
242
243   // has_facet
244   template 
245     bool
246     has_facet<ctype<C> >(const locale&);
247
248   template 
249     bool
250     has_facet<codecvt<C, char, mbstate_t> >(const locale&);
251
252   template 
253     bool
254     has_facet<collate<C> >(const locale&);
255
256   template 
257     bool
258     has_facet<numpunct<C> >(const locale&);
259
260   template 
261     bool
262     has_facet<num_put<C> >(const locale&);
263
264   template 
265     bool
266     has_facet<num_get<C> >(const locale&);
267
268   template 
269     bool
270     has_facet<moneypunct<C> >(const locale&);
271
272   template 
273     bool
274     has_facet<money_put<C> >(const locale&);
275
276   template 
277     bool
278     has_facet<money_get<C> >(const locale&);
279
280   template 
281     bool
282     has_facet<__timepunct<C> >(const locale&);
283
284   template 
285     bool
286     has_facet<time_put<C> >(const locale&);
287
288   template 
289     bool
290     has_facet<time_get<C> >(const locale&);
291
292   template 
293     bool
294     has_facet<messages<C> >(const locale&);
295
296
297   // locale functions.
298   template
299     C*
300     __add_grouping<C>(C*, C, char const*, size_t, 
301                          C const*, C const*);
302
303   template class __pad<C, char_traits<C> >;
304
305   template
306     int
307     __int_to_char(C*, unsigned long, const C*,
308                   ios_base::fmtflags, bool);
309
310 #ifdef _GLIBCXX_USE_LONG_LONG
311   template
312     int
313     __int_to_char(C*, unsigned long long, const C*, 
314                   ios_base::fmtflags, bool);
315 #endif
316 } // namespace std