11debfc3dSmrg// <iosfwd> Forward declarations -*- C++ -*- 21debfc3dSmrg 3*8feb0f0bSmrg// Copyright (C) 1997-2020 Free Software Foundation, Inc. 41debfc3dSmrg// 51debfc3dSmrg// This file is part of the GNU ISO C++ Library. This library is free 61debfc3dSmrg// software; you can redistribute it and/or modify it under the 71debfc3dSmrg// terms of the GNU General Public License as published by the 81debfc3dSmrg// Free Software Foundation; either version 3, or (at your option) 91debfc3dSmrg// any later version. 101debfc3dSmrg 111debfc3dSmrg// This library is distributed in the hope that it will be useful, 121debfc3dSmrg// but WITHOUT ANY WARRANTY; without even the implied warranty of 131debfc3dSmrg// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 141debfc3dSmrg// GNU General Public License for more details. 151debfc3dSmrg 161debfc3dSmrg// Under Section 7 of GPL version 3, you are granted additional 171debfc3dSmrg// permissions described in the GCC Runtime Library Exception, version 181debfc3dSmrg// 3.1, as published by the Free Software Foundation. 191debfc3dSmrg 201debfc3dSmrg// You should have received a copy of the GNU General Public License and 211debfc3dSmrg// a copy of the GCC Runtime Library Exception along with this program; 221debfc3dSmrg// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 231debfc3dSmrg// <http://www.gnu.org/licenses/>. 241debfc3dSmrg 251debfc3dSmrg/** @file include/iosfwd 261debfc3dSmrg * This is a Standard C++ Library header. 271debfc3dSmrg */ 281debfc3dSmrg 291debfc3dSmrg// 301debfc3dSmrg// ISO C++ 14882: 27.2 Forward declarations 311debfc3dSmrg// 321debfc3dSmrg 331debfc3dSmrg#ifndef _GLIBCXX_IOSFWD 341debfc3dSmrg#define _GLIBCXX_IOSFWD 1 351debfc3dSmrg 361debfc3dSmrg#pragma GCC system_header 371debfc3dSmrg 381debfc3dSmrg#include <bits/c++config.h> 391debfc3dSmrg#include <bits/stringfwd.h> // For string forward declarations. 401debfc3dSmrg#include <bits/postypes.h> 411debfc3dSmrg 421debfc3dSmrgnamespace std _GLIBCXX_VISIBILITY(default) 431debfc3dSmrg{ 441debfc3dSmrg_GLIBCXX_BEGIN_NAMESPACE_VERSION 451debfc3dSmrg 461debfc3dSmrg /** 471debfc3dSmrg * @defgroup io I/O 481debfc3dSmrg * 491debfc3dSmrg * Nearly all of the I/O classes are parameterized on the type of 501debfc3dSmrg * characters they read and write. (The major exception is ios_base at 511debfc3dSmrg * the top of the hierarchy.) This is a change from pre-Standard 521debfc3dSmrg * streams, which were not templates. 531debfc3dSmrg * 541debfc3dSmrg * For ease of use and compatibility, all of the basic_* I/O-related 551debfc3dSmrg * classes are given typedef names for both of the builtin character 561debfc3dSmrg * widths (wide and narrow). The typedefs are the same as the 571debfc3dSmrg * pre-Standard names, for example: 581debfc3dSmrg * 591debfc3dSmrg * @code 601debfc3dSmrg * typedef basic_ifstream<char> ifstream; 611debfc3dSmrg * @endcode 621debfc3dSmrg * 631debfc3dSmrg * Because properly forward-declaring these classes can be difficult, you 641debfc3dSmrg * should not do it yourself. Instead, include the <iosfwd> 651debfc3dSmrg * header, which contains only declarations of all the I/O classes as 661debfc3dSmrg * well as the typedefs. Trying to forward-declare the typedefs 671debfc3dSmrg * themselves (e.g., <code>class ostream;</code>) is not valid ISO C++. 681debfc3dSmrg * 691debfc3dSmrg * For more specific declarations, see 701debfc3dSmrg * https://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html#std.io.objects 711debfc3dSmrg * 721debfc3dSmrg * @{ 731debfc3dSmrg */ 741debfc3dSmrg class ios_base; 751debfc3dSmrg 761debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 771debfc3dSmrg class basic_ios; 781debfc3dSmrg 791debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 801debfc3dSmrg class basic_streambuf; 811debfc3dSmrg 821debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 831debfc3dSmrg class basic_istream; 841debfc3dSmrg 851debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 861debfc3dSmrg class basic_ostream; 871debfc3dSmrg 881debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 891debfc3dSmrg class basic_iostream; 901debfc3dSmrg 911debfc3dSmrg 921debfc3dSmrg_GLIBCXX_BEGIN_NAMESPACE_CXX11 931debfc3dSmrg 941debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT>, 951debfc3dSmrg typename _Alloc = allocator<_CharT> > 961debfc3dSmrg class basic_stringbuf; 971debfc3dSmrg 981debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT>, 991debfc3dSmrg typename _Alloc = allocator<_CharT> > 1001debfc3dSmrg class basic_istringstream; 1011debfc3dSmrg 1021debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT>, 1031debfc3dSmrg typename _Alloc = allocator<_CharT> > 1041debfc3dSmrg class basic_ostringstream; 1051debfc3dSmrg 1061debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT>, 1071debfc3dSmrg typename _Alloc = allocator<_CharT> > 1081debfc3dSmrg class basic_stringstream; 1091debfc3dSmrg 1101debfc3dSmrg_GLIBCXX_END_NAMESPACE_CXX11 1111debfc3dSmrg 1121debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 1131debfc3dSmrg class basic_filebuf; 1141debfc3dSmrg 1151debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 1161debfc3dSmrg class basic_ifstream; 1171debfc3dSmrg 1181debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 1191debfc3dSmrg class basic_ofstream; 1201debfc3dSmrg 1211debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 1221debfc3dSmrg class basic_fstream; 1231debfc3dSmrg 1241debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 1251debfc3dSmrg class istreambuf_iterator; 1261debfc3dSmrg 1271debfc3dSmrg template<typename _CharT, typename _Traits = char_traits<_CharT> > 1281debfc3dSmrg class ostreambuf_iterator; 1291debfc3dSmrg 1301debfc3dSmrg 1311debfc3dSmrg /// Base class for @c char streams. 1321debfc3dSmrg typedef basic_ios<char> ios; 1331debfc3dSmrg 1341debfc3dSmrg /// Base class for @c char buffers. 1351debfc3dSmrg typedef basic_streambuf<char> streambuf; 1361debfc3dSmrg 1371debfc3dSmrg /// Base class for @c char input streams. 1381debfc3dSmrg typedef basic_istream<char> istream; 1391debfc3dSmrg 1401debfc3dSmrg /// Base class for @c char output streams. 1411debfc3dSmrg typedef basic_ostream<char> ostream; 1421debfc3dSmrg 1431debfc3dSmrg /// Base class for @c char mixed input and output streams. 1441debfc3dSmrg typedef basic_iostream<char> iostream; 1451debfc3dSmrg 1461debfc3dSmrg /// Class for @c char memory buffers. 1471debfc3dSmrg typedef basic_stringbuf<char> stringbuf; 1481debfc3dSmrg 1491debfc3dSmrg /// Class for @c char input memory streams. 1501debfc3dSmrg typedef basic_istringstream<char> istringstream; 1511debfc3dSmrg 1521debfc3dSmrg /// Class for @c char output memory streams. 1531debfc3dSmrg typedef basic_ostringstream<char> ostringstream; 1541debfc3dSmrg 1551debfc3dSmrg /// Class for @c char mixed input and output memory streams. 1561debfc3dSmrg typedef basic_stringstream<char> stringstream; 1571debfc3dSmrg 1581debfc3dSmrg /// Class for @c char file buffers. 1591debfc3dSmrg typedef basic_filebuf<char> filebuf; 1601debfc3dSmrg 1611debfc3dSmrg /// Class for @c char input file streams. 1621debfc3dSmrg typedef basic_ifstream<char> ifstream; 1631debfc3dSmrg 1641debfc3dSmrg /// Class for @c char output file streams. 1651debfc3dSmrg typedef basic_ofstream<char> ofstream; 1661debfc3dSmrg 1671debfc3dSmrg /// Class for @c char mixed input and output file streams. 1681debfc3dSmrg typedef basic_fstream<char> fstream; 1691debfc3dSmrg 1701debfc3dSmrg#ifdef _GLIBCXX_USE_WCHAR_T 1711debfc3dSmrg /// Base class for @c wchar_t streams. 1721debfc3dSmrg typedef basic_ios<wchar_t> wios; 1731debfc3dSmrg 1741debfc3dSmrg /// Base class for @c wchar_t buffers. 1751debfc3dSmrg typedef basic_streambuf<wchar_t> wstreambuf; 1761debfc3dSmrg 1771debfc3dSmrg /// Base class for @c wchar_t input streams. 1781debfc3dSmrg typedef basic_istream<wchar_t> wistream; 1791debfc3dSmrg 1801debfc3dSmrg /// Base class for @c wchar_t output streams. 1811debfc3dSmrg typedef basic_ostream<wchar_t> wostream; 1821debfc3dSmrg 1831debfc3dSmrg /// Base class for @c wchar_t mixed input and output streams. 1841debfc3dSmrg typedef basic_iostream<wchar_t> wiostream; 1851debfc3dSmrg 1861debfc3dSmrg /// Class for @c wchar_t memory buffers. 1871debfc3dSmrg typedef basic_stringbuf<wchar_t> wstringbuf; 1881debfc3dSmrg 1891debfc3dSmrg /// Class for @c wchar_t input memory streams. 1901debfc3dSmrg typedef basic_istringstream<wchar_t> wistringstream; 1911debfc3dSmrg 1921debfc3dSmrg /// Class for @c wchar_t output memory streams. 1931debfc3dSmrg typedef basic_ostringstream<wchar_t> wostringstream; 1941debfc3dSmrg 1951debfc3dSmrg /// Class for @c wchar_t mixed input and output memory streams. 1961debfc3dSmrg typedef basic_stringstream<wchar_t> wstringstream; 1971debfc3dSmrg 1981debfc3dSmrg /// Class for @c wchar_t file buffers. 1991debfc3dSmrg typedef basic_filebuf<wchar_t> wfilebuf; 2001debfc3dSmrg 2011debfc3dSmrg /// Class for @c wchar_t input file streams. 2021debfc3dSmrg typedef basic_ifstream<wchar_t> wifstream; 2031debfc3dSmrg 2041debfc3dSmrg /// Class for @c wchar_t output file streams. 2051debfc3dSmrg typedef basic_ofstream<wchar_t> wofstream; 2061debfc3dSmrg 2071debfc3dSmrg /// Class for @c wchar_t mixed input and output file streams. 2081debfc3dSmrg typedef basic_fstream<wchar_t> wfstream; 2091debfc3dSmrg#endif 2101debfc3dSmrg /** @} */ 2111debfc3dSmrg 2121debfc3dSmrg_GLIBCXX_END_NAMESPACE_VERSION 2131debfc3dSmrg} // namespace 2141debfc3dSmrg 2151debfc3dSmrg#endif /* _GLIBCXX_IOSFWD */ 216