13 #ifndef ROOT_TInterpreter
14 #define ROOT_TInterpreter
42 R__EXTERN TVirtualMutex *gInterpreterMutex;
44 #if defined (_REENTRANT) || defined (WIN32)
45 # define R__LOCKGUARD_CLING(mutex) ::ROOT::Internal::InterpreterMutexRegistrationRAII _R__UNIQUE_(R__guard)(mutex); { }
47 # define R__LOCKGUARD_CLING(mutex) (void)(mutex); { }
52 struct InterpreterMutexRegistrationRAII {
53 TLockGuard fLockGuard;
54 InterpreterMutexRegistrationRAII(TVirtualMutex* mutex);
55 ~InterpreterMutexRegistrationRAII();
60 class TInterpreter :
public TNamed {
63 virtual void Execute(TMethod *method, TObjArray *params,
int *error = 0) = 0;
64 virtual Bool_t SetSuspendAutoParsing(Bool_t value) = 0;
66 friend class SuspendAutoParsing;
70 typedef class std::map<std::string, std::string> MembersMap_t;
80 enum class EReturnType { kLong, kDouble, kString, kOther, kNoReturnType };
82 struct CallFuncIFacePtr_t {
90 typedef void (*Generic_t)(
void*, int,
void**,
void*);
91 typedef void (*Ctor_t)(
void**,
void*,
unsigned long);
92 typedef void (*Dtor_t)(
void*,
unsigned long, int);
95 fKind(kUninitialized), fGeneric(0) {}
96 CallFuncIFacePtr_t(Generic_t func):
97 fKind(kGeneric), fGeneric(func) {}
98 CallFuncIFacePtr_t(Ctor_t func):
99 fKind(kCtor), fCtor(func) {}
100 CallFuncIFacePtr_t(Dtor_t func):
101 fKind(kDtor), fDtor(func) {}
111 class SuspendAutoParsing {
112 TInterpreter *fInterp;
115 SuspendAutoParsing(TInterpreter *where, Bool_t value = kTRUE) : fInterp(where), fPrevious(fInterp->SetSuspendAutoParsing(value)) {}
116 ~SuspendAutoParsing() { fInterp->SetSuspendAutoParsing(fPrevious); }
118 virtual Bool_t IsAutoParsingSuspended()
const = 0;
120 class SuspendAutoloadingRAII {
121 TInterpreter *fInterp =
nullptr;
125 SuspendAutoloadingRAII(TInterpreter *interp) : fInterp(interp)
127 fOldValue = fInterp->SetClassAutoloading(
false);
129 ~SuspendAutoloadingRAII() { fInterp->SetClassAutoloading(fOldValue); }
132 typedef int (*AutoLoadCallBack_t)(
const char*);
133 typedef std::vector<std::pair<std::string, int> > FwdDeclArgsToKeepCollection_t;
136 TInterpreter(
const char *name,
const char *title =
"Generic Interpreter");
137 virtual ~TInterpreter() { }
139 virtual void AddIncludePath(
const char *path) = 0;
140 virtual void *SetAutoLoadCallBack(
void* ) {
return 0; }
141 virtual void *GetAutoLoadCallBack()
const {
return 0; }
142 virtual Int_t AutoLoad(
const char *classname, Bool_t knowDictNotLoaded = kFALSE) = 0;
143 virtual Int_t AutoLoad(
const std::type_info& typeinfo, Bool_t knowDictNotLoaded = kFALSE) = 0;
144 virtual Int_t AutoParse(
const char* cls) = 0;
145 virtual void ClearFileBusy() = 0;
146 virtual void ClearStack() = 0;
147 virtual Bool_t Declare(
const char* code) = 0;
148 virtual void EnableAutoLoading() = 0;
149 virtual void EndOfLineAction() = 0;
150 virtual TClass *GetClass(
const std::type_info& typeinfo, Bool_t load)
const = 0;
151 virtual Int_t GetExitCode()
const = 0;
152 virtual TEnv *GetMapfile()
const {
return 0; }
153 virtual Int_t GetMore()
const = 0;
154 virtual TClass *GenerateTClass(
const char *classname, Bool_t emulation, Bool_t silent = kFALSE) = 0;
155 virtual TClass *GenerateTClass(ClassInfo_t *classinfo, Bool_t silent = kFALSE) = 0;
156 virtual Int_t GenerateDictionary(
const char *classes,
const char *includes = 0,
const char *options = 0) = 0;
157 virtual char *GetPrompt() = 0;
158 virtual const char *GetSharedLibs() = 0;
159 virtual const char *GetClassSharedLibs(
const char *cls) = 0;
160 virtual const char *GetSharedLibDeps(
const char *lib,
bool tryDyld =
false) = 0;
161 virtual const char *GetIncludePath() = 0;
162 virtual const char *GetSTLIncludePath()
const {
return ""; }
163 virtual TObjArray *GetRootMapFiles()
const = 0;
164 virtual void Initialize() = 0;
165 virtual void ShutDown() = 0;
166 virtual void InspectMembers(TMemberInspector&,
const void* obj,
const TClass* cl, Bool_t isTransient) = 0;
167 virtual Bool_t IsLoaded(
const char *filename)
const = 0;
168 virtual Bool_t IsLibraryLoaded(
const char *libname)
const = 0;
169 virtual Bool_t HasPCMForLibrary(
const char *libname)
const = 0;
170 virtual Int_t Load(
const char *filenam, Bool_t system = kFALSE) = 0;
171 virtual void LoadMacro(
const char *filename, EErrorCode *error = 0) = 0;
172 virtual Int_t LoadLibraryMap(
const char *rootmapfile = 0) = 0;
173 virtual Int_t RescanLibraryMap() = 0;
174 virtual Int_t ReloadAllSharedLibraryMaps() = 0;
175 virtual Int_t UnloadAllSharedLibraryMaps() = 0;
176 virtual Int_t UnloadLibraryMap(
const char *library) = 0;
177 virtual Long_t ProcessLine(
const char *line, EErrorCode *error = 0) = 0;
178 virtual Long_t ProcessLineSynch(
const char *line, EErrorCode *error = 0) = 0;
179 virtual void PrintIntro() = 0;
180 virtual bool RegisterPrebuiltModulePath(
const std::string& FullPath,
181 const std::string& ModuleMapName =
"module.modulemap")
const = 0;
182 virtual void RegisterModule(
const char* ,
188 const FwdDeclArgsToKeepCollection_t& fwdDeclArgsToKeep,
189 const char** classesHeaders,
190 Bool_t lateRegistration =
false,
191 Bool_t hasCxxModule =
false) = 0;
192 virtual void RegisterTClassUpdate(TClass *oldcl,DictFuncPtr_t dict) = 0;
193 virtual void UnRegisterTClassUpdate(
const TClass *oldcl) = 0;
194 virtual Int_t SetClassSharedLibs(
const char *cls,
const char *libs) = 0;
195 virtual void SetGetline(
const char*(*getlineFunc)(
const char* prompt),
196 void (*histaddFunc)(
const char* line)) = 0;
197 virtual void Reset() = 0;
198 virtual void ResetAll() = 0;
199 virtual void ResetGlobals() = 0;
200 virtual void ResetGlobalVar(
void *obj) = 0;
201 virtual void RewindDictionary() = 0;
202 virtual Int_t DeleteGlobal(
void *obj) = 0;
203 virtual Int_t DeleteVariable(
const char* name) = 0;
204 virtual void SaveContext() = 0;
205 virtual void SaveGlobalsContext() = 0;
206 virtual void UpdateListOfGlobals() = 0;
207 virtual void UpdateListOfGlobalFunctions() = 0;
208 virtual void UpdateListOfTypes() = 0;
209 virtual void SetClassInfo(TClass *cl, Bool_t reload = kFALSE) = 0;
211 enum ECheckClassInfo {
214 kWithClassDefInline = 2
216 virtual ECheckClassInfo CheckClassInfo(
const char *name, Bool_t autoload, Bool_t isClassOrNamespaceOnly = kFALSE) = 0;
218 virtual Bool_t CheckClassTemplate(
const char *name) = 0;
219 virtual Long_t Calc(
const char *line, EErrorCode* error = 0) = 0;
220 virtual void CreateListOfBaseClasses(TClass *cl)
const = 0;
221 virtual void CreateListOfDataMembers(TClass *cl)
const = 0;
222 virtual void CreateListOfMethods(TClass *cl)
const = 0;
223 virtual void CreateListOfMethodArgs(TFunction *m)
const = 0;
224 virtual void UpdateListOfMethods(TClass *cl)
const = 0;
225 virtual TString GetMangledName(TClass *cl,
const char *method,
const char *params, Bool_t objectIsConst = kFALSE) = 0;
226 virtual TString GetMangledNameWithPrototype(TClass *cl,
const char *method,
const char *proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode = ROOT::kConversionMatch) = 0;
227 virtual void GetInterpreterTypeName(
const char *name, std::string &output, Bool_t full = kFALSE) = 0;
228 virtual void *GetInterfaceMethod(TClass *cl,
const char *method,
const char *params, Bool_t objectIsConst = kFALSE) = 0;
229 virtual void *GetInterfaceMethodWithPrototype(TClass *cl,
const char *method,
const char *proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode = ROOT::kConversionMatch) = 0;
230 virtual void Execute(
const char *
function,
const char *params,
int *error = 0) = 0;
231 virtual void Execute(TObject *obj, TClass *cl,
const char *method,
const char *params,
int *error = 0) = 0;
232 virtual void Execute(TObject *obj, TClass *cl, TMethod *method, TObjArray *params,
int *error = 0) = 0;
233 virtual void ExecuteWithArgsAndReturn(TMethod *method,
void* address,
const void* args[] = 0,
int = 0,
void* ret= 0)
const = 0;
234 virtual Long_t ExecuteMacro(
const char *filename, EErrorCode *error = 0) = 0;
235 virtual Bool_t IsErrorMessagesEnabled()
const = 0;
236 virtual Bool_t SetErrorMessages(Bool_t enable = kTRUE) = 0;
237 virtual Bool_t IsProcessLineLocked()
const = 0;
238 virtual void SetProcessLineLock(Bool_t lock = kTRUE) = 0;
239 virtual const char *TypeName(
const char *s) = 0;
240 virtual std::string ToString(
const char *type,
void *obj) = 0;
242 virtual void SnapshotMutexState(ROOT::TVirtualRWMutex* mtx) = 0;
243 virtual void ForgetMutexState() = 0;
249 virtual int DisplayClass(FILE * ,
const char * ,
int ,
int )
const {
return 0;}
250 virtual int DisplayIncludePath(FILE * )
const {
return 0;}
251 virtual void *FindSym(
const char * )
const {
return 0;}
252 virtual void GenericError(
const char * )
const {;}
253 virtual Long_t GetExecByteCode()
const {
return 0;}
254 virtual const char *GetTopLevelMacroName()
const {
return 0;};
255 virtual const char *GetCurrentMacroName()
const {
return 0;};
256 virtual int GetSecurityError()
const{
return 0;}
257 virtual int LoadFile(
const char * )
const {
return 0;}
258 virtual Bool_t LoadText(
const char * )
const {
return kFALSE;}
259 virtual const char *MapCppName(
const char*)
const {
return 0;}
260 virtual void SetAlloclockfunc(
void (*)())
const {;}
261 virtual void SetAllocunlockfunc(
void (*)())
const {;}
262 virtual int SetClassAutoloading(
int)
const {
return 0;}
263 virtual int SetClassAutoparsing(
int) {
return 0;};
264 virtual void SetErrmsgcallback(
void * )
const {;}
265 virtual void SetTempLevel(
int )
const {;}
266 virtual int UnloadFile(
const char * )
const {
return 0;}
270 TInterpreterValue *CreateTemporary()
const {
271 return MakeInterpreterValue().release();
273 virtual std::unique_ptr<TInterpreterValue> MakeInterpreterValue()
const {
return 0; }
274 virtual void CodeComplete(
const std::string&,
size_t&,
275 std::vector<std::string>&) {;}
276 virtual int Evaluate(
const char*, TInterpreterValue&) {
return 0;}
279 virtual EReturnType MethodCallReturnType(TFunction *func)
const = 0;
280 virtual ULong64_t GetInterpreterStateMarker()
const = 0;
281 virtual bool DiagnoseIfInterpreterException(
const std::exception &e)
const = 0;
283 typedef TDictionary::DeclId_t DeclId_t;
284 virtual DeclId_t GetDeclId(CallFunc_t *info)
const = 0;
285 virtual DeclId_t GetDeclId(ClassInfo_t *info)
const = 0;
286 virtual DeclId_t GetDeclId(DataMemberInfo_t *info)
const = 0;
287 virtual DeclId_t GetDeclId(FuncTempInfo_t *info)
const = 0;
288 virtual DeclId_t GetDeclId(MethodInfo_t *info)
const = 0;
289 virtual DeclId_t GetDeclId(TypedefInfo_t *info)
const = 0;
291 virtual void SetDeclAttr(DeclId_t,
const char* ) = 0 ;
293 virtual DeclId_t GetDataMember(ClassInfo_t *cl,
const char *name)
const = 0;
294 virtual DeclId_t GetDataMemberAtAddr(
const void *addr)
const = 0;
295 virtual DeclId_t GetDataMemberWithValue(
const void *ptrvalue)
const = 0;
296 virtual DeclId_t GetEnum(TClass *cl,
const char *name)
const = 0;
297 virtual TEnum* CreateEnum(
void *VD, TClass *cl)
const = 0;
298 virtual void UpdateEnumConstants(TEnum* enumObj, TClass* cl)
const = 0;
299 virtual void LoadEnums(TListOfEnums& cl)
const = 0;
300 virtual DeclId_t GetFunction(ClassInfo_t *cl,
const char *funcname) = 0;
301 virtual DeclId_t GetFunctionWithPrototype(ClassInfo_t *cl,
const char* method,
const char* proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) = 0;
302 virtual DeclId_t GetFunctionWithValues(ClassInfo_t *cl,
const char* method,
const char* params, Bool_t objectIsConst = kFALSE) = 0;
303 virtual DeclId_t GetFunctionTemplate(ClassInfo_t *cl,
const char *funcname) = 0;
304 virtual void GetFunctionOverloads(ClassInfo_t *cl,
const char *funcname, std::vector<DeclId_t>& res)
const = 0;
305 virtual void LoadFunctionTemplates(TClass* cl)
const = 0;
306 virtual std::vector<std::string> GetUsingNamespaces(ClassInfo_t *cl)
const = 0;
309 virtual void CallFunc_Delete(CallFunc_t * )
const {;}
310 virtual void CallFunc_Exec(CallFunc_t * ,
void * )
const {;}
311 virtual void CallFunc_Exec(CallFunc_t * ,
void * , TInterpreterValue& )
const {;}
312 virtual void CallFunc_ExecWithReturn(CallFunc_t * ,
void * ,
void * )
const {;}
313 virtual void CallFunc_ExecWithArgsAndReturn(CallFunc_t * ,
void * ,
const void* [] = 0,
int = 0,
void * = 0)
const {}
314 virtual Long_t CallFunc_ExecInt(CallFunc_t * ,
void * )
const {
return 0;}
315 virtual Long64_t CallFunc_ExecInt64(CallFunc_t * ,
void * )
const {
return 0;}
316 virtual Double_t CallFunc_ExecDouble(CallFunc_t * ,
void * )
const {
return 0;}
317 virtual CallFunc_t *CallFunc_Factory()
const {
return 0;}
318 virtual CallFunc_t *CallFunc_FactoryCopy(CallFunc_t * )
const {
return 0;}
319 virtual MethodInfo_t *CallFunc_FactoryMethod(CallFunc_t * )
const {
return 0;}
320 virtual void CallFunc_IgnoreExtraArgs(CallFunc_t * ,
bool )
const {;}
321 virtual void CallFunc_Init(CallFunc_t * )
const {;}
322 virtual Bool_t CallFunc_IsValid(CallFunc_t * )
const {
return 0;}
323 virtual CallFuncIFacePtr_t CallFunc_IFacePtr(CallFunc_t * )
const {
return CallFuncIFacePtr_t();}
324 virtual void CallFunc_ResetArg(CallFunc_t * )
const {;}
325 virtual void CallFunc_SetArgArray(CallFunc_t * , Long_t * , Int_t )
const {;}
326 virtual void CallFunc_SetArgs(CallFunc_t * ,
const char * )
const {;}
328 virtual void CallFunc_SetArg(CallFunc_t * , Long_t )
const = 0;
329 virtual void CallFunc_SetArg(CallFunc_t * , ULong_t )
const = 0;
330 virtual void CallFunc_SetArg(CallFunc_t * , Float_t )
const = 0;
331 virtual void CallFunc_SetArg(CallFunc_t * , Double_t )
const = 0;
332 virtual void CallFunc_SetArg(CallFunc_t * , Long64_t )
const = 0;
333 virtual void CallFunc_SetArg(CallFunc_t * , ULong64_t )
const = 0;
335 void CallFunc_SetArg(CallFunc_t * func, Char_t param)
const { CallFunc_SetArg(func,(Long_t)param); }
336 void CallFunc_SetArg(CallFunc_t * func, Short_t param)
const { CallFunc_SetArg(func,(Long_t)param); }
337 void CallFunc_SetArg(CallFunc_t * func, Int_t param)
const { CallFunc_SetArg(func,(Long_t)param); }
339 void CallFunc_SetArg(CallFunc_t * func, UChar_t param)
const { CallFunc_SetArg(func,(ULong_t)param); }
340 void CallFunc_SetArg(CallFunc_t * func, UShort_t param)
const { CallFunc_SetArg(func,(ULong_t)param); }
341 void CallFunc_SetArg(CallFunc_t * func, UInt_t param)
const { CallFunc_SetArg(func,(ULong_t)param); }
343 template <
typename T>
344 void CallFunc_SetArgRef(CallFunc_t * func, T ¶m)
const { CallFunc_SetArg(func,(ULong_t)¶m); }
346 void CallFunc_SetArg(CallFunc_t *func,
void *arg)
348 CallFunc_SetArg(func,(Long_t) arg);
351 template <
typename T>
352 void CallFunc_SetArg(CallFunc_t *func,
const T *arg)
354 CallFunc_SetArg(func,(Long_t) arg);
357 void CallFunc_SetArgImpl(CallFunc_t * )
361 template <
typename U>
362 void CallFunc_SetArgImpl(CallFunc_t *func,
const U& head)
364 CallFunc_SetArg(func, head);
367 template <
typename U,
typename... T>
368 void CallFunc_SetArgImpl(CallFunc_t *func,
const U& head,
const T&... tail)
370 CallFunc_SetArg(func, head);
371 CallFunc_SetArgImpl(func, tail...);
374 template <
typename... T>
375 void CallFunc_SetArguments(CallFunc_t *func,
const T&... args)
377 R__LOCKGUARD(gInterpreterMutex);
379 CallFunc_ResetArg(func);
380 CallFunc_SetArgImpl(func,args...);
383 virtual void CallFunc_SetFunc(CallFunc_t * , ClassInfo_t * ,
const char * ,
const char * ,
bool , Long_t * )
const {;}
384 virtual void CallFunc_SetFunc(CallFunc_t * , ClassInfo_t * ,
const char * ,
const char * , Long_t * )
const {;}
385 virtual void CallFunc_SetFunc(CallFunc_t * , MethodInfo_t * )
const {;}
386 virtual void CallFunc_SetFuncProto(CallFunc_t * , ClassInfo_t * ,
const char * ,
const char * , Long_t * , ROOT::EFunctionMatchMode = ROOT::kConversionMatch)
const {;}
387 virtual void CallFunc_SetFuncProto(CallFunc_t * , ClassInfo_t * ,
const char * ,
const char * ,
bool , Long_t * , ROOT::EFunctionMatchMode = ROOT::kConversionMatch)
const {;}
388 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;
389 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;
391 virtual std::string CallFunc_GetWrapperCode(CallFunc_t *func)
const = 0;
394 virtual Bool_t ClassInfo_Contains(ClassInfo_t *info, DeclId_t decl)
const = 0;
395 virtual Long_t ClassInfo_ClassProperty(ClassInfo_t * )
const {
return 0;}
396 virtual void ClassInfo_Delete(ClassInfo_t * )
const {;}
397 virtual void ClassInfo_Delete(ClassInfo_t * ,
void * )
const {;}
398 virtual void ClassInfo_DeleteArray(ClassInfo_t * ,
void * ,
bool )
const {;}
399 virtual void ClassInfo_Destruct(ClassInfo_t * ,
void * )
const {;}
400 virtual ClassInfo_t *ClassInfo_Factory(Bool_t = kTRUE)
const = 0;
401 virtual ClassInfo_t *ClassInfo_Factory(ClassInfo_t * )
const = 0;
402 virtual ClassInfo_t *ClassInfo_Factory(
const char * )
const = 0;
403 virtual ClassInfo_t *ClassInfo_Factory(DeclId_t declid)
const = 0;
404 virtual Long_t ClassInfo_GetBaseOffset(ClassInfo_t* ,
405 ClassInfo_t* ,
void* = 0,
bool =
true)
const {
return 0;}
406 virtual int ClassInfo_GetMethodNArg(ClassInfo_t * ,
const char * ,
const char * , Bool_t =
false, ROOT::EFunctionMatchMode = ROOT::kConversionMatch)
const {
return 0;}
407 virtual Bool_t ClassInfo_HasDefaultConstructor(ClassInfo_t * )
const {
return 0;}
408 virtual Bool_t ClassInfo_HasMethod(ClassInfo_t * ,
const char * )
const {
return 0;}
409 virtual void ClassInfo_Init(ClassInfo_t * ,
const char * )
const {;}
410 virtual void ClassInfo_Init(ClassInfo_t * ,
int )
const {;}
411 virtual Bool_t ClassInfo_IsBase(ClassInfo_t * ,
const char * )
const {
return 0;}
412 virtual Bool_t ClassInfo_IsEnum(
const char * )
const {
return 0;}
413 virtual Bool_t ClassInfo_IsScopedEnum(ClassInfo_t * )
const {
return 0;}
414 virtual EDataType ClassInfo_GetUnderlyingType(ClassInfo_t * )
const {
return kNumDataTypes;}
415 virtual Bool_t ClassInfo_IsLoaded(ClassInfo_t * )
const {
return 0;}
416 virtual Bool_t ClassInfo_IsValid(ClassInfo_t * )
const {
return 0;}
417 virtual Bool_t ClassInfo_IsValidMethod(ClassInfo_t * ,
const char * ,
const char * , Long_t * , ROOT::EFunctionMatchMode = ROOT::kConversionMatch)
const {
return 0;}
418 virtual Bool_t ClassInfo_IsValidMethod(ClassInfo_t * ,
const char * ,
const char * , Bool_t , Long_t * , ROOT::EFunctionMatchMode = ROOT::kConversionMatch)
const {
return 0;}
419 virtual int ClassInfo_Next(ClassInfo_t * )
const {
return 0;}
420 virtual void *ClassInfo_New(ClassInfo_t * )
const {
return 0;}
421 virtual void *ClassInfo_New(ClassInfo_t * ,
int )
const {
return 0;}
422 virtual void *ClassInfo_New(ClassInfo_t * ,
int ,
void * )
const {
return 0;}
423 virtual void *ClassInfo_New(ClassInfo_t * ,
void * )
const {
return 0;}
424 virtual Long_t ClassInfo_Property(ClassInfo_t * )
const {
return 0;}
425 virtual int ClassInfo_Size(ClassInfo_t * )
const {
return 0;}
426 virtual Long_t ClassInfo_Tagnum(ClassInfo_t * )
const {
return 0;}
427 virtual const char *ClassInfo_FileName(ClassInfo_t * )
const {
return 0;}
428 virtual const char *ClassInfo_FullName(ClassInfo_t * )
const {
return 0;}
429 virtual const char *ClassInfo_Name(ClassInfo_t * )
const {
return 0;}
430 virtual const char *ClassInfo_Title(ClassInfo_t * )
const {
return 0;}
431 virtual const char *ClassInfo_TmpltName(ClassInfo_t * )
const {
return 0;}
435 virtual void BaseClassInfo_Delete(BaseClassInfo_t * )
const {;}
436 virtual BaseClassInfo_t *BaseClassInfo_Factory(ClassInfo_t * )
const {
return 0;}
437 virtual BaseClassInfo_t *BaseClassInfo_Factory(ClassInfo_t* ,
438 ClassInfo_t* )
const {
return 0;}
439 virtual int BaseClassInfo_Next(BaseClassInfo_t * )
const {
return 0;}
440 virtual int BaseClassInfo_Next(BaseClassInfo_t * ,
int )
const {
return 0;}
441 virtual Long_t BaseClassInfo_Offset(BaseClassInfo_t * ,
void* = 0 ,
bool =
true )
const {
return 0;}
442 virtual Long_t BaseClassInfo_Property(BaseClassInfo_t * )
const {
return 0;}
443 virtual Long_t BaseClassInfo_Tagnum(BaseClassInfo_t * )
const {
return 0;}
444 virtual ClassInfo_t*BaseClassInfo_ClassInfo(BaseClassInfo_t * )
const = 0;
445 virtual const char *BaseClassInfo_FullName(BaseClassInfo_t * )
const {
return 0;}
446 virtual const char *BaseClassInfo_Name(BaseClassInfo_t * )
const {
return 0;}
447 virtual const char *BaseClassInfo_TmpltName(BaseClassInfo_t * )
const {
return 0;}
450 virtual int DataMemberInfo_ArrayDim(DataMemberInfo_t * )
const {
return 0;}
451 virtual void DataMemberInfo_Delete(DataMemberInfo_t * )
const {;}
452 virtual DataMemberInfo_t *DataMemberInfo_Factory(ClassInfo_t * = 0)
const {
return 0;}
453 virtual DataMemberInfo_t *DataMemberInfo_Factory(DeclId_t declid, ClassInfo_t* clinfo)
const = 0;
454 virtual DataMemberInfo_t *DataMemberInfo_FactoryCopy(DataMemberInfo_t * )
const {
return 0;}
455 virtual Bool_t DataMemberInfo_IsValid(DataMemberInfo_t * )
const {
return 0;}
456 virtual int DataMemberInfo_MaxIndex(DataMemberInfo_t * , Int_t )
const {
return 0;}
457 virtual int DataMemberInfo_Next(DataMemberInfo_t * )
const {
return 0;}
458 virtual Long_t DataMemberInfo_Offset(DataMemberInfo_t * )
const {
return 0;}
459 virtual Long_t DataMemberInfo_Property(DataMemberInfo_t * )
const {
return 0;}
460 virtual Long_t DataMemberInfo_TypeProperty(DataMemberInfo_t * )
const {
return 0;}
461 virtual int DataMemberInfo_TypeSize(DataMemberInfo_t * )
const {
return 0;}
462 virtual const char *DataMemberInfo_TypeName(DataMemberInfo_t * )
const {
return 0;}
463 virtual const char *DataMemberInfo_TypeTrueName(DataMemberInfo_t * )
const {
return 0;}
464 virtual const char *DataMemberInfo_Name(DataMemberInfo_t * )
const {
return 0;}
465 virtual const char *DataMemberInfo_Title(DataMemberInfo_t * )
const {
return 0;}
466 virtual const char *DataMemberInfo_ValidArrayIndex(DataMemberInfo_t * )
const {
return 0;}
469 virtual void FuncTempInfo_Delete(FuncTempInfo_t * )
const = 0;
470 virtual FuncTempInfo_t *FuncTempInfo_Factory(DeclId_t declid)
const = 0;
471 virtual FuncTempInfo_t *FuncTempInfo_FactoryCopy(FuncTempInfo_t * )
const = 0;
472 virtual Bool_t FuncTempInfo_IsValid(FuncTempInfo_t * )
const = 0;
473 virtual UInt_t FuncTempInfo_TemplateNargs(FuncTempInfo_t * )
const = 0;
474 virtual UInt_t FuncTempInfo_TemplateMinReqArgs(FuncTempInfo_t * )
const = 0;
475 virtual Long_t FuncTempInfo_Property(FuncTempInfo_t * )
const = 0;
476 virtual Long_t FuncTempInfo_ExtraProperty(FuncTempInfo_t * )
const = 0;
477 virtual void FuncTempInfo_Name(FuncTempInfo_t * , TString &name)
const = 0;
478 virtual void FuncTempInfo_Title(FuncTempInfo_t * , TString &title)
const = 0;
481 virtual void MethodInfo_CreateSignature(MethodInfo_t * , TString & )
const {;}
482 virtual void MethodInfo_Delete(MethodInfo_t * )
const {;}
483 virtual MethodInfo_t *MethodInfo_Factory()
const {
return 0;}
484 virtual MethodInfo_t *MethodInfo_Factory(ClassInfo_t * )
const {
return 0;}
485 virtual MethodInfo_t *MethodInfo_Factory(DeclId_t declid)
const = 0;
486 virtual MethodInfo_t *MethodInfo_FactoryCopy(MethodInfo_t * )
const {
return 0;}
487 virtual void *MethodInfo_InterfaceMethod(MethodInfo_t * )
const {
return 0;}
488 virtual Bool_t MethodInfo_IsValid(MethodInfo_t * )
const {
return 0;}
489 virtual int MethodInfo_NArg(MethodInfo_t * )
const {
return 0;}
490 virtual int MethodInfo_NDefaultArg(MethodInfo_t * )
const {
return 0;}
491 virtual int MethodInfo_Next(MethodInfo_t * )
const {
return 0;}
492 virtual Long_t MethodInfo_Property(MethodInfo_t * )
const = 0;
493 virtual Long_t MethodInfo_ExtraProperty(MethodInfo_t * )
const = 0;
494 virtual TypeInfo_t *MethodInfo_Type(MethodInfo_t * )
const {
return 0;}
495 virtual EReturnType MethodInfo_MethodCallReturnType(MethodInfo_t* minfo)
const = 0;
496 virtual const char *MethodInfo_GetMangledName(MethodInfo_t * )
const {
return 0;}
497 virtual const char *MethodInfo_GetPrototype(MethodInfo_t * )
const {
return 0;}
498 virtual const char *MethodInfo_Name(MethodInfo_t * )
const {
return 0;}
499 virtual const char *MethodInfo_TypeName(MethodInfo_t * )
const {
return 0;}
500 virtual std::string MethodInfo_TypeNormalizedName(MethodInfo_t * )
const {
return "";}
501 virtual const char *MethodInfo_Title(MethodInfo_t * )
const {
return 0;}
504 virtual void MethodArgInfo_Delete(MethodArgInfo_t * )
const {;}
505 virtual MethodArgInfo_t *MethodArgInfo_Factory()
const {
return 0;}
506 virtual MethodArgInfo_t *MethodArgInfo_Factory(MethodInfo_t * )
const {
return 0;}
507 virtual MethodArgInfo_t *MethodArgInfo_FactoryCopy(MethodArgInfo_t * )
const {
return 0;}
508 virtual Bool_t MethodArgInfo_IsValid(MethodArgInfo_t * )
const {
return 0;}
509 virtual int MethodArgInfo_Next(MethodArgInfo_t * )
const {
return 0;}
510 virtual Long_t MethodArgInfo_Property(MethodArgInfo_t * )
const {
return 0;}
511 virtual const char *MethodArgInfo_DefaultValue(MethodArgInfo_t * )
const {
return 0;}
512 virtual const char *MethodArgInfo_Name(MethodArgInfo_t * )
const {
return 0;}
513 virtual const char *MethodArgInfo_TypeName(MethodArgInfo_t * )
const {
return 0;}
514 virtual std::string MethodArgInfo_TypeNormalizedName(MethodArgInfo_t * )
const = 0;
518 virtual void TypeInfo_Delete(TypeInfo_t * )
const {;}
519 virtual TypeInfo_t *TypeInfo_Factory()
const {
return 0;}
520 virtual TypeInfo_t *TypeInfo_Factory(
const char* )
const {
return 0;}
521 virtual TypeInfo_t *TypeInfo_FactoryCopy(TypeInfo_t * )
const {
return 0;}
522 virtual void TypeInfo_Init(TypeInfo_t * ,
const char * )
const {;}
523 virtual Bool_t TypeInfo_IsValid(TypeInfo_t * )
const {
return 0;}
524 virtual const char *TypeInfo_Name(TypeInfo_t * )
const {
return 0;}
525 virtual Long_t TypeInfo_Property(TypeInfo_t * )
const {
return 0;}
526 virtual int TypeInfo_RefType(TypeInfo_t * )
const {
return 0;}
527 virtual int TypeInfo_Size(TypeInfo_t * )
const {
return 0;}
528 virtual const char *TypeInfo_TrueName(TypeInfo_t * )
const {
return 0;}
532 virtual void TypedefInfo_Delete(TypedefInfo_t * )
const {;}
533 virtual TypedefInfo_t *TypedefInfo_Factory()
const {
return 0;}
534 virtual TypedefInfo_t *TypedefInfo_Factory(
const char *)
const {
return 0;}
535 virtual TypedefInfo_t *TypedefInfo_FactoryCopy(TypedefInfo_t * )
const {
return 0;}
536 virtual void TypedefInfo_Init(TypedefInfo_t * ,
const char * )
const {;}
537 virtual Bool_t TypedefInfo_IsValid(TypedefInfo_t * )
const {
return 0;}
538 virtual int TypedefInfo_Next(TypedefInfo_t* )
const {
return 0;}
539 virtual Long_t TypedefInfo_Property(TypedefInfo_t * )
const {
return 0;}
540 virtual int TypedefInfo_Size(TypedefInfo_t * )
const {
return 0;}
541 virtual const char *TypedefInfo_TrueName(TypedefInfo_t * )
const {
return 0;}
542 virtual const char *TypedefInfo_Name(TypedefInfo_t * )
const {
return 0;}
543 virtual const char *TypedefInfo_Title(TypedefInfo_t * )
const {
return 0;}
545 static TInterpreter *Instance();
547 ClassDef(TInterpreter,0)
551 typedef TInterpreter *CreateInterpreter_t(
void* shlibHandle,
const char* argv[]);
552 typedef void *DestroyInterpreter_t(TInterpreter*);
555 #define gInterpreter (TInterpreter::Instance())
556 R__EXTERN TInterpreter* gCling;
559 inline ROOT::Internal::InterpreterMutexRegistrationRAII::InterpreterMutexRegistrationRAII(TVirtualMutex* mutex):
563 ::gCling->SnapshotMutexState(gCoreMutex);
565 inline ROOT::Internal::InterpreterMutexRegistrationRAII::~InterpreterMutexRegistrationRAII()
568 ::gCling->ForgetMutexState();