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

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

#if (_STLP_OUTERMOST_HEADER_ID == 0x1050) && \
   !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD))
#  include <stl/_ioserr.h>

#  ifndef _STLP_INTERNAL_OSTREAM
#    include <stl/_ostream.h>
#  endif
#endif

#if (_STLP_OUTERMOST_HEADER_ID != 0x1050) || defined (_STLP_IMPORT_VENDOR_STD)
#  if defined (_STLP_HAS_INCLUDE_NEXT)
#    include_next <ostream>
#  else
#    include _STLP_NATIVE_HEADER(ostream)
#  endif
#endif

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

#endif /* _STLP_OSTREAM */

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