Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TCling.h
Go to the documentation of this file.
1// @(#)root/meta:$Id$
2// Author: Axel Naumann, 2011-10-19
3
4/*************************************************************************
5 * Copyright (C) 1995-2019, 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_TCling
14#define ROOT_TCling
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TCling //
19// //
20// This class defines an interface to the cling C++ interpreter. //
21// //
22// Cling is a full ANSI compliant C++ interpreter based on //
23// clang/LLVM technology. //
24// //
25//////////////////////////////////////////////////////////////////////////
26
27#include "TInterpreter.h"
28
29#include <map>
30#include <memory>
31#include <set>
32#include <tuple>
33#include <unordered_map>
34#include <unordered_set>
35#include <vector>
36#include <string>
37#include <utility>
38
39#ifndef WIN32
40#define TWin32SendClass char
41#endif
42
43namespace llvm {
44 class GlobalValue;
45 class StringRef;
46}
47
48namespace clang {
49 class CXXRecordDecl;
50 class Decl;
51 class DeclContext;
52 class EnumDecl;
53 class FunctionDecl;
54 class IdentifierIterator;
55 class NamedDecl;
56 class NamespaceDecl;
57 class TagDecl;
58 class Type;
59 class QualType;
60}
61namespace cling {
62 class Interpreter;
63 class MetaProcessor;
64 class Transaction;
65 class Value;
66}
67
68class TClingCallbacks;
69class TEnv;
70class TFile;
71class THashTable;
73class TMethod;
74class TObjArray;
78class TListOfEnums;
79
80namespace ROOT {
81 namespace TMetaUtils {
82 class TNormalizedCtxt;
83 class TClingLookupHelper;
84 }
85}
86
87extern "C" {
88 void TCling__UpdateListsOnCommitted(const cling::Transaction&,
89 cling::Interpreter*);
90 void TCling__UpdateListsOnUnloaded(const cling::Transaction&);
91 void TCling__InvalidateGlobal(const clang::Decl*);
92 void TCling__TransactionRollback(const cling::Transaction&);
93 TObject* TCling__GetObjectAddress(const char *Name, void *&LookupCtx);
94 const clang::Decl* TCling__GetObjectDecl(TObject *obj);
95 void TCling__LibraryLoaded(const void* dyLibHandle,
96 const char* canonicalName);
97 void TCling__LibraryUnloaded(const void* dyLibHandle,
98 const char* canonicalName);
99 void TCling__RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent);
100}
101
102class TCling final : public TInterpreter {
103private: // Static Data Members
104
105 static void* fgSetOfSpecials; // set of TObjects used in CINT variables
106
107private: // Data Members
108
109 Int_t fMore; // The brace indent level for the cint command line processor.
110 Int_t fExitCode; // Value passed to exit() in interpreter.
111 char fPrompt[64]; // Command line prompt string.
112 //cling::DictPosition fDictPos; // dictionary context after initialization is complete.
113 //cling::DictPosition fDictPosGlobals; // dictionary context after ResetGlobals().
114 TString fSharedLibs; // Shared libraries loaded by G__loadfile().
115 Int_t fGlobalsListSerial;// Last time we refreshed the ROOT list of globals.
116 TString fIncludePath; // Interpreter include path.
117 TString fRootmapLoadPath; // Dynamic load path for rootmap files.
118 TEnv* fMapfile; // Association of classes to libraries.
119 std::vector<std::string> fAutoLoadLibStorage; // A storage to return a const char* from GetClassSharedLibsForModule.
120 std::map<size_t,std::vector<const char*>> fClassesHeadersMap; // Map of classes hashes and headers associated
121 std::map<const cling::Transaction*,size_t> fTransactionHeadersMap; // Map which transaction contains which autoparse.
122 std::set<size_t> fLookedUpClasses; // Set of classes for which headers were looked up already
123 std::set<size_t> fPayloads; // Set of payloads
124 std::set<const char*> fParsedPayloadsAddresses; // Set of payloads which were parsed
125 std::hash<std::string> fStringHashFunction; // A simple hashing function
126 std::unordered_set<const clang::NamespaceDecl*> fNSFromRootmaps; // Collection of namespaces fwd declared in the rootmaps
127 TObjArray* fRootmapFiles; // Loaded rootmap files.
128 Bool_t fLockProcessLine; // True if ProcessLine should lock gInterpreterMutex.
129 Bool_t fCxxModulesEnabled;// True if C++ modules was enabled
130
131 std::unique_ptr<cling::Interpreter> fInterpreter; // The interpreter.
132 std::unique_ptr<cling::MetaProcessor> fMetaProcessor; // The metaprocessor.
133
134 std::vector<cling::Value> *fTemporaries; // Stack of temporaries
135 ROOT::TMetaUtils::TNormalizedCtxt *fNormalizedCtxt; // Which typedef to avoid stripping.
136 ROOT::TMetaUtils::TClingLookupHelper *fLookupHelper; // lookup helper used by TClassEdit
137
138 void* fPrevLoadedDynLibInfo; // Internal info to mark the last loaded libray.
139 std::vector<void*> fRegisterModuleDyLibs; // Stack of libraries currently running RegisterModule
140 TClingCallbacks* fClingCallbacks; // cling::Interpreter owns it.
142 bool operator()(const char* a, const char *b) const {
143 return strcmp(a, b) < 0;
144 }
145 };
146 std::set<TClass*> fModTClasses;
147 std::vector<std::pair<TClass*,DictFuncPtr_t> > fClassesToUpdate;
149 ULong64_t fTransactionCount; // Cling counter for commited or unloaded transactions which changed the AST.
150 std::vector<const char*> fCurExecutingMacros;
151
153 typedef std::unordered_map<std::string, TObject*> SpecialObjectMap_t;
154 std::map<SpecialObjectLookupCtx_t, SpecialObjectMap_t> fSpecialObjectMaps;
155
157 /// State of gCoreMutex when the first interpreter-related function was invoked.
158 std::unique_ptr<ROOT::TVirtualRWMutex::State> fState;
159
160 /// Interpreter-related functions will push the "entry" lock state to *this.
161 /// Recursive calls will do that, too - but we must only forget about the lock
162 /// state once this recursion count went to 0.
164
165 operator bool() const { return (bool)fState; }
166 };
167
170
172 std::unique_ptr<StateDelta> fDelta;
173 };
174
176
177 DeclId_t GetDeclId(const llvm::GlobalValue *gv) const;
178
179 static Int_t DeepAutoLoadImpl(const char *cls, std::unordered_set<std::string> &visited, bool nameIsNormalized);
180 static Int_t ShallowAutoLoadImpl(const char *cls);
181
184
185 UInt_t AutoParseImplRecurse(const char *cls, bool topLevel);
186 constexpr static const char* kNullArgv[] = {nullptr};
187
188 bool fIsShuttingDown = false;
189
190protected:
192
193public: // Public Interface
194
195 virtual ~TCling();
196 TCling(const char* name, const char* title, const char* const argv[]);
197 TCling(const char* name, const char* title): TCling(name, title, kNullArgv) {}
198
199 void AddIncludePath(const char* path);
200 void *GetAutoLoadCallBack() const { return fAutoLoadCallBack; }
201 void *SetAutoLoadCallBack(void* cb) { void* prev = fAutoLoadCallBack; fAutoLoadCallBack = cb; return prev; }
202 Int_t AutoLoad(const char *classname, Bool_t knowDictNotLoaded = kFALSE);
203 Int_t AutoLoad(const std::type_info& typeinfo, Bool_t knowDictNotLoaded = kFALSE);
204 Int_t AutoParse(const char* cls);
205 void* LazyFunctionCreatorAutoload(const std::string& mangled_name);
206 bool LibraryLoadingFailed(const std::string&, const std::string&, bool, bool);
207 Bool_t IsAutoLoadNamespaceCandidate(const clang::NamespaceDecl* nsDecl);
208 void ClearFileBusy();
209 void ClearStack(); // Delete existing temporary values
210 Bool_t Declare(const char* code);
211 void EndOfLineAction();
212 TClass *GetClass(const std::type_info& typeinfo, Bool_t load) const;
213 Int_t GetExitCode() const { return fExitCode; }
214 TEnv* GetMapfile() const { return fMapfile; }
215 Int_t GetMore() const { return fMore; }
216 TClass *GenerateTClass(const char *classname, Bool_t emulation, Bool_t silent = kFALSE);
217 TClass *GenerateTClass(ClassInfo_t *classinfo, Bool_t silent = kFALSE);
218 Int_t GenerateDictionary(const char* classes, const char* includes = "", const char* options = 0);
219 char* GetPrompt() { return fPrompt; }
220 const char* GetSharedLibs();
221 const char* GetClassSharedLibs(const char* cls);
222 const char* GetSharedLibDeps(const char* lib, bool tryDyld = false);
223 const char* GetIncludePath();
224 virtual const char* GetSTLIncludePath() const;
226 unsigned long long GetInterpreterStateMarker() const { return fTransactionCount;}
227 virtual void Initialize();
228 virtual void ShutDown();
229 void InspectMembers(TMemberInspector&, const void* obj, const TClass* cl, Bool_t isTransient);
230 Bool_t IsLoaded(const char* filename) const;
231 Bool_t IsLibraryLoaded(const char* libname) const;
232 Bool_t HasPCMForLibrary(const char *libname) const;
233 Int_t Load(const char* filenam, Bool_t system = kFALSE);
234 void LoadMacro(const char* filename, EErrorCode* error = 0);
235 Int_t LoadLibraryMap(const char* rootmapfile = 0);
239 Int_t UnloadLibraryMap(const char* library);
240 Long_t ProcessLine(const char* line, EErrorCode* error = 0);
241 Long_t ProcessLineAsynch(const char* line, EErrorCode* error = 0);
242 Long_t ProcessLineSynch(const char* line, EErrorCode* error = 0);
243 void PrintIntro();
244 bool RegisterPrebuiltModulePath(const std::string& FullPath,
245 const std::string& ModuleMapName = "module.modulemap") const;
246 void RegisterModule(const char* modulename,
247 const char** headers,
248 const char** includePaths,
249 const char* payloadCode,
250 const char* fwdDeclsCode,
251 void (*triggerFunc)(),
252 const FwdDeclArgsToKeepCollection_t& fwdDeclsArgToSkip,
253 const char** classesHeaders,
254 Bool_t lateRegistration = false,
255 Bool_t hasCxxModule = false);
256 virtual void AddAvailableIndentifiers(TSeqCollection& Idents);
257 void RegisterTClassUpdate(TClass *oldcl,DictFuncPtr_t dict);
258 void UnRegisterTClassUpdate(const TClass *oldcl);
259
260 Int_t SetClassSharedLibs(const char *cls, const char *libs);
261 void SetGetline(const char * (*getlineFunc)(const char* prompt),
262 void (*histaddFunc)(const char* line));
263 void Reset();
264 void ResetAll();
265 void ResetGlobals();
266 void ResetGlobalVar(void* obj);
267 void RewindDictionary();
268 Int_t DeleteGlobal(void* obj);
269 Int_t DeleteVariable(const char *name);
270 void SaveContext();
271 void SaveGlobalsContext();
272 void UpdateListOfGlobals();
274 void UpdateListOfTypes();
275 void SetClassInfo(TClass* cl, Bool_t reload = kFALSE);
276
277 ECheckClassInfo CheckClassInfo(const char *name, Bool_t autoload, Bool_t isClassOrNamespaceOnly = kFALSE);
278
279 Bool_t CheckClassTemplate(const char *name);
280 Long_t Calc(const char* line, EErrorCode* error = 0);
281 void CreateListOfBaseClasses(TClass* cl) const;
282 void CreateListOfDataMembers(TClass* cl) const;
283 void CreateListOfMethods(TClass* cl) const;
285 void UpdateListOfMethods(TClass* cl) const;
286 void UpdateListOfDataMembers(TClass* cl) const;
287
288 virtual DeclId_t GetDataMember(ClassInfo_t *cl, const char *name) const;
289 virtual DeclId_t GetDataMemberAtAddr(const void *addr) const;
290 virtual DeclId_t GetDataMemberWithValue(const void *ptrvalue) const;
291 virtual DeclId_t GetEnum(TClass *cl, const char *name) const;
292 virtual TEnum* CreateEnum(void *VD, TClass *cl) const;
293 virtual void UpdateEnumConstants(TEnum* enumObj, TClass* cl) const;
294 virtual void LoadEnums(TListOfEnums& cl) const;
295 virtual std::string ToString(const char* type, void *obj);
296 TString GetMangledName(TClass* cl, const char* method, const char* params, Bool_t objectIsConst = kFALSE);
297 TString GetMangledNameWithPrototype(TClass* cl, const char* method, const char* proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch);
298 void* GetInterfaceMethod(TClass* cl, const char* method, const char* params, Bool_t objectIsConst = kFALSE);
299 void* GetInterfaceMethodWithPrototype(TClass* cl, const char* method, const char* proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch);
300 DeclId_t GetFunction(ClassInfo_t *cl, const char *funcname);
301 DeclId_t GetFunctionWithPrototype(ClassInfo_t *cl, const char* method, const char* proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch);
302 DeclId_t GetFunctionWithValues(ClassInfo_t *cl, const char* method, const char* params, Bool_t objectIsConst = kFALSE);
303 DeclId_t GetFunctionTemplate(ClassInfo_t *cl, const char *funcname);
304 void GetFunctionOverloads(ClassInfo_t *cl, const char *funcname, std::vector<DeclId_t>& res) const;
305 virtual void LoadFunctionTemplates(TClass* cl) const;
306
307 virtual std::vector<std::string> GetUsingNamespaces(ClassInfo_t *cl) const;
308
309 void GetInterpreterTypeName(const char* name, std::string &output, Bool_t full = kFALSE);
310 void Execute(const char* function, const char* params, int* error = 0);
311 void Execute(TObject* obj, TClass* cl, const char* method, const char* params, int* error = 0);
312 void Execute(TObject* obj, TClass* cl, const char* method, const char* params, Bool_t objectIsConst, int* error = 0);
313 void Execute(TObject* obj, TClass* cl, TMethod* method, TObjArray* params, int* error = 0);
314 void ExecuteWithArgsAndReturn(TMethod* method, void* address, const void* args[] = 0, int nargs = 0, void* ret= 0) const;
315 Long_t ExecuteMacro(const char* filename, EErrorCode* error = 0);
316 void RecursiveRemove(TObject* obj);
320 return fLockProcessLine;
321 }
323 fLockProcessLine = lock;
324 }
325 const char* TypeName(const char* typeDesc);
326
328 void ForgetMutexState();
329
330 void ApplyToInterpreterMutex(void* delta);
332
333 static void UpdateClassInfo(char* name, Long_t tagnum);
334 static void UpdateClassInfoWork(const char* name);
335 void RefreshClassInfo(TClass *cl, const clang::NamedDecl *def, bool alias);
336 void UpdateClassInfoWithDecl(const clang::NamedDecl* ND);
337 static void UpdateAllCanvases();
338
339 // Misc
340 virtual int DisplayClass(FILE* fout, const char* name, int base, int start) const;
341 virtual int DisplayIncludePath(FILE* fout) const;
342 virtual void* FindSym(const char* entry) const;
343 virtual void GenericError(const char* error) const;
344 virtual Long_t GetExecByteCode() const;
345 virtual const char* GetTopLevelMacroName() const;
346 virtual const char* GetCurrentMacroName() const;
347 virtual int GetSecurityError() const;
348 virtual int LoadFile(const char* path) const;
349 virtual Bool_t LoadText(const char* text) const;
350 virtual const char* MapCppName(const char*) const;
351 virtual void SetAlloclockfunc(void (*)()) const;
352 virtual void SetAllocunlockfunc(void (*)()) const;
353 virtual int SetClassAutoLoading(int) const;
354 virtual int SetClassAutoparsing(int) ;
356 virtual void SetErrmsgcallback(void* p) const;
357 virtual void ReportDiagnosticsToErrorHandler(bool enable = true);
358 virtual void SetTempLevel(int val) const;
359 virtual int UnloadFile(const char* path) const;
360
361 void CodeComplete(const std::string&, size_t&,
362 std::vector<std::string>&);
363 virtual int Evaluate(const char*, TInterpreterValue&);
364 virtual std::unique_ptr<TInterpreterValue> MakeInterpreterValue() const;
365 void RegisterTemporary(const TInterpreterValue& value);
366 void RegisterTemporary(const cling::Value& value);
368 TObject* GetObjectAddress(const char *Name, void *&LookupCtx);
369
370
371 // core/meta helper functions.
372 virtual EReturnType MethodCallReturnType(TFunction *func) const;
373 virtual void GetFunctionName(const clang::Decl *decl, std::string &name) const;
374 virtual bool DiagnoseIfInterpreterException(const std::exception &e) const;
375
376 // CallFunc interface
377 virtual DeclId_t GetDeclId(CallFunc_t *info) const;
378 virtual void CallFunc_Delete(CallFunc_t* func) const;
379 virtual void CallFunc_Exec(CallFunc_t* func, void* address) const;
380 virtual void CallFunc_Exec(CallFunc_t* func, void* address, TInterpreterValue& val) const;
381 virtual void CallFunc_ExecWithReturn(CallFunc_t* func, void* address, void* ret) const;
382 virtual void CallFunc_ExecWithArgsAndReturn(CallFunc_t* func, void* address, const void* args[] = 0, int nargs = 0, void* ret = 0) const;
383 virtual Long_t CallFunc_ExecInt(CallFunc_t* func, void* address) const;
384 virtual Long64_t CallFunc_ExecInt64(CallFunc_t* func, void* address) const;
385 virtual Double_t CallFunc_ExecDouble(CallFunc_t* func, void* address) const;
386 virtual CallFunc_t* CallFunc_Factory() const;
387 virtual CallFunc_t* CallFunc_FactoryCopy(CallFunc_t* func) const;
388 virtual MethodInfo_t* CallFunc_FactoryMethod(CallFunc_t* func) const;
389 virtual void CallFunc_IgnoreExtraArgs(CallFunc_t* func, bool ignore) const;
390 virtual void CallFunc_Init(CallFunc_t* func) const;
391 virtual bool CallFunc_IsValid(CallFunc_t* func) const;
392 virtual CallFuncIFacePtr_t CallFunc_IFacePtr(CallFunc_t * func) const;
393 virtual void CallFunc_ResetArg(CallFunc_t* func) const;
394 virtual void CallFunc_SetArg(CallFunc_t* func, Long_t param) const;
395 virtual void CallFunc_SetArg(CallFunc_t* func, ULong_t param) const;
396 virtual void CallFunc_SetArg(CallFunc_t* func, Float_t param) const;
397 virtual void CallFunc_SetArg(CallFunc_t* func, Double_t param) const;
398 virtual void CallFunc_SetArg(CallFunc_t* func, Long64_t param) const;
399 virtual void CallFunc_SetArg(CallFunc_t* func, ULong64_t param) const;
400 virtual void CallFunc_SetArgArray(CallFunc_t* func, Long_t* paramArr, Int_t nparam) const;
401 virtual void CallFunc_SetArgs(CallFunc_t* func, const char* param) const;
402 virtual void CallFunc_SetFunc(CallFunc_t* func, ClassInfo_t* info, const char* method, const char* params, Long_t* Offset) const;
403 virtual void CallFunc_SetFunc(CallFunc_t* func, ClassInfo_t* info, const char* method, const char* params, bool objectIsConst, Long_t* Offset) const;
404 virtual void CallFunc_SetFunc(CallFunc_t* func, MethodInfo_t* info) const;
405 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;
406 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;
407 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;
408 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;
409
410 virtual std::string CallFunc_GetWrapperCode(CallFunc_t *func) const;
411
412 // ClassInfo interface
413 virtual DeclId_t GetDeclId(ClassInfo_t *info) const;
414 virtual Bool_t ClassInfo_Contains(ClassInfo_t *info, DeclId_t declid) const;
415 virtual Long_t ClassInfo_ClassProperty(ClassInfo_t* info) const;
416 virtual void ClassInfo_Delete(ClassInfo_t* info) const;
417 virtual void ClassInfo_Delete(ClassInfo_t* info, void* arena) const;
418 virtual void ClassInfo_DeleteArray(ClassInfo_t* info, void* arena, bool dtorOnly) const;
419 virtual void ClassInfo_Destruct(ClassInfo_t* info, void* arena) const;
420 virtual ClassInfo_t* ClassInfo_Factory(Bool_t all = kTRUE) const;
421 virtual ClassInfo_t* ClassInfo_Factory(ClassInfo_t* cl) const;
422 virtual ClassInfo_t* ClassInfo_Factory(const char* name) const;
423 virtual ClassInfo_t* ClassInfo_Factory(DeclId_t declid) const;
424 virtual Long_t ClassInfo_GetBaseOffset(ClassInfo_t* fromDerived, ClassInfo_t* toBase, void * address, bool isDerivedObject) const;
425 virtual int ClassInfo_GetMethodNArg(ClassInfo_t* info, const char* method, const char* proto, Bool_t objectIsConst = false, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) const;
426 virtual bool ClassInfo_HasDefaultConstructor(ClassInfo_t* info, Bool_t testio = kFALSE) const;
427 virtual bool ClassInfo_HasMethod(ClassInfo_t* info, const char* name) const;
428 virtual void ClassInfo_Init(ClassInfo_t* info, const char* funcname) const;
429 virtual void ClassInfo_Init(ClassInfo_t* info, int tagnum) const;
430 virtual bool ClassInfo_IsBase(ClassInfo_t* info, const char* name) const;
431 virtual bool ClassInfo_IsEnum(const char* name) const;
432 virtual bool ClassInfo_IsScopedEnum(ClassInfo_t* info) const;
433 virtual EDataType ClassInfo_GetUnderlyingType(ClassInfo_t* info) const;
434 virtual bool ClassInfo_IsLoaded(ClassInfo_t* info) const;
435 virtual bool ClassInfo_IsValid(ClassInfo_t* info) const;
436 virtual bool ClassInfo_IsValidMethod(ClassInfo_t* info, const char* method, const char* proto, Long_t* offset, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const;
437 virtual bool ClassInfo_IsValidMethod(ClassInfo_t* info, const char* method, const char* proto, Bool_t objectIsConst, Long_t* offset, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const;
438 virtual int ClassInfo_Next(ClassInfo_t* info) const;
439 virtual void* ClassInfo_New(ClassInfo_t* info) const;
440 virtual void* ClassInfo_New(ClassInfo_t* info, int n) const;
441 virtual void* ClassInfo_New(ClassInfo_t* info, int n, void* arena) const;
442 virtual void* ClassInfo_New(ClassInfo_t* info, void* arena) const;
443 virtual Long_t ClassInfo_Property(ClassInfo_t* info) const;
444 virtual int ClassInfo_Size(ClassInfo_t* info) const;
445 virtual Long_t ClassInfo_Tagnum(ClassInfo_t* info) const;
446 virtual const char* ClassInfo_FileName(ClassInfo_t* info) const;
447 virtual const char* ClassInfo_FullName(ClassInfo_t* info) const;
448 virtual const char* ClassInfo_Name(ClassInfo_t* info) const;
449 virtual const char* ClassInfo_Title(ClassInfo_t* info) const;
450 virtual const char* ClassInfo_TmpltName(ClassInfo_t* info) const;
451
452 // BaseClassInfo interface
453 virtual void BaseClassInfo_Delete(BaseClassInfo_t* bcinfo) const;
454 virtual BaseClassInfo_t* BaseClassInfo_Factory(ClassInfo_t* info) const;
455 virtual BaseClassInfo_t* BaseClassInfo_Factory(ClassInfo_t* derived,
456 ClassInfo_t* base) const;
457 virtual int BaseClassInfo_Next(BaseClassInfo_t* bcinfo) const;
458 virtual int BaseClassInfo_Next(BaseClassInfo_t* bcinfo, int onlyDirect) const;
459 virtual Long_t BaseClassInfo_Offset(BaseClassInfo_t* toBaseClassInfo, void * address, bool isDerivedObject) const;
460 virtual Long_t BaseClassInfo_Property(BaseClassInfo_t* bcinfo) const;
461 virtual Long_t BaseClassInfo_Tagnum(BaseClassInfo_t* bcinfo) const;
462 virtual ClassInfo_t*BaseClassInfo_ClassInfo(BaseClassInfo_t * /* bcinfo */) const;
463 virtual const char* BaseClassInfo_FullName(BaseClassInfo_t* bcinfo) const;
464 virtual const char* BaseClassInfo_Name(BaseClassInfo_t* bcinfo) const;
465 virtual const char* BaseClassInfo_TmpltName(BaseClassInfo_t* bcinfo) const;
466
467 // DataMemberInfo interface
468 virtual DeclId_t GetDeclId(DataMemberInfo_t *info) const;
469 virtual int DataMemberInfo_ArrayDim(DataMemberInfo_t* dminfo) const;
470 virtual void DataMemberInfo_Delete(DataMemberInfo_t* dminfo) const;
471 virtual DataMemberInfo_t* DataMemberInfo_Factory(ClassInfo_t* clinfo, TDictionary::EMemberSelection selection) const;
472 virtual DataMemberInfo_t *DataMemberInfo_Factory(DeclId_t declid, ClassInfo_t* clinfo) const;
473 virtual DataMemberInfo_t* DataMemberInfo_FactoryCopy(DataMemberInfo_t* dminfo) const;
474 virtual bool DataMemberInfo_IsValid(DataMemberInfo_t* dminfo) const;
475 virtual int DataMemberInfo_MaxIndex(DataMemberInfo_t* dminfo, Int_t dim) const;
476 virtual int DataMemberInfo_Next(DataMemberInfo_t* dminfo) const;
477 virtual Long_t DataMemberInfo_Offset(DataMemberInfo_t* dminfo) const;
478 virtual Long_t DataMemberInfo_Property(DataMemberInfo_t* dminfo) const;
479 virtual Long_t DataMemberInfo_TypeProperty(DataMemberInfo_t* dminfo) const;
480 virtual int DataMemberInfo_TypeSize(DataMemberInfo_t* dminfo) const;
481 virtual const char* DataMemberInfo_TypeName(DataMemberInfo_t* dminfo) const;
482 virtual const char* DataMemberInfo_TypeTrueName(DataMemberInfo_t* dminfo) const;
483 virtual const char* DataMemberInfo_Name(DataMemberInfo_t* dminfo) const;
484 virtual const char* DataMemberInfo_Title(DataMemberInfo_t* dminfo) const;
485 virtual const char* DataMemberInfo_ValidArrayIndex(DataMemberInfo_t* dminfo) const;
486 virtual void SetDeclAttr(DeclId_t, const char* /* attribute */);
487
488
489 // Function Template interface
490 virtual DeclId_t GetDeclId(FuncTempInfo_t *info) const;
491 virtual void FuncTempInfo_Delete(FuncTempInfo_t * /* ft_info */) const;
492 virtual FuncTempInfo_t *FuncTempInfo_Factory(DeclId_t declid) const;
493 virtual FuncTempInfo_t *FuncTempInfo_FactoryCopy(FuncTempInfo_t * /* ft_info */) const;
494 virtual Bool_t FuncTempInfo_IsValid(FuncTempInfo_t * /* ft_info */) const;
495 virtual UInt_t FuncTempInfo_TemplateNargs(FuncTempInfo_t * /* ft_info */) const;
496 virtual UInt_t FuncTempInfo_TemplateMinReqArgs(FuncTempInfo_t * /* ft_info */) const;
497 virtual Long_t FuncTempInfo_Property(FuncTempInfo_t * /* ft_info */) const;
498 virtual Long_t FuncTempInfo_ExtraProperty(FuncTempInfo_t * /* ft_info */) const;
499 virtual void FuncTempInfo_Name(FuncTempInfo_t * /* ft_info */, TString& name) const;
500 virtual void FuncTempInfo_Title(FuncTempInfo_t * /* ft_info */, TString& name) const;
501
502 // MethodInfo interface
503 virtual DeclId_t GetDeclId(MethodInfo_t *info) const;
504 virtual void MethodInfo_CreateSignature(MethodInfo_t* minfo, TString& signature) const;
505 virtual void MethodInfo_Delete(MethodInfo_t* minfo) const;
506 virtual MethodInfo_t* MethodInfo_Factory() const;
507 virtual MethodInfo_t* MethodInfo_Factory(ClassInfo_t *clinfo) const;
508 virtual MethodInfo_t *MethodInfo_Factory(DeclId_t declid) const;
509 virtual MethodInfo_t* MethodInfo_FactoryCopy(MethodInfo_t* minfo) const;
510 virtual void* MethodInfo_InterfaceMethod(MethodInfo_t* minfo) const;
511 virtual bool MethodInfo_IsValid(MethodInfo_t* minfo) const;
512 virtual int MethodInfo_NArg(MethodInfo_t* minfo) const;
513 virtual int MethodInfo_NDefaultArg(MethodInfo_t* minfo) const;
514 virtual int MethodInfo_Next(MethodInfo_t* minfo) const;
515 virtual Long_t MethodInfo_Property(MethodInfo_t* minfo) const;
516 virtual Long_t MethodInfo_ExtraProperty(MethodInfo_t* minfo) const;
517 virtual TypeInfo_t* MethodInfo_Type(MethodInfo_t* minfo) const;
518 virtual EReturnType MethodInfo_MethodCallReturnType(MethodInfo_t* minfo) const;
519 virtual const char* MethodInfo_GetMangledName(MethodInfo_t* minfo) const;
520 virtual const char* MethodInfo_GetPrototype(MethodInfo_t* minfo) const;
521 virtual const char* MethodInfo_Name(MethodInfo_t* minfo) const;
522 virtual const char* MethodInfo_TypeName(MethodInfo_t* minfo) const;
523 virtual std::string MethodInfo_TypeNormalizedName(MethodInfo_t* minfo) const;
524 virtual const char* MethodInfo_Title(MethodInfo_t* minfo) const;
525
526 // MethodArgInfo interface
527 virtual void MethodArgInfo_Delete(MethodArgInfo_t* marginfo) const;
528 virtual MethodArgInfo_t* MethodArgInfo_Factory() const;
529 virtual MethodArgInfo_t* MethodArgInfo_Factory(MethodInfo_t *minfo) const;
530 virtual MethodArgInfo_t* MethodArgInfo_FactoryCopy(MethodArgInfo_t* marginfo) const;
531 virtual bool MethodArgInfo_IsValid(MethodArgInfo_t* marginfo) const;
532 virtual int MethodArgInfo_Next(MethodArgInfo_t* marginfo) const;
533 virtual Long_t MethodArgInfo_Property(MethodArgInfo_t* marginfo) const;
534 virtual const char* MethodArgInfo_DefaultValue(MethodArgInfo_t* marginfo) const;
535 virtual const char* MethodArgInfo_Name(MethodArgInfo_t* marginfo) const;
536 virtual const char* MethodArgInfo_TypeName(MethodArgInfo_t* marginfo) const;
537 virtual std::string MethodArgInfo_TypeNormalizedName(MethodArgInfo_t *marginfo) const;
538
539 // TypeInfo interface
540 virtual void TypeInfo_Delete(TypeInfo_t* tinfo) const;
541 virtual TypeInfo_t* TypeInfo_Factory() const;
542 virtual TypeInfo_t *TypeInfo_Factory(const char* name) const;
543 virtual TypeInfo_t* TypeInfo_FactoryCopy(TypeInfo_t* /* tinfo */) const;
544 virtual void TypeInfo_Init(TypeInfo_t* tinfo, const char* funcname) const;
545 virtual bool TypeInfo_IsValid(TypeInfo_t* tinfo) const;
546 virtual const char* TypeInfo_Name(TypeInfo_t* /* info */) const;
547 virtual Long_t TypeInfo_Property(TypeInfo_t* tinfo) const;
548 virtual int TypeInfo_RefType(TypeInfo_t* /* tinfo */) const;
549 virtual int TypeInfo_Size(TypeInfo_t* tinfo) const;
550 virtual const char* TypeInfo_TrueName(TypeInfo_t* tinfo) const;
551
552 // TypedefInfo interface
553 virtual DeclId_t GetDeclId(TypedefInfo_t *info) const;
554 virtual void TypedefInfo_Delete(TypedefInfo_t* tinfo) const;
555 virtual TypedefInfo_t* TypedefInfo_Factory() const;
556 virtual TypedefInfo_t* TypedefInfo_Factory(const char* name) const;
557 virtual TypedefInfo_t* TypedefInfo_FactoryCopy(TypedefInfo_t* tinfo) const;
558 virtual void TypedefInfo_Init(TypedefInfo_t* tinfo, const char* name) const;
559 virtual bool TypedefInfo_IsValid(TypedefInfo_t* tinfo) const;
560 virtual int TypedefInfo_Next(TypedefInfo_t* tinfo) const;
561 virtual Long_t TypedefInfo_Property(TypedefInfo_t* tinfo) const;
562 virtual int TypedefInfo_Size(TypedefInfo_t* tinfo) const;
563 virtual const char* TypedefInfo_TrueName(TypedefInfo_t* tinfo) const;
564 virtual const char* TypedefInfo_Name(TypedefInfo_t* tinfo) const;
565 virtual const char* TypedefInfo_Title(TypedefInfo_t* tinfo) const;
566
567 std::set<TClass*>& GetModTClasses() { return fModTClasses; }
568
569 void HandleNewDecl(const void* DV, bool isDeserialized, std::set<TClass*>& modifiedClasses);
570 void UpdateListsOnCommitted(const cling::Transaction &T);
571 void UpdateListsOnUnloaded(const cling::Transaction &T);
572 void InvalidateGlobal(const clang::Decl *D);
573 void TransactionRollback(const cling::Transaction &T);
574 void LibraryLoaded(const void* dyLibHandle, const char* canonicalName);
575 void LibraryUnloaded(const void* dyLibHandle, const char* canonicalName);
576
577private: // Private Utility Functions and Classes
578 template <typename List, typename Object>
579 static void RemoveAndInvalidateObject(List &L, Object *O) {
580 // Invalidate stored information by setting the `xxxInfo_t' to nullptr.
581 if (O && O->IsValid())
582 L.Unload(O), O->Update(nullptr);
583 }
584
585 void InvalidateCachedDecl(const std::tuple<TListOfDataMembers*,
588 TListOfEnums*> &Lists, const clang::Decl *D);
589
591 TCling *fTCling = nullptr;
593
594 public:
597 };
598
600 public:
601 TUniqueString() = delete;
602 TUniqueString(const TUniqueString &) = delete;
604 const char *Data();
605 bool Append(const std::string &str);
606 private:
607 std::string fContent;
608 std::set<size_t> fLinesHashSet;
609 std::hash<std::string> fHashFunc;
610 };
611
613 TCling(const TCling&) = delete;
614 TCling& operator=(const TCling&) = delete;
615
616 void Execute(TMethod*, TObjArray*, int* /*error*/ = nullptr)
617 {
618 }
619
621 void RegisterLoadedSharedLibrary(const char* name);
622 void AddFriendToClass(clang::FunctionDecl*, clang::CXXRecordDecl*) const;
623
624 std::map<std::string, llvm::StringRef> fPendingRdicts;
625 void RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent);
626 void LoadPCM(std::string pcmFileNameFullPath);
627 void LoadPCMImpl(TFile &pcmFile);
628
629 void InitRootmapFile(const char *name);
630 int ReadRootmapFile(const char *rootmapfile, TUniqueString* uniqueString = nullptr);
631 Bool_t HandleNewTransaction(const cling::Transaction &T);
632 bool IsClassAutoLoadingEnabled() const;
634 cling::Interpreter *GetInterpreterImpl() const { return fInterpreter.get(); }
635 cling::MetaProcessor *GetMetaProcessorImpl() const { return fMetaProcessor.get(); }
636
637 friend void TCling__RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent);
638 friend cling::Interpreter* TCling__GetInterpreter();
639};
640
641#endif
void Object()
Definition Object.C:6
#define b(i)
Definition RSha256.hxx:100
#define a(i)
Definition RSha256.hxx:99
#define e(i)
Definition RSha256.hxx:103
int Int_t
Definition RtypesCore.h:45
unsigned int UInt_t
Definition RtypesCore.h:46
const Bool_t kFALSE
Definition RtypesCore.h:92
unsigned long ULong_t
Definition RtypesCore.h:55
long Long_t
Definition RtypesCore.h:54
bool Bool_t
Definition RtypesCore.h:63
double Double_t
Definition RtypesCore.h:59
long long Long64_t
Definition RtypesCore.h:73
unsigned long long ULong64_t
Definition RtypesCore.h:74
float Float_t
Definition RtypesCore.h:57
const Bool_t kTRUE
Definition RtypesCore.h:91
TClass *(* DictFuncPtr_t)()
Definition Rtypes.h:80
void TCling__LibraryLoaded(const void *dyLibHandle, const char *canonicalName)
void TCling__LibraryUnloaded(const void *dyLibHandle, const char *canonicalName)
void TCling__TransactionRollback(const cling::Transaction &)
Definition TCling.cxx:569
void TCling__UpdateListsOnCommitted(const cling::Transaction &, cling::Interpreter *)
Definition TCling.cxx:554
void TCling__RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent)
Definition TCling.cxx:578
const clang::Decl * TCling__GetObjectDecl(TObject *obj)
Definition TCling.cxx:594
void TCling__UpdateListsOnUnloaded(const cling::Transaction &)
Definition TCling.cxx:559
void TCling__InvalidateGlobal(const clang::Decl *)
Definition TCling.cxx:564
TObject * TCling__GetObjectAddress(const char *Name, void *&LookupCtx)
Definition TCling.cxx:590
EDataType
Definition TDataType.h:28
char name[80]
Definition TGX11.cxx:110
int type
Definition TGX11.cxx:121
const char * proto
Definition civetweb.c:16604
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:80
SuspendAutoLoadingRAII(TCling *tcling)
Definition TCling.h:595
TUniqueString(const TUniqueString &)=delete
const char * Data()
Definition TCling.cxx:1013
bool Append(const std::string &str)
Append string to the storage if not added already.
Definition TCling.cxx:1021
std::hash< std::string > fHashFunc
Definition TCling.h:609
std::set< size_t > fLinesHashSet
Definition TCling.h:608
std::string fContent
Definition TCling.h:607
This class defines an interface to the cling C++ interpreter.
Definition TCling.h:102
virtual const char * MethodArgInfo_DefaultValue(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9252
static Int_t DeepAutoLoadImpl(const char *cls, std::unordered_set< std::string > &visited, bool nameIsNormalized)
Definition TCling.cxx:6092
virtual std::string CallFunc_GetWrapperCode(CallFunc_t *func) const
Definition TCling.cxx:8079
virtual void FuncTempInfo_Name(FuncTempInfo_t *, TString &name) const
Return the name of this function template.
Definition TCling.cxx:8924
virtual void FuncTempInfo_Title(FuncTempInfo_t *, TString &name) const
Return the comments associates with this function template.
Definition TCling.cxx:8937
virtual int TypedefInfo_Next(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9430
virtual bool DiagnoseIfInterpreterException(const std::exception &e) const
Definition TCling.cxx:2441
virtual bool ClassInfo_IsValid(ClassInfo_t *info) const
Definition TCling.cxx:8295
virtual bool ClassInfo_IsScopedEnum(ClassInfo_t *info) const
Definition TCling.cxx:8269
Long_t Calc(const char *line, EErrorCode *error=0)
Directly execute an executable statement (e.g.
Definition TCling.cxx:3506
Bool_t HasPCMForLibrary(const char *libname) const
Return true if ROOT has cxxmodules pcm for a given library name.
Definition TCling.cxx:3101
virtual MethodInfo_t * MethodInfo_FactoryCopy(MethodInfo_t *minfo) const
Definition TCling.cxx:9009
virtual const char * TypeInfo_Name(TypeInfo_t *) const
Definition TCling.cxx:9336
DeclId_t GetFunction(ClassInfo_t *cl, const char *funcname)
Return pointer to cling interface function for a method of a class with a certain name.
Definition TCling.cxx:4913
bool LibraryLoadingFailed(const std::string &, const std::string &, bool, bool)
Definition TCling.cxx:6456
void ForgetMutexState()
Definition TCling.cxx:9493
virtual bool ClassInfo_HasMethod(ClassInfo_t *info, const char *name) const
Definition TCling.cxx:8228
std::vector< void * > fRegisterModuleDyLibs
Definition TCling.h:139
virtual MethodInfo_t * CallFunc_FactoryMethod(CallFunc_t *func) const
Definition TCling.cxx:7891
virtual bool MethodInfo_IsValid(MethodInfo_t *minfo) const
Definition TCling.cxx:9024
std::vector< std::string > fAutoLoadLibStorage
Definition TCling.h:119
Bool_t fLockProcessLine
Definition TCling.h:128
virtual const char * DataMemberInfo_TypeTrueName(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8657
void CreateListOfDataMembers(TClass *cl) const
Create list of pointers to data members for TClass cl.
Definition TCling.cxx:4378
void UnRegisterTClassUpdate(const TClass *oldcl)
If the dictionary is loaded, we can remove the class from the list (otherwise the class might be load...
Definition TCling.cxx:2392
void HandleNewDecl(const void *DV, bool isDeserialized, std::set< TClass * > &modifiedClasses)
Definition TCling.cxx:486
void InvalidateCachedDecl(const std::tuple< TListOfDataMembers *, TListOfFunctions *, TListOfFunctionTemplates *, TListOfEnums * > &Lists, const clang::Decl *D)
Invalidate cached TCling information for the given declaration, and removed it from the appropriate o...
Definition TCling.cxx:6873
virtual const char * MethodInfo_TypeName(MethodInfo_t *minfo) const
Definition TCling.cxx:9106
bool RegisterPrebuiltModulePath(const std::string &FullPath, const std::string &ModuleMapName="module.modulemap") const
Definition TCling.cxx:1903
virtual Long_t TypedefInfo_Property(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9438
virtual void MethodArgInfo_Delete(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9197
virtual void LoadFunctionTemplates(TClass *cl) const
Create list of pointers to function templates for TClass cl.
Definition TCling.cxx:4331
virtual CallFunc_t * CallFunc_Factory() const
Definition TCling.cxx:7876
virtual TypedefInfo_t * TypedefInfo_FactoryCopy(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9405
std::vector< const char * > fCurExecutingMacros
Definition TCling.h:150
void UpdateListsOnCommitted(const cling::Transaction &T)
Definition TCling.cxx:6747
virtual void SetAllocunlockfunc(void(*)()) const
[Place holder for Mutex Unlock] Provide the interpreter with a way to release a lock used to protect ...
Definition TCling.cxx:7515
virtual Long_t ClassInfo_Tagnum(ClassInfo_t *info) const
Definition TCling.cxx:8375
void UpdateListOfTypes()
No op: see TClingCallbacks (used to update the list of types)
Definition TCling.cxx:3820
const char * GetSharedLibDeps(const char *lib, bool tryDyld=false)
Get the list a libraries on which the specified lib depends.
Definition TCling.cxx:7261
virtual DeclId_t GetDataMemberAtAddr(const void *addr) const
Return pointer to cling DeclId for a data member with a given name.
Definition TCling.cxx:4834
virtual int DataMemberInfo_ArrayDim(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8551
virtual bool ClassInfo_IsBase(ClassInfo_t *info, const char *name) const
Definition TCling.cxx:8254
virtual int BaseClassInfo_Next(BaseClassInfo_t *bcinfo) const
Definition TCling.cxx:8459
virtual void GenericError(const char *error) const
Let the interpreter issue a generic error, and set its error state.
Definition TCling.cxx:7428
virtual std::string MethodArgInfo_TypeNormalizedName(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9276
virtual const char * ClassInfo_TmpltName(ClassInfo_t *info) const
Definition TCling.cxx:8417
virtual TEnum * CreateEnum(void *VD, TClass *cl) const
Definition TCling.cxx:459
virtual EReturnType MethodCallReturnType(TFunction *func) const
Definition TCling.cxx:9133
virtual int UnloadFile(const char *path) const
Definition TCling.cxx:7617
virtual int Evaluate(const char *, TInterpreterValue &)
Get the interpreter value corresponding to the statement.
Definition TCling.cxx:7645
TObject * GetObjectAddress(const char *Name, void *&LookupCtx)
If the interpreter encounters Name, check whether that is an object ROOT could retrieve.
Definition TCling.cxx:7681
virtual Long_t TypeInfo_Property(TypeInfo_t *tinfo) const
Definition TCling.cxx:9344
DeclId_t GetFunctionWithPrototype(ClassInfo_t *cl, const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Return pointer to cling interface function for a method of a class with a certain prototype,...
Definition TCling.cxx:5039
bool IsClassAutoLoadingEnabled() const
Returns if class AutoLoading is currently enabled.
Definition TCling.cxx:7523
void InvalidateGlobal(const clang::Decl *D)
Invalidate cached TCling information for the given global declaration.
Definition TCling.cxx:6858
void EndOfLineAction()
It calls a "fantom" method to synchronize user keyboard input and ROOT prompt line.
Definition TCling.cxx:3075
DeclId_t GetFunctionWithValues(ClassInfo_t *cl, const char *method, const char *params, Bool_t objectIsConst=kFALSE)
Return pointer to cling DeclId for a method of a class with a certain prototype, i....
Definition TCling.cxx:5017
void UpdateListOfLoadedSharedLibraries()
Definition TCling.cxx:3291
void RegisterModule(const char *modulename, const char **headers, const char **includePaths, const char *payloadCode, const char *fwdDeclsCode, void(*triggerFunc)(), const FwdDeclArgsToKeepCollection_t &fwdDeclsArgToSkip, const char **classesHeaders, Bool_t lateRegistration=false, Bool_t hasCxxModule=false)
Inject the module named "modulename" into cling; load all headers.
Definition TCling.cxx:2012
virtual const char * DataMemberInfo_ValidArrayIndex(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8681
void InitRootmapFile(const char *name)
Create a resource table and read the (possibly) three resource files, i.e. $ROOTSYS/etc/system<name> ...
Definition TCling.cxx:5543
void CreateListOfMethodArgs(TFunction *m) const
Create list of pointers to method arguments for TMethod m.
Definition TCling.cxx:4412
virtual void TypedefInfo_Init(TypedefInfo_t *tinfo, const char *name) const
Definition TCling.cxx:9412
virtual Long_t MethodInfo_ExtraProperty(MethodInfo_t *minfo) const
Definition TCling.cxx:9064
virtual void ReportDiagnosticsToErrorHandler(bool enable=true)
Report diagnostics to the ROOT error handler (see TError.h).
Definition TCling.cxx:7584
void LoadPCM(std::string pcmFileNameFullPath)
Tries to load a rdict PCM, issues diagnostics if it fails.
Definition TCling.cxx:1814
virtual ~TCling()
Destroy the interpreter interface.
Definition TCling.cxx:1621
void AddFriendToClass(clang::FunctionDecl *, clang::CXXRecordDecl *) const
Inject function as a friend into klass.
Definition TCling.cxx:7734
Bool_t fCxxModulesEnabled
Definition TCling.h:129
void RefreshClassInfo(TClass *cl, const clang::NamedDecl *def, bool alias)
Internal function. Actually do the update of the ClassInfo when seeing.
Definition TCling.cxx:6620
void ExecuteWithArgsAndReturn(TMethod *method, void *address, const void *args[]=0, int nargs=0, void *ret=0) const
Definition TCling.cxx:5269
virtual void FuncTempInfo_Delete(FuncTempInfo_t *) const
Delete the FuncTempInfo_t.
Definition TCling.cxx:8774
Bool_t SetSuspendAutoParsing(Bool_t value)
Suspend the Autoparsing of headers.
Definition TCling.cxx:7565
virtual DataMemberInfo_t * DataMemberInfo_FactoryCopy(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8585
virtual CallFuncIFacePtr_t CallFunc_IFacePtr(CallFunc_t *func) const
Definition TCling.cxx:7925
virtual void CallFunc_ExecWithReturn(CallFunc_t *func, void *address, void *ret) const
Definition TCling.cxx:7833
virtual MethodArgInfo_t * MethodArgInfo_Factory() const
Definition TCling.cxx:9204
virtual void DataMemberInfo_Delete(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8559
Int_t fExitCode
Definition TCling.h:110
void ApplyToInterpreterMutex(void *delta)
Re-apply the lock count delta that TCling__ResetInterpreterMutex() caused.
Definition TCling.cxx:9509
void * LazyFunctionCreatorAutoload(const std::string &mangled_name)
Autoload a library based on a missing symbol.
Definition TCling.cxx:6517
virtual int LoadFile(const char *path) const
Load a source file or library called path into the interpreter.
Definition TCling.cxx:7471
void CodeComplete(const std::string &, size_t &, std::vector< std::string > &)
The call to Cling's tab complition.
Definition TCling.cxx:7637
virtual Long_t FuncTempInfo_Property(FuncTempInfo_t *) const
Return the property of the function template.
Definition TCling.cxx:8838
virtual TypeInfo_t * MethodInfo_Type(MethodInfo_t *minfo) const
Definition TCling.cxx:9072
virtual const char * MethodArgInfo_TypeName(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9268
Bool_t HandleNewTransaction(const cling::Transaction &T)
Helper function to increase the internal Cling count of transactions that change the AST.
Definition TCling.cxx:3586
virtual bool ClassInfo_HasDefaultConstructor(ClassInfo_t *info, Bool_t testio=kFALSE) const
Definition TCling.cxx:8220
virtual bool DataMemberInfo_IsValid(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8593
int ReadRootmapFile(const char *rootmapfile, TUniqueString *uniqueString=nullptr)
Read and parse a rootmapfile in its new format, and return 0 in case of success, -1 if the file has a...
Definition TCling.cxx:5420
Bool_t IsLoaded(const char *filename) const
Return true if the file has already been loaded by cint.
Definition TCling.cxx:3126
const char * GetSharedLibs()
Return the list of shared libraries loaded into the process.
Definition TCling.cxx:6971
virtual const char * GetTopLevelMacroName() const
Return the file name of the current un-included interpreted file.
Definition TCling.cxx:5300
std::map< SpecialObjectLookupCtx_t, SpecialObjectMap_t > fSpecialObjectMaps
Definition TCling.h:154
virtual DeclId_t GetDataMemberWithValue(const void *ptrvalue) const
NOT IMPLEMENTED.
Definition TCling.cxx:4825
virtual bool MethodArgInfo_IsValid(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9228
Int_t ReloadAllSharedLibraryMaps()
Reload the library map entries coming from all the loaded shared libraries, after first unloading the...
Definition TCling.cxx:5825
virtual void SetErrmsgcallback(void *p) const
Set a callback to receive error messages.
Definition TCling.cxx:7575
virtual std::string ToString(const char *type, void *obj)
Definition TCling.cxx:1030
virtual const char * MethodInfo_Title(MethodInfo_t *minfo) const
Definition TCling.cxx:9125
virtual Long_t ClassInfo_GetBaseOffset(ClassInfo_t *fromDerived, ClassInfo_t *toBase, void *address, bool isDerivedObject) const
Definition TCling.cxx:8483
virtual int DataMemberInfo_TypeSize(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8641
virtual ClassInfo_t * ClassInfo_Factory(Bool_t all=kTRUE) const
Definition TCling.cxx:8182
virtual const char * MethodInfo_GetMangledName(MethodInfo_t *minfo) const
Definition TCling.cxx:9080
virtual bool CallFunc_IsValid(CallFunc_t *func) const
Definition TCling.cxx:7916
virtual const char * BaseClassInfo_TmpltName(BaseClassInfo_t *bcinfo) const
Definition TCling.cxx:8538
virtual void SetAlloclockfunc(void(*)()) const
[Place holder for Mutex Lock] Provide the interpreter with a way to acquire a lock used to protect cr...
Definition TCling.cxx:7505
virtual void MethodInfo_CreateSignature(MethodInfo_t *minfo, TString &signature) const
Definition TCling.cxx:8976
void SnapshotMutexState(ROOT::TVirtualRWMutex *mtx)
Definition TCling.cxx:9478
virtual Bool_t ClassInfo_Contains(ClassInfo_t *info, DeclId_t declid) const
Return true if the entity pointed to by 'declid' is declared in the context described by 'info'.
Definition TCling.cxx:8098
std::set< size_t > fPayloads
Definition TCling.h:123
virtual const char * ClassInfo_Name(ClassInfo_t *info) const
Definition TCling.cxx:8401
Int_t UnloadLibraryMap(const char *library)
Unload library map entries coming from the specified library.
Definition TCling.cxx:5904
virtual ClassInfo_t * BaseClassInfo_ClassInfo(BaseClassInfo_t *) const
Definition TCling.cxx:8504
TObjArray * fRootmapFiles
Definition TCling.h:127
virtual void CallFunc_Delete(CallFunc_t *func) const
Definition TCling.cxx:7810
virtual Long_t ClassInfo_ClassProperty(ClassInfo_t *info) const
Definition TCling.cxx:8143
cling::Interpreter * GetInterpreterImpl() const
Definition TCling.h:634
virtual bool ClassInfo_IsLoaded(ClassInfo_t *info) const
Definition TCling.cxx:8287
std::vector< std::pair< TClass *, DictFuncPtr_t > > fClassesToUpdate
Definition TCling.h:147
virtual int ClassInfo_GetMethodNArg(ClassInfo_t *info, const char *method, const char *proto, Bool_t objectIsConst=false, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) const
Definition TCling.cxx:8212
Int_t DeleteGlobal(void *obj)
Delete obj from Cling symbol table so it cannot be accessed anymore.
Definition TCling.cxx:3704
virtual const char * GetCurrentMacroName() const
Return the file name of the currently interpreted file, included or not.
Definition TCling.cxx:5347
const ROOT::TMetaUtils::TNormalizedCtxt & GetNormalizedContext() const
Definition TCling.h:367
virtual void TypeInfo_Delete(TypeInfo_t *tinfo) const
Definition TCling.cxx:9289
virtual Bool_t LoadText(const char *text) const
Load the declarations from text into the interpreter.
Definition TCling.cxx:7484
friend cling::Interpreter * TCling__GetInterpreter()
std::set< TClass * > fModTClasses
Definition TCling.h:146
void GetInterpreterTypeName(const char *name, std::string &output, Bool_t full=kFALSE)
The 'name' is known to the interpreter, this function returns the internal version of this name (usua...
Definition TCling.cxx:5084
void * RewindInterpreterMutex()
Reset the interpreter lock to the state it had before interpreter-related calls happened.
Definition TCling.cxx:9539
virtual Long_t BaseClassInfo_Offset(BaseClassInfo_t *toBaseClassInfo, void *address, bool isDerivedObject) const
Definition TCling.cxx:8475
TCling(const char *name, const char *title)
Definition TCling.h:197
virtual int GetSecurityError() const
Interface to cling function.
Definition TCling.cxx:7458
virtual UInt_t FuncTempInfo_TemplateMinReqArgs(FuncTempInfo_t *) const
Return the number of required template arguments of the function template described by ft_info.
Definition TCling.cxx:8828
void ResetGlobals()
Reset in Cling the list of global variables to the state saved by the last call to TCling::SaveGlobal...
Definition TCling.cxx:3661
virtual const char * ClassInfo_Title(ClassInfo_t *info) const
Definition TCling.cxx:8409
virtual void AddAvailableIndentifiers(TSeqCollection &Idents)
Definition TCling.cxx:2357
virtual Long_t BaseClassInfo_Property(BaseClassInfo_t *bcinfo) const
Definition TCling.cxx:8496
virtual FuncTempInfo_t * FuncTempInfo_Factory(DeclId_t declid) const
Construct a FuncTempInfo_t.
Definition TCling.cxx:8783
void * GetInterfaceMethod(TClass *cl, const char *method, const char *params, Bool_t objectIsConst=kFALSE)
Return pointer to cling interface function for a method of a class with parameters params (params is ...
Definition TCling.cxx:4891
virtual void ClassInfo_Destruct(ClassInfo_t *info, void *arena) const
Definition TCling.cxx:8174
virtual const char * BaseClassInfo_FullName(BaseClassInfo_t *bcinfo) const
Definition TCling.cxx:8520
virtual bool ClassInfo_IsEnum(const char *name) const
Definition TCling.cxx:8262
virtual DataMemberInfo_t * DataMemberInfo_Factory(ClassInfo_t *clinfo, TDictionary::EMemberSelection selection) const
Definition TCling.cxx:8566
Long_t ProcessLine(const char *line, EErrorCode *error=0)
Definition TCling.cxx:2452
virtual void TypedefInfo_Delete(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9382
void SetGetline(const char *(*getlineFunc)(const char *prompt), void(*histaddFunc)(const char *line))
Set a getline function to call when input is needed.
Definition TCling.cxx:3569
Int_t fGlobalsListSerial
Definition TCling.h:115
void RewindDictionary()
Rewind Cling dictionary to the point where it was before executing the current macro.
Definition TCling.cxx:3690
TString fSharedLibs
Definition TCling.h:114
std::map< std::string, llvm::StringRef > fPendingRdicts
Definition TCling.h:624
virtual const char * MapCppName(const char *) const
Interface to cling function.
Definition TCling.cxx:7492
static void UpdateClassInfoWork(const char *name)
Definition TCling.cxx:6727
virtual Long_t FuncTempInfo_ExtraProperty(FuncTempInfo_t *) const
Return the property not already defined in Property See TDictionary's EFunctionProperty.
Definition TCling.cxx:8898
void PrintIntro()
No-op; see TRint instead.
Definition TCling.cxx:2618
virtual CallFunc_t * CallFunc_FactoryCopy(CallFunc_t *func) const
Definition TCling.cxx:7884
virtual const char * DataMemberInfo_Name(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8665
Bool_t Declare(const char *code)
Declare code to the interpreter, without any of the interpreter actions that could trigger a re-inter...
Definition TCling.cxx:3052
Int_t DeleteVariable(const char *name)
Undeclare obj called name.
Definition TCling.cxx:3719
virtual int ClassInfo_Next(ClassInfo_t *info) const
Definition TCling.cxx:8319
static void * fgSetOfSpecials
Definition TCling.h:105
void AddIncludePath(const char *path)
Add a directory to the list of directories in which the interpreter looks for include files.
Definition TCling.cxx:2632
virtual void CallFunc_SetArgArray(CallFunc_t *func, Long_t *paramArr, Int_t nparam) const
Definition TCling.cxx:7989
virtual const char * MethodInfo_Name(MethodInfo_t *minfo) const
Definition TCling.cxx:9098
void ClearFileBusy()
Reset the interpreter internal state in case a previous action was not correctly terminated.
Definition TCling.cxx:3031
virtual const char * MethodArgInfo_Name(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9260
virtual Long_t ClassInfo_Property(ClassInfo_t *info) const
Definition TCling.cxx:8359
Int_t fMore
Definition TCling.h:109
ROOT::TMetaUtils::TNormalizedCtxt * fNormalizedCtxt
Definition TCling.h:135
virtual int MethodInfo_Next(MethodInfo_t *minfo) const
Definition TCling.cxx:9048
const char * TypeName(const char *typeDesc)
Return the absolute type of typeDesc.
Definition TCling.cxx:5362
Int_t GetMore() const
Definition TCling.h:215
bool fIsShuttingDown
Definition TCling.h:188
unsigned long long GetInterpreterStateMarker() const
Definition TCling.h:226
void SaveContext()
Save the current Cling state.
Definition TCling.cxx:3780
std::set< TClass * > & GetModTClasses()
Definition TCling.h:567
virtual bool TypeInfo_IsValid(TypeInfo_t *tinfo) const
Definition TCling.cxx:9328
Int_t AutoLoad(const char *classname, Bool_t knowDictNotLoaded=kFALSE)
Load library containing the specified class.
Definition TCling.cxx:6153
TClingCallbacks * fClingCallbacks
Definition TCling.h:140
TString GetMangledNameWithPrototype(TClass *cl, const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Return the cling mangled name for a method of a class with a certain prototype, i....
Definition TCling.cxx:4873
void RegisterTClassUpdate(TClass *oldcl, DictFuncPtr_t dict)
Register classes that already existed prior to their dictionary loading and that already had a ClassI...
Definition TCling.cxx:2383
virtual Long_t DataMemberInfo_Property(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8625
void UpdateListOfGlobalFunctions()
No op: see TClingCallbacks (used to update the list of global functions)
Definition TCling.cxx:3813
Bool_t IsAutoParsingSuspended() const
Definition TCling.h:355
virtual const char * MethodInfo_GetPrototype(MethodInfo_t *minfo) const
Definition TCling.cxx:9090
TString fIncludePath
Definition TCling.h:116
virtual bool ClassInfo_IsValidMethod(ClassInfo_t *info, const char *method, const char *proto, Long_t *offset, ROOT::EFunctionMatchMode=ROOT::kConversionMatch) const
Definition TCling.cxx:8303
virtual void * ClassInfo_New(ClassInfo_t *info) const
Definition TCling.cxx:8327
void Execute(TMethod *, TObjArray *, int *=nullptr)
Execute method on this object with parameters stored in the TObjArray.
Definition TCling.h:616
virtual void TypeInfo_Init(TypeInfo_t *tinfo, const char *funcname) const
Definition TCling.cxx:9319
Bool_t SetErrorMessages(Bool_t enable=kTRUE)
If error messages are disabled, the interpreter should suppress its failures and warning messages fro...
Definition TCling.cxx:7328
virtual const char * DataMemberInfo_Title(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8673
void TransactionRollback(const cling::Transaction &T)
Definition TCling.cxx:6933
virtual EDataType ClassInfo_GetUnderlyingType(ClassInfo_t *info) const
Definition TCling.cxx:8278
virtual void CallFunc_Init(CallFunc_t *func) const
Definition TCling.cxx:7907
virtual UInt_t FuncTempInfo_TemplateNargs(FuncTempInfo_t *) const
Return the maximum number of template arguments of the function template described by ft_info.
Definition TCling.cxx:8817
TString GetMangledName(TClass *cl, const char *method, const char *params, Bool_t objectIsConst=kFALSE)
Return the cling mangled name for a method of a class with parameters params (params is a string of a...
Definition TCling.cxx:4846
virtual void SetTempLevel(int val) const
Create / close a scope for temporaries.
Definition TCling.cxx:7611
void SetProcessLineLock(Bool_t lock=kTRUE)
Definition TCling.h:322
virtual DeclId_t GetDataMember(ClassInfo_t *cl, const char *name) const
Return pointer to cling Decl of global/static variable that is located at the address given by addr.
Definition TCling.cxx:4656
void RegisterTemporary(const TInterpreterValue &value)
Definition TCling.cxx:7654
MutexStateAndRecurseCount fInitialMutex
Definition TCling.h:175
virtual void LoadEnums(TListOfEnums &cl) const
Create list of pointers to enums for TClass cl.
Definition TCling.cxx:4284
virtual void CallFunc_SetArg(CallFunc_t *func, Long_t param) const
Definition TCling.cxx:7941
virtual Long_t GetExecByteCode() const
This routines used to return the address of the internal wrapper function (of the interpreter) that w...
Definition TCling.cxx:7450
static constexpr const char * kNullArgv[]
Definition TCling.h:186
virtual void * MethodInfo_InterfaceMethod(MethodInfo_t *minfo) const
Definition TCling.cxx:9016
friend void TCling__RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent)
Definition TCling.cxx:578
Int_t UnloadAllSharedLibraryMaps()
Unload the library map entries coming from all the loaded shared libraries.
Definition TCling.cxx:5886
virtual void CallFunc_IgnoreExtraArgs(CallFunc_t *func, bool ignore) const
Definition TCling.cxx:7899
void * SetAutoLoadCallBack(void *cb)
Definition TCling.h:201
std::vector< cling::Value > * fTemporaries
Definition TCling.h:134
virtual Long_t MethodInfo_Property(MethodInfo_t *minfo) const
Definition TCling.cxx:9056
virtual std::unique_ptr< TInterpreterValue > MakeInterpreterValue() const
Definition TCling.cxx:7630
virtual Long_t DataMemberInfo_Offset(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8617
static Int_t ShallowAutoLoadImpl(const char *cls)
Definition TCling.cxx:6044
void LibraryLoaded(const void *dyLibHandle, const char *canonicalName)
Definition TCling.cxx:6956
virtual TypedefInfo_t * TypedefInfo_Factory() const
Definition TCling.cxx:9389
void UpdateListOfGlobals()
No op: see TClingCallbacks (used to update the list of globals)
Definition TCling.cxx:3806
void ClearStack()
Delete existing temporary values.
Definition TCling.cxx:3039
void * SpecialObjectLookupCtx_t
Definition TCling.h:152
std::map< const cling::Transaction *, size_t > fTransactionHeadersMap
Definition TCling.h:121
virtual int SetClassAutoparsing(int)
Enable/Disable the Autoparsing of headers.
Definition TCling.cxx:7554
Bool_t fHeaderParsingOnDemand
Definition TCling.h:182
virtual int SetClassAutoLoading(int) const
Enable/Disable the AutoLoading of libraries.
Definition TCling.cxx:7536
Int_t RescanLibraryMap()
Scan again along the dynamic path for library maps.
Definition TCling.cxx:5813
virtual int DataMemberInfo_Next(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8609
void Reset()
Pressing Ctrl+C should forward here.
Definition TCling.cxx:3629
Int_t Load(const char *filenam, Bool_t system=kFALSE)
Load a library file in cling's memory.
Definition TCling.cxx:3436
void InspectMembers(TMemberInspector &, const void *obj, const TClass *cl, Bool_t isTransient)
Visit all members over members, recursing over base classes.
Definition TCling.cxx:2647
std::hash< std::string > fStringHashFunction
Definition TCling.h:125
TEnv * fMapfile
Definition TCling.h:118
const char * GetIncludePath()
Refresh the list of include paths known to the interpreter and return it with -I prepended.
Definition TCling.cxx:7342
static void RemoveAndInvalidateObject(List &L, Object *O)
Definition TCling.h:579
virtual void ClassInfo_DeleteArray(ClassInfo_t *info, void *arena, bool dtorOnly) const
Definition TCling.cxx:8166
virtual void GetFunctionName(const clang::Decl *decl, std::string &name) const
Definition TCling.cxx:8729
Long_t ExecuteMacro(const char *filename, EErrorCode *error=0)
Execute a cling macro.
Definition TCling.cxx:5287
virtual DeclId_t GetEnum(TClass *cl, const char *name) const
Return pointer to cling Decl of global/static variable that is located at the address given by addr.
Definition TCling.cxx:4716
void GetFunctionOverloads(ClassInfo_t *cl, const char *funcname, std::vector< DeclId_t > &res) const
Insert overloads of name in cl to res.
Definition TCling.cxx:4932
virtual void CallFunc_Exec(CallFunc_t *func, void *address) const
Definition TCling.cxx:7817
std::unordered_map< std::string, TObject * > SpecialObjectMap_t
Definition TCling.h:153
virtual int DisplayIncludePath(FILE *fout) const
Interface to cling function.
Definition TCling.cxx:7391
void RegisterLoadedSharedLibrary(const char *name)
Register a new shared library name with the interpreter; add it to fSharedLibs.
Definition TCling.cxx:3351
virtual void UpdateEnumConstants(TEnum *enumObj, TClass *cl) const
Definition TCling.cxx:411
void SaveGlobalsContext()
Save the current Cling state of global objects.
Definition TCling.cxx:3793
std::unordered_set< const clang::NamespaceDecl * > fNSFromRootmaps
Definition TCling.h:126
void ProcessClassesToUpdate()
Definition TCling.cxx:1982
virtual Long_t MethodArgInfo_Property(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9244
virtual const char * GetSTLIncludePath() const
Return the directory containing CINT's stl cintdlls.
Definition TCling.cxx:7373
TString fRootmapLoadPath
Definition TCling.h:117
Int_t LoadLibraryMap(const char *rootmapfile=0)
Load map between class and library.
Definition TCling.cxx:5629
virtual std::string MethodInfo_TypeNormalizedName(MethodInfo_t *minfo) const
Definition TCling.cxx:9114
void Execute(const char *function, const char *params, int *error=0)
Execute a global function with arguments params.
Definition TCling.cxx:5117
virtual const char * ClassInfo_FullName(ClassInfo_t *info) const
Definition TCling.cxx:8391
TClass * GenerateTClass(const char *classname, Bool_t emulation, Bool_t silent=kFALSE)
Generate a TClass for the given class.
Definition TCling.cxx:4435
virtual int TypeInfo_Size(TypeInfo_t *tinfo) const
Definition TCling.cxx:9360
virtual int MethodArgInfo_Next(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9236
ROOT::TMetaUtils::TClingLookupHelper * fLookupHelper
Definition TCling.h:136
virtual const char * TypedefInfo_TrueName(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9454
Bool_t fIsAutoParsingSuspended
Definition TCling.h:183
TClass * GetClass(const std::type_info &typeinfo, Bool_t load) const
Demangle the name (from the typeinfo) and then request the class via the usual name based interface (...
Definition TCling.cxx:5998
DeclId_t GetDeclId(const llvm::GlobalValue *gv) const
Return pointer to cling DeclId for a global value.
Definition TCling.cxx:4756
Long_t ProcessLineAsynch(const char *line, EErrorCode *error=0)
Let cling process a command line asynch.
Definition TCling.cxx:3481
virtual std::vector< std::string > GetUsingNamespaces(ClassInfo_t *cl) const
Get the scopes representing using declarations of namespace.
Definition TCling.cxx:4367
Int_t SetClassSharedLibs(const char *cls, const char *libs)
Register the AutoLoading information for a class.
Definition TCling.cxx:5966
virtual void ClassInfo_Init(ClassInfo_t *info, const char *funcname) const
Definition TCling.cxx:8236
virtual TypeInfo_t * TypeInfo_FactoryCopy(TypeInfo_t *) const
Definition TCling.cxx:9312
Bool_t CheckClassTemplate(const char *name)
Return true if there is a class template by the given name ...
Definition TCling.cxx:4240
void LoadPCMImpl(TFile &pcmFile)
Tries to load a PCM from TFile; returns true on success.
Definition TCling.cxx:1699
Bool_t IsAutoLoadNamespaceCandidate(const clang::NamespaceDecl *nsDecl)
Definition TCling.cxx:6612
TObjArray * GetRootMapFiles() const
Definition TCling.h:225
char fPrompt[64]
Definition TCling.h:111
void * fPrevLoadedDynLibInfo
Definition TCling.h:138
void UpdateListOfDataMembers(TClass *cl) const
Update the list of pointers to data members for TClass cl This is now a nop.
Definition TCling.cxx:4405
virtual void SetDeclAttr(DeclId_t, const char *)
Definition TCling.cxx:8692
virtual Long_t DataMemberInfo_TypeProperty(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8633
virtual void ShutDown()
Definition TCling.cxx:1658
virtual const char * DataMemberInfo_TypeName(DataMemberInfo_t *dminfo) const
Definition TCling.cxx:8649
virtual void CallFunc_SetArgs(CallFunc_t *func, const char *param) const
Definition TCling.cxx:7997
virtual const char * BaseClassInfo_Name(BaseClassInfo_t *bcinfo) const
Definition TCling.cxx:8530
virtual void MethodInfo_Delete(MethodInfo_t *minfo) const
Interface to cling function.
Definition TCling.cxx:8969
virtual const char * TypeInfo_TrueName(TypeInfo_t *tinfo) const
Definition TCling.cxx:9368
std::set< const char * > fParsedPayloadsAddresses
Definition TCling.h:124
ECheckClassInfo CheckClassInfo(const char *name, Bool_t autoload, Bool_t isClassOrNamespaceOnly=kFALSE)
Checks if an entity with the specified name is defined in Cling.
Definition TCling.cxx:4068
static void UpdateClassInfo(char *name, Long_t tagnum)
No op: see TClingCallbacks.
Definition TCling.cxx:6721
virtual void BaseClassInfo_Delete(BaseClassInfo_t *bcinfo) const
Definition TCling.cxx:8432
void ResetGlobalVar(void *obj)
Reset the Cling 'user' global objects/variables state to the state saved by the last call to TCling::...
Definition TCling.cxx:3675
std::unique_ptr< cling::Interpreter > fInterpreter
Definition TCling.h:131
Bool_t IsLibraryLoaded(const char *libname) const
Definition TCling.cxx:3092
TEnv * GetMapfile() const
Definition TCling.h:214
TCling & operator=(const TCling &)=delete
virtual void Initialize()
Initialize the interpreter, once TROOT::fInterpreter is set.
Definition TCling.cxx:1639
virtual void * FindSym(const char *entry) const
Interface to cling function.
Definition TCling.cxx:7420
virtual Long_t CallFunc_ExecInt(CallFunc_t *func, void *address) const
Definition TCling.cxx:7852
virtual int DataMemberInfo_MaxIndex(DataMemberInfo_t *dminfo, Int_t dim) const
Definition TCling.cxx:8601
void SetClassInfo(TClass *cl, Bool_t reload=kFALSE)
Set pointer to the TClingClassInfo in TClass.
Definition TCling.cxx:3939
Long_t ProcessLineSynch(const char *line, EErrorCode *error=0)
Let cling process a command line synchronously, i.e we are waiting it will be finished.
Definition TCling.cxx:3490
virtual int TypeInfo_RefType(TypeInfo_t *) const
Definition TCling.cxx:9352
cling::MetaProcessor * GetMetaProcessorImpl() const
Definition TCling.h:635
void LoadMacro(const char *filename, EErrorCode *error=0)
Load a macro file in cling's memory.
Definition TCling.cxx:3473
std::set< size_t > fLookedUpClasses
Definition TCling.h:122
TCling(const TCling &)=delete
virtual void CallFunc_ResetArg(CallFunc_t *func) const
Definition TCling.cxx:7933
virtual Long64_t CallFunc_ExecInt64(CallFunc_t *func, void *address) const
Definition TCling.cxx:7860
virtual Long_t BaseClassInfo_Tagnum(BaseClassInfo_t *bcinfo) const
Definition TCling.cxx:8512
void ResetAll()
Reset the Cling state to its initial state.
Definition TCling.cxx:3645
virtual void ClassInfo_Delete(ClassInfo_t *info) const
Definition TCling.cxx:8151
virtual Double_t CallFunc_ExecDouble(CallFunc_t *func, void *address) const
Definition TCling.cxx:7868
UInt_t AutoParseImplRecurse(const char *cls, bool topLevel)
Helper routine for TCling::AutoParse implementing the actual call to the parser and looping over temp...
Definition TCling.cxx:6269
virtual const char * TypedefInfo_Title(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9470
void CreateListOfBaseClasses(TClass *cl) const
Create list of pointers to base class(es) for TClass cl.
Definition TCling.cxx:4260
void RecursiveRemove(TObject *obj)
Delete object from cling symbol table so it can not be used anymore.
Definition TCling.cxx:3604
virtual MethodArgInfo_t * MethodArgInfo_FactoryCopy(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9220
void UpdateListsOnUnloaded(const cling::Transaction &T)
Invalidate stored TCling state for declarations included in transaction ‘T’.
Definition TCling.cxx:6831
void UpdateClassInfoWithDecl(const clang::NamedDecl *ND)
Internal function. Inform a TClass about its new TagDecl or NamespaceDecl.
Definition TCling.cxx:6663
virtual const char * ClassInfo_FileName(ClassInfo_t *info) const
Definition TCling.cxx:8383
virtual void CallFunc_ExecWithArgsAndReturn(CallFunc_t *func, void *address, const void *args[]=0, int nargs=0, void *ret=0) const
Definition TCling.cxx:7841
DeclId_t GetFunctionTemplate(ClassInfo_t *cl, const char *funcname)
Return pointer to cling interface function for a method of a class with a certain name.
Definition TCling.cxx:5061
virtual int MethodInfo_NArg(MethodInfo_t *minfo) const
Definition TCling.cxx:9032
char * GetPrompt()
Definition TCling.h:219
virtual FuncTempInfo_t * FuncTempInfo_FactoryCopy(FuncTempInfo_t *) const
Construct a FuncTempInfo_t.
Definition TCling.cxx:8794
void * fAutoLoadCallBack
Definition TCling.h:148
virtual int TypedefInfo_Size(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9446
std::unique_ptr< cling::MetaProcessor > fMetaProcessor
Definition TCling.h:132
virtual const char * TypedefInfo_Name(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9462
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
Interface to cling function.
Definition TCling.cxx:8032
virtual int DisplayClass(FILE *fout, const char *name, int base, int start) const
Definition TCling.cxx:7382
const char * GetClassSharedLibs(const char *cls)
Get the list of shared libraries containing the code for class cls.
Definition TCling.cxx:7074
void * GetAutoLoadCallBack() const
Definition TCling.h:200
Bool_t IsErrorMessagesEnabled() const
If error messages are disabled, the interpreter should suppress its failures and warning messages fro...
Definition TCling.cxx:7314
ULong64_t fTransactionCount
Definition TCling.h:149
virtual Bool_t FuncTempInfo_IsValid(FuncTempInfo_t *) const
Check validity of a FuncTempInfo_t.
Definition TCling.cxx:8805
virtual BaseClassInfo_t * BaseClassInfo_Factory(ClassInfo_t *info) const
Definition TCling.cxx:8439
virtual bool TypedefInfo_IsValid(TypedefInfo_t *tinfo) const
Definition TCling.cxx:9422
virtual MethodInfo_t * MethodInfo_Factory() const
Definition TCling.cxx:8984
Int_t GetExitCode() const
Definition TCling.h:213
Int_t AutoParse(const char *cls)
Parse the headers relative to the class Returns 1 in case of success, 0 in case of failure.
Definition TCling.cxx:6411
virtual EReturnType MethodInfo_MethodCallReturnType(MethodInfo_t *minfo) const
Definition TCling.cxx:9144
void * GetInterfaceMethodWithPrototype(TClass *cl, const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
Return pointer to cling interface function for a method of a class with a certain prototype,...
Definition TCling.cxx:4994
virtual TypeInfo_t * TypeInfo_Factory() const
Definition TCling.cxx:9296
std::map< size_t, std::vector< const char * > > fClassesHeadersMap
Definition TCling.h:120
virtual int MethodInfo_NDefaultArg(MethodInfo_t *minfo) const
Definition TCling.cxx:9040
Int_t GenerateDictionary(const char *classes, const char *includes="", const char *options=0)
Generate the dictionary for the C++ classes listed in the first argument (in a semi-colon separated l...
Definition TCling.cxx:4608
virtual void CallFunc_SetFunc(CallFunc_t *func, ClassInfo_t *info, const char *method, const char *params, Long_t *Offset) const
Definition TCling.cxx:8005
void CreateListOfMethods(TClass *cl) const
Create list of pointers to methods for TClass cl.
Definition TCling.cxx:4387
void UpdateListOfMethods(TClass *cl) const
Update the list of pointers to method for TClass cl This is now a nop.
Definition TCling.cxx:4396
void RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent)
Register Rdict data for future loading by LoadPCM;.
Definition TCling.cxx:1681
virtual int ClassInfo_Size(ClassInfo_t *info) const
Definition TCling.cxx:8367
static void UpdateAllCanvases()
Update all canvases at end the terminal input command.
Definition TCling.cxx:6736
Bool_t IsProcessLineLocked() const
Definition TCling.h:319
void LibraryUnloaded(const void *dyLibHandle, const char *canonicalName)
Definition TCling.cxx:6963
EMemberSelection
Kinds of members to include in lists.
The TEnum class implements the enum type.
Definition TEnum.h:33
The TEnv class reads config files, by default named .rootrc.
Definition TEnv.h:125
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition TFile.h:54
Global functions class (global functions are obtained from CINT).
Definition TFunction.h:30
THashTable implements a hash table to store TObject's.
Definition THashTable.h:35
This class defines an abstract interface to a generic command line interpreter.
std::vector< std::pair< std::string, int > > FwdDeclArgsToKeepCollection_t
TDictionary::DeclId_t DeclId_t
A collection of TDataMember objects designed for fast access given a DeclId_t and for keep track of T...
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
A collection of TFunction objects designed for fast access given a DeclId_t and for keep track of TFu...
A collection of TFunction objects designed for fast access given a DeclId_t and for keep track of TFu...
Abstract base class for accessing the data-members of a class.
Each ROOT class (see TClass) has a linked list of methods.
Definition TMethod.h:38
An array of TObjects.
Definition TObjArray.h:37
Mother of all ROOT objects.
Definition TObject.h:37
Sequenceable collection abstract base class.
Basic string class.
Definition TString.h:136
TText * text
TLine * line
Type
enumeration specifying the integration types.
const Int_t n
Definition legend1.C:16
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
EFunctionMatchMode
@ kConversionMatch
State as returned by GetStateDelta() that can be passed to Restore()
bool operator()(const char *a, const char *b) const
Definition TCling.h:142
std::unique_ptr< StateDelta > fDelta
Definition TCling.h:172
MutexStateAndRecurseCount fInitialState
Definition TCling.h:171
std::unique_ptr< ROOT::TVirtualRWMutex::State > fState
State of gCoreMutex when the first interpreter-related function was invoked.
Definition TCling.h:158
Int_t fRecurseCount
Interpreter-related functions will push the "entry" lock state to *this.
Definition TCling.h:163
auto * m
Definition textangle.C:8
static void output(int code)
Definition gifencode.c:226