locale-inst.cc revision 132720
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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 42namespace 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 317