1 /* /% C++ %/ */ 2 /*********************************************************************** 3 * cint (C/C++ interpreter) 4 ************************************************************************ 5 * Header file Type.h 6 ************************************************************************ 7 * Description: 8 * Extended Run Time Type Identification API 9 ************************************************************************ 10 * Copyright(c) 1995~2003 Masaharu Goto 11 * 12 * For the licensing terms see the file COPYING 13 * 14 ************************************************************************/ 15 16 #ifndef G__TYPEINFOX_H 17 #define G__TYPEINFOX_H 18 19 #ifndef G__API_H 20 #include "Api.h" 21 #endif 22 23 namespace Cint { 24 25 /********************************************************************* 26 * class G__TypeInfo 27 * 28 *********************************************************************/ 29 class 30 #ifndef __CINT__ 31 G__EXPORT 32 #endif 33 // FIXME: Warning, G__TypeReader in src/bc_type.h inherits from G__TypeInfo, we may need a virtual destructor. 34 G__TypeInfo : public G__ClassInfo { 35 friend class G__DataMemberInfo; 36 friend class G__MethodInfo; 37 friend class G__MethodArgInfo; 38 public: 39 ~G__TypeInfo(); 40 G__TypeInfo(const char* typenamein); 41 G__TypeInfo(); 42 void Init(const char* typenamein); 43 #ifndef __MAKECINT__ 44 G__TypeInfo(G__value); 45 void Init(G__value&); 46 void Init(struct G__var_array*, int); 47 G__TypeInfo(const G__TypeInfo&); 48 G__TypeInfo& operator=(const G__TypeInfo&); 49 #endif 50 int operator==(const G__TypeInfo&); 51 int operator!=(const G__TypeInfo&); 52 const char* Name(); 53 const char* TrueName(); 54 int Size() const; 55 long Property(); 56 int IsValid(); 57 void* New(); 58 59 int Typenum() const; 60 int Type() const; 61 int Reftype() const; 62 int Isconst() const; 63 64 G__value Value() const; 65 protected: 66 long type; 67 long typenum; 68 long reftype; 69 long isconst; 70 71 private: 72 int Next(); // prohibit use of next 73 }; 74 75 } // namespace Cint 76 77 using namespace Cint; 78 #endif 79