Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. // <iosfwd> Forward declarations -*- C++ -*-
  2.  
  3. // Copyright (C) 1997-2015 Free Software Foundation, Inc.
  4. //
  5. // This file is part of the GNU ISO C++ Library.  This library is free
  6. // software; you can redistribute it and/or modify it under the
  7. // terms of the GNU General Public License as published by the
  8. // Free Software Foundation; either version 3, or (at your option)
  9. // any later version.
  10.  
  11. // This library is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15.  
  16. // Under Section 7 of GPL version 3, you are granted additional
  17. // permissions described in the GCC Runtime Library Exception, version
  18. // 3.1, as published by the Free Software Foundation.
  19.  
  20. // You should have received a copy of the GNU General Public License and
  21. // a copy of the GCC Runtime Library Exception along with this program;
  22. // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23. // <http://www.gnu.org/licenses/>.
  24.  
  25. /** @file include/iosfwd
  26.  *  This is a Standard C++ Library header.
  27.  */
  28.  
  29. //
  30. // ISO C++ 14882: 27.2  Forward declarations
  31. //
  32.  
  33. #ifndef _GLIBCXX_IOSFWD
  34. #define _GLIBCXX_IOSFWD 1
  35.  
  36. #pragma GCC system_header
  37.  
  38. #include <bits/c++config.h>
  39. #include <bits/stringfwd.h>     // For string forward declarations.
  40. #include <bits/postypes.h>
  41.  
  42. namespace std _GLIBCXX_VISIBILITY(default)
  43. {
  44. _GLIBCXX_BEGIN_NAMESPACE_VERSION
  45.  
  46.   /**
  47.    *  @defgroup io I/O
  48.    *
  49.    *  Nearly all of the I/O classes are parameterized on the type of
  50.    *  characters they read and write.  (The major exception is ios_base at
  51.    *  the top of the hierarchy.)  This is a change from pre-Standard
  52.    *  streams, which were not templates.
  53.    *
  54.    *  For ease of use and compatibility, all of the basic_* I/O-related
  55.    *  classes are given typedef names for both of the builtin character
  56.    *  widths (wide and narrow).  The typedefs are the same as the
  57.    *  pre-Standard names, for example:
  58.    *
  59.    *  @code
  60.    *     typedef basic_ifstream<char>  ifstream;
  61.    *  @endcode
  62.    *
  63.    *  Because properly forward-declaring these classes can be difficult, you
  64.    *  should not do it yourself.  Instead, include the &lt;iosfwd&gt;
  65.    *  header, which contains only declarations of all the I/O classes as
  66.    *  well as the typedefs.  Trying to forward-declare the typedefs
  67.    *  themselves (e.g., <code>class ostream;</code>) is not valid ISO C++.
  68.    *
  69.    *  For more specific declarations, see
  70.    *  https://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html#std.io.objects
  71.    *
  72.    *  @{
  73.   */
  74.   class ios_base;
  75.  
  76.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  77.     class basic_ios;
  78.  
  79.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  80.     class basic_streambuf;
  81.  
  82.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  83.     class basic_istream;
  84.  
  85.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  86.     class basic_ostream;
  87.  
  88.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  89.     class basic_iostream;
  90.  
  91.  
  92. _GLIBCXX_BEGIN_NAMESPACE_CXX11
  93.  
  94.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  95.             typename _Alloc = allocator<_CharT> >
  96.     class basic_stringbuf;
  97.  
  98.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  99.            typename _Alloc = allocator<_CharT> >
  100.     class basic_istringstream;
  101.  
  102.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  103.            typename _Alloc = allocator<_CharT> >
  104.     class basic_ostringstream;
  105.  
  106.   template<typename _CharT, typename _Traits = char_traits<_CharT>,
  107.            typename _Alloc = allocator<_CharT> >
  108.     class basic_stringstream;
  109.  
  110. _GLIBCXX_END_NAMESPACE_CXX11
  111.  
  112.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  113.     class basic_filebuf;
  114.  
  115.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  116.     class basic_ifstream;
  117.  
  118.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  119.     class basic_ofstream;
  120.  
  121.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  122.     class basic_fstream;
  123.  
  124.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  125.     class istreambuf_iterator;
  126.  
  127.   template<typename _CharT, typename _Traits = char_traits<_CharT> >
  128.     class ostreambuf_iterator;
  129.  
  130.  
  131.   /// Base class for @c char streams.
  132.   typedef basic_ios<char>               ios;
  133.  
  134.   /// Base class for @c char buffers.
  135.   typedef basic_streambuf<char>         streambuf;
  136.  
  137.   /// Base class for @c char input streams.
  138.   typedef basic_istream<char>           istream;
  139.  
  140.   /// Base class for @c char output streams.
  141.   typedef basic_ostream<char>           ostream;
  142.  
  143.   /// Base class for @c char mixed input and output streams.
  144.   typedef basic_iostream<char>          iostream;
  145.  
  146.   /// Class for @c char memory buffers.
  147.   typedef basic_stringbuf<char>         stringbuf;
  148.  
  149.   /// Class for @c char input memory streams.
  150.   typedef basic_istringstream<char>     istringstream;
  151.  
  152.   /// Class for @c char output memory streams.
  153.   typedef basic_ostringstream<char>     ostringstream;
  154.  
  155.   /// Class for @c char mixed input and output memory streams.
  156.   typedef basic_stringstream<char>      stringstream;
  157.  
  158.   /// Class for @c char file buffers.
  159.   typedef basic_filebuf<char>           filebuf;
  160.  
  161.   /// Class for @c char input file streams.
  162.   typedef basic_ifstream<char>          ifstream;
  163.  
  164.   /// Class for @c char output file streams.
  165.   typedef basic_ofstream<char>          ofstream;
  166.  
  167.   /// Class for @c char mixed input and output file streams.
  168.   typedef basic_fstream<char>           fstream;
  169.  
  170. #ifdef _GLIBCXX_USE_WCHAR_T
  171.   /// Base class for @c wchar_t streams.
  172.   typedef basic_ios<wchar_t>            wios;
  173.  
  174.   /// Base class for @c wchar_t buffers.
  175.   typedef basic_streambuf<wchar_t>      wstreambuf;
  176.  
  177.   /// Base class for @c wchar_t input streams.
  178.   typedef basic_istream<wchar_t>        wistream;
  179.  
  180.   /// Base class for @c wchar_t output streams.
  181.   typedef basic_ostream<wchar_t>        wostream;
  182.  
  183.   /// Base class for @c wchar_t mixed input and output streams.
  184.   typedef basic_iostream<wchar_t>       wiostream;
  185.  
  186.   /// Class for @c wchar_t memory buffers.
  187.   typedef basic_stringbuf<wchar_t>      wstringbuf;
  188.  
  189.   /// Class for @c wchar_t input memory streams.
  190.   typedef basic_istringstream<wchar_t>  wistringstream;
  191.  
  192.   /// Class for @c wchar_t output memory streams.
  193.   typedef basic_ostringstream<wchar_t>  wostringstream;
  194.  
  195.   /// Class for @c wchar_t mixed input and output memory streams.
  196.   typedef basic_stringstream<wchar_t>   wstringstream;
  197.  
  198.   /// Class for @c wchar_t file buffers.
  199.   typedef basic_filebuf<wchar_t>        wfilebuf;
  200.  
  201.   /// Class for @c wchar_t input file streams.
  202.   typedef basic_ifstream<wchar_t>       wifstream;
  203.  
  204.   /// Class for @c wchar_t output file streams.
  205.   typedef basic_ofstream<wchar_t>       wofstream;
  206.  
  207.   /// Class for @c wchar_t mixed input and output file streams.
  208.   typedef basic_fstream<wchar_t>        wfstream;
  209. #endif
  210.   /** @}  */
  211.  
  212. _GLIBCXX_END_NAMESPACE_VERSION
  213. } // namespace
  214.  
  215. #endif /* _GLIBCXX_IOSFWD */
  216.