]>
Commit | Line | Data |
---|---|---|
cd1e6665 | 1 | // <iosfwd> Forward declarations -*- C++ -*- |
de96ac46 | 2 | |
a5544970 | 3 | // Copyright (C) 1997-2019 Free Software Foundation, Inc. |
de96ac46 BK |
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 | |
748086b7 | 8 | // Free Software Foundation; either version 3, or (at your option) |
de96ac46 BK |
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 | ||
748086b7 JJ |
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/>. | |
de96ac46 | 24 | |
f910786b | 25 | /** @file include/iosfwd |
0aa06b18 | 26 | * This is a Standard C++ Library header. |
2f9d51b8 PE |
27 | */ |
28 | ||
143c27b0 BK |
29 | // |
30 | // ISO C++ 14882: 27.2 Forward declarations | |
31 | // | |
32 | ||
1143680e SE |
33 | #ifndef _GLIBCXX_IOSFWD |
34 | #define _GLIBCXX_IOSFWD 1 | |
54c1bf78 BK |
35 | |
36 | #pragma GCC system_header | |
37 | ||
38 | #include <bits/c++config.h> | |
e6686813 | 39 | #include <bits/stringfwd.h> // For string forward declarations. |
4c4809c1 | 40 | #include <bits/postypes.h> |
54c1bf78 | 41 | |
12ffa228 BK |
42 | namespace std _GLIBCXX_VISIBILITY(default) |
43 | { | |
44 | _GLIBCXX_BEGIN_NAMESPACE_VERSION | |
3cbc7af0 | 45 | |
f910786b | 46 | /** |
8e32aa11 BK |
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 <iosfwd> | |
65 | * header, which contains only declarations of all the I/O classes as | |
66 | * well as the typedefs. Trying to forward-declare the typedefs | |
2a60a9f6 | 67 | * themselves (e.g., <code>class ostream;</code>) is not valid ISO C++. |
8e32aa11 BK |
68 | * |
69 | * For more specific declarations, see | |
10d43d2f | 70 | * https://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html#std.io.objects |
8e32aa11 BK |
71 | * |
72 | * @{ | |
73 | */ | |
f910786b | 74 | class ios_base; |
8e32aa11 | 75 | |
54c1bf78 BK |
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 | ||
34a2b755 JW |
91 | |
92 | _GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
93 | ||
54c1bf78 BK |
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 | ||
34a2b755 JW |
110 | _GLIBCXX_END_NAMESPACE_CXX11 |
111 | ||
54c1bf78 BK |
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 | ||
f910786b BK |
130 | |
131 | /// Base class for @c char streams. | |
33ac58d5 | 132 | typedef basic_ios<char> ios; |
f910786b BK |
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; | |
54c1bf78 | 169 | |
3d7c150e | 170 | #ifdef _GLIBCXX_USE_WCHAR_T |
f910786b BK |
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; | |
5112ae3a | 209 | #endif |
840ceb34 | 210 | /** @} */ |
3cbc7af0 | 211 | |
12ffa228 BK |
212 | _GLIBCXX_END_NAMESPACE_VERSION |
213 | } // namespace | |
54c1bf78 | 214 | |
1143680e | 215 | #endif /* _GLIBCXX_IOSFWD */ |