1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
// RTTI support for -*- C++ -*-
// Copyright (C) 1994, 1995, 1996 Free Software Foundation
#ifndef __TYPEINFO__
#define __TYPEINFO__
#include <exception>
extern "C++" {
#if 0
namespace std {
#endif
class type_info {
private:
// assigning type_info is not supported. made private.
type_info& operator= (const type_info&);
type_info (const type_info&);
protected:
type_info (const char *n): _name (n) { }
const char *_name;
public:
// destructor
virtual ~type_info ();
bool before (const type_info& arg) const;
const char* name () const
{ return _name; }
bool operator== (const type_info& arg) const;
bool operator!= (const type_info& arg) const;
};
// We can't rely on common symbols being shared between translation units
// under Windows. Sigh.
#ifndef _WIN32
inline bool type_info::
operator== (const type_info& arg) const
{
return &arg == this;
}
inline bool type_info::
operator!= (const type_info& arg) const
{
return &arg != this;
}
#endif
class bad_cast : public exception {
public:
bad_cast() { }
virtual ~bad_cast() { }
};
class bad_typeid : public exception {
public:
bad_typeid () { }
virtual ~bad_typeid () { }
};
#if 0
} // namespace std
#endif
} // extern "C++"
#endif
|