locale-inst.cc revision 132720
1193323Sed// Locale support -*- C++ -*-
2193323Sed
3193323Sed// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
4193323Sed// Free Software Foundation, Inc.
5193323Sed//
6193323Sed// This file is part of the GNU ISO C++ Library.  This library is free
7193323Sed// software; you can redistribute it and/or modify it under the
8193323Sed// terms of the GNU General Public License as published by the
9193323Sed// Free Software Foundation; either version 2, or (at your option)
10193323Sed// any later version.
11193323Sed
12193323Sed// This library is distributed in the hope that it will be useful,
13193323Sed// but WITHOUT ANY WARRANTY; without even the implied warranty of
14193323Sed// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15193323Sed// GNU General Public License for more details.
16193323Sed
17193323Sed// You should have received a copy of the GNU General Public License along
18193323Sed// with this library; see the file COPYING.  If not, write to the Free
19193323Sed// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
20193323Sed// USA.
21193323Sed
22193323Sed// As a special exception, you may use this file as part of a free software
23193323Sed// library without restriction.  Specifically, if other files instantiate
24193323Sed// templates or use macros or inline functions from this file, or you compile
25193323Sed// this file and link it with other files to produce an executable, this
26193323Sed// file does not by itself cause the resulting executable to be covered by
27193323Sed// the GNU General Public License.  This exception does not however
28193323Sed// invalidate any other reasons why the executable file might be covered by
29193323Sed// the GNU General Public License.
30193323Sed
31193323Sed//
32193323Sed// ISO C++ 14882: 22.1  Locales
33193323Sed//
34193323Sed
35193323Sed#include <locale>
36193323Sed
37193323Sed// Instantiation configuration.
38193323Sed#ifndef C
39193323Sed# define C char
40193323Sed#endif
41193323Sed
42193323Sednamespace std
43193323Sed{
44193323Sed  // moneypunct, money_get, and money_put
45193323Sed  template class moneypunct<C, false>;
46193323Sed  template class moneypunct<C, true>;
47193323Sed  template struct __moneypunct_cache<C, false>;
48193323Sed  template struct __moneypunct_cache<C, true>;
49193323Sed  template class moneypunct_byname<C, false>;
50193323Sed  template class moneypunct_byname<C, true>;
51193323Sed  template class money_get<C, istreambuf_iterator<C> >;
52193323Sed  template class money_put<C, ostreambuf_iterator<C> >;
53193323Sed  template
54193323Sed    istreambuf_iterator<C>
55193323Sed    money_get<C, istreambuf_iterator<C> >::
56193323Sed    _M_extract<true>(istreambuf_iterator<C>, istreambuf_iterator<C>,
57193323Sed		     ios_base&, ios_base::iostate&, string&) const;
58193323Sed
59193323Sed  template
60193323Sed    istreambuf_iterator<C>
61193323Sed    money_get<C, istreambuf_iterator<C> >::
62193323Sed    _M_extract<false>(istreambuf_iterator<C>, istreambuf_iterator<C>,
63193323Sed		      ios_base&, ios_base::iostate&, string&) const;
64193323Sed
65193323Sed  template
66193323Sed    ostreambuf_iterator<C>
67193323Sed    money_put<C, ostreambuf_iterator<C> >::
68193323Sed    _M_insert<true>(ostreambuf_iterator<C>, ios_base&, C,
69193323Sed		    const string_type&) const;
70193323Sed
71193323Sed  template
72193323Sed    ostreambuf_iterator<C>
73193323Sed    money_put<C, ostreambuf_iterator<C> >::
74193323Sed    _M_insert<false>(ostreambuf_iterator<C>, ios_base&, C,
75193323Sed		     const string_type&) const;
76193323Sed
77193323Sed  // numpunct, numpunct_byname, num_get, and num_put
78193323Sed  template class numpunct<C>;
79193323Sed  template struct __numpunct_cache<C>;
80193323Sed  template class numpunct_byname<C>;
81193323Sed  template class num_get<C, istreambuf_iterator<C> >;
82193323Sed  template class num_put<C, ostreambuf_iterator<C> >;
83193323Sed  template
84193323Sed    istreambuf_iterator<C>
85193323Sed    num_get<C, istreambuf_iterator<C> >::
86193323Sed    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
87193323Sed		   ios_base&, ios_base::iostate&,
88193323Sed		   long&) const;
89193323Sed
90193323Sed  template
91193323Sed    istreambuf_iterator<C>
92193323Sed    num_get<C, istreambuf_iterator<C> >::
93193323Sed    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
94193323Sed		   ios_base&, ios_base::iostate&,
95193323Sed		   unsigned short&) const;
96193323Sed
97193323Sed  template
98193323Sed    istreambuf_iterator<C>
99193323Sed    num_get<C, istreambuf_iterator<C> >::
100193323Sed    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
101193323Sed		   ios_base&, ios_base::iostate&,
102193323Sed		   unsigned int&) const;
103193323Sed
104193323Sed  template
105193323Sed    istreambuf_iterator<C>
106193323Sed    num_get<C, istreambuf_iterator<C> >::
107193323Sed    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
108193323Sed		   ios_base&, ios_base::iostate&,
109193323Sed		   unsigned long&) const;
110193323Sed
111193323Sed#ifdef _GLIBCXX_USE_LONG_LONG
112193323Sed  template
113193323Sed    istreambuf_iterator<C>
114193323Sed    num_get<C, istreambuf_iterator<C> >::
115193323Sed    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
116193323Sed		   ios_base&, ios_base::iostate&,
117193323Sed		   long long&) const;
118193323Sed
119193323Sed  template
120193323Sed    istreambuf_iterator<C>
121193323Sed    num_get<C, istreambuf_iterator<C> >::
122193323Sed    _M_extract_int(istreambuf_iterator<C>, istreambuf_iterator<C>,
123193323Sed		   ios_base&, ios_base::iostate&,
124193323Sed		   unsigned long long&) const;
125193323Sed#endif
126193323Sed
127193323Sed  template
128193323Sed    ostreambuf_iterator<C>
129193323Sed    num_put<C, ostreambuf_iterator<C> >::
130193323Sed    _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
131193323Sed		  long) const;
132193323Sed
133193323Sed  template
134193323Sed    ostreambuf_iterator<C>
135193323Sed    num_put<C, ostreambuf_iterator<C> >::
136193323Sed    _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
137193323Sed		  unsigned long) const;
138193323Sed
139193323Sed#ifdef _GLIBCXX_USE_LONG_LONG
140193323Sed  template
141193323Sed    ostreambuf_iterator<C>
142193323Sed    num_put<C, ostreambuf_iterator<C> >::
143193323Sed    _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
144193323Sed		  long long) const;
145193323Sed
146193323Sed  template
147193323Sed    ostreambuf_iterator<C>
148193323Sed    num_put<C, ostreambuf_iterator<C> >::
149193323Sed    _M_insert_int(ostreambuf_iterator<C>, ios_base&, C,
150193323Sed		  unsigned long long) const;
151193323Sed#endif
152193323Sed
153193323Sed  template
154193323Sed    ostreambuf_iterator<C>
155193323Sed    num_put<C, ostreambuf_iterator<C> >::
156193323Sed    _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char,
157193323Sed		    double) const;
158193323Sed
159193323Sed  template
160193323Sed    ostreambuf_iterator<C>
161193323Sed    num_put<C, ostreambuf_iterator<C> >::
162193323Sed    _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char,
163193323Sed		    long double) const;
164193323Sed
165193323Sed  // time_get and time_put
166193323Sed  template class __timepunct<C>;
167193323Sed  template struct __timepunct_cache<C>;
168193323Sed  template class time_put<C, ostreambuf_iterator<C> >;
169193323Sed  template class time_put_byname<C, ostreambuf_iterator<C> >;
170193323Sed  template class time_get<C, istreambuf_iterator<C> >;
171193323Sed  template class time_get_byname<C, istreambuf_iterator<C> >;
172193323Sed
173193323Sed  // messages
174193323Sed  template class messages<C>;
175193323Sed  template class messages_byname<C>;
176193323Sed
177193323Sed  // ctype
178193323Sed  inline template class __ctype_abstract_base<C>;
179193323Sed  template class ctype_byname<C>;
180193323Sed
181193323Sed  // codecvt
182193323Sed  inline template class __codecvt_abstract_base<C, char, mbstate_t>;
183193323Sed  template class codecvt_byname<C, char, mbstate_t>;
184193323Sed
185193323Sed  // collate
186193323Sed  template class collate<C>;
187193323Sed  template class collate_byname<C>;
188193323Sed
189193323Sed  // use_facet
190193323Sed  // NB: use_facet<ctype> is specialized
191193323Sed  template
192193323Sed    const codecvt<C, char, mbstate_t>&
193193323Sed    use_facet<codecvt<C, char, mbstate_t> >(const locale&);
194193323Sed
195193323Sed  template
196193323Sed    const collate<C>&
197193323Sed    use_facet<collate<C> >(const locale&);
198193323Sed
199193323Sed  template
200193323Sed    const numpunct<C>&
201193323Sed    use_facet<numpunct<C> >(const locale&);
202193323Sed
203193323Sed  template
204193323Sed    const num_put<C>&
205193323Sed    use_facet<num_put<C> >(const locale&);
206193323Sed
207193323Sed  template
208193323Sed    const num_get<C>&
209193323Sed    use_facet<num_get<C> >(const locale&);
210193323Sed
211193323Sed  template
212193323Sed    const moneypunct<C, true>&
213193323Sed    use_facet<moneypunct<C, true> >(const locale&);
214193323Sed
215193323Sed  template
216193323Sed    const moneypunct<C, false>&
217193323Sed    use_facet<moneypunct<C, false> >(const locale&);
218193323Sed
219193323Sed  template
220193323Sed    const money_put<C>&
221193323Sed    use_facet<money_put<C> >(const locale&);
222193323Sed
223193323Sed  template
224193323Sed    const money_get<C>&
225193323Sed    use_facet<money_get<C> >(const locale&);
226193323Sed
227193323Sed  template
228193323Sed    const __timepunct<C>&
229193323Sed    use_facet<__timepunct<C> >(const locale&);
230193323Sed
231193323Sed  template
232193323Sed    const time_put<C>&
233193323Sed    use_facet<time_put<C> >(const locale&);
234193323Sed
235193323Sed  template
236193323Sed    const time_get<C>&
237193323Sed    use_facet<time_get<C> >(const locale&);
238193323Sed
239193323Sed  template
240193323Sed    const messages<C>&
241193323Sed    use_facet<messages<C> >(const locale&);
242193323Sed
243193323Sed  // has_facet
244193323Sed  template
245193323Sed    bool
246193323Sed    has_facet<ctype<C> >(const locale&);
247193323Sed
248193323Sed  template
249193323Sed    bool
250193323Sed    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
317