111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_IOSFWD
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_INTERNAL_IOSFWD
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (__sgi) && !defined (__GNUC__) && !defined (_STANDARD_C_PLUS_PLUS)
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  error This header file requires the -LANG:std option
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// This file provides forward declarations of the most important I/O
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// classes.  Note that almost all of those classes are class templates,
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// with default template arguments.  According to the C++ standard,
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// if a class template is declared more than once in the same scope
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// then only one of those declarations may have default arguments.
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// <iosfwd> contains the same declarations as other headers, and including
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// both <iosfwd> and (say) <iostream> is permitted.  This means that only
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// one header may contain those default template arguments.
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// In this implementation, the declarations in <iosfwd> contain default
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// template arguments.  All of the other I/O headers include <iosfwd>.
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_CHAR_TRAITS_H
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  include <stl/char_traits.h>
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_BEGIN_NAMESPACE
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass ios_base;
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_ios;
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_streambuf;
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_istream;
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_ostream;
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_iostream;
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM( _Traits , char_traits<_CharT>),
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert          _STLP_DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_stringbuf;
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert          _STLP_DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_istringstream;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert          _STLP_DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_ostringstream;
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert          _STLP_DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_stringstream;
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_filebuf;
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_ifstream;
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_ofstream;
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_fstream;
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass istreambuf_iterator;
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, _STLP_DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass ostreambuf_iterator;
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ios<char, char_traits<char> >    ios;
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_NO_WCHAR_T)
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ios<wchar_t, char_traits<wchar_t> > wios;
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Forward declaration of class locale, and of the most important facets.
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass locale;
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Facet>
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct _Use_facet {
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const locale& __loc;
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _Use_facet(const locale& __p_loc) : __loc(__p_loc) {}
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  inline const _Facet& operator *() const;
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  define use_facet *_Use_facet
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertinline const _Facet& use_facet(const locale&);
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT> class ctype;
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT> class ctype_byname;
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT> class collate;
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT> class collate_byname;
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL class ctype<char>;
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL class ctype_byname<char>;
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL class collate<char>;
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL class collate_byname<char>;
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_NO_WCHAR_T)
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL class ctype<wchar_t>;
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL class ctype_byname<wchar_t>;
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL class collate<wchar_t>;
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL class collate_byname<wchar_t>;
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !(defined (__SUNPRO_CC) && __SUNPRO_CC < 0x500 )
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Typedefs for ordinary (narrow-character) streams.
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//_STLP_TEMPLATE_NULL class basic_streambuf<char, char_traits<char> >;
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_istream<char, char_traits<char> >  istream;
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ostream<char, char_traits<char> >  ostream;
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_iostream<char, char_traits<char> > iostream;
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_streambuf<char,char_traits<char> > streambuf;
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_stringbuf<char, char_traits<char>, allocator<char> >     stringbuf;
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_istringstream<char, char_traits<char>, allocator<char> > istringstream;
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ostringstream<char, char_traits<char>, allocator<char> > ostringstream;
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_stringstream<char, char_traits<char>, allocator<char> >  stringstream;
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_filebuf<char, char_traits<char> >  filebuf;
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ifstream<char, char_traits<char> > ifstream;
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ofstream<char, char_traits<char> > ofstream;
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_fstream<char, char_traits<char> >  fstream;
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_NO_WCHAR_T)
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Typedefs for wide-character streams.
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_streambuf<wchar_t, char_traits<wchar_t> > wstreambuf;
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_istream<wchar_t, char_traits<wchar_t> >   wistream;
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ostream<wchar_t, char_traits<wchar_t> >   wostream;
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_iostream<wchar_t, char_traits<wchar_t> >  wiostream;
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >     wstringbuf;
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_istringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wistringstream;
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ostringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wostringstream;
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >  wstringstream;
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_filebuf<wchar_t, char_traits<wchar_t> >  wfilebuf;
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ifstream<wchar_t, char_traits<wchar_t> > wifstream;
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_ofstream<wchar_t, char_traits<wchar_t> > wofstream;
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef basic_fstream<wchar_t, char_traits<wchar_t> >  wfstream;
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_END_NAMESPACE
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Local Variables:
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// mode:C++
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// End:
160