// @(#)root/meta:$Id$
// Author: Fons Rademakers   01/03/96

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/


#ifndef ROOT_TInterpreter
#define ROOT_TInterpreter

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TInterpreter                                                         //
//                                                                      //
// This class defines an abstract interface to a generic command line   //
// interpreter.                                                         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TDictionary
#include "TDictionary.h"
#endif

#ifndef ROOT_TVirtualMutex
#include "TVirtualMutex.h"
#endif

#ifndef ROOT_Rtypeinfo
#include "Rtypeinfo.h"
#endif

#include <vector>

class TClass;
class TEnv;
class TFunction;
class TInterpreterValue;
class TMethod;
class TObjArray;
class TEnum;
class TListOfEnums;

R__EXTERN TVirtualMutex *gInterpreterMutex;

class TInterpreter : public TNamed {

protected:
   virtual void Execute(TMethod *method, TObjArray *params, int *error = 0) = 0;
   virtual Bool_t SetSuspendAutoParsing(Bool_t value) = 0;

   friend class SuspendAutoParsing;

public:
   enum EErrorCode {
      kNoError     = 0,
      kRecoverable = 1,
      kDangerous   = 2,
      kFatal       = 3,
      kProcessing  = 99
   };

   enum class EReturnType { kLong, kDouble, kString, kOther, kNoReturnType };

   struct CallFuncIFacePtr_t {
      enum EKind {
         kUninitialized,
         kGeneric,
         kCtor,
         kDtor
      };

      typedef void (*Generic_t)(void*, int, void**, void*);
      typedef void (*Ctor_t)(void**, void*, unsigned long);
      typedef void (*Dtor_t)(void*, unsigned long, int);

      CallFuncIFacePtr_t():
         fKind(kUninitialized), fGeneric(0) {}
      CallFuncIFacePtr_t(Generic_t func):
         fKind(kGeneric), fGeneric(func) {}
      CallFuncIFacePtr_t(Ctor_t func):
         fKind(kCtor), fCtor(func) {}
      CallFuncIFacePtr_t(Dtor_t func):
         fKind(kDtor), fDtor(func) {}

      EKind fKind;
      union {
         Generic_t fGeneric;
         Ctor_t fCtor;
         Dtor_t fDtor;
      };
   };

   class SuspendAutoParsing {
      TInterpreter *fInterp;
      Bool_t        fPrevious;
   public:
      SuspendAutoParsing(TInterpreter *where, Bool_t value = kTRUE) : fInterp(where), fPrevious(fInterp->SetSuspendAutoParsing(value)) {}
      ~SuspendAutoParsing() { fInterp->SetSuspendAutoParsing(fPrevious); }
   };
   virtual Bool_t IsAutoParsingSuspended() const = 0;

   typedef int (*AutoLoadCallBack_t)(const char*);
   typedef std::vector<std::pair<std::string, int> > FwdDeclArgsToKeepCollection_t;

   TInterpreter() { }   // for Dictionary
   TInterpreter(const char *name, const char *title = "Generic Interpreter");
   virtual ~TInterpreter() { }

   virtual void     AddIncludePath(const char *path) = 0;
   virtual void    *SetAutoLoadCallBack(void* /*cb*/) { return 0; }
   virtual void    *GetAutoLoadCallBack() const { return 0; }
   virtual Int_t    AutoLoad(const char *classname, Bool_t knowDictNotLoaded = kFALSE) = 0;
   virtual Int_t    AutoLoad(const std::type_info& typeinfo, Bool_t knowDictNotLoaded = kFALSE) = 0;
   virtual Int_t    AutoParse(const char* cls) = 0;
   virtual void     ClearFileBusy() = 0;
   virtual void     ClearStack() = 0; // Delete existing temporary values
   virtual Bool_t   Declare(const char* code) = 0;
   virtual void     EnableAutoLoading() = 0;
   virtual void     EndOfLineAction() = 0;
   virtual TClass  *GetClass(const std::type_info& typeinfo, Bool_t load) const = 0;
   virtual Int_t    GetExitCode() const = 0;
   virtual TEnv    *GetMapfile() const { return 0; }
   virtual Int_t    GetMore() const = 0;
   virtual TClass  *GenerateTClass(const char *classname, Bool_t emulation, Bool_t silent = kFALSE) = 0;
   virtual TClass  *GenerateTClass(ClassInfo_t *classinfo, Bool_t silent = kFALSE) = 0;
   virtual Int_t    GenerateDictionary(const char *classes, const char *includes = 0, const char *options = 0) = 0;
   virtual char    *GetPrompt() = 0;
   virtual const char *GetSharedLibs() = 0;
   virtual const char *GetClassSharedLibs(const char *cls) = 0;
   virtual const char *GetSharedLibDeps(const char *lib) = 0;
   virtual const char *GetIncludePath() = 0;
   virtual const char *GetSTLIncludePath() const { return ""; }
   virtual TObjArray  *GetRootMapFiles() const = 0;
   virtual void     Initialize() = 0;
   virtual void     InspectMembers(TMemberInspector&, const void* obj, const TClass* cl, Bool_t isTransient) = 0;
   virtual Bool_t   IsLoaded(const char *filename) const = 0;
   virtual Int_t    Load(const char *filenam, Bool_t system = kFALSE) = 0;
   virtual void     LoadMacro(const char *filename, EErrorCode *error = 0) = 0;
   virtual Int_t    LoadLibraryMap(const char *rootmapfile = 0) = 0;
   virtual Int_t    RescanLibraryMap() = 0;
   virtual Int_t    ReloadAllSharedLibraryMaps() = 0;
   virtual Int_t    UnloadAllSharedLibraryMaps() = 0;
   virtual Int_t    UnloadLibraryMap(const char *library) = 0;
   virtual Long_t   ProcessLine(const char *line, EErrorCode *error = 0) = 0;
   virtual Long_t   ProcessLineSynch(const char *line, EErrorCode *error = 0) = 0;
   virtual void     PrintIntro() = 0;
   virtual void     RegisterModule(const char* /*modulename*/,
                                   const char** /*headers*/,
                                   const char** /*includePaths*/,
                                   const char* /*payloadCode*/,
                                   const char* /*fwdDeclsCode*/,
                                   void (* /*triggerFunc*/)(),
                                   const FwdDeclArgsToKeepCollection_t& fwdDeclArgsToKeep,
                                   const char** classesHeaders) = 0;
   virtual void     RegisterTClassUpdate(TClass *oldcl,DictFuncPtr_t dict) = 0;
   virtual void     UnRegisterTClassUpdate(const TClass *oldcl) = 0;
   virtual Int_t    SetClassSharedLibs(const char *cls, const char *libs) = 0;
   virtual void     SetGetline(const char*(*getlineFunc)(const char* prompt),
                               void (*histaddFunc)(const char* line)) = 0;
   virtual void     Reset() = 0;
   virtual void     ResetAll() = 0;
   virtual void     ResetGlobals() = 0;
   virtual void     ResetGlobalVar(void *obj) = 0;
   virtual void     RewindDictionary() = 0;
   virtual Int_t    DeleteGlobal(void *obj) = 0;
   virtual Int_t    DeleteVariable(const char* name) = 0;
   virtual void     SaveContext() = 0;
   virtual void     SaveGlobalsContext() = 0;
   virtual void     UpdateListOfGlobals() = 0;
   virtual void     UpdateListOfGlobalFunctions() = 0;
   virtual void     UpdateListOfTypes() = 0;
   virtual void     SetClassInfo(TClass *cl, Bool_t reload = kFALSE) = 0;
   virtual Bool_t   CheckClassInfo(const char *name, Bool_t autoload, Bool_t isClassOrNamespaceOnly = kFALSE) = 0;
   virtual Bool_t   CheckClassTemplate(const char *name) = 0;
   virtual Long_t   Calc(const char *line, EErrorCode* error = 0) = 0;
   virtual void     CreateListOfBaseClasses(TClass *cl) const = 0;
   virtual void     CreateListOfDataMembers(TClass *cl) const = 0;
   virtual void     CreateListOfMethods(TClass *cl) const = 0;
   virtual void     CreateListOfMethodArgs(TFunction *m) const = 0;
   virtual void     UpdateListOfMethods(TClass *cl) const = 0;
   virtual TString  GetMangledName(TClass *cl, const char *method, const char *params, Bool_t objectIsConst = kFALSE) = 0;
   virtual TString  GetMangledNameWithPrototype(TClass *cl, const char *method, const char *proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) = 0;
   virtual void     GetInterpreterTypeName(const char *name, std::string &output, Bool_t full = kFALSE) = 0;
   virtual void    *GetInterfaceMethod(TClass *cl, const char *method, const char *params, Bool_t objectIsConst = kFALSE) = 0;
   virtual void    *GetInterfaceMethodWithPrototype(TClass *cl, const char *method, const char *proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) = 0;
   virtual void     Execute(const char *function, const char *params, int *error = 0) = 0;
   virtual void     Execute(TObject *obj, TClass *cl, const char *method, const char *params, int *error = 0) = 0;
   virtual void     Execute(TObject *obj, TClass *cl, TMethod *method, TObjArray *params, int *error = 0) = 0;
   virtual void     ExecuteWithArgsAndReturn(TMethod *method, void* address, const void* args[] = 0, int /*nargs*/ = 0, void* ret= 0) const = 0;
   virtual Long_t   ExecuteMacro(const char *filename, EErrorCode *error = 0) = 0;
   virtual Bool_t   IsErrorMessagesEnabled() const = 0;
   virtual Bool_t   SetErrorMessages(Bool_t enable = kTRUE) = 0;
   virtual Bool_t   IsProcessLineLocked() const = 0;
   virtual void     SetProcessLineLock(Bool_t lock = kTRUE) = 0;
   virtual const char *TypeName(const char *s) = 0;

   // All the functions below must be virtual with a dummy implementation
   // These functions are redefined in TCling.
   //The dummy implementation avoids an implementation in TGWin32InterpreterProxy

   // Misc
   virtual int    DisplayClass(FILE * /* fout */,const char * /* name */,int /* base */,int /* start */) const {return 0;}
   virtual int    DisplayIncludePath(FILE * /* fout */) const {return 0;}
   virtual void  *FindSym(const char * /* entry */) const {return 0;}
   virtual void   GenericError(const char * /* error */) const {;}
   virtual Long_t GetExecByteCode() const {return 0;}
   virtual Long_t Getgvp() const {return 0;}
   virtual const char *Getp2f2funcname(void * /* receiver */) const {return 0;}
   virtual const char *GetTopLevelMacroName() const {return 0;};
   virtual const char *GetCurrentMacroName()  const {return 0;};
   virtual int    GetSecurityError() const{return 0;}
   virtual int    LoadFile(const char * /* path */) const {return 0;}
   virtual Bool_t LoadText(const char * /* text */) const {return kFALSE;}
   virtual const char *MapCppName(const char*) const {return 0;}
   virtual void   SetAlloclockfunc(void (*)()) const {;}
   virtual void   SetAllocunlockfunc(void (*)()) const {;}
   virtual int    SetClassAutoloading(int) const {return 0;}
   virtual int    SetClassAutoparsing(int) {return 0;};
   virtual void   SetErrmsgcallback(void * /* p */) const {;}
   virtual void   Setgvp(Long_t) const {;}
   virtual void   SetRTLD_NOW() const {;}
   virtual void   SetRTLD_LAZY() const {;}
   virtual void   SetTempLevel(int /* val */) const {;}
   virtual int    UnloadFile(const char * /* path */) const {return 0;}
   virtual TInterpreterValue *CreateTemporary() { return 0; }

   // core/meta helper functions.
   virtual EReturnType MethodCallReturnType(TFunction *func) const = 0;
   virtual ULong64_t GetInterpreterStateMarker() const = 0;

   typedef TDictionary::DeclId_t DeclId_t;
   virtual DeclId_t GetDeclId(CallFunc_t *info) const = 0;
   virtual DeclId_t GetDeclId(ClassInfo_t *info) const = 0;
   virtual DeclId_t GetDeclId(DataMemberInfo_t *info) const = 0;
   virtual DeclId_t GetDeclId(FuncTempInfo_t *info) const = 0;
   virtual DeclId_t GetDeclId(MethodInfo_t *info) const = 0;
   virtual DeclId_t GetDeclId(TypedefInfo_t *info) const = 0;

   virtual void SetDeclAttr(DeclId_t, const char* /* attribute */) = 0 ;

   virtual DeclId_t GetDataMember(ClassInfo_t *cl, const char *name) const = 0;
   virtual DeclId_t GetDataMemberAtAddr(const void *addr) const = 0;
   virtual DeclId_t GetDataMemberWithValue(const void *ptrvalue) const = 0;
   virtual DeclId_t GetEnum(TClass *cl, const char *name) const = 0;
   virtual TEnum*   CreateEnum(void *VD, TClass *cl) const = 0;
   virtual void     UpdateEnumConstants(TEnum* enumObj, TClass* cl) const = 0;
   virtual void     LoadEnums(TListOfEnums& cl) const = 0;
   virtual DeclId_t GetFunction(ClassInfo_t *cl, const char *funcname) = 0;
   virtual DeclId_t GetFunctionWithPrototype(ClassInfo_t *cl, const char* method, const char* proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) = 0;
   virtual DeclId_t GetFunctionWithValues(ClassInfo_t *cl, const char* method, const char* params, Bool_t objectIsConst = kFALSE) = 0;
   virtual DeclId_t GetFunctionTemplate(ClassInfo_t *cl, const char *funcname) = 0;
   virtual void     GetFunctionOverloads(ClassInfo_t *cl, const char *funcname, std::vector<DeclId_t>& res) const = 0;
   virtual void     LoadFunctionTemplates(TClass* cl) const = 0;

   // CallFunc interface
   virtual void   CallFunc_Delete(CallFunc_t * /* func */) const {;}
   virtual void   CallFunc_Exec(CallFunc_t * /* func */, void * /* address */) const {;}
   virtual void   CallFunc_Exec(CallFunc_t * /* func */, void * /* address */, TInterpreterValue& /* val */) const {;}
   virtual void   CallFunc_ExecWithReturn(CallFunc_t * /* func */, void * /* address */, void * /* ret */) const {;}
   virtual void   CallFunc_ExecWithArgsAndReturn(CallFunc_t * /* func */, void * /* address */, const void* /* args */ [] = 0, int /*nargs*/ = 0, void * /* ret */ = 0) const {}
   virtual Long_t    CallFunc_ExecInt(CallFunc_t * /* func */, void * /* address */) const {return 0;}
   virtual Long64_t  CallFunc_ExecInt64(CallFunc_t * /* func */, void * /* address */) const {return 0;}
   virtual Double_t  CallFunc_ExecDouble(CallFunc_t * /* func */, void * /* address */) const {return 0;}
   virtual CallFunc_t   *CallFunc_Factory() const {return 0;}
   virtual CallFunc_t   *CallFunc_FactoryCopy(CallFunc_t * /* func */) const {return 0;}
   virtual MethodInfo_t *CallFunc_FactoryMethod(CallFunc_t * /* func */) const {return 0;}
   virtual void   CallFunc_IgnoreExtraArgs(CallFunc_t * /*func */, bool /*ignore*/) const {;}
   virtual void   CallFunc_Init(CallFunc_t * /* func */) const {;}
   virtual Bool_t CallFunc_IsValid(CallFunc_t * /* func */) const {return 0;}
   virtual CallFuncIFacePtr_t CallFunc_IFacePtr(CallFunc_t * /* func */) const {return CallFuncIFacePtr_t();}
   virtual void   CallFunc_ResetArg(CallFunc_t * /* func */) const {;}
   virtual void   CallFunc_SetArgArray(CallFunc_t * /* func */, Long_t * /* paramArr */, Int_t /* nparam */) const {;}
   virtual void   CallFunc_SetArgs(CallFunc_t * /* func */, const char * /* param */) const {;}

   virtual void   CallFunc_SetArg(CallFunc_t * /*func */, Long_t /* param */) const = 0;
   virtual void   CallFunc_SetArg(CallFunc_t * /*func */, ULong_t /* param */) const = 0;
   virtual void   CallFunc_SetArg(CallFunc_t * /* func */, Float_t /* param */) const = 0;
   virtual void   CallFunc_SetArg(CallFunc_t * /* func */, Double_t /* param */) const = 0;
   virtual void   CallFunc_SetArg(CallFunc_t * /* func */, Long64_t /* param */) const = 0;
   virtual void   CallFunc_SetArg(CallFunc_t * /* func */, ULong64_t /* param */) const = 0;

   void CallFunc_SetArg(CallFunc_t * func, Char_t param) const { CallFunc_SetArg(func,(Long_t)param); }
   void CallFunc_SetArg(CallFunc_t * func, Short_t param) const { CallFunc_SetArg(func,(Long_t)param); }
   void CallFunc_SetArg(CallFunc_t * func, Int_t param) const { CallFunc_SetArg(func,(Long_t)param); }

   void CallFunc_SetArg(CallFunc_t * func, UChar_t param) const { CallFunc_SetArg(func,(ULong_t)param); }
   void CallFunc_SetArg(CallFunc_t * func, UShort_t param) const { CallFunc_SetArg(func,(ULong_t)param); }
   void CallFunc_SetArg(CallFunc_t * func, UInt_t param) const { CallFunc_SetArg(func,(ULong_t)param); }

   template <typename T>
   void CallFunc_SetArgRef(CallFunc_t * func, T &param) const { CallFunc_SetArg(func,(ULong_t)&param); }

   void CallFunc_SetArg(CallFunc_t *func, void *arg)
   {
      CallFunc_SetArg(func,(Long_t) arg);
   }

   template <typename T>
   void CallFunc_SetArg(CallFunc_t *func, const T *arg)
   {
      CallFunc_SetArg(func,(Long_t) arg);
   }

   void CallFunc_SetArgImpl(CallFunc_t * /* func */)
   {
   }

   template <typename U>
   void CallFunc_SetArgImpl(CallFunc_t *func, const U& head)
   {
      CallFunc_SetArg(func, head);
   }

   template <typename U, typename... T>
   void CallFunc_SetArgImpl(CallFunc_t *func, const U& head, const T&... tail)
   {
      CallFunc_SetArg(func, head);
      CallFunc_SetArgImpl(func, tail...);
   }

   template <typename... T>
   void CallFunc_SetArguments(CallFunc_t *func, const T&... args)
   {
      R__LOCKGUARD2(gInterpreterMutex);

      CallFunc_ResetArg(func);
      CallFunc_SetArgImpl(func,args...);
   }

   virtual void   CallFunc_SetFunc(CallFunc_t * /* func */, ClassInfo_t * /* info */, const char * /* method */, const char * /* params */, bool /* objectIsConst */, Long_t * /* Offset */) const {;}
   virtual void   CallFunc_SetFunc(CallFunc_t * /* func */, ClassInfo_t * /* info */, const char * /* method */, const char * /* params */, Long_t * /* Offset */) const {;}
   virtual void   CallFunc_SetFunc(CallFunc_t * /* func */, MethodInfo_t * /* info */) const {;}
   virtual void   CallFunc_SetFuncProto(CallFunc_t * /* func */, ClassInfo_t * /* info */, const char * /* method */, const char * /* proto */, Long_t * /* Offset */, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const {;}
   virtual void   CallFunc_SetFuncProto(CallFunc_t * /* func */, ClassInfo_t * /* info */, const char * /* method */, const char * /* proto */, bool /* objectIsConst */, Long_t * /* Offset */, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const {;}
   virtual void   CallFunc_SetFuncProto(CallFunc_t* func, ClassInfo_t* info, const char* method, const std::vector<TypeInfo_t*> &proto, Long_t* Offset, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) const = 0;
   virtual void   CallFunc_SetFuncProto(CallFunc_t* func, ClassInfo_t* info, const char* method, const std::vector<TypeInfo_t*> &proto, bool objectIsConst, Long_t* Offset, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) const = 0;


   // ClassInfo interface
   virtual Bool_t ClassInfo_Contains(ClassInfo_t *info, DeclId_t decl) const = 0;
   virtual Long_t ClassInfo_ClassProperty(ClassInfo_t * /* info */) const {return 0;}
   virtual void   ClassInfo_Delete(ClassInfo_t * /* info */) const {;}
   virtual void   ClassInfo_Delete(ClassInfo_t * /* info */, void * /* arena */) const {;}
   virtual void   ClassInfo_DeleteArray(ClassInfo_t * /* info */, void * /* arena */, bool /* dtorOnly */) const {;}
   virtual void   ClassInfo_Destruct(ClassInfo_t * /* info */, void * /* arena */) const {;}
   virtual ClassInfo_t  *ClassInfo_Factory(Bool_t /*all*/ = kTRUE) const = 0;
   virtual ClassInfo_t  *ClassInfo_Factory(ClassInfo_t * /* cl */) const = 0;
   virtual ClassInfo_t  *ClassInfo_Factory(const char * /* name */) const = 0;
   virtual Long_t   ClassInfo_GetBaseOffset(ClassInfo_t* /* fromDerived */,
                                            ClassInfo_t* /* toBase */, void* /* address */ = 0, bool /*isderived*/ = true) const {return 0;}
   virtual int    ClassInfo_GetMethodNArg(ClassInfo_t * /* info */, const char * /* method */,const char * /* proto */, Bool_t /* objectIsConst */ = false, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const {return 0;}
   virtual Bool_t ClassInfo_HasDefaultConstructor(ClassInfo_t * /* info */) const {return 0;}
   virtual Bool_t ClassInfo_HasMethod(ClassInfo_t * /* info */, const char * /* name */) const {return 0;}
   virtual void   ClassInfo_Init(ClassInfo_t * /* info */, const char * /* funcname */) const {;}
   virtual void   ClassInfo_Init(ClassInfo_t * /* info */, int /* tagnum */) const {;}
   virtual Bool_t ClassInfo_IsBase(ClassInfo_t * /* info */, const char * /* name */) const {return 0;}
   virtual Bool_t ClassInfo_IsEnum(const char * /* name */) const {return 0;}
   virtual Bool_t ClassInfo_IsLoaded(ClassInfo_t * /* info */) const {return 0;}
   virtual Bool_t ClassInfo_IsValid(ClassInfo_t * /* info */) const {return 0;}
   virtual Bool_t ClassInfo_IsValidMethod(ClassInfo_t * /* info */, const char * /* method */,const char * /* proto */, Long_t * /* offset */, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const {return 0;}
   virtual Bool_t ClassInfo_IsValidMethod(ClassInfo_t * /* info */, const char * /* method */,const char * /* proto */, Bool_t /* objectIsConst */, Long_t * /* offset */, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const {return 0;}
   virtual int    ClassInfo_Next(ClassInfo_t * /* info */) const {return 0;}
   virtual void  *ClassInfo_New(ClassInfo_t * /* info */) const {return 0;}
   virtual void  *ClassInfo_New(ClassInfo_t * /* info */, int /* n */) const {return 0;}
   virtual void  *ClassInfo_New(ClassInfo_t * /* info */, int /* n */, void * /* arena */) const {return 0;}
   virtual void  *ClassInfo_New(ClassInfo_t * /* info */, void * /* arena */) const {return 0;}
   virtual Long_t ClassInfo_Property(ClassInfo_t * /* info */) const {return 0;}
   virtual int    ClassInfo_Size(ClassInfo_t * /* info */) const {return 0;}
   virtual Long_t ClassInfo_Tagnum(ClassInfo_t * /* info */) const {return 0;}
   virtual const char *ClassInfo_FileName(ClassInfo_t * /* info */) const {return 0;}
   virtual const char *ClassInfo_FullName(ClassInfo_t * /* info */) const {return 0;}
   virtual const char *ClassInfo_Name(ClassInfo_t * /* info */) const {return 0;}
   virtual const char *ClassInfo_Title(ClassInfo_t * /* info */) const {return 0;}
   virtual const char *ClassInfo_TmpltName(ClassInfo_t * /* info */) const {return 0;}


   // BaseClassInfo interface
   virtual void   BaseClassInfo_Delete(BaseClassInfo_t * /* bcinfo */) const {;}
   virtual BaseClassInfo_t  *BaseClassInfo_Factory(ClassInfo_t * /* info */) const {return 0;}
   virtual BaseClassInfo_t  *BaseClassInfo_Factory(ClassInfo_t* /* derived */,
                                                   ClassInfo_t* /* base */) const {return 0;}
   virtual int    BaseClassInfo_Next(BaseClassInfo_t * /* bcinfo */) const {return 0;}
   virtual int    BaseClassInfo_Next(BaseClassInfo_t * /* bcinfo */, int  /* onlyDirect */) const {return 0;}
   virtual Long_t BaseClassInfo_Offset(BaseClassInfo_t * /* toBaseClassInfo */, void* /* address */ = 0 /*default for non-virtual*/, bool /*isderived*/ = true /*default for non-virtual*/) const {return 0;}
   virtual Long_t BaseClassInfo_Property(BaseClassInfo_t * /* bcinfo */) const {return 0;}
   virtual Long_t BaseClassInfo_Tagnum(BaseClassInfo_t * /* bcinfo */) const {return 0;}
   virtual ClassInfo_t*BaseClassInfo_ClassInfo(BaseClassInfo_t * /* bcinfo */) const = 0;
   virtual const char *BaseClassInfo_FullName(BaseClassInfo_t * /* bcinfo */) const {return 0;}
   virtual const char *BaseClassInfo_Name(BaseClassInfo_t * /* bcinfo */) const {return 0;}
   virtual const char *BaseClassInfo_TmpltName(BaseClassInfo_t * /* bcinfo */) const {return 0;}

   // DataMemberInfo interface
   virtual int    DataMemberInfo_ArrayDim(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual void   DataMemberInfo_Delete(DataMemberInfo_t * /* dminfo */) const {;}
   virtual DataMemberInfo_t  *DataMemberInfo_Factory(ClassInfo_t * /* clinfo */ = 0) const {return 0;}
   virtual DataMemberInfo_t  *DataMemberInfo_Factory(DeclId_t declid, ClassInfo_t* clinfo) const = 0;
   virtual DataMemberInfo_t  *DataMemberInfo_FactoryCopy(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual Bool_t DataMemberInfo_IsValid(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual int    DataMemberInfo_MaxIndex(DataMemberInfo_t * /* dminfo */, Int_t  /* dim */) const {return 0;}
   virtual int    DataMemberInfo_Next(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual Long_t DataMemberInfo_Offset(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual Long_t DataMemberInfo_Property(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual Long_t DataMemberInfo_TypeProperty(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual int    DataMemberInfo_TypeSize(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual const char *DataMemberInfo_TypeName(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual const char *DataMemberInfo_TypeTrueName(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual const char *DataMemberInfo_Name(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual const char *DataMemberInfo_Title(DataMemberInfo_t * /* dminfo */) const {return 0;}
   virtual const char *DataMemberInfo_ValidArrayIndex(DataMemberInfo_t * /* dminfo */) const {return 0;}

   // Function Template interface
   virtual void   FuncTempInfo_Delete(FuncTempInfo_t * /* ft_info */) const = 0;
   virtual FuncTempInfo_t  *FuncTempInfo_Factory(DeclId_t declid) const = 0;
   virtual FuncTempInfo_t  *FuncTempInfo_FactoryCopy(FuncTempInfo_t * /* ft_info */) const = 0;
   virtual Bool_t FuncTempInfo_IsValid(FuncTempInfo_t * /* ft_info */) const = 0;
   virtual UInt_t FuncTempInfo_TemplateNargs(FuncTempInfo_t * /* ft_info */) const = 0;
   virtual UInt_t FuncTempInfo_TemplateMinReqArgs(FuncTempInfo_t * /* ft_info */) const = 0;
   virtual Long_t FuncTempInfo_Property(FuncTempInfo_t * /* ft_info */) const = 0;
   virtual void FuncTempInfo_Name(FuncTempInfo_t * /* ft_info */, TString &name) const = 0;
   virtual void FuncTempInfo_Title(FuncTempInfo_t * /* ft_info */, TString &title) const = 0;

   // MethodInfo interface
   virtual void   MethodInfo_CreateSignature(MethodInfo_t * /* minfo */, TString & /* signature */) const {;}
   virtual void   MethodInfo_Delete(MethodInfo_t * /* minfo */) const {;}
   virtual MethodInfo_t  *MethodInfo_Factory() const {return 0;}
   virtual MethodInfo_t  *MethodInfo_Factory(ClassInfo_t * /*clinfo*/) const {return 0;}
   virtual MethodInfo_t  *MethodInfo_Factory(DeclId_t declid) const = 0;
   virtual MethodInfo_t  *MethodInfo_FactoryCopy(MethodInfo_t * /* minfo */) const {return 0;}
   virtual void  *MethodInfo_InterfaceMethod(MethodInfo_t * /* minfo */) const {return 0;}
   virtual Bool_t MethodInfo_IsValid(MethodInfo_t * /* minfo */) const {return 0;}
   virtual int    MethodInfo_NArg(MethodInfo_t * /* minfo */) const {return 0;}
   virtual int    MethodInfo_NDefaultArg(MethodInfo_t * /* minfo */) const {return 0;}
   virtual int    MethodInfo_Next(MethodInfo_t * /* minfo */) const {return 0;}
   virtual Long_t MethodInfo_Property(MethodInfo_t * /* minfo */) const = 0;
   virtual Long_t MethodInfo_ExtraProperty(MethodInfo_t * /* minfo */) const = 0;
   virtual TypeInfo_t  *MethodInfo_Type(MethodInfo_t * /* minfo */) const {return 0;}
   virtual EReturnType MethodInfo_MethodCallReturnType(MethodInfo_t* minfo) const = 0;
   virtual const char *MethodInfo_GetMangledName(MethodInfo_t * /* minfo */) const {return 0;}
   virtual const char *MethodInfo_GetPrototype(MethodInfo_t * /* minfo */) const {return 0;}
   virtual const char *MethodInfo_Name(MethodInfo_t * /* minfo */) const {return 0;}
   virtual const char *MethodInfo_TypeName(MethodInfo_t * /* minfo */) const {return 0;}
   virtual std::string MethodInfo_TypeNormalizedName(MethodInfo_t * /* minfo */) const {return "";}
   virtual const char *MethodInfo_Title(MethodInfo_t * /* minfo */) const {return 0;}

   // MethodArgInfo interface
   virtual void   MethodArgInfo_Delete(MethodArgInfo_t * /* marginfo */) const {;}
   virtual MethodArgInfo_t  *MethodArgInfo_Factory() const {return 0;}
   virtual MethodArgInfo_t  *MethodArgInfo_Factory(MethodInfo_t * /*minfo*/) const {return 0;}
   virtual MethodArgInfo_t  *MethodArgInfo_FactoryCopy(MethodArgInfo_t * /* marginfo */) const {return 0;}
   virtual Bool_t MethodArgInfo_IsValid(MethodArgInfo_t * /* marginfo */) const {return 0;}
   virtual int    MethodArgInfo_Next(MethodArgInfo_t * /* marginfo */) const {return 0;}
   virtual Long_t MethodArgInfo_Property(MethodArgInfo_t * /* marginfo */) const {return 0;}
   virtual const char *MethodArgInfo_DefaultValue(MethodArgInfo_t * /* marginfo */) const {return 0;}
   virtual const char *MethodArgInfo_Name(MethodArgInfo_t * /* marginfo */) const {return 0;}
   virtual const char *MethodArgInfo_TypeName(MethodArgInfo_t * /* marginfo */) const {return 0;}
   virtual std::string MethodArgInfo_TypeNormalizedName(MethodArgInfo_t * /* marginfo */) const = 0;


   // TypeInfo interface
   virtual void    TypeInfo_Delete(TypeInfo_t * /* tinfo */) const {;}
   virtual TypeInfo_t *TypeInfo_Factory() const {return 0;}
   virtual TypeInfo_t *TypeInfo_Factory(const char* /* name */) const {return 0;}
   virtual TypeInfo_t *TypeInfo_FactoryCopy(TypeInfo_t * /* tinfo */) const {return 0;}
   virtual void   TypeInfo_Init(TypeInfo_t * /* tinfo */, const char * /* funcname */) const {;}
   virtual Bool_t TypeInfo_IsValid(TypeInfo_t * /* tinfo */) const {return 0;}
   virtual const char *TypeInfo_Name(TypeInfo_t * /* info */) const {return 0;}
   virtual Long_t TypeInfo_Property(TypeInfo_t * /* tinfo */) const {return 0;}
   virtual int    TypeInfo_RefType(TypeInfo_t * /* tinfo */) const {return 0;}
   virtual int    TypeInfo_Size(TypeInfo_t * /* tinfo */) const {return 0;}
   virtual const char *TypeInfo_TrueName(TypeInfo_t * /* tinfo */) const {return 0;}


   // TypedefInfo interface
   virtual void   TypedefInfo_Delete(TypedefInfo_t * /* tinfo */) const {;}
   virtual TypedefInfo_t  *TypedefInfo_Factory() const {return 0;}
   virtual TypedefInfo_t  *TypedefInfo_Factory(const char *) const {return 0;}
   virtual TypedefInfo_t  *TypedefInfo_FactoryCopy(TypedefInfo_t * /* tinfo */) const {return 0;}
   virtual void   TypedefInfo_Init(TypedefInfo_t * /* tinfo */, const char * /* funcname */) const {;}
   virtual Bool_t TypedefInfo_IsValid(TypedefInfo_t * /* tinfo */) const {return 0;}
   virtual int    TypedefInfo_Next(TypedefInfo_t* /*tinfo*/) const {return 0;}
   virtual Long_t TypedefInfo_Property(TypedefInfo_t * /* tinfo */) const {return 0;}
   virtual int    TypedefInfo_Size(TypedefInfo_t * /* tinfo */) const {return 0;}
   virtual const char *TypedefInfo_TrueName(TypedefInfo_t * /* tinfo */) const {return 0;}
   virtual const char *TypedefInfo_Name(TypedefInfo_t * /* tinfo */) const {return 0;}
   virtual const char *TypedefInfo_Title(TypedefInfo_t * /* tinfo */) const {return 0;}

   static TInterpreter *Instance();

   ClassDef(TInterpreter,0)  //ABC defining interface to generic interpreter
};


typedef TInterpreter *CreateInterpreter_t(void* shlibHandle);
typedef void *DestroyInterpreter_t(TInterpreter*);

#ifndef __CINT__
#define gInterpreter (TInterpreter::Instance())
R__EXTERN TInterpreter* (*gPtr2Interpreter)();
R__EXTERN TInterpreter* gCling;
#endif

#endif
 TInterpreter.h:1
 TInterpreter.h:2
 TInterpreter.h:3
 TInterpreter.h:4
 TInterpreter.h:5
 TInterpreter.h:6
 TInterpreter.h:7
 TInterpreter.h:8
 TInterpreter.h:9
 TInterpreter.h:10
 TInterpreter.h:11
 TInterpreter.h:12
 TInterpreter.h:13
 TInterpreter.h:14
 TInterpreter.h:15
 TInterpreter.h:16
 TInterpreter.h:17
 TInterpreter.h:18
 TInterpreter.h:19
 TInterpreter.h:20
 TInterpreter.h:21
 TInterpreter.h:22
 TInterpreter.h:23
 TInterpreter.h:24
 TInterpreter.h:25
 TInterpreter.h:26
 TInterpreter.h:27
 TInterpreter.h:28
 TInterpreter.h:29
 TInterpreter.h:30
 TInterpreter.h:31
 TInterpreter.h:32
 TInterpreter.h:33
 TInterpreter.h:34
 TInterpreter.h:35
 TInterpreter.h:36
 TInterpreter.h:37
 TInterpreter.h:38
 TInterpreter.h:39
 TInterpreter.h:40
 TInterpreter.h:41
 TInterpreter.h:42
 TInterpreter.h:43
 TInterpreter.h:44
 TInterpreter.h:45
 TInterpreter.h:46
 TInterpreter.h:47
 TInterpreter.h:48
 TInterpreter.h:49
 TInterpreter.h:50
 TInterpreter.h:51
 TInterpreter.h:52
 TInterpreter.h:53
 TInterpreter.h:54
 TInterpreter.h:55
 TInterpreter.h:56
 TInterpreter.h:57
 TInterpreter.h:58
 TInterpreter.h:59
 TInterpreter.h:60
 TInterpreter.h:61
 TInterpreter.h:62
 TInterpreter.h:63
 TInterpreter.h:64
 TInterpreter.h:65
 TInterpreter.h:66
 TInterpreter.h:67
 TInterpreter.h:68
 TInterpreter.h:69
 TInterpreter.h:70
 TInterpreter.h:71
 TInterpreter.h:72
 TInterpreter.h:73
 TInterpreter.h:74
 TInterpreter.h:75
 TInterpreter.h:76
 TInterpreter.h:77
 TInterpreter.h:78
 TInterpreter.h:79
 TInterpreter.h:80
 TInterpreter.h:81
 TInterpreter.h:82
 TInterpreter.h:83
 TInterpreter.h:84
 TInterpreter.h:85
 TInterpreter.h:86
 TInterpreter.h:87
 TInterpreter.h:88
 TInterpreter.h:89
 TInterpreter.h:90
 TInterpreter.h:91
 TInterpreter.h:92
 TInterpreter.h:93
 TInterpreter.h:94
 TInterpreter.h:95
 TInterpreter.h:96
 TInterpreter.h:97
 TInterpreter.h:98
 TInterpreter.h:99
 TInterpreter.h:100
 TInterpreter.h:101
 TInterpreter.h:102
 TInterpreter.h:103
 TInterpreter.h:104
 TInterpreter.h:105
 TInterpreter.h:106
 TInterpreter.h:107
 TInterpreter.h:108
 TInterpreter.h:109
 TInterpreter.h:110
 TInterpreter.h:111
 TInterpreter.h:112
 TInterpreter.h:113
 TInterpreter.h:114
 TInterpreter.h:115
 TInterpreter.h:116
 TInterpreter.h:117
 TInterpreter.h:118
 TInterpreter.h:119
 TInterpreter.h:120
 TInterpreter.h:121
 TInterpreter.h:122
 TInterpreter.h:123
 TInterpreter.h:124
 TInterpreter.h:125
 TInterpreter.h:126
 TInterpreter.h:127
 TInterpreter.h:128
 TInterpreter.h:129
 TInterpreter.h:130
 TInterpreter.h:131
 TInterpreter.h:132
 TInterpreter.h:133
 TInterpreter.h:134
 TInterpreter.h:135
 TInterpreter.h:136
 TInterpreter.h:137
 TInterpreter.h:138
 TInterpreter.h:139
 TInterpreter.h:140
 TInterpreter.h:141
 TInterpreter.h:142
 TInterpreter.h:143
 TInterpreter.h:144
 TInterpreter.h:145
 TInterpreter.h:146
 TInterpreter.h:147
 TInterpreter.h:148
 TInterpreter.h:149
 TInterpreter.h:150
 TInterpreter.h:151
 TInterpreter.h:152
 TInterpreter.h:153
 TInterpreter.h:154
 TInterpreter.h:155
 TInterpreter.h:156
 TInterpreter.h:157
 TInterpreter.h:158
 TInterpreter.h:159
 TInterpreter.h:160
 TInterpreter.h:161
 TInterpreter.h:162
 TInterpreter.h:163
 TInterpreter.h:164
 TInterpreter.h:165
 TInterpreter.h:166
 TInterpreter.h:167
 TInterpreter.h:168
 TInterpreter.h:169
 TInterpreter.h:170
 TInterpreter.h:171
 TInterpreter.h:172
 TInterpreter.h:173
 TInterpreter.h:174
 TInterpreter.h:175
 TInterpreter.h:176
 TInterpreter.h:177
 TInterpreter.h:178
 TInterpreter.h:179
 TInterpreter.h:180
 TInterpreter.h:181
 TInterpreter.h:182
 TInterpreter.h:183
 TInterpreter.h:184
 TInterpreter.h:185
 TInterpreter.h:186
 TInterpreter.h:187
 TInterpreter.h:188
 TInterpreter.h:189
 TInterpreter.h:190
 TInterpreter.h:191
 TInterpreter.h:192
 TInterpreter.h:193
 TInterpreter.h:194
 TInterpreter.h:195
 TInterpreter.h:196
 TInterpreter.h:197
 TInterpreter.h:198
 TInterpreter.h:199
 TInterpreter.h:200
 TInterpreter.h:201
 TInterpreter.h:202
 TInterpreter.h:203
 TInterpreter.h:204
 TInterpreter.h:205
 TInterpreter.h:206
 TInterpreter.h:207
 TInterpreter.h:208
 TInterpreter.h:209
 TInterpreter.h:210
 TInterpreter.h:211
 TInterpreter.h:212
 TInterpreter.h:213
 TInterpreter.h:214
 TInterpreter.h:215
 TInterpreter.h:216
 TInterpreter.h:217
 TInterpreter.h:218
 TInterpreter.h:219
 TInterpreter.h:220
 TInterpreter.h:221
 TInterpreter.h:222
 TInterpreter.h:223
 TInterpreter.h:224
 TInterpreter.h:225
 TInterpreter.h:226
 TInterpreter.h:227
 TInterpreter.h:228
 TInterpreter.h:229
 TInterpreter.h:230
 TInterpreter.h:231
 TInterpreter.h:232
 TInterpreter.h:233
 TInterpreter.h:234
 TInterpreter.h:235
 TInterpreter.h:236
 TInterpreter.h:237
 TInterpreter.h:238
 TInterpreter.h:239
 TInterpreter.h:240
 TInterpreter.h:241
 TInterpreter.h:242
 TInterpreter.h:243
 TInterpreter.h:244
 TInterpreter.h:245
 TInterpreter.h:246
 TInterpreter.h:247
 TInterpreter.h:248
 TInterpreter.h:249
 TInterpreter.h:250
 TInterpreter.h:251
 TInterpreter.h:252
 TInterpreter.h:253
 TInterpreter.h:254
 TInterpreter.h:255
 TInterpreter.h:256
 TInterpreter.h:257
 TInterpreter.h:258
 TInterpreter.h:259
 TInterpreter.h:260
 TInterpreter.h:261
 TInterpreter.h:262
 TInterpreter.h:263
 TInterpreter.h:264
 TInterpreter.h:265
 TInterpreter.h:266
 TInterpreter.h:267
 TInterpreter.h:268
 TInterpreter.h:269
 TInterpreter.h:270
 TInterpreter.h:271
 TInterpreter.h:272
 TInterpreter.h:273
 TInterpreter.h:274
 TInterpreter.h:275
 TInterpreter.h:276
 TInterpreter.h:277
 TInterpreter.h:278
 TInterpreter.h:279
 TInterpreter.h:280
 TInterpreter.h:281
 TInterpreter.h:282
 TInterpreter.h:283
 TInterpreter.h:284
 TInterpreter.h:285
 TInterpreter.h:286
 TInterpreter.h:287
 TInterpreter.h:288
 TInterpreter.h:289
 TInterpreter.h:290
 TInterpreter.h:291
 TInterpreter.h:292
 TInterpreter.h:293
 TInterpreter.h:294
 TInterpreter.h:295
 TInterpreter.h:296
 TInterpreter.h:297
 TInterpreter.h:298
 TInterpreter.h:299
 TInterpreter.h:300
 TInterpreter.h:301
 TInterpreter.h:302
 TInterpreter.h:303
 TInterpreter.h:304
 TInterpreter.h:305
 TInterpreter.h:306
 TInterpreter.h:307
 TInterpreter.h:308
 TInterpreter.h:309
 TInterpreter.h:310
 TInterpreter.h:311
 TInterpreter.h:312
 TInterpreter.h:313
 TInterpreter.h:314
 TInterpreter.h:315
 TInterpreter.h:316
 TInterpreter.h:317
 TInterpreter.h:318
 TInterpreter.h:319
 TInterpreter.h:320
 TInterpreter.h:321
 TInterpreter.h:322
 TInterpreter.h:323
 TInterpreter.h:324
 TInterpreter.h:325
 TInterpreter.h:326
 TInterpreter.h:327
 TInterpreter.h:328
 TInterpreter.h:329
 TInterpreter.h:330
 TInterpreter.h:331
 TInterpreter.h:332
 TInterpreter.h:333
 TInterpreter.h:334
 TInterpreter.h:335
 TInterpreter.h:336
 TInterpreter.h:337
 TInterpreter.h:338
 TInterpreter.h:339
 TInterpreter.h:340
 TInterpreter.h:341
 TInterpreter.h:342
 TInterpreter.h:343
 TInterpreter.h:344
 TInterpreter.h:345
 TInterpreter.h:346
 TInterpreter.h:347
 TInterpreter.h:348
 TInterpreter.h:349
 TInterpreter.h:350
 TInterpreter.h:351
 TInterpreter.h:352
 TInterpreter.h:353
 TInterpreter.h:354
 TInterpreter.h:355
 TInterpreter.h:356
 TInterpreter.h:357
 TInterpreter.h:358
 TInterpreter.h:359
 TInterpreter.h:360
 TInterpreter.h:361
 TInterpreter.h:362
 TInterpreter.h:363
 TInterpreter.h:364
 TInterpreter.h:365
 TInterpreter.h:366
 TInterpreter.h:367
 TInterpreter.h:368
 TInterpreter.h:369
 TInterpreter.h:370
 TInterpreter.h:371
 TInterpreter.h:372
 TInterpreter.h:373
 TInterpreter.h:374
 TInterpreter.h:375
 TInterpreter.h:376
 TInterpreter.h:377
 TInterpreter.h:378
 TInterpreter.h:379
 TInterpreter.h:380
 TInterpreter.h:381
 TInterpreter.h:382
 TInterpreter.h:383
 TInterpreter.h:384
 TInterpreter.h:385
 TInterpreter.h:386
 TInterpreter.h:387
 TInterpreter.h:388
 TInterpreter.h:389
 TInterpreter.h:390
 TInterpreter.h:391
 TInterpreter.h:392
 TInterpreter.h:393
 TInterpreter.h:394
 TInterpreter.h:395
 TInterpreter.h:396
 TInterpreter.h:397
 TInterpreter.h:398
 TInterpreter.h:399
 TInterpreter.h:400
 TInterpreter.h:401
 TInterpreter.h:402
 TInterpreter.h:403
 TInterpreter.h:404
 TInterpreter.h:405
 TInterpreter.h:406
 TInterpreter.h:407
 TInterpreter.h:408
 TInterpreter.h:409
 TInterpreter.h:410
 TInterpreter.h:411
 TInterpreter.h:412
 TInterpreter.h:413
 TInterpreter.h:414
 TInterpreter.h:415
 TInterpreter.h:416
 TInterpreter.h:417
 TInterpreter.h:418
 TInterpreter.h:419
 TInterpreter.h:420
 TInterpreter.h:421
 TInterpreter.h:422
 TInterpreter.h:423
 TInterpreter.h:424
 TInterpreter.h:425
 TInterpreter.h:426
 TInterpreter.h:427
 TInterpreter.h:428
 TInterpreter.h:429
 TInterpreter.h:430
 TInterpreter.h:431
 TInterpreter.h:432
 TInterpreter.h:433
 TInterpreter.h:434
 TInterpreter.h:435
 TInterpreter.h:436
 TInterpreter.h:437
 TInterpreter.h:438
 TInterpreter.h:439
 TInterpreter.h:440
 TInterpreter.h:441
 TInterpreter.h:442
 TInterpreter.h:443
 TInterpreter.h:444
 TInterpreter.h:445
 TInterpreter.h:446
 TInterpreter.h:447
 TInterpreter.h:448
 TInterpreter.h:449
 TInterpreter.h:450
 TInterpreter.h:451
 TInterpreter.h:452
 TInterpreter.h:453
 TInterpreter.h:454
 TInterpreter.h:455
 TInterpreter.h:456
 TInterpreter.h:457
 TInterpreter.h:458
 TInterpreter.h:459
 TInterpreter.h:460
 TInterpreter.h:461
 TInterpreter.h:462
 TInterpreter.h:463
 TInterpreter.h:464
 TInterpreter.h:465
 TInterpreter.h:466
 TInterpreter.h:467
 TInterpreter.h:468
 TInterpreter.h:469
 TInterpreter.h:470
 TInterpreter.h:471
 TInterpreter.h:472
 TInterpreter.h:473
 TInterpreter.h:474
 TInterpreter.h:475
 TInterpreter.h:476
 TInterpreter.h:477
 TInterpreter.h:478
 TInterpreter.h:479
 TInterpreter.h:480
 TInterpreter.h:481
 TInterpreter.h:482
 TInterpreter.h:483
 TInterpreter.h:484
 TInterpreter.h:485
 TInterpreter.h:486
 TInterpreter.h:487
 TInterpreter.h:488
 TInterpreter.h:489
 TInterpreter.h:490
 TInterpreter.h:491
 TInterpreter.h:492
 TInterpreter.h:493
 TInterpreter.h:494
 TInterpreter.h:495
 TInterpreter.h:496
 TInterpreter.h:497
 TInterpreter.h:498
 TInterpreter.h:499
 TInterpreter.h:500
 TInterpreter.h:501
 TInterpreter.h:502
 TInterpreter.h:503
 TInterpreter.h:504
 TInterpreter.h:505
 TInterpreter.h:506
 TInterpreter.h:507