xref: /llvm-project/libcxx/include/__cxx03/iosfwd (revision ce7771902dc50d900de639d499a60486b83f70e0)
1e78f53d1SNikolas Klauser// -*- C++ -*-
2e78f53d1SNikolas Klauser//===----------------------------------------------------------------------===//
3e78f53d1SNikolas Klauser//
4e78f53d1SNikolas Klauser// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5e78f53d1SNikolas Klauser// See https://llvm.org/LICENSE.txt for license information.
6e78f53d1SNikolas Klauser// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7e78f53d1SNikolas Klauser//
8e78f53d1SNikolas Klauser//===----------------------------------------------------------------------===//
9e78f53d1SNikolas Klauser
10*ce777190SNikolas Klauser#ifndef _LIBCPP___CXX03_IOSFWD
11*ce777190SNikolas Klauser#define _LIBCPP___CXX03_IOSFWD
12e78f53d1SNikolas Klauser
13e78f53d1SNikolas Klauser/*
14e78f53d1SNikolas Klauser    iosfwd synopsis
15e78f53d1SNikolas Klauser
16e78f53d1SNikolas Klausernamespace std
17e78f53d1SNikolas Klauser{
18e78f53d1SNikolas Klauser
19e78f53d1SNikolas Klausertemplate<class charT> struct char_traits;
20e78f53d1SNikolas Klausertemplate<>            struct char_traits<char>;
21e78f53d1SNikolas Klausertemplate<>            struct char_traits<char8_t>;  // C++20
22e78f53d1SNikolas Klausertemplate<>            struct char_traits<char16_t>;
23e78f53d1SNikolas Klausertemplate<>            struct char_traits<char32_t>;
24e78f53d1SNikolas Klausertemplate<>            struct char_traits<wchar_t>;
25e78f53d1SNikolas Klauser
26e78f53d1SNikolas Klausertemplate<class T>     class allocator;
27e78f53d1SNikolas Klauser
28e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_ios;
29e78f53d1SNikolas Klauser
30e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_streambuf;
31e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_istream;
32e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_ostream;
33e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_iostream;
34e78f53d1SNikolas Klauser
35e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
36e78f53d1SNikolas Klauser    class basic_stringbuf;
37e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
38e78f53d1SNikolas Klauser    class basic_istringstream;
39e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
40e78f53d1SNikolas Klauser    class basic_ostringstream;
41e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
42e78f53d1SNikolas Klauser    class basic_stringstream;
43e78f53d1SNikolas Klauser
44e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_filebuf;
45e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_ifstream;
46e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_ofstream;
47e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class basic_fstream;
48e78f53d1SNikolas Klauser
49e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class istreambuf_iterator;
50e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT> > class ostreambuf_iterator;
51e78f53d1SNikolas Klauser
52e78f53d1SNikolas Klausertypedef basic_ios<char>              ios;
53e78f53d1SNikolas Klausertypedef basic_ios<wchar_t>           wios;
54e78f53d1SNikolas Klauser
55e78f53d1SNikolas Klausertypedef basic_streambuf<char>        streambuf;
56e78f53d1SNikolas Klausertypedef basic_istream<char>          istream;
57e78f53d1SNikolas Klausertypedef basic_ostream<char>          ostream;
58e78f53d1SNikolas Klausertypedef basic_iostream<char>         iostream;
59e78f53d1SNikolas Klauser
60e78f53d1SNikolas Klausertypedef basic_stringbuf<char>        stringbuf;
61e78f53d1SNikolas Klausertypedef basic_istringstream<char>    istringstream;
62e78f53d1SNikolas Klausertypedef basic_ostringstream<char>    ostringstream;
63e78f53d1SNikolas Klausertypedef basic_stringstream<char>     stringstream;
64e78f53d1SNikolas Klauser
65e78f53d1SNikolas Klausertypedef basic_filebuf<char>          filebuf;
66e78f53d1SNikolas Klausertypedef basic_ifstream<char>         ifstream;
67e78f53d1SNikolas Klausertypedef basic_ofstream<char>         ofstream;
68e78f53d1SNikolas Klausertypedef basic_fstream<char>          fstream;
69e78f53d1SNikolas Klauser
70e78f53d1SNikolas Klausertypedef basic_streambuf<wchar_t>     wstreambuf;
71e78f53d1SNikolas Klausertypedef basic_istream<wchar_t>       wistream;
72e78f53d1SNikolas Klausertypedef basic_ostream<wchar_t>       wostream;
73e78f53d1SNikolas Klausertypedef basic_iostream<wchar_t>      wiostream;
74e78f53d1SNikolas Klauser
75e78f53d1SNikolas Klausertypedef basic_stringbuf<wchar_t>     wstringbuf;
76e78f53d1SNikolas Klausertypedef basic_istringstream<wchar_t> wistringstream;
77e78f53d1SNikolas Klausertypedef basic_ostringstream<wchar_t> wostringstream;
78e78f53d1SNikolas Klausertypedef basic_stringstream<wchar_t>  wstringstream;
79e78f53d1SNikolas Klauser
80e78f53d1SNikolas Klausertypedef basic_filebuf<wchar_t>       wfilebuf;
81e78f53d1SNikolas Klausertypedef basic_ifstream<wchar_t>      wifstream;
82e78f53d1SNikolas Klausertypedef basic_ofstream<wchar_t>      wofstream;
83e78f53d1SNikolas Klausertypedef basic_fstream<wchar_t>       wfstream;
84e78f53d1SNikolas Klauser
85e78f53d1SNikolas Klausertemplate <class state> class fpos;
86e78f53d1SNikolas Klauserusing streampos  = fpos<char_traits<char>::state_type>;
87e78f53d1SNikolas Klauserusing wstreampos = fpos<char_traits<wchar_t>::state_type>;
88e78f53d1SNikolas Klauserusing u8streampos = fpos<char_traits<char8_t>::state_type>; // C++20
89e78f53d1SNikolas Klauserusing u16streampos = fpos<char_traits<char16_t>::state_type>;
90e78f53d1SNikolas Klauserusing u32streampos = fpos<char_traits<char32_t>::state_type>;
91e78f53d1SNikolas Klauser
92e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT>>
93e78f53d1SNikolas Klauser    class basic_syncbuf;                          // C++20
94e78f53d1SNikolas Klauser
95e78f53d1SNikolas Klauserusing syncbuf = basic_syncbuf<char>;              // C++20
96e78f53d1SNikolas Klauserusing wsyncbuf = basic_syncbuf<wchar_t>;          // C++20
97e78f53d1SNikolas Klauser
98e78f53d1SNikolas Klausertemplate <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT>>
99e78f53d1SNikolas Klauser    class basic_osyncstream;                      // C++20
100e78f53d1SNikolas Klauser
101e78f53d1SNikolas Klauserusing osyncstream = basic_osyncstream<char>;      // C++20
102e78f53d1SNikolas Klauserusing wosyncstream = basic_osyncstream<wchar_t>;  // C++20
103e78f53d1SNikolas Klauser
104e78f53d1SNikolas Klauser}  // std
105e78f53d1SNikolas Klauser
106e78f53d1SNikolas Klauser*/
107e78f53d1SNikolas Klauser
10873fbae83SNikolas Klauser#include <__cxx03/__config>
10973fbae83SNikolas Klauser#include <__cxx03/__fwd/fstream.h>
11073fbae83SNikolas Klauser#include <__cxx03/__fwd/ios.h>
11173fbae83SNikolas Klauser#include <__cxx03/__fwd/istream.h>
11273fbae83SNikolas Klauser#include <__cxx03/__fwd/memory.h>
11373fbae83SNikolas Klauser#include <__cxx03/__fwd/ostream.h>
11473fbae83SNikolas Klauser#include <__cxx03/__fwd/sstream.h>
11573fbae83SNikolas Klauser#include <__cxx03/__fwd/streambuf.h>
11673fbae83SNikolas Klauser#include <__cxx03/__fwd/string.h>
11773fbae83SNikolas Klauser#include <__cxx03/__std_mbstate_t.h>
11873fbae83SNikolas Klauser#include <__cxx03/version>
119e78f53d1SNikolas Klauser
120e78f53d1SNikolas Klauser#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
121e78f53d1SNikolas Klauser#  pragma GCC system_header
122e78f53d1SNikolas Klauser#endif
123e78f53d1SNikolas Klauser
124e78f53d1SNikolas Klauser_LIBCPP_BEGIN_NAMESPACE_STD
125e78f53d1SNikolas Klauser
126e78f53d1SNikolas Klausertemplate <class _CharT, class _Traits = char_traits<_CharT> >
127e78f53d1SNikolas Klauserclass _LIBCPP_TEMPLATE_VIS istreambuf_iterator;
128e78f53d1SNikolas Klausertemplate <class _CharT, class _Traits = char_traits<_CharT> >
129e78f53d1SNikolas Klauserclass _LIBCPP_TEMPLATE_VIS ostreambuf_iterator;
130e78f53d1SNikolas Klauser
131e78f53d1SNikolas Klausertemplate <class _State>
132e78f53d1SNikolas Klauserclass _LIBCPP_TEMPLATE_VIS fpos;
133e78f53d1SNikolas Klausertypedef fpos<mbstate_t> streampos;
134e78f53d1SNikolas Klauser#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
135e78f53d1SNikolas Klausertypedef fpos<mbstate_t> wstreampos;
136e78f53d1SNikolas Klauser#endif
137e78f53d1SNikolas Klauser#ifndef _LIBCPP_HAS_NO_CHAR8_T
138e78f53d1SNikolas Klausertypedef fpos<mbstate_t> u8streampos;
139e78f53d1SNikolas Klauser#endif
140e78f53d1SNikolas Klausertypedef fpos<mbstate_t> u16streampos;
141e78f53d1SNikolas Klausertypedef fpos<mbstate_t> u32streampos;
142e78f53d1SNikolas Klauser
143e78f53d1SNikolas Klauser#if _LIBCPP_STD_VER >= 20 && !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_SYNCSTREAM)
144e78f53d1SNikolas Klauser
145e78f53d1SNikolas Klausertemplate <class _CharT, class _Traits = char_traits<_CharT>, class _Allocator = allocator<_CharT>>
146e78f53d1SNikolas Klauserclass basic_syncbuf;
147e78f53d1SNikolas Klauser
148e78f53d1SNikolas Klauserusing syncbuf = basic_syncbuf<char>;
149e78f53d1SNikolas Klauser#  ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
150e78f53d1SNikolas Klauserusing wsyncbuf = basic_syncbuf<wchar_t>;
151e78f53d1SNikolas Klauser#  endif
152e78f53d1SNikolas Klauser
153e78f53d1SNikolas Klausertemplate <class _CharT, class _Traits = char_traits<_CharT>, class _Allocator = allocator<_CharT>>
154e78f53d1SNikolas Klauserclass basic_osyncstream;
155e78f53d1SNikolas Klauser
156e78f53d1SNikolas Klauserusing osyncstream = basic_osyncstream<char>;
157e78f53d1SNikolas Klauser#  ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
158e78f53d1SNikolas Klauserusing wosyncstream = basic_osyncstream<wchar_t>;
159e78f53d1SNikolas Klauser#  endif
160e78f53d1SNikolas Klauser
161e78f53d1SNikolas Klauser#endif // _LIBCPP_STD_VER >= 20 && !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_SYNCSTREAM)
162e78f53d1SNikolas Klauser
163e78f53d1SNikolas Klausertemplate <class _CharT, class _Traits>
164e78f53d1SNikolas Klauserclass __save_flags {
165e78f53d1SNikolas Klauser  typedef basic_ios<_CharT, _Traits> __stream_type;
166e78f53d1SNikolas Klauser  typedef typename __stream_type::fmtflags fmtflags;
167e78f53d1SNikolas Klauser
168e78f53d1SNikolas Klauser  __stream_type& __stream_;
169e78f53d1SNikolas Klauser  fmtflags __fmtflags_;
170e78f53d1SNikolas Klauser  _CharT __fill_;
171e78f53d1SNikolas Klauser
172e78f53d1SNikolas Klauserpublic:
173e78f53d1SNikolas Klauser  __save_flags(const __save_flags&)            = delete;
174e78f53d1SNikolas Klauser  __save_flags& operator=(const __save_flags&) = delete;
175e78f53d1SNikolas Klauser
176e78f53d1SNikolas Klauser  _LIBCPP_HIDE_FROM_ABI explicit __save_flags(__stream_type& __stream)
177e78f53d1SNikolas Klauser      : __stream_(__stream), __fmtflags_(__stream.flags()), __fill_(__stream.fill()) {}
178e78f53d1SNikolas Klauser  _LIBCPP_HIDE_FROM_ABI ~__save_flags() {
179e78f53d1SNikolas Klauser    __stream_.flags(__fmtflags_);
180e78f53d1SNikolas Klauser    __stream_.fill(__fill_);
181e78f53d1SNikolas Klauser  }
182e78f53d1SNikolas Klauser};
183e78f53d1SNikolas Klauser
184e78f53d1SNikolas Klauser_LIBCPP_END_NAMESPACE_STD
185e78f53d1SNikolas Klauser
186*ce777190SNikolas Klauser#endif // _LIBCPP___CXX03_IOSFWD
187