// RTTI support for C++ #ifndef _TYPEINFO #define _TYPEINFO #include extern "C++" { class type_info { public: virtual ~type_info(); int before(const type_info &) const; const char *name() const; const char *raw_name() const; int operator==(const type_info &) const; int operator!=(const type_info &) const; private: char *_name; char _mangled[32]; type_info(const type_info &); type_info &operator=(const type_info &); }; class bad_cast : public exception { public: bad_cast(const char *name = "bad cast") throw() : exception(name) { } bad_cast(const char * const *) throw(); bad_cast(const char * const &) throw(); virtual ~bad_cast() throw() { } }; class bad_typeid : public exception { public: bad_typeid(const char *name = "bad typeid") throw() : exception(name) { } virtual ~bad_typeid() throw() { } }; class __non_rtti_object : public bad_typeid { public: __non_rtti_object(const char *name) throw() : bad_typeid(name) { } virtual ~__non_rtti_object() throw() { } }; namespace std { using ::type_info; using ::bad_cast; using ::bad_typeid; } // namespace std } // extern "C++" #endif