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