1 /* /% C++ %/ */ 2 /*********************************************************************** 3 * cint (C/C++ interpreter) 4 ************************************************************************ 5 * Header file Method.h 6 ************************************************************************ 7 * Description: 8 * Extended Run Time Type Identification API 9 ************************************************************************ 10 * Copyright(c) 1995~2005 Masaharu Goto 11 * 12 * For the licensing terms see the file COPYING 13 * 14 ************************************************************************/ 15 16 17 #ifndef G__METHODINFO_H 18 #define G__METHODINFO_H 19 20 #ifndef G__API_H 21 #include "Api.h" 22 #endif 23 24 namespace Cint { 25 26 /********************************************************************* 27 * class G__MethodInfo 28 * 29 * 30 *********************************************************************/ 31 class 32 #ifndef __CINT__ 33 G__EXPORT 34 #endif 35 G__MethodInfo { 36 friend class G__MethodArgInfo; 37 public: 38 ~G__MethodInfo() { if (memberOf != belongingclass) delete memberOf; } 39 G__MethodInfo() 40 : handle(0), index(0), usingIndex(0), belongingclass(NULL), memberOf(0), type() 41 { Init(); } 42 G__MethodInfo(G__ClassInfo &a) 43 : handle(0), index(0), usingIndex(0), belongingclass(NULL), memberOf(0), type() 44 { Init(a); } 45 G__MethodInfo(const G__MethodInfo& mi) 46 : handle(mi.handle), index(mi.index), usingIndex(mi.usingIndex), 47 belongingclass(mi.belongingclass), memberOf(0), type(mi.type) {} 48 G__MethodInfo& operator=(const G__MethodInfo& mi) { 49 if (&mi != this) { 50 handle=mi.handle; index=mi.index; usingIndex=mi.usingIndex; 51 belongingclass=mi.belongingclass; memberOf=NULL; type=mi.type; 52 } 53 return *this;} 54 55 void Init(); 56 void Init(G__ClassInfo &a); 57 void Init(long handlein,long indexin,G__ClassInfo *belongingclassin); 58 void Init(G__ClassInfo *belongingclassin,long funcpage,long indexin); 59 60 const char *Name() ; 61 #ifndef __MAKECINT__ 62 int Hash() ; 63 struct G__ifunc_table* ifunc(); 64 #endif 65 long Handle() { return(handle); } 66 int Index() { return ((int)index); } 67 const char *Title() ; 68 G__TypeInfo* Type() { return(&type); } 69 long Property(); 70 int NArg(); 71 int NDefaultArg(); 72 int HasVarArgs(); 73 G__InterfaceMethod InterfaceMethod(); 74 #ifdef G__ASM_WHOLEFUNC 75 struct G__bytecodefunc *GetBytecode(); 76 #endif 77 G__DataMemberInfo GetLocalVariable(); /* ON1163 */ 78 #ifdef G__TRUEP2F 79 void* PointerToFunc(); 80 #endif 81 G__ClassInfo* CreatedBy() { return(belongingclass); } 82 G__ClassInfo* MemberOf(); 83 int GetDefiningScopeTagnum(); 84 struct G__friendtag* GetFriendInfo(); 85 void SetGlobalcomp(int globalcomp); 86 void SetForceStub(); 87 int IsValid(); 88 int SetFilePos(const char* fname); 89 int Next(); 90 91 const char *FileName(); 92 int LineNumber(); 93 int Size(); 94 int IsBusy(); 95 FILE* FilePointer(); 96 long FilePosition(); 97 char* GetPrototype(); 98 char* GetMangledName(); 99 100 int LoadDLLDirect(const char* filename,const char* funcname); 101 102 void SetVtblIndex(int vtblindex); 103 void SetIsVirtual(int isvirtual); 104 void SetVtblBasetagnum(int basetagnum); 105 106 void SetUserParam(void*); 107 void *GetUserParam(); 108 long GetThisPointerOffset(); 109 110 protected: 111 long handle; 112 long index; 113 #ifndef G__OLDIMPLEMENTATION2194 114 long usingIndex; 115 #endif 116 G__ClassInfo* belongingclass; 117 G__ClassInfo* memberOf; 118 G__TypeInfo type; 119 120 }; 121 122 } // namespace Cint 123 124 using namespace Cint; 125 #endif 126 127