1// <iosfwd> 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 include/iosfwd 
26 * This is a Standard C++ Library header. 
27 */ 
28 
29// 
30// ISO C++ 14882: 27.2 Forward declarations 
31// 
32 
33#ifndef _GLIBCXX_IOSFWD 
34#define _GLIBCXX_IOSFWD 1 
35 
36#pragma GCC system_header 
37 
38#include <bits/c++config.h> 
39#include <bits/stringfwd.h> // For string forward declarations. 
40#include <bits/postypes.h> 
41 
42namespace std _GLIBCXX_VISIBILITY(default
43
44_GLIBCXX_BEGIN_NAMESPACE_VERSION 
45 
46 /** 
47 * @defgroup io I/O 
48 * 
49 * Nearly all of the I/O classes are parameterized on the type of 
50 * characters they read and write. (The major exception is ios_base at 
51 * the top of the hierarchy.) This is a change from pre-Standard 
52 * streams, which were not templates. 
53 * 
54 * For ease of use and compatibility, all of the basic_* I/O-related 
55 * classes are given typedef names for both of the builtin character 
56 * widths (wide and narrow). The typedefs are the same as the 
57 * pre-Standard names, for example: 
58 * 
59 * @code 
60 * typedef basic_ifstream<char> ifstream; 
61 * @endcode 
62 * 
63 * Because properly forward-declaring these classes can be difficult, you 
64 * should not do it yourself. Instead, include the &lt;iosfwd&gt; 
65 * header, which contains only declarations of all the I/O classes as 
66 * well as the typedefs. Trying to forward-declare the typedefs 
67 * themselves (e.g., <code>class ostream;</code>) is not valid ISO C++. 
68 * 
69 * For more specific declarations, see 
70 * https://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html#std.io.objects 
71 * 
72 * @{ 
73 */ 
74 class ios_base
75 
76 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
77 class basic_ios
78 
79 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
80 class basic_streambuf
81 
82 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
83 class basic_istream
84 
85 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
86 class basic_ostream
87 
88 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
89 class basic_iostream
90 
91 
92_GLIBCXX_BEGIN_NAMESPACE_CXX11 
93 
94 template<typename _CharT, typename _Traits = char_traits<_CharT>, 
95 typename _Alloc = allocator<_CharT> > 
96 class basic_stringbuf
97 
98 template<typename _CharT, typename _Traits = char_traits<_CharT>, 
99 typename _Alloc = allocator<_CharT> > 
100 class basic_istringstream
101 
102 template<typename _CharT, typename _Traits = char_traits<_CharT>, 
103 typename _Alloc = allocator<_CharT> > 
104 class basic_ostringstream
105 
106 template<typename _CharT, typename _Traits = char_traits<_CharT>, 
107 typename _Alloc = allocator<_CharT> > 
108 class basic_stringstream
109 
110_GLIBCXX_END_NAMESPACE_CXX11 
111 
112 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
113 class basic_filebuf
114 
115 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
116 class basic_ifstream
117 
118 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
119 class basic_ofstream
120 
121 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
122 class basic_fstream
123 
124 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
125 class istreambuf_iterator
126 
127 template<typename _CharT, typename _Traits = char_traits<_CharT> > 
128 class ostreambuf_iterator
129 
130 
131 /// Base class for @c char streams. 
132 typedef basic_ios<char> ios
133 
134 /// Base class for @c char buffers. 
135 typedef basic_streambuf<char> streambuf
136 
137 /// Base class for @c char input streams. 
138 typedef basic_istream<char> istream
139 
140 /// Base class for @c char output streams. 
141 typedef basic_ostream<char> ostream
142 
143 /// Base class for @c char mixed input and output streams. 
144 typedef basic_iostream<char> iostream
145 
146 /// Class for @c char memory buffers. 
147 typedef basic_stringbuf<char> stringbuf
148 
149 /// Class for @c char input memory streams. 
150 typedef basic_istringstream<char> istringstream
151 
152 /// Class for @c char output memory streams. 
153 typedef basic_ostringstream<char> ostringstream
154 
155 /// Class for @c char mixed input and output memory streams. 
156 typedef basic_stringstream<char> stringstream
157 
158 /// Class for @c char file buffers. 
159 typedef basic_filebuf<char> filebuf
160 
161 /// Class for @c char input file streams. 
162 typedef basic_ifstream<char> ifstream
163 
164 /// Class for @c char output file streams. 
165 typedef basic_ofstream<char> ofstream
166 
167 /// Class for @c char mixed input and output file streams. 
168 typedef basic_fstream<char> fstream
169 
170#ifdef _GLIBCXX_USE_WCHAR_T 
171 /// Base class for @c wchar_t streams. 
172 typedef basic_ios<wchar_t> wios
173 
174 /// Base class for @c wchar_t buffers. 
175 typedef basic_streambuf<wchar_t> wstreambuf
176 
177 /// Base class for @c wchar_t input streams. 
178 typedef basic_istream<wchar_t> wistream
179 
180 /// Base class for @c wchar_t output streams. 
181 typedef basic_ostream<wchar_t> wostream
182 
183 /// Base class for @c wchar_t mixed input and output streams. 
184 typedef basic_iostream<wchar_t> wiostream
185 
186 /// Class for @c wchar_t memory buffers. 
187 typedef basic_stringbuf<wchar_t> wstringbuf
188 
189 /// Class for @c wchar_t input memory streams. 
190 typedef basic_istringstream<wchar_t> wistringstream
191 
192 /// Class for @c wchar_t output memory streams. 
193 typedef basic_ostringstream<wchar_t> wostringstream
194 
195 /// Class for @c wchar_t mixed input and output memory streams. 
196 typedef basic_stringstream<wchar_t> wstringstream
197 
198 /// Class for @c wchar_t file buffers. 
199 typedef basic_filebuf<wchar_t> wfilebuf
200 
201 /// Class for @c wchar_t input file streams. 
202 typedef basic_ifstream<wchar_t> wifstream
203 
204 /// Class for @c wchar_t output file streams. 
205 typedef basic_ofstream<wchar_t> wofstream
206 
207 /// Class for @c wchar_t mixed input and output file streams. 
208 typedef basic_fstream<wchar_t> wfstream
209#endif 
210 /** @} */ 
211 
212_GLIBCXX_END_NAMESPACE_VERSION 
213} // namespace 
214 
215#endif /* _GLIBCXX_IOSFWD */ 
216