1    	// <locale> Forward declarations -*- C++ -*-
2    	
3    	// Copyright (C) 1997-2013 Free Software Foundation, Inc.
4    	//
5    	// This file is part of the GNU ISO C++ Library.  This library is free
6    	// software; you can redistribute it and/or modify it under the
7    	// terms of the GNU General Public License as published by the
8    	// Free Software Foundation; either version 3, or (at your option)
9    	// any later version.
10   	
11   	// This library is distributed in the hope that it will be useful,
12   	// but WITHOUT ANY WARRANTY; without even the implied warranty of
13   	// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   	// GNU General Public License for more details.
15   	
16   	// Under Section 7 of GPL version 3, you are granted additional
17   	// permissions described in the GCC Runtime Library Exception, version
18   	// 3.1, as published by the Free Software Foundation.
19   	
20   	// You should have received a copy of the GNU General Public License and
21   	// a copy of the GCC Runtime Library Exception along with this program;
22   	// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23   	// <http://www.gnu.org/licenses/>.
24   	
25   	/** @file bits/localefwd.h
26   	 *  This is an internal header file, included by other library headers.
27   	 *  Do not attempt to use it directly. @headername{locale}
28   	 */
29   	
30   	//
31   	// ISO C++ 14882: 22.1  Locales
32   	//
33   	
34   	#ifndef _LOCALE_FWD_H
35   	#define _LOCALE_FWD_H 1
36   	
37   	#pragma GCC system_header
38   	
39   	#include <bits/c++config.h>
40   	#include <bits/c++locale.h>  // Defines __c_locale, config-specific include
41   	#include <iosfwd>            // For ostreambuf_iterator, istreambuf_iterator
42   	#include <cctype>
43   	
44   	namespace std _GLIBCXX_VISIBILITY(default)
45   	{
46   	_GLIBCXX_BEGIN_NAMESPACE_VERSION
47   	
48   	  /** 
49   	   *  @defgroup locales Locales
50   	   *
51   	   *  Classes and functions for internationalization and localization.
52   	   */
53   	
54   	  // 22.1.1 Locale
55   	  class locale;
56   	
57   	  template<typename _Facet>
58   	    bool
59   	    has_facet(const locale&) throw();
60   	
61   	  template<typename _Facet>
62   	    const _Facet&
63   	    use_facet(const locale&);
64   	
65   	  // 22.1.3 Convenience interfaces
66   	  template<typename _CharT>
67   	    bool
68   	    isspace(_CharT, const locale&);
69   	
70   	  template<typename _CharT>
71   	    bool
72   	    isprint(_CharT, const locale&);
73   	
74   	  template<typename _CharT>
75   	    bool
76   	    iscntrl(_CharT, const locale&);
77   	
78   	  template<typename _CharT>
79   	    bool
80   	    isupper(_CharT, const locale&);
81   	
82   	  template<typename _CharT>
83   	    bool
84   	    islower(_CharT, const locale&);
85   	
86   	  template<typename _CharT>
87   	    bool
88   	    isalpha(_CharT, const locale&);
89   	
90   	  template<typename _CharT>
91   	    bool
92   	    isdigit(_CharT, const locale&);
93   	
94   	  template<typename _CharT>
95   	    bool
96   	    ispunct(_CharT, const locale&);
97   	
98   	  template<typename _CharT>
99   	    bool
100  	    isxdigit(_CharT, const locale&);
101  	
102  	  template<typename _CharT>
103  	    bool
104  	    isalnum(_CharT, const locale&);
105  	
106  	  template<typename _CharT>
107  	    bool
108  	    isgraph(_CharT, const locale&);
109  	
110  	  template<typename _CharT>
111  	    _CharT
112  	    toupper(_CharT, const locale&);
113  	
114  	  template<typename _CharT>
115  	    _CharT
116  	    tolower(_CharT, const locale&);
117  	
118  	  // 22.2.1 and 22.2.1.3 ctype
119  	  class ctype_base;
120  	  template<typename _CharT>
121  	    class ctype;
122  	  template<> class ctype<char>;
123  	#ifdef _GLIBCXX_USE_WCHAR_T
124  	  template<> class ctype<wchar_t>;
125  	#endif
126  	  template<typename _CharT>
127  	    class ctype_byname;
128  	  // NB: Specialized for char and wchar_t in locale_facets.h.
129  	
130  	  class codecvt_base;
131  	  template<typename _InternT, typename _ExternT, typename _StateT>
132  	    class codecvt;
133  	  template<> class codecvt<char, char, mbstate_t>;
134  	#ifdef _GLIBCXX_USE_WCHAR_T
135  	  template<> class codecvt<wchar_t, char, mbstate_t>;
136  	#endif
137  	  template<typename _InternT, typename _ExternT, typename _StateT>
138  	    class codecvt_byname;
139  	
140  	  // 22.2.2 and 22.2.3 numeric
141  	_GLIBCXX_BEGIN_NAMESPACE_LDBL
142  	  template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
143  	    class num_get;
144  	  template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
145  	    class num_put;
146  	_GLIBCXX_END_NAMESPACE_LDBL
147  	  template<typename _CharT> class numpunct;
148  	  template<typename _CharT> class numpunct_byname;
149  	
150  	  // 22.2.4 collation
151  	  template<typename _CharT>
152  	    class collate;
153  	  template<typename _CharT> class
154  	    collate_byname;
155  	
156  	  // 22.2.5 date and time
157  	  class time_base;
158  	  template<typename _CharT, typename _InIter =  istreambuf_iterator<_CharT> >
159  	    class time_get;
160  	  template<typename _CharT, typename _InIter =  istreambuf_iterator<_CharT> >
161  	    class time_get_byname;
162  	  template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
163  	    class time_put;
164  	  template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
165  	    class time_put_byname;
166  	
167  	  // 22.2.6 money
168  	  class money_base;
169  	_GLIBCXX_BEGIN_NAMESPACE_LDBL
170  	  template<typename _CharT, typename _InIter =  istreambuf_iterator<_CharT> >
171  	    class money_get;
172  	  template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
173  	    class money_put;
174  	_GLIBCXX_END_NAMESPACE_LDBL
175  	  template<typename _CharT, bool _Intl = false>
176  	    class moneypunct;
177  	  template<typename _CharT, bool _Intl = false>
178  	    class moneypunct_byname;
179  	
180  	  // 22.2.7 message retrieval
181  	  class messages_base;
182  	  template<typename _CharT>
183  	    class messages;
184  	  template<typename _CharT>
185  	    class messages_byname;
186  	
187  	_GLIBCXX_END_NAMESPACE_VERSION
188  	} // namespace std
189  	
190  	#endif
191