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

#ifndef _STLP_OUTERMOST_HEADER_ID
#  define _STLP_OUTERMOST_HEADER_ID 0x473
#  include <stl/_prolog.h>
#elif (_STLP_OUTERMOST_HEADER_ID == 0x473) && !defined (_STLP_DONT_POP_HEADER_ID)
#  define _STLP_DONT_POP_HEADER_ID
#  define _STLP_TYPEINFO
#endif

#if (_STLP_OUTERMOST_HEADER_ID == 0x473) && !defined (_STLP_DONT_POP_HEADER_ID)
#  ifndef _STLP_INTERNAL_TYPEINFO
#    include <stl/_typeinfo.h>
#  endif
#endif

#if (_STLP_OUTERMOST_HEADER_ID != 0x473) || defined (_STLP_DONT_POP_HEADER_ID) || defined (_STLP_IMPORT_VENDOR_STD)
#  if defined (_STLP_HAS_INCLUDE_NEXT)
#    include_next <typeinfo>
#  else
#    include _STLP_NATIVE_CPP_RUNTIME_HEADER(typeinfo)
#  endif
#endif

#if (_STLP_OUTERMOST_HEADER_ID == 0x473)
#  if !defined (_STLP_DONT_POP_HEADER_ID)
#    include <stl/_epilog.h>
#    undef _STLP_OUTERMOST_HEADER_ID
#  else
#    undef _STLP_DONT_POP_HEADER_ID
#  endif
#endif

#endif

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