/* * C++ Library file typeinfo * Copyright 1997 ARM Limited. All rights reserved. */ /* * RCS $Revision: 177844 $ * Checkin $Date: 2012-11-21 11:51:12 +0000 (Wed, 21 Nov 2012) $ * Revising $Author: pwright $ */ /* Edison Design Group, 1995-2005. */ /* typeinfo.h -- Include file for type information (18.5.1) */ #ifndef _TYPEINFO #define _TYPEINFO #define __ARMCLIB_VERSION 5050106 #ifndef __EXCEPTION_INCLUDED #include #endif /* __EXCEPTION_INCLUDED */ namespace std { /* The following pragma is used so that the compiler knows that this definition of type_info is the one that corresponds to the type returned by typeid. */ #pragma define_type_info class type_info { public: virtual ~type_info(); bool operator==(const type_info&) const; bool operator!=(const type_info&) const; bool before(const type_info&) const; const char* name() const; protected: /* Protected instead of private: core issue 252 */ static void operator delete(void*) { /* nothing */ } private: type_info& operator=(const type_info&); // Not actually defined #if 0 #else /* 0 */ protected: // Protected instead of private to suppress the "no accessible // constructor" warning #endif /* 0 */ type_info(const type_info&); // Not actually defined private: const char *__type_name; }; class bad_cast : public exception { public: bad_cast() throw(); bad_cast(const bad_cast&) throw(); bad_cast& operator=(const bad_cast&) throw(); virtual ~bad_cast() throw(); virtual const char* what() const throw(); }; class bad_typeid : public exception { public: bad_typeid() throw(); bad_typeid(const bad_typeid&) throw(); bad_typeid& operator=(const bad_typeid&) throw(); virtual ~bad_typeid() throw(); virtual const char* what() const throw(); }; } /* namespace std */ #ifdef __EDG_IMPLICIT_USING_STD /* Implicitly include a using directive for the STD namespace when this preprocessing flag is TRUE. */ using namespace ::std; #endif /* ifdef __EDG_IMPLICIT_USING_STD */ #endif /* _TYPEINFO */