/*
 * 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
# define __STLPORT_IOSFWD

# include <stl_config.h>

# if defined (__STL_USE_NEW_STYLE_HEADERS)
# include <cstddef>
# else
# include <stddef.h>
# endif

# ifdef __STL_USE_NEW_IOSTREAMS 
// # include __STL_C_HEADER(string)
// Include system <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 */


# ifdef __STL_USE_OWN_NAMESPACE
__STL_BEGIN_NAMESPACE
// import everything here
# ifndef __STL_BROKEN_USING_DIRECTIVE

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_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 */

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

# endif /* __STL_USE_NEW_IOSTREAMS */

// now define things one expects to see here
// that defines char_traits or imports std::char_traits
# include <char_traits.h>

// predefinition of stream iterators. 
__STL_BEGIN_NAMESPACE

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

#  ifdef __STL_USE_NEW_IOSTREAMS

#   ifndef __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 /* __STLPORT_IOSFWD */

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