1    	// @(#)root/meta:$Id$
2    	// Author: Fons Rademakers   01/03/96
3    	
4    	/*************************************************************************
5    	 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
6    	 * All rights reserved.                                                  *
7    	 *                                                                       *
8    	 * For the licensing terms see $ROOTSYS/LICENSE.                         *
9    	 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
10   	 *************************************************************************/
11   	
12   	
13   	#ifndef ROOT_TInterpreter
14   	#define ROOT_TInterpreter
15   	
16   	//////////////////////////////////////////////////////////////////////////
17   	//                                                                      //
18   	// TInterpreter                                                         //
19   	//                                                                      //
20   	// This class defines an abstract interface to a generic command line   //
21   	// interpreter.                                                         //
22   	//                                                                      //
23   	//////////////////////////////////////////////////////////////////////////
24   	
25   	#ifndef ROOT_TDictionary
26   	#include "TDictionary.h"
27   	#endif
28   	
29   	class TClass;
30   	class TEnv;
31   	class TFunction;
32   	class TMethod;
33   	class TObjArray;
34   	class TVirtualMutex;
35   	extern "C" { struct G__value; }
36   	
37   	R__EXTERN TVirtualMutex *gCINTMutex;
38   	
39   	class TInterpreter : public TNamed {
40   	
41   	protected:
42   	   virtual void Execute(TMethod *method, TObjArray *params, int *error = 0) = 0;
43   	
44   	public:
45   	   enum EErrorCode {
46   	      kNoError     = 0,
47   	      kRecoverable = 1,
48   	      kDangerous   = 2,
49   	      kFatal       = 3,
50   	      kProcessing  = 99
51   	   };
52   	
53   	   TInterpreter() { }   // for Dictionary
54   	   TInterpreter(const char *name, const char *title = "Generic Interpreter");
55   	   virtual ~TInterpreter() { }
56   	
57   	   virtual void     AddIncludePath(const char *path) = 0;
58   	   virtual Int_t    AutoLoad(const char *classname) = 0;
59   	   virtual void     ClearFileBusy() = 0;
60   	   virtual void     ClearStack() = 0; // Delete existing temporary values
61   	   virtual void     EnableAutoLoading() = 0;
62   	   virtual void     EndOfLineAction() = 0;
63   	   virtual Int_t    GetExitCode() const = 0;
64   	   virtual TEnv    *GetMapfile() const { return 0; }
65   	   virtual Int_t    GetMore() const = 0;
66   	   virtual Int_t    GenerateDictionary(const char *classes, const char *includes = 0, const char *options = 0) = 0; 
67   	   virtual char    *GetPrompt() = 0;
68   	   virtual const char *GetSharedLibs() = 0;
69   	   virtual const char *GetClassSharedLibs(const char *cls) = 0;
70   	   virtual const char *GetSharedLibDeps(const char *lib) = 0;
71   	   virtual const char *GetIncludePath() = 0;
72   	   virtual const char *GetSTLIncludePath() const { return ""; }
73   	   virtual TObjArray  *GetRootMapFiles() const = 0;
74   	   virtual Int_t    InitializeDictionaries() = 0;
75   	   virtual Bool_t   IsLoaded(const char *filename) const = 0;
76   	   virtual Int_t    Load(const char *filenam, Bool_t system = kFALSE) = 0;
77   	   virtual void     LoadMacro(const char *filename, EErrorCode *error = 0) = 0;
78   	   virtual Int_t    LoadLibraryMap(const char *rootmapfile = 0) = 0;
79   	   virtual Int_t    RescanLibraryMap() = 0;
80   	   virtual Int_t    ReloadAllSharedLibraryMaps() = 0;
81   	   virtual Int_t    UnloadAllSharedLibraryMaps() = 0;
82   	   virtual Int_t    UnloadLibraryMap(const char *library) = 0;
83   	   virtual Long_t   ProcessLine(const char *line, EErrorCode *error = 0) = 0;
84   	   virtual Long_t   ProcessLineSynch(const char *line, EErrorCode *error = 0) = 0;
85   	   virtual void     PrintIntro() = 0;
86   	   virtual Int_t    SetClassSharedLibs(const char *cls, const char *libs) = 0; 
87   	   virtual void     SetGetline(const char*(*getlineFunc)(const char* prompt),
88   	                               void (*histaddFunc)(const char* line)) = 0;
89   	   virtual void     Reset() = 0;
90   	   virtual void     ResetAll() = 0;
91   	   virtual void     ResetGlobals() = 0;
92   	   virtual void     ResetGlobalVar(void *obj) = 0;
93   	   virtual void     RewindDictionary() = 0;
94   	   virtual Int_t    DeleteGlobal(void *obj) = 0;
95   	   virtual Int_t    DeleteVariable(const char* name) = 0;
96   	   virtual void     SaveContext() = 0;
97   	   virtual void     SaveGlobalsContext() = 0;
98   	   virtual void     UpdateListOfGlobals() = 0;
99   	   virtual void     UpdateListOfGlobalFunctions() = 0;
100  	   virtual void     UpdateListOfTypes() = 0;
101  	   virtual void     SetClassInfo(TClass *cl, Bool_t reload = kFALSE) = 0;
102  	   virtual Bool_t   CheckClassInfo(const char *name, Bool_t autoload = kTRUE) = 0;
103  	   virtual Long_t   Calc(const char *line, EErrorCode* error = 0) = 0;
104  	   virtual void     CreateListOfBaseClasses(TClass *cl) = 0;
105  	   virtual void     CreateListOfDataMembers(TClass *cl) = 0;
106  	   virtual void     CreateListOfMethods(TClass *cl) = 0;
107  	   virtual void     CreateListOfMethodArgs(TFunction *m) = 0;
108  	   virtual void     UpdateListOfMethods(TClass *cl) = 0;
109  	   virtual TString  GetMangledName(TClass *cl, const char *method, const char *params) = 0;
110  	   virtual TString  GetMangledNameWithPrototype(TClass *cl, const char *method, const char *proto) = 0;
111  	   virtual const char *GetInterpreterTypeName(const char *name,Bool_t full = kFALSE) = 0;
112  	   virtual void    *GetInterfaceMethod(TClass *cl, const char *method, const char *params) = 0;
113  	   virtual void    *GetInterfaceMethodWithPrototype(TClass *cl, const char *method, const char *proto) = 0;
114  	   virtual void     Execute(const char *function, const char *params, int *error = 0) = 0;
115  	   virtual void     Execute(TObject *obj, TClass *cl, const char *method, const char *params, int *error = 0) = 0;
116  	   virtual void     Execute(TObject *obj, TClass *cl, TMethod *method, TObjArray *params, int *error = 0) = 0;
117  	   virtual Long_t   ExecuteMacro(const char *filename, EErrorCode *error = 0) = 0;
118  	   virtual Bool_t   IsErrorMessagesEnabled() const = 0;
119  	   virtual Bool_t   SetErrorMessages(Bool_t enable = kTRUE) = 0;
120  	   virtual Bool_t   IsProcessLineLocked() const = 0;
121  	   virtual void     SetProcessLineLock(Bool_t lock = kTRUE) = 0;
122  	   virtual const char *TypeName(const char *s) = 0;
123  	
124  	   // All the functions below must be virtual with a dummy implementation
125  	   // These functions are redefined in TCint.
126  	   //The dummy implementation avoids an implementation in TGWin32InterpreterProxy
127  	
128  	   // Misc
129  	   virtual int    DisplayClass(FILE * /* fout */,char * /* name */,int /* base */,int /* start */) const {return 0;}
130  	   virtual int    DisplayIncludePath(FILE * /* fout */) const {return 0;}
131  	   virtual void  *FindSym(const char * /* entry */) const {return 0;}
132  	   virtual void   GenericError(const char * /* error */) const {;}
133  	   virtual Long_t GetExecByteCode() const {return 0;}
134  	   virtual Long_t Getgvp() const {return 0;}
135  	   virtual const char *Getp2f2funcname(void * /* receiver */) const {return 0;}
136  	   virtual const char *GetTopLevelMacroName() const {return 0;};
137  	   virtual const char *GetCurrentMacroName()  const {return 0;};
138  	   virtual int    GetSecurityError() const{return 0;}
139  	   virtual int    LoadFile(const char * /* path */) const {return 0;}
140  	   virtual void   LoadText(const char * /* text */) const {;}
141  	   virtual const char *MapCppName(const char*) const {return 0;}
142  	   virtual void   SetAlloclockfunc(void (*)()) const {;}  
143  	   virtual void   SetAllocunlockfunc(void (*)()) const {;}  
144  	   virtual int    SetClassAutoloading(int) const {return 0;}
145  	   virtual void   SetErrmsgcallback(void * /* p */) const {;}
146  	   virtual void   Setgvp(Long_t) const {;}
147  	   virtual void   SetRTLD_NOW() const {;}
148  	   virtual void   SetRTLD_LAZY() const {;}
149  	   virtual void   SetTempLevel(int /* val */) const {;}
150  	   virtual int    UnloadFile(const char * /* path */) const {return 0;}
151  	   
152  	   
153  	   // G__CallFunc interface
154  	   virtual void   CallFunc_Delete(void * /* func */) const {;}
155  	   virtual void   CallFunc_Exec(CallFunc_t * /* func */, void * /* address */) const {;}
156  	   virtual Long_t    CallFunc_ExecInt(CallFunc_t * /* func */, void * /* address */) const {return 0;}
157  	   virtual Long64_t  CallFunc_ExecInt64(CallFunc_t * /* func */, void * /* address */) const {return 0;}
158  	   virtual Double_t  CallFunc_ExecDouble(CallFunc_t * /* func */, void * /* address */) const {return 0;}
159  	   virtual CallFunc_t   *CallFunc_Factory() const {return 0;}
160  	   virtual CallFunc_t   *CallFunc_FactoryCopy(CallFunc_t * /* func */) const {return 0;}
161  	   virtual MethodInfo_t *CallFunc_FactoryMethod(CallFunc_t * /* func */) const {return 0;}
162  	   virtual void   CallFunc_Init(CallFunc_t * /* func */) const {;}
163  	   virtual Bool_t CallFunc_IsValid(CallFunc_t * /* func */) const {return 0;}
164  	   virtual void   CallFunc_ResetArg(CallFunc_t * /* func */) const {;}
165  	   virtual void   CallFunc_SetArg(CallFunc_t * /*func */, Long_t /* param */) const {;}
166  	   virtual void   CallFunc_SetArg(CallFunc_t * /* func */, Double_t /* param */) const {;}
167  	   virtual void   CallFunc_SetArg(CallFunc_t * /* func */, Long64_t /* param */) const {;}
168  	   virtual void   CallFunc_SetArg(CallFunc_t * /* func */, ULong64_t /* param */) const {;}
169  	   virtual void   CallFunc_SetArgArray(CallFunc_t * /* func */, Long_t * /* paramArr */, Int_t /* nparam */) const {;}
170  	   virtual void   CallFunc_SetArgs(CallFunc_t * /* func */, const char * /* param */) const {;}
171  	   virtual void   CallFunc_SetFunc(CallFunc_t * /* func */, ClassInfo_t * /* info */, const char * /* method */, const char * /* params */, Long_t * /* Offset */) const {;}
172  	   virtual void   CallFunc_SetFunc(CallFunc_t * /* func */, MethodInfo_t * /* info */) const {;}
173  	   virtual void   CallFunc_SetFuncProto(CallFunc_t * /* func */, ClassInfo_t * /* info */, const char * /* method */, const char * /* proto */, Long_t * /* Offset */) const {;}
174  	
175  	               
176  	   // G__ClassInfo interface            
177  	   virtual Long_t ClassInfo_ClassProperty(ClassInfo_t * /* info */) const {return 0;}
178  	   virtual void   ClassInfo_Delete(ClassInfo_t * /* info */) const {;}
179  	   virtual void   ClassInfo_Delete(ClassInfo_t * /* info */, void * /* arena */) const {;}
180  	   virtual void   ClassInfo_DeleteArray(ClassInfo_t * /* info */, void * /* arena */, bool /* dtorOnly */) const {;}
181  	   virtual void   ClassInfo_Destruct(ClassInfo_t * /* info */, void * /* arena */) const {;}
182  	   virtual ClassInfo_t  *ClassInfo_Factory() const {return 0;}
183  	   virtual ClassInfo_t  *ClassInfo_Factory(G__value * /* value */) const {return 0;}
184  	   virtual ClassInfo_t  *ClassInfo_Factory(ClassInfo_t * /* cl */) const {return 0;}
185  	   virtual ClassInfo_t  *ClassInfo_Factory(const char * /* name */) const {return 0;}
186  	   virtual int    ClassInfo_GetMethodNArg(ClassInfo_t * /* info */, const char * /* method */,const char * /* proto */) const {return 0;}
187  	   virtual Bool_t ClassInfo_HasDefaultConstructor(ClassInfo_t * /* info */) const {return 0;}             
188  	   virtual Bool_t ClassInfo_HasMethod(ClassInfo_t * /* info */, const char * /* name */) const {return 0;}             
189  	   virtual void   ClassInfo_Init(ClassInfo_t * /* info */, const char * /* funcname */) const {;}
190  	   virtual void   ClassInfo_Init(ClassInfo_t * /* info */, int /* tagnum */) const {;}
191  	   virtual Bool_t ClassInfo_IsBase(ClassInfo_t * /* info */, const char * /* name */) const {return 0;}
192  	   virtual Bool_t ClassInfo_IsEnum(const char * /* name */) const {return 0;}
193  	   virtual Bool_t ClassInfo_IsLoaded(ClassInfo_t * /* info */) const {return 0;}             
194  	   virtual Bool_t ClassInfo_IsValid(ClassInfo_t * /* info */) const {return 0;}             
195  	   virtual Bool_t ClassInfo_IsValidMethod(ClassInfo_t * /* info */, const char * /* method */,const char * /* proto */, Long_t * /* offset */) const {return 0;}             
196  	   virtual int    ClassInfo_Next(ClassInfo_t * /* info */) const {return 0;}
197  	   virtual void  *ClassInfo_New(ClassInfo_t * /* info */) const {return 0;}
198  	   virtual void  *ClassInfo_New(ClassInfo_t * /* info */, int /* n */) const {return 0;}
199  	   virtual void  *ClassInfo_New(ClassInfo_t * /* info */, int /* n */, void * /* arena */) const {return 0;}
200  	   virtual void  *ClassInfo_New(ClassInfo_t * /* info */, void * /* arena */) const {return 0;}
201  	   virtual Long_t ClassInfo_Property(ClassInfo_t * /* info */) const {return 0;}
202  	   virtual int    ClassInfo_RootFlag(ClassInfo_t * /* info */) const {return 0;}
203  	   virtual int    ClassInfo_Size(ClassInfo_t * /* info */) const {return 0;}
204  	   virtual Long_t ClassInfo_Tagnum(ClassInfo_t * /* info */) const {return 0;}
205  	   virtual const char *ClassInfo_FileName(ClassInfo_t * /* info */) const {return 0;}
206  	   virtual const char *ClassInfo_FullName(ClassInfo_t * /* info */) const {return 0;}
207  	   virtual const char *ClassInfo_Name(ClassInfo_t * /* info */) const {return 0;}
208  	   virtual const char *ClassInfo_Title(ClassInfo_t * /* info */) const {return 0;}
209  	   virtual const char *ClassInfo_TmpltName(ClassInfo_t * /* info */) const {return 0;}
210  	   
211  	                  
212  	   // G__BaseClassInfo interface            
213  	   virtual void   BaseClassInfo_Delete(BaseClassInfo_t * /* bcinfo */) const {;}
214  	   virtual BaseClassInfo_t  *BaseClassInfo_Factory(ClassInfo_t * /* info */) const {return 0;}
215  	   virtual int    BaseClassInfo_Next(BaseClassInfo_t * /* bcinfo */) const {return 0;}
216  	   virtual int    BaseClassInfo_Next(BaseClassInfo_t * /* bcinfo */, int  /* onlyDirect */) const {return 0;}
217  	   virtual Long_t BaseClassInfo_Offset(BaseClassInfo_t * /* bcinfo */) const {return 0;}
218  	   virtual Long_t BaseClassInfo_Property(BaseClassInfo_t * /* bcinfo */) const {return 0;}
219  	   virtual Long_t BaseClassInfo_Tagnum(BaseClassInfo_t * /* bcinfo */) const {return 0;}
220  	   virtual const char *BaseClassInfo_FullName(BaseClassInfo_t * /* bcinfo */) const {return 0;}
221  	   virtual const char *BaseClassInfo_Name(BaseClassInfo_t * /* bcinfo */) const {return 0;}
222  	   virtual const char *BaseClassInfo_TmpltName(BaseClassInfo_t * /* bcinfo */) const {return 0;}
223  	               
224  	   // G__DataMemberInfo interface            
225  	   virtual int    DataMemberInfo_ArrayDim(DataMemberInfo_t * /* dminfo */) const {return 0;}
226  	   virtual void   DataMemberInfo_Delete(DataMemberInfo_t * /* dminfo */) const {;}
227  	   virtual DataMemberInfo_t  *DataMemberInfo_Factory(ClassInfo_t * /* clinfo */ = 0) const {return 0;}
228  	   virtual DataMemberInfo_t  *DataMemberInfo_FactoryCopy(DataMemberInfo_t * /* dminfo */) const {return 0;}
229  	   virtual Bool_t DataMemberInfo_IsValid(DataMemberInfo_t * /* dminfo */) const {return 0;}
230  	   virtual int    DataMemberInfo_MaxIndex(DataMemberInfo_t * /* dminfo */, Int_t  /* dim */) const {return 0;}
231  	   virtual int    DataMemberInfo_Next(DataMemberInfo_t * /* dminfo */) const {return 0;}
232  	   virtual Long_t DataMemberInfo_Offset(DataMemberInfo_t * /* dminfo */) const {return 0;}
233  	   virtual Long_t DataMemberInfo_Property(DataMemberInfo_t * /* dminfo */) const {return 0;}
234  	   virtual Long_t DataMemberInfo_TypeProperty(DataMemberInfo_t * /* dminfo */) const {return 0;}
235  	   virtual int    DataMemberInfo_TypeSize(DataMemberInfo_t * /* dminfo */) const {return 0;}
236  	   virtual const char *DataMemberInfo_TypeName(DataMemberInfo_t * /* dminfo */) const {return 0;}
237  	   virtual const char *DataMemberInfo_TypeTrueName(DataMemberInfo_t * /* dminfo */) const {return 0;}
238  	   virtual const char *DataMemberInfo_Name(DataMemberInfo_t * /* dminfo */) const {return 0;}
239  	   virtual const char *DataMemberInfo_Title(DataMemberInfo_t * /* dminfo */) const {return 0;}
240  	   virtual const char *DataMemberInfo_ValidArrayIndex(DataMemberInfo_t * /* dminfo */) const {return 0;}
241  	               
242  	   // G__MethodInfo interface            
243  	   virtual void   MethodInfo_CreateSignature(MethodInfo_t * /* minfo */, TString & /* signature */) const {;}
244  	   virtual void   MethodInfo_Delete(MethodInfo_t * /* minfo */) const {;}
245  	   virtual MethodInfo_t  *MethodInfo_Factory() const {return 0;}
246  	   virtual MethodInfo_t  *MethodInfo_Factory(ClassInfo_t * /*clinfo*/) const {return 0;}
247  	   virtual MethodInfo_t  *MethodInfo_FactoryCopy(MethodInfo_t * /* minfo */) const {return 0;}
248  	   virtual MethodInfo_t  *MethodInfo_InterfaceMethod(MethodInfo_t * /* minfo */) const {return 0;}
249  	   virtual Bool_t MethodInfo_IsValid(MethodInfo_t * /* minfo */) const {return 0;}
250  	   virtual int    MethodInfo_NArg(MethodInfo_t * /* minfo */) const {return 0;}
251  	   virtual int    MethodInfo_NDefaultArg(MethodInfo_t * /* minfo */) const {return 0;}
252  	   virtual int    MethodInfo_Next(MethodInfo_t * /* minfo */) const {return 0;}
253  	   virtual Long_t MethodInfo_Property(MethodInfo_t * /* minfo */) const {return 0;}
254  	   virtual TypeInfo_t  *MethodInfo_Type(MethodInfo_t * /* minfo */) const {return 0;}
255  	   virtual const char *MethodInfo_GetMangledName(MethodInfo_t * /* minfo */) const {return 0;}
256  	   virtual const char *MethodInfo_GetPrototype(MethodInfo_t * /* minfo */) const {return 0;}
257  	   virtual const char *MethodInfo_Name(MethodInfo_t * /* minfo */) const {return 0;}
258  	   virtual const char *MethodInfo_TypeName(MethodInfo_t * /* minfo */) const {return 0;}
259  	   virtual std::string MethodInfo_TypeNormalizedName(MethodInfo_t * /* minfo */) const {return "";}
260  	   virtual const char *MethodInfo_Title(MethodInfo_t * /* minfo */) const {return 0;}
261  	               
262  	   // G__MethodArgInfo interface            
263  	   virtual void   MethodArgInfo_Delete(MethodArgInfo_t * /* marginfo */) const {;}
264  	   virtual MethodArgInfo_t  *MethodArgInfo_Factory() const {return 0;}
265  	   virtual MethodArgInfo_t  *MethodArgInfo_Factory(MethodInfo_t * /*minfo*/) const {return 0;}
266  	   virtual MethodArgInfo_t  *MethodArgInfo_FactoryCopy(MethodArgInfo_t * /* marginfo */) const {return 0;}
267  	   virtual Bool_t MethodArgInfo_IsValid(MethodArgInfo_t * /* marginfo */) const {return 0;}
268  	   virtual int    MethodArgInfo_Next(MethodArgInfo_t * /* marginfo */) const {return 0;}
269  	   virtual Long_t MethodArgInfo_Property(MethodArgInfo_t * /* marginfo */) const {return 0;}
270  	   virtual const char *MethodArgInfo_DefaultValue(MethodArgInfo_t * /* marginfo */) const {return 0;}
271  	   virtual const char *MethodArgInfo_Name(MethodArgInfo_t * /* marginfo */) const {return 0;}
272  	   virtual const char *MethodArgInfo_TypeName(MethodArgInfo_t * /* marginfo */) const {return 0;}
273  	   virtual std::string MethodArgInfo_TypeNormalizedName(MethodArgInfo_t * /* marginfo */) const {return 0;}
274  	                  
275  	   // G__TypeInfo interface            
276  	   virtual void    TypeInfo_Delete(TypeInfo_t * /* tinfo */) const {;}
277  	   virtual TypeInfo_t *TypeInfo_Factory() const {return 0;}
278  	   virtual TypeInfo_t *TypeInfo_Factory(G__value * /* value */) const {return 0;}
279  	   virtual TypeInfo_t *TypeInfo_FactoryCopy(TypeInfo_t * /* tinfo */) const {return 0;}
280  	   virtual void   TypeInfo_Init(TypeInfo_t * /* tinfo */, const char * /* funcname */) const {;}
281  	   virtual Bool_t TypeInfo_IsValid(TypeInfo_t * /* tinfo */) const {return 0;}
282  	   virtual const char *TypeInfo_Name(TypeInfo_t * /* info */) const {return 0;}
283  	   virtual Long_t TypeInfo_Property(TypeInfo_t * /* tinfo */) const {return 0;}
284  	   virtual int    TypeInfo_RefType(TypeInfo_t * /* tinfo */) const {return 0;}
285  	   virtual int    TypeInfo_Size(TypeInfo_t * /* tinfo */) const {return 0;}
286  	   virtual const char *TypeInfo_TrueName(TypeInfo_t * /* tinfo */) const {return 0;}
287  	   
288  	                  
289  	   // G__TypedefInfo interface            
290  	   virtual void   TypedefInfo_Delete(TypedefInfo_t * /* tinfo */) const {;}
291  	   virtual TypedefInfo_t  *TypedefInfo_Factory() const {return 0;}
292  	   virtual TypedefInfo_t  *TypedefInfo_FactoryCopy(TypedefInfo_t * /* tinfo */) const {return 0;}
293  	   virtual void   TypedefInfo_Init(TypedefInfo_t * /* tinfo */, const char * /* funcname */) const {;}
294  	   virtual Bool_t TypedefInfo_IsValid(TypedefInfo_t * /* tinfo */) const {return 0;}
295  	   virtual int    TypedefInfo_Next(TypedefInfo_t * /* tinfo */) const {return 0;}
296  	   virtual Long_t TypedefInfo_Property(TypedefInfo_t * /* tinfo */) const {return 0;}
297  	   virtual int    TypedefInfo_Size(TypedefInfo_t * /* tinfo */) const {return 0;}
298  	   virtual const char *TypedefInfo_TrueName(TypedefInfo_t * /* tinfo */) const {return 0;}
299  	   virtual const char *TypedefInfo_Name(TypedefInfo_t * /* tinfo */) const {return 0;}
300  	   virtual const char *TypedefInfo_Title(TypedefInfo_t * /* tinfo */) const {return 0;}
301  	
302  	   static TInterpreter  *&Instance();
303  	
304  	   ClassDef(TInterpreter,0)  //ABC defining interface to generic interpreter
305  	};
306  	
307  	#ifndef __CINT__
308  	#define gInterpreter (TInterpreter::Instance())
309  	R__EXTERN TInterpreter* (*gPtr2Interpreter)();
310  	R__EXTERN TInterpreter* gCint;
311  	#endif
312  	
313  	#endif
314