1// -*- C++ -*- 2//===--------------------------- iosfwd -----------------------------------===// 3// 4// The LLVM Compiler Infrastructure 5// 6// This file is dual licensed under the MIT and the University of Illinois Open 7// Source Licenses. See LICENSE.TXT for details. 8// 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; 21template<> 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 27template<class T> class allocator; 28 29class ios_base; 30template <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> 96#include <wchar.h> // for mbstate_t 97 98#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 99#pragma GCC system_header 100#endif 101 102_LIBCPP_BEGIN_NAMESPACE_STD 103 104class _LIBCPP_TYPE_VIS ios_base; 105 106template<class _CharT> struct _LIBCPP_TEMPLATE_VIS char_traits; 107template<> 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 115template<class _Tp> class _LIBCPP_TEMPLATE_VIS allocator; 116 117template <class _CharT, class _Traits = char_traits<_CharT> > 118 class _LIBCPP_TEMPLATE_VIS basic_ios; 119 120template <class _CharT, class _Traits = char_traits<_CharT> > 121 class _LIBCPP_TEMPLATE_VIS basic_streambuf; 122template <class _CharT, class _Traits = char_traits<_CharT> > 123 class _LIBCPP_TEMPLATE_VIS basic_istream; 124template <class _CharT, class _Traits = char_traits<_CharT> > 125 class _LIBCPP_TEMPLATE_VIS basic_ostream; 126template <class _CharT, class _Traits = char_traits<_CharT> > 127 class _LIBCPP_TEMPLATE_VIS basic_iostream; 128 129template <class _CharT, class _Traits = char_traits<_CharT>, 130 class _Allocator = allocator<_CharT> > 131 class _LIBCPP_TEMPLATE_VIS basic_stringbuf; 132template <class _CharT, class _Traits = char_traits<_CharT>, 133 class _Allocator = allocator<_CharT> > 134 class _LIBCPP_TEMPLATE_VIS basic_istringstream; 135template <class _CharT, class _Traits = char_traits<_CharT>, 136 class _Allocator = allocator<_CharT> > 137 class _LIBCPP_TEMPLATE_VIS basic_ostringstream; 138template <class _CharT, class _Traits = char_traits<_CharT>, 139 class _Allocator = allocator<_CharT> > 140 class _LIBCPP_TEMPLATE_VIS basic_stringstream; 141 142template <class _CharT, class _Traits = char_traits<_CharT> > 143 class _LIBCPP_TEMPLATE_VIS basic_filebuf; 144template <class _CharT, class _Traits = char_traits<_CharT> > 145 class _LIBCPP_TEMPLATE_VIS basic_ifstream; 146template <class _CharT, class _Traits = char_traits<_CharT> > 147 class _LIBCPP_TEMPLATE_VIS basic_ofstream; 148template <class _CharT, class _Traits = char_traits<_CharT> > 149 class _LIBCPP_TEMPLATE_VIS basic_fstream; 150 151template <class _CharT, class _Traits = char_traits<_CharT> > 152 class _LIBCPP_TEMPLATE_VIS istreambuf_iterator; 153template <class _CharT, class _Traits = char_traits<_CharT> > 154 class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator; 155 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 189template <class _State> class _LIBCPP_TEMPLATE_VIS fpos; 190typedef fpos<mbstate_t> streampos; 191typedef fpos<mbstate_t> wstreampos; 192#ifndef _LIBCPP_NO_HAS_CHAR8_T 193typedef fpos<mbstate_t> u8streampos; 194#endif 195#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS 196typedef fpos<mbstate_t> u16streampos; 197typedef fpos<mbstate_t> u32streampos; 198#endif // _LIBCPP_HAS_NO_UNICODE_CHARS 199 200#if defined(_NEWLIB_VERSION) 201// On newlib, off_t is 'long int' 202typedef long int streamoff; // for char_traits in <string> 203#else 204typedef long long streamoff; // for char_traits in <string> 205#endif 206 207template <class _CharT, // for <stdexcept> 208 class _Traits = char_traits<_CharT>, 209 class _Allocator = allocator<_CharT> > 210 class _LIBCPP_TEMPLATE_VIS basic_string; 211typedef basic_string<char, char_traits<char>, allocator<char> > string; 212typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring; 213 214 215// Include other forward declarations here 216template <class _Tp, class _Alloc = allocator<_Tp> > 217class _LIBCPP_TEMPLATE_VIS vector; 218 219_LIBCPP_END_NAMESPACE_STD 220 221#endif // _LIBCPP_IOSFWD 222