19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk.
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies.
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted,
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice.
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_TYPEINFO
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_TYPEINFO
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_TYPEINFO)
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_NO_NEW_NEW_HEADER)
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    include <typeinfo.h>
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    if defined (_STLP_HAS_INCLUDE_NEXT)
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      include_next <typeinfo>
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    else
27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      include _STLP_NATIVE_CPP_RUNTIME_HEADER(typeinfo)
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if (defined(_STLP_MSVC) && (_STLP_MSVC >= 1300)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800))
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// In .NET, <typeinfo> actually includes <typeinfo.h>
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef _STLP_OLDSTD_typeinfo
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// if <typeinfo.h> already included, do not import anything
379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined(_STLP_USE_NAMESPACES) && !defined(_STLP_OLDSTD_typeinfo) && \
389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      (defined(_STLP_VENDOR_GLOBAL_EXCEPT_STD) || \
399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block       defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_DEBUG))
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if defined(_STLP_MSVC) && (_STLP_MSVC < 1300) && !defined(_STLP_WCE_NET)
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass bad_cast : public exception {};
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// VC 6 and eVC 4 have type_info in the global namespace
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if (defined(_STLP_MSVC) && (_STLP_MSVC < 1300)) || defined(_STLP_WCE_NET)
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockusing ::type_info;
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    else
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockusing _STLP_VENDOR_EXCEPT_STD::type_info;
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    if !defined (__DMC__)
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockusing _STLP_VENDOR_EXCEPT_STD::bad_typeid;
549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if defined (_STLP_MSVC) && (_STLP_MSVC < 1300) && !defined (_STLP_WCE_NET)
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockusing ::bad_cast;
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    else
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockusing _STLP_VENDOR_EXCEPT_STD::bad_cast;
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_INTERNAL_EXCEPTION
699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    include <stl/_exception.h>
709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (__DMC__)
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct bad_cast : exception {};
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE
779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
80