1// <locale> Forward declarations -*- C++ -*- 
2 
3// Copyright (C) 1997-2019 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 
44namespace 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#if __cplusplus >= 201103L 
111 template<typename _CharT> 
112 bool 
113 isblank(_CharT, const locale&); 
114#endif 
115 
116 template<typename _CharT> 
117 _CharT 
118 toupper(_CharT, const locale&); 
119 
120 template<typename _CharT> 
121 _CharT 
122 tolower(_CharT, const locale&); 
123 
124 // 22.2.1 and 22.2.1.3 ctype 
125 class ctype_base
126 template<typename _CharT> 
127 class ctype
128 template<> class ctype<char>; 
129#ifdef _GLIBCXX_USE_WCHAR_T 
130 template<> class ctype<wchar_t>; 
131#endif 
132 template<typename _CharT> 
133 class ctype_byname
134 // NB: Specialized for char and wchar_t in locale_facets.h. 
135 
136 class codecvt_base
137 template<typename _InternT, typename _ExternT, typename _StateT> 
138 class codecvt
139 template<> class codecvt<char, char, mbstate_t>; 
140#ifdef _GLIBCXX_USE_WCHAR_T 
141 template<> class codecvt<wchar_t, char, mbstate_t>; 
142#endif 
143#if __cplusplus >= 201103L 
144 template<> class codecvt<char16_t, char, mbstate_t>; 
145 template<> class codecvt<char32_t, char, mbstate_t>; 
146#ifdef _GLIBCXX_USE_CHAR8_T 
147 template<> class codecvt<char16_t, char8_t, mbstate_t>; 
148 template<> class codecvt<char32_t, char8_t, mbstate_t>; 
149#endif 
150#endif 
151 template<typename _InternT, typename _ExternT, typename _StateT> 
152 class codecvt_byname
153 
154 // 22.2.2 and 22.2.3 numeric 
155_GLIBCXX_BEGIN_NAMESPACE_LDBL 
156 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > 
157 class num_get
158 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > 
159 class num_put
160_GLIBCXX_END_NAMESPACE_LDBL 
161_GLIBCXX_BEGIN_NAMESPACE_CXX11 
162 template<typename _CharT> class numpunct
163 template<typename _CharT> class numpunct_byname
164_GLIBCXX_END_NAMESPACE_CXX11 
165 
166_GLIBCXX_BEGIN_NAMESPACE_CXX11 
167 // 22.2.4 collation 
168 template<typename _CharT> 
169 class collate
170 template<typename _CharT> 
171 class collate_byname
172_GLIBCXX_END_NAMESPACE_CXX11 
173 
174 // 22.2.5 date and time 
175 class time_base
176_GLIBCXX_BEGIN_NAMESPACE_CXX11 
177 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > 
178 class time_get
179 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > 
180 class time_get_byname
181_GLIBCXX_END_NAMESPACE_CXX11 
182 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > 
183 class time_put
184 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > 
185 class time_put_byname
186 
187 // 22.2.6 money 
188 class money_base
189_GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 
190 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > 
191 class money_get
192 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > 
193 class money_put
194_GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 
195_GLIBCXX_BEGIN_NAMESPACE_CXX11 
196 template<typename _CharT, bool _Intl = false
197 class moneypunct
198 template<typename _CharT, bool _Intl = false
199 class moneypunct_byname
200_GLIBCXX_END_NAMESPACE_CXX11 
201 
202 // 22.2.7 message retrieval 
203 class messages_base
204_GLIBCXX_BEGIN_NAMESPACE_CXX11 
205 template<typename _CharT> 
206 class messages
207 template<typename _CharT> 
208 class messages_byname
209_GLIBCXX_END_NAMESPACE_CXX11 
210 
211_GLIBCXX_END_NAMESPACE_VERSION 
212} // namespace std 
213 
214#endif 
215