/*
 * Copyright (c) 1999
 * Silicon Graphics Computer Systems, Inc.
 *
 * 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 _STLP_IOSFWD
#define _STLP_IOSFWD

#ifndef _STLP_OUTERMOST_HEADER_ID
#  define _STLP_OUTERMOST_HEADER_ID 0x1034
#  include <stl/_prolog.h>
#endif

#ifdef _STLP_PRAGMA_ONCE
#  pragma once
#endif

#if !defined (_STLP_USE_NO_IOSTREAMS)

#  if defined (_STLP_HAS_WCHAR_T) && !defined (_STLP_INTERNAL_CWCHAR)
#    include <stl/_cwchar.h>
#  endif /* _STLP_HAS_WCHAR_T && !_STLP_CWCHAR */      

#  include <stl/_iosfwd.h>
#else
#  include <stl/char_traits.h>
#endif /* _STLP_USE_NO_IOSTREAMS */

#if (_STLP_OUTERMOST_HEADER_ID == 0x1034)
#  include <stl/_epilog.h>
#  undef _STLP_OUTERMOST_HEADER_ID
#endif

#endif /* _STLP_IOSFWD */

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