/*
 * Copyright (c) 1999 
 * Boris Fomitchev
 *
 * This material is provided "as is", with absolutely no warranty expressed
 * or implied. Any use is at your own risk.
 *
 * Permission to use or copy this software for any purpose is hereby granted 
 * without fee, provided the above notices are retained on all copies.
 * Permission to modify the code and to distribute modified code is granted,
 * provided the above notices are retained, and a notice that the code was
 * modified is included with the above copyright notice.
 *
 */

#ifndef __STLPORT_IOSFWD

#ifndef __STL_CONFIG_H
#include <stl_config.h>
#endif


# ifndef __STLPORT_CSTDDEF
#  include <cstddef> /* wchar_t */
# endif

# ifndef __STLPORT_CSTRING
#  include <cstring>
# endif


# if defined (__STL_USE_NEW_IOSTREAMS) || defined (__IN_STLPORT_IOSFWD_OLD )
// prevent from cycle inclusion
#   define __STLPORT_IOSFWD
#   include __STL_NATIVE_HEADER(iosfwd)

#  ifdef __MWERKS__
// MSL leaves a few important things out of <iosfwd>.
// We expect this to be fixed in later MSL implementations
# include <mcompile.h>
# if !defined( __MSL_CPP__ ) || __MSL_CPP__ <= 0x4105

// A few things that seem to be missing from CodeWarrior's <iosfwd>
#    ifdef MSIPL_USING_NAMESPACE
namespace std {
#    endif

template <class charT, class traits = char_traits<charT> >
  class istreambuf_iterator;

template <class charT, class traits = char_traits<charT> >
  class ostreambuf_iterator;

#  if !defined( __MSL_CPP__ ) || __MSL_CPP__ < 0x4105
class streampos;
#  endif

#  ifdef MSIPL_USING_NAMESPACE
	} // namespace std
#    endif

#   endif    /* __MSL__ version */
#  endif  /* MWERKS */


# if defined (__STL_USE_OWN_NAMESPACE)
__STL_BEGIN_NAMESPACE
// import everything here
# ifndef __STL_BROKEN_USING_DIRECTIVE

using __STL_VENDOR_STD::char_traits;
using __STL_VENDOR_STD::basic_ios;
using __STL_VENDOR_STD::basic_streambuf;
using __STL_VENDOR_STD::basic_istream;
using __STL_VENDOR_STD::basic_ostream;
using __STL_VENDOR_STD::basic_iostream;
using __STL_VENDOR_STD::basic_stringbuf;
using __STL_VENDOR_STD::basic_istringstream;
using __STL_VENDOR_STD::basic_ostringstream;
using __STL_VENDOR_STD::basic_stringstream;
using __STL_VENDOR_STD::basic_filebuf;
using __STL_VENDOR_STD::basic_ifstream;
using __STL_VENDOR_STD::basic_ofstream;
using __STL_VENDOR_STD::basic_fstream;
using __STL_VENDOR_STD::fpos;

# endif

using __STL_VENDOR_STD::ios;
using __STL_VENDOR_STD::streambuf;
using __STL_VENDOR_STD::istream;
using __STL_VENDOR_STD::ostream;
using __STL_VENDOR_STD::iostream;
using __STL_VENDOR_STD::stringbuf;
using __STL_VENDOR_STD::istringstream;
using __STL_VENDOR_STD::ostringstream;
using __STL_VENDOR_STD::stringstream;
using __STL_VENDOR_STD::filebuf;
using __STL_VENDOR_STD::ifstream;
using __STL_VENDOR_STD::ofstream;
using __STL_VENDOR_STD::fstream;

using __STL_VENDOR_STD::streampos;
using __STL_VENDOR_STD::streamoff;

# ifdef __STL_HAS_WCHAR_T
using __STL_VENDOR_STD::wios;
using __STL_VENDOR_STD::wstreambuf;
using __STL_VENDOR_STD::wistream;
using __STL_VENDOR_STD::wostream;
using __STL_VENDOR_STD::wiostream;
using __STL_VENDOR_STD::wstringbuf;
using __STL_VENDOR_STD::wistringstream;
using __STL_VENDOR_STD::wostringstream;
using __STL_VENDOR_STD::wstringstream;
using __STL_VENDOR_STD::wfilebuf;
using __STL_VENDOR_STD::wifstream;
using __STL_VENDOR_STD::wofstream;
using __STL_VENDOR_STD::wfstream;
using __STL_VENDOR_STD::wstreampos;
# endif

__STL_END_NAMESPACE
# endif

# else /* __STL_USE_NEW_IOSTREAMS */

#  define __IN_STLPORT_IOSFWD_OLD
// use old-style iostreams
#  include <iostream.h>
# undef  __IN_STLPORT_IOSFWD_OLD

# endif /* __STL_USE_NEW_IOSTREAMS */


#ifndef __SGI_STL_INTERNAL_FUNCTION_H
# include <stl_function.h>
#endif

// now define things one expects to see here

#ifndef __SGI_STL_CHAR_TRAITS_H
// that defines char_traits or imports std::char_traits
# include <char_traits.h>
#endif

#if !defined (__IN_STLPORT_IOSFWD_OLD )
// predefinition of stream iterators. 
__STL_BEGIN_NAMESPACE

# ifdef __STL_USE_ABBREVS
#  define istream_iterator               _iS__It
#  define ostream_iterator               _oS__It
# endif

#  if defined (__STL_USE_NEW_IOSTREAMS) && defined (__STL_USE_OWN_NAMESPACE)

#   if !defined (__STL_LIMITED_DEFAULT_TEMPLATES)

template<class _CharT, class _Traits= char_traits<_CharT> >
class ostreambuf_iterator;
template<class _CharT, class _Traits = char_traits<_CharT> >
class istreambuf_iterator;

#   else

template<class _CharT, class _Traits> class ostreambuf_iterator;
template<class _CharT, class _Traits> class istreambuf_iterator;

#   endif /* __STL_LIMITED_DEFAULT_TEMPLATES */

#  endif /* __STL_USE_NEW_IOSTREAMS */
__STL_END_NAMESPACE
# endif /* defined (__IN_STLPORT_IOSFWD_OLD ) */

# ifndef __STLPORT_IOSFWD
#  define __STLPORT_IOSFWD
# endif

#endif /* __STLPORT_IOSFWD */

// Local Variables:
// mode:C++
// End:
