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