You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.1 KiB

5 years ago
/*
* 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 <exception>
#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 */