197403Sobrien// Locale support -*- C++ -*- 297403Sobrien 3169691Skan// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 497403Sobrien// Free Software Foundation, Inc. 597403Sobrien// 697403Sobrien// This file is part of the GNU ISO C++ Library. This library is free 797403Sobrien// software; you can redistribute it and/or modify it under the 897403Sobrien// terms of the GNU General Public License as published by the 997403Sobrien// Free Software Foundation; either version 2, or (at your option) 1097403Sobrien// any later version. 1197403Sobrien 1297403Sobrien// This library is distributed in the hope that it will be useful, 1397403Sobrien// but WITHOUT ANY WARRANTY; without even the implied warranty of 1497403Sobrien// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1597403Sobrien// GNU General Public License for more details. 1697403Sobrien 1797403Sobrien// You should have received a copy of the GNU General Public License along 1897403Sobrien// with this library; see the file COPYING. If not, write to the Free 19169691Skan// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 2097403Sobrien// USA. 2197403Sobrien 2297403Sobrien// As a special exception, you may use this file as part of a free software 2397403Sobrien// library without restriction. Specifically, if other files instantiate 2497403Sobrien// templates or use macros or inline functions from this file, or you compile 2597403Sobrien// this file and link it with other files to produce an executable, this 2697403Sobrien// file does not by itself cause the resulting executable to be covered by 2797403Sobrien// the GNU General Public License. This exception does not however 2897403Sobrien// invalidate any other reasons why the executable file might be covered by 2997403Sobrien// the GNU General Public License. 3097403Sobrien 3197403Sobrien/** @file localefwd.h 3297403Sobrien * This is an internal header file, included by other library headers. 3397403Sobrien * You should not attempt to use it directly. 3497403Sobrien */ 3597403Sobrien 36169691Skan// 37169691Skan// ISO C++ 14882: 22.1 Locales 38169691Skan// 39169691Skan 40132720Skan#ifndef _LOCALE_FWD_H 41132720Skan#define _LOCALE_FWD_H 1 4297403Sobrien 4397403Sobrien#pragma GCC system_header 4497403Sobrien 4597403Sobrien#include <bits/c++config.h> 4697403Sobrien#include <bits/c++locale.h> // Defines __c_locale, config-specific includes 47132720Skan#include <iosfwd> // For ostreambuf_iterator, istreambuf_iterator 4897403Sobrien#include <bits/functexcept.h> 4997403Sobrien 50169691Skan_GLIBCXX_BEGIN_NAMESPACE(std) 51169691Skan 5297403Sobrien // 22.1.1 Locale 5397403Sobrien class locale; 5497403Sobrien 5597403Sobrien // 22.1.3 Convenience interfaces 56132720Skan template<typename _CharT> 57132720Skan inline bool 5897403Sobrien isspace(_CharT, const locale&); 5997403Sobrien 60132720Skan template<typename _CharT> 61132720Skan inline bool 6297403Sobrien isprint(_CharT, const locale&); 6397403Sobrien 64132720Skan template<typename _CharT> 65132720Skan inline bool 6697403Sobrien iscntrl(_CharT, const locale&); 6797403Sobrien 68132720Skan template<typename _CharT> 69132720Skan inline bool 7097403Sobrien isupper(_CharT, const locale&); 7197403Sobrien 72132720Skan template<typename _CharT> 73132720Skan inline bool 7497403Sobrien islower(_CharT, const locale&); 7597403Sobrien 76132720Skan template<typename _CharT> 77132720Skan inline bool 7897403Sobrien isalpha(_CharT, const locale&); 7997403Sobrien 80132720Skan template<typename _CharT> 81132720Skan inline bool 8297403Sobrien isdigit(_CharT, const locale&); 8397403Sobrien 84132720Skan template<typename _CharT> 85132720Skan inline bool 8697403Sobrien ispunct(_CharT, const locale&); 8797403Sobrien 88132720Skan template<typename _CharT> 89132720Skan inline bool 9097403Sobrien isxdigit(_CharT, const locale&); 9197403Sobrien 92132720Skan template<typename _CharT> 93132720Skan inline bool 9497403Sobrien isalnum(_CharT, const locale&); 9597403Sobrien 96132720Skan template<typename _CharT> 97132720Skan inline bool 9897403Sobrien isgraph(_CharT, const locale&); 9997403Sobrien 100132720Skan template<typename _CharT> 101132720Skan inline _CharT 10297403Sobrien toupper(_CharT, const locale&); 10397403Sobrien 104132720Skan template<typename _CharT> 105132720Skan inline _CharT 10697403Sobrien tolower(_CharT, const locale&); 10797403Sobrien 10897403Sobrien // 22.2.1 and 22.2.1.3 ctype 10997403Sobrien class ctype_base; 110132720Skan template<typename _CharT> 11197403Sobrien class ctype; 11297403Sobrien template<> class ctype<char>; 113132720Skan#ifdef _GLIBCXX_USE_WCHAR_T 11497403Sobrien template<> class ctype<wchar_t>; 11597403Sobrien#endif 116132720Skan template<typename _CharT> 11797403Sobrien class ctype_byname; 11897403Sobrien // NB: Specialized for char and wchar_t in locale_facets.h. 11997403Sobrien 12097403Sobrien class codecvt_base; 12197403Sobrien class __enc_traits; 12297403Sobrien template<typename _InternT, typename _ExternT, typename _StateT> 12397403Sobrien class codecvt; 12497403Sobrien template<> class codecvt<char, char, mbstate_t>; 125132720Skan#ifdef _GLIBCXX_USE_WCHAR_T 12697403Sobrien template<> class codecvt<wchar_t, char, mbstate_t>; 12797403Sobrien#endif 12897403Sobrien template<typename _InternT, typename _ExternT, typename _StateT> 12997403Sobrien class codecvt_byname; 13097403Sobrien 13197403Sobrien // 22.2.2 and 22.2.3 numeric 132169691Skan_GLIBCXX_BEGIN_LDBL_NAMESPACE 13397403Sobrien template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > 13497403Sobrien class num_get; 13597403Sobrien template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > 13697403Sobrien class num_put; 137169691Skan_GLIBCXX_END_LDBL_NAMESPACE 13897403Sobrien template<typename _CharT> class numpunct; 13997403Sobrien template<typename _CharT> class numpunct_byname; 14097403Sobrien 14197403Sobrien // 22.2.4 collation 142132720Skan template<typename _CharT> 14397403Sobrien class collate; 144132720Skan template<typename _CharT> class 14597403Sobrien collate_byname; 14697403Sobrien 14797403Sobrien // 22.2.5 date and time 14897403Sobrien class time_base; 14997403Sobrien template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > 15097403Sobrien class time_get; 15197403Sobrien template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > 15297403Sobrien class time_get_byname; 15397403Sobrien template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > 15497403Sobrien class time_put; 15597403Sobrien template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > 15697403Sobrien class time_put_byname; 15797403Sobrien 15897403Sobrien // 22.2.6 money 15997403Sobrien class money_base; 160169691Skan_GLIBCXX_BEGIN_LDBL_NAMESPACE 16197403Sobrien template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > 16297403Sobrien class money_get; 16397403Sobrien template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > 16497403Sobrien class money_put; 165169691Skan_GLIBCXX_END_LDBL_NAMESPACE 166132720Skan template<typename _CharT, bool _Intl = false> 16797403Sobrien class moneypunct; 168132720Skan template<typename _CharT, bool _Intl = false> 16997403Sobrien class moneypunct_byname; 17097403Sobrien 17197403Sobrien // 22.2.7 message retrieval 17297403Sobrien class messages_base; 173132720Skan template<typename _CharT> 17497403Sobrien class messages; 175132720Skan template<typename _CharT> 17697403Sobrien class messages_byname; 17797403Sobrien 17897403Sobrien template<typename _Facet> 179132720Skan bool 180132720Skan has_facet(const locale& __loc) throw(); 181132720Skan 182132720Skan template<typename _Facet> 18397403Sobrien const _Facet& 18497403Sobrien use_facet(const locale& __loc); 18597403Sobrien 18697403Sobrien template<typename _Facet> 187132720Skan inline const _Facet& 188132720Skan __check_facet(const _Facet* __f) 189132720Skan { 190132720Skan if (!__f) 191132720Skan __throw_bad_cast(); 192132720Skan return *__f; 193132720Skan } 19497403Sobrien 195169691Skan_GLIBCXX_END_NAMESPACE 196169691Skan 19797403Sobrien#endif 198