locale-inst.cc revision 117397
197403Sobrien// Locale support -*- C++ -*-
297403Sobrien
3117397Skan// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
497403Sobrien//
597403Sobrien// This file is part of the GNU ISO C++ Library.  This library is free
697403Sobrien// software; you can redistribute it and/or modify it under the
797403Sobrien// terms of the GNU General Public License as published by the
897403Sobrien// Free Software Foundation; either version 2, or (at your option)
997403Sobrien// any later version.
1097403Sobrien
1197403Sobrien// This library is distributed in the hope that it will be useful,
1297403Sobrien// but WITHOUT ANY WARRANTY; without even the implied warranty of
1397403Sobrien// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1497403Sobrien// GNU General Public License for more details.
1597403Sobrien
1697403Sobrien// You should have received a copy of the GNU General Public License along
1797403Sobrien// with this library; see the file COPYING.  If not, write to the Free
1897403Sobrien// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
1997403Sobrien// USA.
2097403Sobrien
2197403Sobrien// As a special exception, you may use this file as part of a free software
2297403Sobrien// library without restriction.  Specifically, if other files instantiate
2397403Sobrien// templates or use macros or inline functions from this file, or you compile
2497403Sobrien// this file and link it with other files to produce an executable, this
2597403Sobrien// file does not by itself cause the resulting executable to be covered by
2697403Sobrien// the GNU General Public License.  This exception does not however
2797403Sobrien// invalidate any other reasons why the executable file might be covered by
2897403Sobrien// the GNU General Public License.
2997403Sobrien
3097403Sobrien//
3197403Sobrien// ISO C++ 14882: 22.1  Locales
3297403Sobrien//
3397403Sobrien
3497403Sobrien#include <cstdlib>
3597403Sobrien#include <clocale>
3697403Sobrien#include <cstring>
3797403Sobrien#include <locale>
3897403Sobrien
3997403Sobriennamespace std
4097403Sobrien{
4197403Sobrien  // moneypunct, money_get, and money_put
4297403Sobrien  template class moneypunct<char, false>;
4397403Sobrien  template class moneypunct<char, true>;
4497403Sobrien  template class moneypunct_byname<char, false>;
4597403Sobrien  template class moneypunct_byname<char, true>;
4697403Sobrien  template class money_get<char, istreambuf_iterator<char> >;
4797403Sobrien  template class money_put<char, ostreambuf_iterator<char> >;
48117397Skan  template class __locale_cache<numpunct<char> >;
4997403Sobrien
5097403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
5197403Sobrien  template class moneypunct<wchar_t, false>;
5297403Sobrien  template class moneypunct<wchar_t, true>;
5397403Sobrien  template class moneypunct_byname<wchar_t, false>;
5497403Sobrien  template class moneypunct_byname<wchar_t, true>;
5597403Sobrien  template class money_get<wchar_t, istreambuf_iterator<wchar_t> >;
5697403Sobrien  template class money_put<wchar_t, ostreambuf_iterator<wchar_t> >;
57117397Skan  template class __locale_cache<numpunct<wchar_t> >;
5897403Sobrien#endif
5997403Sobrien
6097403Sobrien  // numpunct, numpunct_byname, num_get, and num_put
6197403Sobrien  template class numpunct<char>;
6297403Sobrien  template class numpunct_byname<char>;
6397403Sobrien  template class num_get<char, istreambuf_iterator<char> >;
6497403Sobrien  template class num_put<char, ostreambuf_iterator<char> >;
6597403Sobrien  template
6697403Sobrien    ostreambuf_iterator<char>
6797403Sobrien    num_put<char, ostreambuf_iterator<char> >::
68117397Skan    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char,
6997403Sobrien		   long) const;
7097403Sobrien
7197403Sobrien  template
7297403Sobrien    ostreambuf_iterator<char>
7397403Sobrien    num_put<char, ostreambuf_iterator<char> >::
74117397Skan    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char,
7597403Sobrien		   unsigned long) const;
7697403Sobrien
7797403Sobrien#ifdef _GLIBCPP_USE_LONG_LONG
7897403Sobrien  template
7997403Sobrien    ostreambuf_iterator<char>
8097403Sobrien    num_put<char, ostreambuf_iterator<char> >::
81117397Skan    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char,
8297403Sobrien		   long long) const;
8397403Sobrien
8497403Sobrien  template
8597403Sobrien    ostreambuf_iterator<char>
8697403Sobrien    num_put<char, ostreambuf_iterator<char> >::
87117397Skan    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char,
8897403Sobrien		   unsigned long long) const;
8997403Sobrien#endif
9097403Sobrien
9197403Sobrien  template
9297403Sobrien    ostreambuf_iterator<char>
9397403Sobrien    num_put<char, ostreambuf_iterator<char> >::
9497403Sobrien    _M_convert_float(ostreambuf_iterator<char>, ios_base&, char, char,
9597403Sobrien		     double) const;
9697403Sobrien
9797403Sobrien  template
9897403Sobrien    ostreambuf_iterator<char>
9997403Sobrien    num_put<char, ostreambuf_iterator<char> >::
10097403Sobrien    _M_convert_float(ostreambuf_iterator<char>, ios_base&, char, char,
101117397Skan		     long double) const;
102117397Skan
10397403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
10497403Sobrien  template class numpunct<wchar_t>;
10597403Sobrien  template class numpunct_byname<wchar_t>;
10697403Sobrien  template class num_get<wchar_t, istreambuf_iterator<wchar_t> >;
10797403Sobrien  template class num_put<wchar_t, ostreambuf_iterator<wchar_t> >;
10897403Sobrien
10997403Sobrien  template
11097403Sobrien    ostreambuf_iterator<wchar_t>
11197403Sobrien    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
112117397Skan    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
113117397Skan		   long) const;
11497403Sobrien
11597403Sobrien  template
11697403Sobrien    ostreambuf_iterator<wchar_t>
11797403Sobrien    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
118117397Skan    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
119117397Skan		   unsigned long) const;
12097403Sobrien
12197403Sobrien#ifdef _GLIBCPP_USE_LONG_LONG
12297403Sobrien  template
12397403Sobrien    ostreambuf_iterator<wchar_t>
12497403Sobrien    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
125117397Skan    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
126117397Skan		   long long) const;
12797403Sobrien
12897403Sobrien  template
12997403Sobrien    ostreambuf_iterator<wchar_t>
13097403Sobrien    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
131117397Skan    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t,
132117397Skan		   unsigned long long) const;
13397403Sobrien#endif
13497403Sobrien
13597403Sobrien  template
13697403Sobrien    ostreambuf_iterator<wchar_t>
13797403Sobrien    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
13897403Sobrien    _M_convert_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
13997403Sobrien		     double) const;
14097403Sobrien
14197403Sobrien  template
14297403Sobrien    ostreambuf_iterator<wchar_t>
14397403Sobrien    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
14497403Sobrien    _M_convert_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
14597403Sobrien		     long double) const;
14697403Sobrien#endif
14797403Sobrien
148117397Skan#if 1
149117397Skan      // XXX GLIBCXX_ABI Deprecated, compatibility only.
150117397Skan  template
151117397Skan    ostreambuf_iterator<char>
152117397Skan    num_put<char, ostreambuf_iterator<char> >::
153117397Skan    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
154117397Skan		   long) const;
155117397Skan
156117397Skan  template
157117397Skan    ostreambuf_iterator<char>
158117397Skan    num_put<char, ostreambuf_iterator<char> >::
159117397Skan    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
160117397Skan		   unsigned long) const;
161117397Skan
162117397Skan#ifdef _GLIBCPP_USE_LONG_LONG
163117397Skan  template
164117397Skan    ostreambuf_iterator<char>
165117397Skan    num_put<char, ostreambuf_iterator<char> >::
166117397Skan    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
167117397Skan		   long long) const;
168117397Skan
169117397Skan  template
170117397Skan    ostreambuf_iterator<char>
171117397Skan    num_put<char, ostreambuf_iterator<char> >::
172117397Skan    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
173117397Skan		   unsigned long long) const;
174117397Skan#endif
175117397Skan
176117397Skan#ifdef _GLIBCPP_USE_WCHAR_T
177117397Skan  template
178117397Skan    ostreambuf_iterator<wchar_t>
179117397Skan    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
180117397Skan    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
181117397Skan		   char, long) const;
182117397Skan
183117397Skan  template
184117397Skan    ostreambuf_iterator<wchar_t>
185117397Skan    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
186117397Skan    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
187117397Skan		   char, unsigned long) const;
188117397Skan
189117397Skan#ifdef _GLIBCPP_USE_LONG_LONG
190117397Skan  template
191117397Skan    ostreambuf_iterator<wchar_t>
192117397Skan    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
193117397Skan    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
194117397Skan		   char, long long) const;
195117397Skan
196117397Skan  template
197117397Skan    ostreambuf_iterator<wchar_t>
198117397Skan    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
199117397Skan    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char,
200117397Skan		   char, unsigned long long) const;
201117397Skan#endif
202117397Skan#endif
203117397Skan
204117397Skan#endif
205117397Skan
20697403Sobrien  // time_get and time_put
20797403Sobrien  template class __timepunct<char>;
20897403Sobrien  template class time_put<char, ostreambuf_iterator<char> >;
20997403Sobrien  template class time_put_byname<char, ostreambuf_iterator<char> >;
21097403Sobrien  template class time_get<char, istreambuf_iterator<char> >;
21197403Sobrien  template class time_get_byname<char, istreambuf_iterator<char> >;
21297403Sobrien
21397403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
21497403Sobrien  template class __timepunct<wchar_t>;
21597403Sobrien  template class time_put<wchar_t, ostreambuf_iterator<wchar_t> >;
21697403Sobrien  template class time_put_byname<wchar_t, ostreambuf_iterator<wchar_t> >;
21797403Sobrien  template class time_get<wchar_t, istreambuf_iterator<wchar_t> >;
21897403Sobrien  template class time_get_byname<wchar_t, istreambuf_iterator<wchar_t> >;
21997403Sobrien#endif
22097403Sobrien
22197403Sobrien  // messages
22297403Sobrien  template class messages<char>;
22397403Sobrien  template class messages_byname<char>;
22497403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
22597403Sobrien  template class messages<wchar_t>;
22697403Sobrien  template class messages_byname<wchar_t>;
22797403Sobrien#endif
22897403Sobrien
22997403Sobrien  // ctype
23097403Sobrien  inline template class __ctype_abstract_base<char>;
23197403Sobrien  template class ctype_byname<char>;
23297403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
23397403Sobrien  inline template class __ctype_abstract_base<wchar_t>;
23497403Sobrien  template class ctype_byname<wchar_t>;
23597403Sobrien#endif
23697403Sobrien
23797403Sobrien  // codecvt
23897403Sobrien  inline template class __codecvt_abstract_base<char, char, mbstate_t>;
23997403Sobrien  template class codecvt_byname<char, char, mbstate_t>;
24097403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
241102782Skan  inline template class __codecvt_abstract_base<wchar_t, char, mbstate_t>;
24297403Sobrien  template class codecvt_byname<wchar_t, char, mbstate_t>;
24397403Sobrien#endif
24497403Sobrien
24597403Sobrien  // collate
24697403Sobrien  template class collate<char>;
24797403Sobrien  template class collate_byname<char>;
24897403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
24997403Sobrien  template class collate<wchar_t>;
25097403Sobrien  template class collate_byname<wchar_t>;
25197403Sobrien#endif
25297403Sobrien
25397403Sobrien  // use_facet
25497403Sobrien  // NB: use_facet<ctype> is specialized
25597403Sobrien  template
25697403Sobrien    const codecvt<char, char, mbstate_t>&
25797403Sobrien    use_facet<codecvt<char, char, mbstate_t> >(const locale&);
25897403Sobrien
25997403Sobrien  template
26097403Sobrien    const collate<char>&
26197403Sobrien    use_facet<collate<char> >(const locale&);
26297403Sobrien
26397403Sobrien  template
26497403Sobrien    const numpunct<char>&
26597403Sobrien    use_facet<numpunct<char> >(const locale&);
26697403Sobrien
26797403Sobrien  template
26897403Sobrien    const num_put<char>&
26997403Sobrien    use_facet<num_put<char> >(const locale&);
27097403Sobrien
27197403Sobrien  template
27297403Sobrien    const num_get<char>&
27397403Sobrien    use_facet<num_get<char> >(const locale&);
27497403Sobrien
27597403Sobrien  template
27697403Sobrien    const moneypunct<char, true>&
27797403Sobrien    use_facet<moneypunct<char, true> >(const locale&);
27897403Sobrien
27997403Sobrien  template
28097403Sobrien    const moneypunct<char, false>&
28197403Sobrien    use_facet<moneypunct<char, false> >(const locale&);
28297403Sobrien
28397403Sobrien  template
28497403Sobrien    const money_put<char>&
28597403Sobrien    use_facet<money_put<char> >(const locale&);
28697403Sobrien
28797403Sobrien  template
28897403Sobrien    const money_get<char>&
28997403Sobrien    use_facet<money_get<char> >(const locale&);
29097403Sobrien
29197403Sobrien  template
29297403Sobrien    const __timepunct<char>&
29397403Sobrien    use_facet<__timepunct<char> >(const locale&);
29497403Sobrien
29597403Sobrien  template
29697403Sobrien    const time_put<char>&
29797403Sobrien    use_facet<time_put<char> >(const locale&);
29897403Sobrien
29997403Sobrien  template
30097403Sobrien    const time_get<char>&
30197403Sobrien    use_facet<time_get<char> >(const locale&);
30297403Sobrien
30397403Sobrien  template
30497403Sobrien    const messages<char>&
30597403Sobrien    use_facet<messages<char> >(const locale&);
30697403Sobrien
30797403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
30897403Sobrien  template
30997403Sobrien    const codecvt<wchar_t, char, mbstate_t>&
31097403Sobrien    use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
31197403Sobrien
31297403Sobrien  template
31397403Sobrien    const collate<wchar_t>&
31497403Sobrien    use_facet<collate<wchar_t> >(const locale&);
31597403Sobrien
31697403Sobrien  template
31797403Sobrien    const numpunct<wchar_t>&
31897403Sobrien    use_facet<numpunct<wchar_t> >(const locale&);
31997403Sobrien
32097403Sobrien  template
32197403Sobrien    const num_put<wchar_t>&
32297403Sobrien    use_facet<num_put<wchar_t> >(const locale&);
32397403Sobrien
32497403Sobrien  template
32597403Sobrien    const num_get<wchar_t>&
32697403Sobrien    use_facet<num_get<wchar_t> >(const locale&);
32797403Sobrien
32897403Sobrien  template
32997403Sobrien    const moneypunct<wchar_t, true>&
33097403Sobrien    use_facet<moneypunct<wchar_t, true> >(const locale&);
33197403Sobrien
33297403Sobrien  template
33397403Sobrien    const moneypunct<wchar_t, false>&
33497403Sobrien    use_facet<moneypunct<wchar_t, false> >(const locale&);
33597403Sobrien
33697403Sobrien  template
33797403Sobrien    const money_put<wchar_t>&
33897403Sobrien    use_facet<money_put<wchar_t> >(const locale&);
33997403Sobrien
34097403Sobrien  template
34197403Sobrien    const money_get<wchar_t>&
34297403Sobrien    use_facet<money_get<wchar_t> >(const locale&);
34397403Sobrien
34497403Sobrien  template
34597403Sobrien    const __timepunct<wchar_t>&
34697403Sobrien    use_facet<__timepunct<wchar_t> >(const locale&);
34797403Sobrien
34897403Sobrien  template
34997403Sobrien    const time_put<wchar_t>&
35097403Sobrien    use_facet<time_put<wchar_t> >(const locale&);
35197403Sobrien
35297403Sobrien  template
35397403Sobrien    const time_get<wchar_t>&
35497403Sobrien    use_facet<time_get<wchar_t> >(const locale&);
35597403Sobrien
35697403Sobrien  template
35797403Sobrien    const messages<wchar_t>&
35897403Sobrien    use_facet<messages<wchar_t> >(const locale&);
35997403Sobrien#endif
36097403Sobrien
36197403Sobrien  // has_facet
36297403Sobrien  template
36397403Sobrien    bool
36497403Sobrien    has_facet<ctype<char> >(const locale&);
36597403Sobrien
36697403Sobrien  template
36797403Sobrien    bool
36897403Sobrien    has_facet<codecvt<char, char, mbstate_t> >(const locale&);
36997403Sobrien
37097403Sobrien  template
37197403Sobrien    bool
37297403Sobrien    has_facet<collate<char> >(const locale&);
37397403Sobrien
37497403Sobrien  template
37597403Sobrien    bool
37697403Sobrien    has_facet<numpunct<char> >(const locale&);
37797403Sobrien
37897403Sobrien  template
37997403Sobrien    bool
38097403Sobrien    has_facet<num_put<char> >(const locale&);
38197403Sobrien
38297403Sobrien  template
38397403Sobrien    bool
38497403Sobrien    has_facet<num_get<char> >(const locale&);
38597403Sobrien
38697403Sobrien  template
38797403Sobrien    bool
38897403Sobrien    has_facet<moneypunct<char> >(const locale&);
38997403Sobrien
39097403Sobrien  template
39197403Sobrien    bool
39297403Sobrien    has_facet<money_put<char> >(const locale&);
39397403Sobrien
39497403Sobrien  template
39597403Sobrien    bool
39697403Sobrien    has_facet<money_get<char> >(const locale&);
39797403Sobrien
39897403Sobrien  template
39997403Sobrien    bool
40097403Sobrien    has_facet<__timepunct<char> >(const locale&);
40197403Sobrien
40297403Sobrien  template
40397403Sobrien    bool
40497403Sobrien    has_facet<time_put<char> >(const locale&);
40597403Sobrien
40697403Sobrien  template
40797403Sobrien    bool
40897403Sobrien    has_facet<time_get<char> >(const locale&);
40997403Sobrien
41097403Sobrien  template
41197403Sobrien    bool
41297403Sobrien    has_facet<messages<char> >(const locale&);
41397403Sobrien
41497403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
41597403Sobrien template
41697403Sobrien    bool
41797403Sobrien    has_facet<ctype<wchar_t> >(const locale&);
41897403Sobrien
41997403Sobrien  template
42097403Sobrien    bool
42197403Sobrien    has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
42297403Sobrien
42397403Sobrien  template
42497403Sobrien    bool
42597403Sobrien    has_facet<collate<wchar_t> >(const locale&);
42697403Sobrien
42797403Sobrien  template
42897403Sobrien    bool
42997403Sobrien    has_facet<numpunct<wchar_t> >(const locale&);
43097403Sobrien
43197403Sobrien  template
43297403Sobrien    bool
43397403Sobrien    has_facet<num_put<wchar_t> >(const locale&);
43497403Sobrien
43597403Sobrien  template
43697403Sobrien    bool
43797403Sobrien    has_facet<num_get<wchar_t> >(const locale&);
43897403Sobrien
43997403Sobrien  template
44097403Sobrien    bool
44197403Sobrien    has_facet<moneypunct<wchar_t> >(const locale&);
44297403Sobrien
44397403Sobrien  template
44497403Sobrien    bool
44597403Sobrien    has_facet<money_put<wchar_t> >(const locale&);
44697403Sobrien
44797403Sobrien  template
44897403Sobrien    bool
44997403Sobrien    has_facet<money_get<wchar_t> >(const locale&);
45097403Sobrien
45197403Sobrien  template
45297403Sobrien    bool
45397403Sobrien    has_facet<__timepunct<wchar_t> >(const locale&);
45497403Sobrien
45597403Sobrien  template
45697403Sobrien    bool
45797403Sobrien    has_facet<time_put<wchar_t> >(const locale&);
45897403Sobrien
45997403Sobrien  template
46097403Sobrien    bool
46197403Sobrien    has_facet<time_get<wchar_t> >(const locale&);
46297403Sobrien
46397403Sobrien  template
46497403Sobrien    bool
46597403Sobrien    has_facet<messages<wchar_t> >(const locale&);
46697403Sobrien#endif
46797403Sobrien
468117397Skan  // __use_cache
469117397Skan  template
470117397Skan    const __locale_cache<numpunct<char> >&
471117397Skan    __use_cache<numpunct<char> >(const locale& __loc);
472117397Skan
473117397Skan#ifdef _GLIBCPP_USE_WCHAR_T
474117397Skan   template
475117397Skan    const __locale_cache<numpunct<wchar_t> >&
476117397Skan    __use_cache<numpunct<wchar_t> >(const locale& __loc);
477117397Skan#endif
478117397Skan
47997403Sobrien  // locale
48097403Sobrien  template
48197403Sobrien    char*
48297403Sobrien    __add_grouping<char>(char*, char, char const*, char const*,
48397403Sobrien			 char const*, char const*);
48497403Sobrien
48597403Sobrien  template
48697403Sobrien    bool
48797403Sobrien    __verify_grouping<char>(const basic_string<char>&, basic_string<char>&);
48897403Sobrien
489102782Skan  template class __pad<char, char_traits<char> >;
49097403Sobrien
49197403Sobrien#ifdef _GLIBCPP_USE_WCHAR_T
49297403Sobrien  template
49397403Sobrien    wchar_t*
49497403Sobrien    __add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, char const*,
49597403Sobrien			    wchar_t const*, wchar_t const*);
49697403Sobrien  template
49797403Sobrien    bool
49897403Sobrien    __verify_grouping<wchar_t>(const basic_string<wchar_t>&,
49997403Sobrien			       basic_string<wchar_t>&);
50097403Sobrien
501102782Skan  template class __pad<wchar_t, char_traits<wchar_t> >;
502102782Skan#endif
50397403Sobrien
50497403Sobrien  template
50597403Sobrien    int
506102782Skan    __convert_from_v(char*, const int, const char*, double,
507102782Skan		     const __c_locale&, int);
50897403Sobrien
50997403Sobrien  template
51097403Sobrien    int
511102782Skan    __convert_from_v(char*, const int, const char*, long double,
512102782Skan		     const __c_locale&, int);
51397403Sobrien
51497403Sobrien  template
51597403Sobrien    int
516102782Skan    __convert_from_v(char*, const int, const char*, long,
517102782Skan		     const __c_locale&, int);
51897403Sobrien
51997403Sobrien  template
52097403Sobrien    int
52197403Sobrien    __convert_from_v(char*, const int, const char*, unsigned long,
52297403Sobrien		     const __c_locale&, int);
52397403Sobrien
524117397Skan#ifdef _GLIBCPP_USE_LONG_LONG
52597403Sobrien  template
52697403Sobrien    int
527102782Skan    __convert_from_v(char*, const int, const char*, long long,
528102782Skan		     const __c_locale&, int);
52997403Sobrien
53097403Sobrien  template
53197403Sobrien    int
53297403Sobrien    __convert_from_v(char*, const int, const char*, unsigned long long,
53397403Sobrien		     const __c_locale&, int);
534117397Skan#endif
535117397Skan
536117397Skan  template
537117397Skan    int
538117397Skan    __int_to_char(char*, const int, unsigned long, const char*,
539117397Skan		  ios_base::fmtflags, bool);
540117397Skan
541117397Skan#ifdef _GLIBCPP_USE_WCHAR_T
542117397Skan  template
543117397Skan    int
544117397Skan    __int_to_char(wchar_t*, const int, unsigned long, const wchar_t*,
545117397Skan		  ios_base::fmtflags, bool);
546117397Skan#endif
547117397Skan
548117397Skan#ifdef _GLIBCPP_USE_LONG_LONG
549117397Skan  template
550117397Skan    int
551117397Skan    __int_to_char(char*, const int, unsigned long long, const char*,
552117397Skan		  ios_base::fmtflags, bool);
553117397Skan
554117397Skan#ifdef _GLIBCPP_USE_WCHAR_T
555117397Skan  template
556117397Skan    int
557117397Skan    __int_to_char(wchar_t*, const int, unsigned long long, const wchar_t*,
558117397Skan		  ios_base::fmtflags, bool);
559117397Skan#endif
560117397Skan#endif
56197403Sobrien} // namespace std
562