blob: 31f1902e5f59ad5963050a46a5fc610104411733 [file] [log] [blame]
Howard Hinnantc51e1022010-05-11 19:42:16 +00001// -*- C++ -*-
2//===--------------------------- iosfwd -----------------------------------===//
3//
Howard Hinnantc566dc32010-05-11 21:36:01 +00004// The LLVM Compiler Infrastructure
Howard Hinnantc51e1022010-05-11 19:42:16 +00005//
Howard Hinnantee11c312010-11-16 22:09:02 +00006// This file is dual licensed under the MIT and the University of Illinois Open
7// Source Licenses. See LICENSE.TXT for details.
Howard Hinnantc51e1022010-05-11 19:42:16 +00008//
9//===----------------------------------------------------------------------===//
10
11#ifndef _LIBCPP_IOSFWD
12#define _LIBCPP_IOSFWD
13
14/*
15 iosfwd synopsis
16
17namespace std
18{
19
20template<class charT> struct char_traits;
Marshall Clow8732fed2018-12-11 04:35:44 +000021template<> struct char_traits<char>;
22template<> struct char_traits<char8_t>; // C++20
23template<> struct char_traits<char16_t>;
24template<> struct char_traits<char32_t>;
25template<> struct char_traits<wchar_t>;
26
Howard Hinnantc51e1022010-05-11 19:42:16 +000027template<class T> class allocator;
28
Howard Hinnantc8827ba2011-05-13 21:52:40 +000029class ios_base;
Howard Hinnantc51e1022010-05-11 19:42:16 +000030template <class charT, class traits = char_traits<charT> > class basic_ios;
31
32template <class charT, class traits = char_traits<charT> > class basic_streambuf;
33template <class charT, class traits = char_traits<charT> > class basic_istream;
34template <class charT, class traits = char_traits<charT> > class basic_ostream;
35template <class charT, class traits = char_traits<charT> > class basic_iostream;
36
37template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
38 class basic_stringbuf;
39template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
40 class basic_istringstream;
41template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
42 class basic_ostringstream;
43template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
44 class basic_stringstream;
45
46template <class charT, class traits = char_traits<charT> > class basic_filebuf;
47template <class charT, class traits = char_traits<charT> > class basic_ifstream;
48template <class charT, class traits = char_traits<charT> > class basic_ofstream;
49template <class charT, class traits = char_traits<charT> > class basic_fstream;
50
51template <class charT, class traits = char_traits<charT> > class istreambuf_iterator;
52template <class charT, class traits = char_traits<charT> > class ostreambuf_iterator;
53
54typedef basic_ios<char> ios;
55typedef basic_ios<wchar_t> wios;
56
57typedef basic_streambuf<char> streambuf;
58typedef basic_istream<char> istream;
59typedef basic_ostream<char> ostream;
60typedef basic_iostream<char> iostream;
61
62typedef basic_stringbuf<char> stringbuf;
63typedef basic_istringstream<char> istringstream;
64typedef basic_ostringstream<char> ostringstream;
65typedef basic_stringstream<char> stringstream;
66
67typedef basic_filebuf<char> filebuf;
68typedef basic_ifstream<char> ifstream;
69typedef basic_ofstream<char> ofstream;
70typedef basic_fstream<char> fstream;
71
72typedef basic_streambuf<wchar_t> wstreambuf;
73typedef basic_istream<wchar_t> wistream;
74typedef basic_ostream<wchar_t> wostream;
75typedef basic_iostream<wchar_t> wiostream;
76
77typedef basic_stringbuf<wchar_t> wstringbuf;
78typedef basic_istringstream<wchar_t> wistringstream;
79typedef basic_ostringstream<wchar_t> wostringstream;
80typedef basic_stringstream<wchar_t> wstringstream;
81
82typedef basic_filebuf<wchar_t> wfilebuf;
83typedef basic_ifstream<wchar_t> wifstream;
84typedef basic_ofstream<wchar_t> wofstream;
85typedef basic_fstream<wchar_t> wfstream;
86
87template <class state> class fpos;
88typedef fpos<char_traits<char>::state_type> streampos;
89typedef fpos<char_traits<wchar_t>::state_type> wstreampos;
90
91} // std
92
93*/
94
95#include <__config>
Howard Hinnant155c2af2010-05-24 17:49:41 +000096#include <wchar.h> // for mbstate_t
Howard Hinnantc51e1022010-05-11 19:42:16 +000097
Howard Hinnantaaaa52b2011-10-17 20:05:10 +000098#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
Howard Hinnantc51e1022010-05-11 19:42:16 +000099#pragma GCC system_header
Howard Hinnantaaaa52b2011-10-17 20:05:10 +0000100#endif
Howard Hinnantc51e1022010-05-11 19:42:16 +0000101
102_LIBCPP_BEGIN_NAMESPACE_STD
103
Howard Hinnant8331b762013-03-06 23:30:19 +0000104class _LIBCPP_TYPE_VIS ios_base;
Howard Hinnantd4335272011-01-08 20:00:48 +0000105
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000106template<class _CharT> struct _LIBCPP_TEMPLATE_VIS char_traits;
Marshall Clow8732fed2018-12-11 04:35:44 +0000107template<> struct char_traits<char>;
108#ifndef _LIBCPP_NO_HAS_CHAR8_T
109template<> struct char_traits<char8_t>;
110#endif
111template<> struct char_traits<char16_t>;
112template<> struct char_traits<char32_t>;
113template<> struct char_traits<wchar_t>;
114
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000115template<class _Tp> class _LIBCPP_TEMPLATE_VIS allocator;
Howard Hinnantc51e1022010-05-11 19:42:16 +0000116
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000117template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000118 class _LIBCPP_TEMPLATE_VIS basic_ios;
Howard Hinnantc51e1022010-05-11 19:42:16 +0000119
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000120template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000121 class _LIBCPP_TEMPLATE_VIS basic_streambuf;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000122template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000123 class _LIBCPP_TEMPLATE_VIS basic_istream;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000124template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000125 class _LIBCPP_TEMPLATE_VIS basic_ostream;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000126template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000127 class _LIBCPP_TEMPLATE_VIS basic_iostream;
Howard Hinnantc51e1022010-05-11 19:42:16 +0000128
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000129template <class _CharT, class _Traits = char_traits<_CharT>,
130 class _Allocator = allocator<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000131 class _LIBCPP_TEMPLATE_VIS basic_stringbuf;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000132template <class _CharT, class _Traits = char_traits<_CharT>,
133 class _Allocator = allocator<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000134 class _LIBCPP_TEMPLATE_VIS basic_istringstream;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000135template <class _CharT, class _Traits = char_traits<_CharT>,
136 class _Allocator = allocator<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000137 class _LIBCPP_TEMPLATE_VIS basic_ostringstream;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000138template <class _CharT, class _Traits = char_traits<_CharT>,
139 class _Allocator = allocator<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000140 class _LIBCPP_TEMPLATE_VIS basic_stringstream;
Howard Hinnantc51e1022010-05-11 19:42:16 +0000141
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000142template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000143 class _LIBCPP_TEMPLATE_VIS basic_filebuf;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000144template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000145 class _LIBCPP_TEMPLATE_VIS basic_ifstream;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000146template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000147 class _LIBCPP_TEMPLATE_VIS basic_ofstream;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000148template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000149 class _LIBCPP_TEMPLATE_VIS basic_fstream;
Howard Hinnantc51e1022010-05-11 19:42:16 +0000150
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000151template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000152 class _LIBCPP_TEMPLATE_VIS istreambuf_iterator;
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000153template <class _CharT, class _Traits = char_traits<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000154 class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator;
Howard Hinnantc51e1022010-05-11 19:42:16 +0000155
156typedef basic_ios<char> ios;
157typedef basic_ios<wchar_t> wios;
158
159typedef basic_streambuf<char> streambuf;
160typedef basic_istream<char> istream;
161typedef basic_ostream<char> ostream;
162typedef basic_iostream<char> iostream;
163
164typedef basic_stringbuf<char> stringbuf;
165typedef basic_istringstream<char> istringstream;
166typedef basic_ostringstream<char> ostringstream;
167typedef basic_stringstream<char> stringstream;
168
169typedef basic_filebuf<char> filebuf;
170typedef basic_ifstream<char> ifstream;
171typedef basic_ofstream<char> ofstream;
172typedef basic_fstream<char> fstream;
173
174typedef basic_streambuf<wchar_t> wstreambuf;
175typedef basic_istream<wchar_t> wistream;
176typedef basic_ostream<wchar_t> wostream;
177typedef basic_iostream<wchar_t> wiostream;
178
179typedef basic_stringbuf<wchar_t> wstringbuf;
180typedef basic_istringstream<wchar_t> wistringstream;
181typedef basic_ostringstream<wchar_t> wostringstream;
182typedef basic_stringstream<wchar_t> wstringstream;
183
184typedef basic_filebuf<wchar_t> wfilebuf;
185typedef basic_ifstream<wchar_t> wifstream;
186typedef basic_ofstream<wchar_t> wofstream;
187typedef basic_fstream<wchar_t> wfstream;
188
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000189template <class _State> class _LIBCPP_TEMPLATE_VIS fpos;
Howard Hinnant155c2af2010-05-24 17:49:41 +0000190typedef fpos<mbstate_t> streampos;
191typedef fpos<mbstate_t> wstreampos;
Marshall Clow8732fed2018-12-11 04:35:44 +0000192#ifndef _LIBCPP_NO_HAS_CHAR8_T
193typedef fpos<mbstate_t> u8streampos;
194#endif
Howard Hinnantc51e1022010-05-11 19:42:16 +0000195#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
Howard Hinnant155c2af2010-05-24 17:49:41 +0000196typedef fpos<mbstate_t> u16streampos;
197typedef fpos<mbstate_t> u32streampos;
Howard Hinnant3b6579a2010-08-22 00:02:43 +0000198#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
Howard Hinnantc51e1022010-05-11 19:42:16 +0000199
Jonathan Roelofsd3c81f42015-02-03 15:34:17 +0000200#if defined(_NEWLIB_VERSION)
201// On newlib, off_t is 'long int'
202typedef long int streamoff; // for char_traits in <string>
203#else
Howard Hinnantc51e1022010-05-11 19:42:16 +0000204typedef long long streamoff; // for char_traits in <string>
Jonathan Roelofsd3c81f42015-02-03 15:34:17 +0000205#endif
Howard Hinnantc51e1022010-05-11 19:42:16 +0000206
207template <class _CharT, // for <stdexcept>
208 class _Traits = char_traits<_CharT>,
Howard Hinnant5e9669f2010-09-21 16:04:28 +0000209 class _Allocator = allocator<_CharT> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000210 class _LIBCPP_TEMPLATE_VIS basic_string;
Howard Hinnantc51e1022010-05-11 19:42:16 +0000211typedef basic_string<char, char_traits<char>, allocator<char> > string;
212typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;
213
Eric Fiselier876c6862016-02-20 00:19:45 +0000214
215// Include other forward declarations here
216template <class _Tp, class _Alloc = allocator<_Tp> >
Eric Fiselierb5eb1bf2017-01-04 23:56:00 +0000217class _LIBCPP_TEMPLATE_VIS vector;
Eric Fiselier876c6862016-02-20 00:19:45 +0000218
Howard Hinnantc51e1022010-05-11 19:42:16 +0000219_LIBCPP_END_NAMESPACE_STD
220
221#endif // _LIBCPP_IOSFWD