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 fExitCode; // Value passed to exit() in interpreter.
110 char fPrompt[64]; // Command line prompt string.
111 //cling::DictPosition fDictPos; // dictionary context after initialization is complete.
112 //cling::DictPosition fDictPosGlobals; // dictionary context after ResetGlobals().
113 TString fSharedLibs; // Shared libraries loaded by G__loadfile().
114 Int_t fGlobalsListSerial;// Last time we refreshed the ROOT list of globals.
115 TString fIncludePath; // Interpreter include path.
116 TString fRootmapLoadPath; // Dynamic load path for rootmap files.
117 TEnv* fMapfile; // Association of classes to libraries.
118 std::vector<std::string> fAutoLoadLibStorage; // A storage to return a const char* from GetClassSharedLibsForModule.
119 std::map<size_t,std::vector<const char*>> fClassesHeadersMap; // Map of classes hashes and headers associated
120 std::map<const cling::Transaction*,size_t> fTransactionHeadersMap; // Map which transaction contains which autoparse.
121 std::set<size_t> fLookedUpClasses; // Set of classes for which headers were looked up already
122 std::set<size_t> fPayloads; // Set of payloads
123 std::set<const char*> fParsedPayloadsAddresses; // Set of payloads which were parsed
124 std::hash<std::string> fStringHashFunction; // A simple hashing function
125 std::unordered_set<const clang::NamespaceDecl*> fNSFromRootmaps; // Collection of namespaces fwd declared in the rootmaps
126 TObjArray* fRootmapFiles; // Loaded rootmap files.
127 Bool_t fLockProcessLine; // True if ProcessLine should lock gInterpreterMutex.
128 Bool_t fCxxModulesEnabled;// True if C++ modules was enabled
129
130 std::unique_ptr<cling::Interpreter> fInterpreter; // The interpreter.
131 std::unique_ptr<cling::MetaProcessor> fMetaProcessor; // The metaprocessor.
132
133 std::vector<cling::Value> *fTemporaries; // Stack of temporaries
134 ROOT::TMetaUtils::TNormalizedCtxt *fNormalizedCtxt; // Which typedef to avoid stripping.
135 ROOT::TMetaUtils::TClingLookupHelper *fLookupHelper; // lookup helper used by TClassEdit
136
137 void* fPrevLoadedDynLibInfo; // Internal info to mark the last loaded libray.
138 std::vector<void*> fRegisterModuleDyLibs; // Stack of libraries currently running RegisterModule
139 TClingCallbacks* fClingCallbacks; // cling::Interpreter owns it.
141 bool operator()(const char* a, const char *b) const {
142 return strcmp(a, b) < 0;
143 }
144 };
145 std::set<TClass*> fModTClasses;
146 std::vector<std::pair<TClass*,DictFuncPtr_t> > fClassesToUpdate;
148 ULong64_t fTransactionCount; // Cling counter for commited or unloaded transactions which changed the AST.
149 std::vector<const char*> fCurExecutingMacros;
150
152 typedef std::unordered_map<std::string, TObject*> SpecialObjectMap_t;
153 std::map<SpecialObjectLookupCtx_t, SpecialObjectMap_t> fSpecialObjectMaps;
154
156 /// State of gCoreMutex when the first interpreter-related function was invoked.
157 std::unique_ptr<ROOT::TVirtualRWMutex::State> fState;
158
159 /// Interpreter-related functions will push the "entry" lock state to *this.
160 /// Recursive calls will do that, too - but we must only forget about the lock
161 /// state once this recursion count went to 0.
163
164 operator bool() const { return (bool)fState; }
165 };
166
169
171 std::unique_ptr<StateDelta> fDelta;
172 };
173
175
176 DeclId_t GetDeclId(const llvm::GlobalValue *gv) const;
177
178 static Int_t DeepAutoLoadImpl(const char *cls, std::unordered_set<std::string> &visited, bool nameIsNormalized);
179 static Int_t ShallowAutoLoadImpl(const char *cls);
180
183
184 UInt_t AutoParseImplRecurse(const char *cls, bool topLevel);
185 constexpr static const char* kNullArgv[] = {nullptr};
186
187 bool fIsShuttingDown = false;
188
189protected:
191
192public: // Public Interface
193
194 virtual ~TCling();
195 TCling(const char* name, const char* title, const char* const argv[], void *interpLibHandle);
196
197 void AddIncludePath(const char* path) final;
198 void *GetAutoLoadCallBack() const final { return fAutoLoadCallBack; }
199 void *SetAutoLoadCallBack(void* cb) final { void* prev = fAutoLoadCallBack; fAutoLoadCallBack = cb; return prev; }
200 Int_t AutoLoad(const char *classname, Bool_t knowDictNotLoaded = kFALSE) final;
201 Int_t AutoLoad(const std::type_info& typeinfo, Bool_t knowDictNotLoaded = kFALSE) final;
202 Int_t AutoParse(const char* cls) final;
203 void* LazyFunctionCreatorAutoload(const std::string& mangled_name);
204 bool LibraryLoadingFailed(const std::string&, const std::string&, bool, bool);
205 Bool_t IsAutoLoadNamespaceCandidate(const clang::NamespaceDecl* nsDecl);
206 void ClearFileBusy() final;
207 void ClearStack() final; // Delete existing temporary values
208 Bool_t Declare(const char* code) final;
209 void EndOfLineAction() final;
210 TClass *GetClass(const std::type_info& typeinfo, Bool_t load) const final;
211 Int_t GetExitCode() const final { return fExitCode; }
212 TEnv* GetMapfile() const final { return fMapfile; }
213 Int_t GetMore() const final;
214 TClass *GenerateTClass(const char *classname, Bool_t emulation, Bool_t silent = kFALSE) final;
215 TClass *GenerateTClass(ClassInfo_t *classinfo, Bool_t silent = kFALSE) final;
216 Int_t GenerateDictionary(const char* classes, const char* includes = "", const char* options = nullptr) final;
217 char* GetPrompt() final { return fPrompt; }
218 const char* GetSharedLibs() final;
219 const char* GetClassSharedLibs(const char* cls, bool skipCore = true) final;
220 const char* GetSharedLibDeps(const char* lib, bool tryDyld = false) final;
221 const char* GetIncludePath() final;
222 virtual const char* GetSTLIncludePath() const final;
223 TObjArray* GetRootMapFiles() const final { return fRootmapFiles; }
224 unsigned long long GetInterpreterStateMarker() const final { return fTransactionCount;}
225 virtual void Initialize() final;
226 virtual void ShutDown() final;
227 void InspectMembers(TMemberInspector&, const void* obj, const TClass* cl, Bool_t isTransient) final;
228 Bool_t IsLoaded(const char* filename) const final;
229 Bool_t IsLibraryLoaded(const char* libname) const final;
230 bool IsValid() const final;
231 Bool_t HasPCMForLibrary(const char *libname) const final;
232 Int_t Load(const char* filenam, Bool_t system = kFALSE) final;
233 void LoadMacro(const char* filename, EErrorCode* error = nullptr) final;
234 Int_t LoadLibraryMap(const char* rootmapfile = nullptr) final;
235 Int_t RescanLibraryMap() final;
238 Int_t UnloadLibraryMap(const char* library) final;
239 Longptr_t ProcessLine(const char* line, EErrorCode* error = nullptr) final;
240 Longptr_t ProcessLineAsynch(const char* line, EErrorCode* error = nullptr);
241 Longptr_t ProcessLineSynch(const char* line, EErrorCode* error = nullptr) final;
242 void PrintIntro() final;
243 bool RegisterPrebuiltModulePath(const std::string& FullPath,
244 const std::string& ModuleMapName = "module.modulemap") const final;
245 void RegisterModule(const char* modulename,
246 const char** headers,
247 const char** includePaths,
248 const char* payloadCode,
249 const char* fwdDeclsCode,
250 void (*triggerFunc)(),
251 const FwdDeclArgsToKeepCollection_t& fwdDeclsArgToSkip,
252 const char** classesHeaders,
253 Bool_t lateRegistration = false,
254 Bool_t hasCxxModule = false) final;
255 virtual void AddAvailableIndentifiers(TSeqCollection& Idents) final;
256 void RegisterTClassUpdate(TClass *oldcl,DictFuncPtr_t dict) final;
257 void UnRegisterTClassUpdate(const TClass *oldcl) final;
258
259 Int_t SetClassSharedLibs(const char *cls, const char *libs) final;
260 void SetGetline(const char * (*getlineFunc)(const char* prompt),
261 void (*histaddFunc)(const char* line)) final;
262 void Reset() final;
263 void ResetAll() final;
264 void ResetGlobals() final;
265 void ResetGlobalVar(void* obj) final;
266 void RewindDictionary() final;
267 Int_t DeleteGlobal(void* obj) final;
268 Int_t DeleteVariable(const char *name) final;
269 void SaveContext() final;
270 void SaveGlobalsContext() final;
271 void UpdateListOfGlobals() final;
272 void UpdateListOfGlobalFunctions() final;
273 void UpdateListOfTypes() final;
274 void SetClassInfo(TClass* cl, Bool_t reload = kFALSE, Bool_t silent = kFALSE) final;
275
276 ECheckClassInfo CheckClassInfo(const char *name, Bool_t autoload, Bool_t isClassOrNamespaceOnly = kFALSE) final;
277
278 Bool_t CheckClassTemplate(const char *name) final;
279 Longptr_t Calc(const char* line, EErrorCode* error = nullptr) final;
280 void CreateListOfBaseClasses(TClass* cl) const final;
281 void CreateListOfDataMembers(TClass* cl) const final;
282 void CreateListOfMethods(TClass* cl) const final;
283 void CreateListOfMethodArgs(TFunction* m) const final;
284 void UpdateListOfMethods(TClass* cl) const final;
285 void UpdateListOfDataMembers(TClass* cl) const;
286
287 DeclId_t GetDataMember(ClassInfo_t *cl, const char *name) const final;
288 DeclId_t GetDataMemberAtAddr(const void *addr) const final;
289 DeclId_t GetDataMemberWithValue(const void *ptrvalue) const final;
290 DeclId_t GetEnum(TClass *cl, const char *name) const final;
291 TEnum* CreateEnum(void *VD, TClass *cl) const final;
292 void UpdateEnumConstants(TEnum* enumObj, TClass* cl) const final;
293 void LoadEnums(TListOfEnums& cl) const final;
294 std::string ToString(const char* type, void *obj) final;
295 TString GetMangledName(TClass* cl, const char* method, const char* params, Bool_t objectIsConst = kFALSE) final;
296 TString GetMangledNameWithPrototype(TClass* cl, const char* method, const char* proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) final;
297 void* GetInterfaceMethod(TClass* cl, const char* method, const char* params, Bool_t objectIsConst = kFALSE) final;
298 void* GetInterfaceMethodWithPrototype(TClass* cl, const char* method, const char* proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) final;
299 DeclId_t GetFunction(ClassInfo_t *cl, const char *funcname) final;
300 DeclId_t GetFunctionWithPrototype(ClassInfo_t *cl, const char* method, const char* proto, Bool_t objectIsConst = kFALSE, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) final;
301 DeclId_t GetFunctionWithValues(ClassInfo_t *cl, const char* method, const char* params, Bool_t objectIsConst = kFALSE) final;
302 DeclId_t GetFunctionTemplate(ClassInfo_t *cl, const char *funcname) final;
303 void GetFunctionOverloads(ClassInfo_t *cl, const char *funcname, std::vector<DeclId_t>& res) const final;
304 virtual void LoadFunctionTemplates(TClass* cl) const final;
305
306 std::vector<std::string> GetUsingNamespaces(ClassInfo_t *cl) const final;
307
308 void GetInterpreterTypeName(const char* name, std::string &output, Bool_t full = kFALSE) final;
309 void Execute(const char* function, const char* params, int* error = nullptr) final;
310 void Execute(TObject* obj, TClass* cl, const char* method, const char* params, int* error = nullptr) final;
311 void Execute(TObject* obj, TClass* cl, const char* method, const char* params, Bool_t objectIsConst, int* error = nullptr);
312 void Execute(TObject* obj, TClass* cl, TMethod* method, TObjArray* params, int* error = nullptr) final;
313 void ExecuteWithArgsAndReturn(TMethod* method, void* address, const void* args[] = nullptr, int nargs = 0, void* ret= nullptr) const final;
314 Longptr_t ExecuteMacro(const char* filename, EErrorCode* error = nullptr) final;
315 void RecursiveRemove(TObject* obj) final;
316 Bool_t IsErrorMessagesEnabled() const final;
317 Bool_t SetErrorMessages(Bool_t enable = kTRUE) final;
319 return fLockProcessLine;
320 }
321 void SetProcessLineLock(Bool_t lock = kTRUE) final {
322 fLockProcessLine = lock;
323 }
324 const char* TypeName(const char* typeDesc) final;
325
327 void ForgetMutexState() final;
328
329 void ApplyToInterpreterMutex(void* delta);
331
332 static void UpdateClassInfo(char* name, Long_t tagnum);
333 static void UpdateClassInfoWork(const char* name);
334 void RefreshClassInfo(TClass *cl, const clang::NamedDecl *def, bool alias);
335 void UpdateClassInfoWithDecl(const clang::NamedDecl* ND);
336 static void UpdateAllCanvases();
337
338 // Misc
339 int DisplayClass(FILE* fout, const char* name, int base, int start) const final;
340 int DisplayIncludePath(FILE* fout) const final;
341 void* FindSym(const char* entry) const final;
342 void GenericError(const char* error) const final;
343 Long_t GetExecByteCode() const final;
344 const char* GetTopLevelMacroName() const final;
345 const char* GetCurrentMacroName() const final;
346 int GetSecurityError() const final;
347 int LoadFile(const char* path) const final;
348 Bool_t LoadText(const char* text) const final;
349 const char* MapCppName(const char*) const final;
350 void SetAlloclockfunc(void (*)()) const final;
351 void SetAllocunlockfunc(void (*)()) const final;
352 int SetClassAutoLoading(int) const final;
353 int SetClassAutoparsing(int) final;
355 void SetErrmsgcallback(void* p) const final;
356 void ReportDiagnosticsToErrorHandler(bool enable = true) final;
357 void SetTempLevel(int val) const final;
358 int UnloadFile(const char* path) const final;
359
360 void CodeComplete(const std::string&, size_t&,
361 std::vector<std::string>&) final;
362 int Evaluate(const char*, TInterpreterValue&) final;
363 std::unique_ptr<TInterpreterValue> MakeInterpreterValue() const final;
365 void RegisterTemporary(const cling::Value& value);
366 const ROOT::TMetaUtils::TNormalizedCtxt& GetNormalizedContext() const {return *fNormalizedCtxt;};
367 TObject* GetObjectAddress(const char *Name, void *&LookupCtx);
368
369
370 // core/meta helper functions.
371 EReturnType MethodCallReturnType(TFunction *func) const final;
372 virtual void GetFunctionName(const clang::Decl *decl, std::string &name) const;
373 bool DiagnoseIfInterpreterException(const std::exception &e) const final;
374
375 // CallFunc interface
376 DeclId_t GetDeclId(CallFunc_t *info) const final;
377 void CallFunc_Delete(CallFunc_t* func) const final;
378 void CallFunc_Exec(CallFunc_t* func, void* address) const final;
379 void CallFunc_Exec(CallFunc_t* func, void* address, TInterpreterValue& val) const final;
380 void CallFunc_ExecWithReturn(CallFunc_t* func, void* address, void* ret) const final;
381 void CallFunc_ExecWithArgsAndReturn(CallFunc_t* func, void* address, const void* args[] = nullptr, int nargs = 0, void *ret = nullptr) const final;
382 Longptr_t CallFunc_ExecInt(CallFunc_t* func, void* address) const final;
383 Long64_t CallFunc_ExecInt64(CallFunc_t* func, void* address) const final;
384 Double_t CallFunc_ExecDouble(CallFunc_t* func, void* address) const final;
385 CallFunc_t* CallFunc_Factory() const final;
386 CallFunc_t* CallFunc_FactoryCopy(CallFunc_t* func) const final;
387 MethodInfo_t* CallFunc_FactoryMethod(CallFunc_t* func) const final;
388 void CallFunc_IgnoreExtraArgs(CallFunc_t* func, bool ignore) const final;
389 void CallFunc_Init(CallFunc_t* func) const final;
390 bool CallFunc_IsValid(CallFunc_t* func) const final;
391 CallFuncIFacePtr_t CallFunc_IFacePtr(CallFunc_t * func) const final;
392 void CallFunc_ResetArg(CallFunc_t* func) const final;
393 void CallFunc_SetArg(CallFunc_t* func, Long_t param) const final;
394 void CallFunc_SetArg(CallFunc_t* func, ULong_t param) const final;
395 void CallFunc_SetArg(CallFunc_t* func, Float_t param) const final;
396 void CallFunc_SetArg(CallFunc_t* func, Double_t param) const final;
397 void CallFunc_SetArg(CallFunc_t* func, Long64_t param) const final;
398 void CallFunc_SetArg(CallFunc_t* func, ULong64_t param) const final;
399 void CallFunc_SetArgArray(CallFunc_t* func, Longptr_t* paramArr, Int_t nparam) const final;
400 void CallFunc_SetArgs(CallFunc_t* func, const char* param) const final;
401 void CallFunc_SetFunc(CallFunc_t* func, ClassInfo_t* info, const char* method, const char* params, Longptr_t* Offset) const final;
402 void CallFunc_SetFunc(CallFunc_t* func, ClassInfo_t* info, const char* method, const char* params, bool objectIsConst, Longptr_t* Offset) const final;
403 void CallFunc_SetFunc(CallFunc_t* func, MethodInfo_t* info) const final;
404 void CallFunc_SetFuncProto(CallFunc_t* func, ClassInfo_t* info, const char* method, const char* proto, Longptr_t* Offset, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) const final;
405 void CallFunc_SetFuncProto(CallFunc_t* func, ClassInfo_t* info, const char* method, const char* proto, bool objectIsConst, Longptr_t* Offset, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) const final;
406 void CallFunc_SetFuncProto(CallFunc_t* func, ClassInfo_t* info, const char* method, const std::vector<TypeInfo_t*> &proto, Longptr_t* Offset, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) const final;
407 void CallFunc_SetFuncProto(CallFunc_t* func, ClassInfo_t* info, const char* method, const std::vector<TypeInfo_t*> &proto, bool objectIsConst, Longptr_t* Offset, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) const final;
408
409 std::string CallFunc_GetWrapperCode(CallFunc_t *func) const final;
410
411 // ClassInfo interface
412 DeclId_t GetDeclId(ClassInfo_t *info) const final;
413 Bool_t ClassInfo_Contains(ClassInfo_t *info, DeclId_t declid) const final;
414 Long_t ClassInfo_ClassProperty(ClassInfo_t* info) const final;
415 void ClassInfo_Delete(ClassInfo_t* info) const final;
416 void ClassInfo_Delete(ClassInfo_t* info, void* arena) const final;
417 void ClassInfo_DeleteArray(ClassInfo_t* info, void* arena, bool dtorOnly) const final;
418 void ClassInfo_Destruct(ClassInfo_t* info, void* arena) const final;
419 ClassInfo_t* ClassInfo_Factory(Bool_t all = kTRUE) const final;
420 ClassInfo_t* ClassInfo_Factory(ClassInfo_t* cl) const final;
421 ClassInfo_t* ClassInfo_Factory(const char* name) const final;
422 ClassInfo_t* ClassInfo_Factory(DeclId_t declid) const final;
423 Longptr_t ClassInfo_GetBaseOffset(ClassInfo_t* fromDerived, ClassInfo_t* toBase, void * address, bool isDerivedObject) const final;
424 int ClassInfo_GetMethodNArg(ClassInfo_t* info, const char* method, const char* proto, Bool_t objectIsConst = false, ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch) const final;
425 bool ClassInfo_HasDefaultConstructor(ClassInfo_t* info, Bool_t testio = kFALSE) const final;
426 bool ClassInfo_HasMethod(ClassInfo_t* info, const char* name) const final;
427 void ClassInfo_Init(ClassInfo_t* info, const char* funcname) const final;
428 void ClassInfo_Init(ClassInfo_t* info, int tagnum) const final;
429 bool ClassInfo_IsBase(ClassInfo_t* info, const char* name) const final;
430 bool ClassInfo_IsEnum(const char* name) const final;
431 bool ClassInfo_IsScopedEnum(ClassInfo_t* info) const final;
432 EDataType ClassInfo_GetUnderlyingType(ClassInfo_t* info) const final;
433 bool ClassInfo_IsLoaded(ClassInfo_t* info) const final;
434 bool ClassInfo_IsValid(ClassInfo_t* info) const final;
435 bool ClassInfo_IsValidMethod(ClassInfo_t* info, const char* method, const char* proto, Longptr_t* offset, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const final;
436 bool ClassInfo_IsValidMethod(ClassInfo_t* info, const char* method, const char* proto, Bool_t objectIsConst, Longptr_t* offset, ROOT::EFunctionMatchMode /* mode */ = ROOT::kConversionMatch) const final;
437 int ClassInfo_Next(ClassInfo_t* info) const final;
438 void* ClassInfo_New(ClassInfo_t* info) const final;
439 void* ClassInfo_New(ClassInfo_t* info, int n) const final;
440 void* ClassInfo_New(ClassInfo_t* info, int n, void* arena) const final;
441 void* ClassInfo_New(ClassInfo_t* info, void* arena) const final;
442 Long_t ClassInfo_Property(ClassInfo_t* info) const final;
443 int ClassInfo_Size(ClassInfo_t* info) const final;
444 Longptr_t ClassInfo_Tagnum(ClassInfo_t* info) const final;
445 const char* ClassInfo_FileName(ClassInfo_t* info) const final;
446 const char* ClassInfo_FullName(ClassInfo_t* info) const final;
447 const char* ClassInfo_Name(ClassInfo_t* info) const final;
448 const char* ClassInfo_Title(ClassInfo_t* info) const final;
449 const char* ClassInfo_TmpltName(ClassInfo_t* info) const final;
450
451 // BaseClassInfo interface
452 void BaseClassInfo_Delete(BaseClassInfo_t* bcinfo) const final;
453 BaseClassInfo_t* BaseClassInfo_Factory(ClassInfo_t* info) const final;
454 BaseClassInfo_t* BaseClassInfo_Factory(ClassInfo_t* derived,
455 ClassInfo_t* base) const final;
456 int BaseClassInfo_Next(BaseClassInfo_t* bcinfo) const final;
457 int BaseClassInfo_Next(BaseClassInfo_t* bcinfo, int onlyDirect) const final;
458 Longptr_t BaseClassInfo_Offset(BaseClassInfo_t* toBaseClassInfo, void * address, bool isDerivedObject) const final;
459 Long_t BaseClassInfo_Property(BaseClassInfo_t* bcinfo) const final;
460 Longptr_t BaseClassInfo_Tagnum(BaseClassInfo_t* bcinfo) const final;
461 ClassInfo_t*BaseClassInfo_ClassInfo(BaseClassInfo_t * /* bcinfo */) const final;
462 const char* BaseClassInfo_FullName(BaseClassInfo_t* bcinfo) const final;
463 const char* BaseClassInfo_Name(BaseClassInfo_t* bcinfo) const final;
464 const char* BaseClassInfo_TmpltName(BaseClassInfo_t* bcinfo) const final;
465
466 // DataMemberInfo interface
467 DeclId_t GetDeclId(DataMemberInfo_t *info) const final;
468 int DataMemberInfo_ArrayDim(DataMemberInfo_t* dminfo) const final;
469 void DataMemberInfo_Delete(DataMemberInfo_t* dminfo) const final;
470 DataMemberInfo_t* DataMemberInfo_Factory(ClassInfo_t* clinfo, TDictionary::EMemberSelection selection) const final;
471 DataMemberInfo_t *DataMemberInfo_Factory(DeclId_t declid, ClassInfo_t* clinfo) const final;
472 DataMemberInfo_t* DataMemberInfo_FactoryCopy(DataMemberInfo_t* dminfo) const final;
473 bool DataMemberInfo_IsValid(DataMemberInfo_t* dminfo) const final;
474 int DataMemberInfo_MaxIndex(DataMemberInfo_t* dminfo, Int_t dim) const final;
475 int DataMemberInfo_Next(DataMemberInfo_t* dminfo) const final;
476 Longptr_t DataMemberInfo_Offset(DataMemberInfo_t* dminfo) const final;
477 Long_t DataMemberInfo_Property(DataMemberInfo_t* dminfo) const final;
478 Long_t DataMemberInfo_TypeProperty(DataMemberInfo_t* dminfo) const final;
479 int DataMemberInfo_TypeSize(DataMemberInfo_t* dminfo) const final;
480 const char* DataMemberInfo_TypeName(DataMemberInfo_t* dminfo) const final;
481 const char* DataMemberInfo_TypeTrueName(DataMemberInfo_t* dminfo) const final;
482 const char* DataMemberInfo_Name(DataMemberInfo_t* dminfo) const final;
483 const char* DataMemberInfo_Title(DataMemberInfo_t* dminfo) const final;
484 const char* DataMemberInfo_ValidArrayIndex(DataMemberInfo_t* dminfo) const final;
485 void SetDeclAttr(DeclId_t, const char* /* attribute */) final;
486
487
488 // Function Template interface
489 DeclId_t GetDeclId(FuncTempInfo_t *info) const final;
490 void FuncTempInfo_Delete(FuncTempInfo_t * /* ft_info */) const final;
491 FuncTempInfo_t *FuncTempInfo_Factory(DeclId_t declid) const final;
492 FuncTempInfo_t *FuncTempInfo_FactoryCopy(FuncTempInfo_t * /* ft_info */) const final;
493 Bool_t FuncTempInfo_IsValid(FuncTempInfo_t * /* ft_info */) const final;
494 UInt_t FuncTempInfo_TemplateNargs(FuncTempInfo_t * /* ft_info */) const final;
495 UInt_t FuncTempInfo_TemplateMinReqArgs(FuncTempInfo_t * /* ft_info */) const final;
496 Long_t FuncTempInfo_Property(FuncTempInfo_t * /* ft_info */) const final;
497 Long_t FuncTempInfo_ExtraProperty(FuncTempInfo_t * /* ft_info */) const final;
498 void FuncTempInfo_Name(FuncTempInfo_t * /* ft_info */, TString& name) const final;
499 void FuncTempInfo_Title(FuncTempInfo_t * /* ft_info */, TString& name) const final;
500
501 // MethodInfo interface
502 DeclId_t GetDeclId(MethodInfo_t *info) const final;
503 void MethodInfo_CreateSignature(MethodInfo_t* minfo, TString& signature) const final;
504 void MethodInfo_Delete(MethodInfo_t* minfo) const final;
505 MethodInfo_t* MethodInfo_Factory() const final;
506 MethodInfo_t* MethodInfo_Factory(ClassInfo_t *clinfo) const final;
507 MethodInfo_t *MethodInfo_Factory(DeclId_t declid) const final;
508 MethodInfo_t* MethodInfo_FactoryCopy(MethodInfo_t* minfo) const final;
509 void* MethodInfo_InterfaceMethod(MethodInfo_t* minfo) const final;
510 bool MethodInfo_IsValid(MethodInfo_t* minfo) const final;
511 int MethodInfo_NArg(MethodInfo_t* minfo) const final;
512 int MethodInfo_NDefaultArg(MethodInfo_t* minfo) const final;
513 int MethodInfo_Next(MethodInfo_t* minfo) const final;
514 Long_t MethodInfo_Property(MethodInfo_t* minfo) const final;
515 Long_t MethodInfo_ExtraProperty(MethodInfo_t* minfo) const final;
516 TypeInfo_t* MethodInfo_Type(MethodInfo_t* minfo) const final;
517 EReturnType MethodInfo_MethodCallReturnType(MethodInfo_t* minfo) const final;
518 const char* MethodInfo_GetMangledName(MethodInfo_t* minfo) const final;
519 const char* MethodInfo_GetPrototype(MethodInfo_t* minfo) const final;
520 const char* MethodInfo_Name(MethodInfo_t* minfo) const final;
521 const char* MethodInfo_TypeName(MethodInfo_t* minfo) const final;
522 std::string MethodInfo_TypeNormalizedName(MethodInfo_t* minfo) const final;
523 const char* MethodInfo_Title(MethodInfo_t* minfo) const final;
524
525 // MethodArgInfo interface
526 void MethodArgInfo_Delete(MethodArgInfo_t* marginfo) const final;
527 MethodArgInfo_t* MethodArgInfo_Factory() const final;
528 MethodArgInfo_t* MethodArgInfo_Factory(MethodInfo_t *minfo) const final;
529 MethodArgInfo_t* MethodArgInfo_FactoryCopy(MethodArgInfo_t* marginfo) const final;
530 bool MethodArgInfo_IsValid(MethodArgInfo_t* marginfo) const final;
531 int MethodArgInfo_Next(MethodArgInfo_t* marginfo) const final;
532 Long_t MethodArgInfo_Property(MethodArgInfo_t* marginfo) const final;
533 const char* MethodArgInfo_DefaultValue(MethodArgInfo_t* marginfo) const final;
534 const char* MethodArgInfo_Name(MethodArgInfo_t* marginfo) const final;
535 const char* MethodArgInfo_TypeName(MethodArgInfo_t* marginfo) const final;
536 std::string MethodArgInfo_TypeNormalizedName(MethodArgInfo_t *marginfo) const final;
537 TypeInfo_t* MethodArgInfo_TypeInfo(MethodArgInfo_t *marginfo) const;
538
539 // TypeInfo interface
540 void TypeInfo_Delete(TypeInfo_t* tinfo) const final;
541 TypeInfo_t* TypeInfo_Factory() const final;
542 TypeInfo_t *TypeInfo_Factory(const char* name) const final;
543 TypeInfo_t* TypeInfo_FactoryCopy(TypeInfo_t* /* tinfo */) const final;
544 void TypeInfo_Init(TypeInfo_t* tinfo, const char* funcname) const final;
545 bool TypeInfo_IsValid(TypeInfo_t* tinfo) const final;
546 const char* TypeInfo_Name(TypeInfo_t* /* info */) const final;
547 Long_t TypeInfo_Property(TypeInfo_t* tinfo) const final;
548 int TypeInfo_RefType(TypeInfo_t* /* tinfo */) const final;
549 int TypeInfo_Size(TypeInfo_t* tinfo) const final;
550 const char* TypeInfo_TrueName(TypeInfo_t* tinfo) const final;
551 void* TypeInfo_QualTypePtr(TypeInfo_t* tinfo) const;
552
553 // TypedefInfo interface
554 DeclId_t GetDeclId(TypedefInfo_t *info) const final;
555 void TypedefInfo_Delete(TypedefInfo_t* tinfo) const final;
556 TypedefInfo_t* TypedefInfo_Factory() const final;
557 TypedefInfo_t* TypedefInfo_Factory(const char* name) const final;
558 TypedefInfo_t* TypedefInfo_FactoryCopy(TypedefInfo_t* tinfo) const final;
559 void TypedefInfo_Init(TypedefInfo_t* tinfo, const char* name) const final;
560 bool TypedefInfo_IsValid(TypedefInfo_t* tinfo) const final;
561 int TypedefInfo_Next(TypedefInfo_t* tinfo) const final;
562 Long_t TypedefInfo_Property(TypedefInfo_t* tinfo) const final;
563 int TypedefInfo_Size(TypedefInfo_t* tinfo) const final;
564 const char* TypedefInfo_TrueName(TypedefInfo_t* tinfo) const final;
565 const char* TypedefInfo_Name(TypedefInfo_t* tinfo) const final;
566 const char* TypedefInfo_Title(TypedefInfo_t* tinfo) const final;
567
568 // QualType Opaque Ptr interface
569 bool IsSameType(const void * QualTypePtr1, const void * QualTypePtr2) const;
570 bool IsIntegerType(const void * QualTypePtr) const;
571 bool IsSignedIntegerType(const void * QualTypePtr) const;
572 bool IsUnsignedIntegerType(const void * QualTypePtr) const;
573 bool IsFloatingType(const void * QualTypePtr) const;
574 bool IsPointerType(const void * QualTypePtr) const;
575 bool IsVoidPointerType(const void * QualTypePtr) const;
576
577 // FunctionDecl interface
578 bool FunctionDeclId_IsMethod(DeclId_t fdeclid) const;
579
580 std::set<TClass*>& GetModTClasses() { return fModTClasses; }
581
582 void HandleNewDecl(const void* DV, bool isDeserialized, std::set<TClass*>& modifiedClasses);
583 void UpdateListsOnCommitted(const cling::Transaction &T);
584 void UpdateListsOnUnloaded(const cling::Transaction &T);
585 void InvalidateGlobal(const clang::Decl *D);
586 void TransactionRollback(const cling::Transaction &T);
587 void LibraryLoaded(const void* dyLibHandle, const char* canonicalName);
588 void LibraryUnloaded(const void* dyLibHandle, const char* canonicalName);
589
590private: // Private Utility Functions and Classes
591 template <typename List, typename Object>
592 static void RemoveAndInvalidateObject(List &L, Object *O) {
593 // Invalidate stored information by setting the `xxxInfo_t' to nullptr.
594 if (O && O->IsValid())
595 L.Unload(O), O->Update(nullptr);
596 }
597
598 void InvalidateCachedDecl(const std::tuple<TListOfDataMembers*,
601 TListOfEnums*> &Lists, const clang::Decl *D);
602
604 TCling *fTCling = nullptr;
606
607 public:
610 };
611
613 public:
614 TUniqueString() = delete;
615 TUniqueString(const TUniqueString &) = delete;
617 const char *Data();
618 bool Append(const std::string &str);
619 private:
620 std::string fContent;
621 std::set<size_t> fLinesHashSet;
622 std::hash<std::string> fHashFunc;
623 };
624
626 TCling(const TCling&) = delete;
627 TCling& operator=(const TCling&) = delete;
628
629 void Execute(TMethod*, TObjArray*, int* /*error*/ = nullptr) final {}
630
632 void RegisterLoadedSharedLibrary(const char* name);
633 void AddFriendToClass(clang::FunctionDecl*, clang::CXXRecordDecl*) const;
634
635 std::map<std::string, llvm::StringRef> fPendingRdicts;
636 void RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent);
637 void LoadPCM(std::string pcmFileNameFullPath);
638 void LoadPCMImpl(TFile &pcmFile);
639
640 void InitRootmapFile(const char *name);
641 int ReadRootmapFile(const char *rootmapfile, TUniqueString* uniqueString = nullptr);
642 Bool_t HandleNewTransaction(const cling::Transaction &T);
643 bool IsClassAutoLoadingEnabled() const;
645 cling::Interpreter *GetInterpreterImpl() const { return fInterpreter.get(); }
646 cling::MetaProcessor *GetMetaProcessorImpl() const { return fMetaProcessor.get(); }
647
648 friend void TCling__RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent);
649 friend cling::Interpreter* TCling__GetInterpreter();
650};
651
652#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
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
long Longptr_t
Definition RtypesCore.h:75
unsigned long ULong_t
Definition RtypesCore.h:55
long Long_t
Definition RtypesCore.h:54
unsigned int UInt_t
Definition RtypesCore.h:46
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
double Double_t
Definition RtypesCore.h:59
long long Long64_t
Definition RtypesCore.h:69
unsigned long long ULong64_t
Definition RtypesCore.h:70
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
TClass *(* DictFuncPtr_t)()
Definition Rtypes.h:85
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:579
void TCling__UpdateListsOnCommitted(const cling::Transaction &, cling::Interpreter *)
Definition TCling.cxx:564
void TCling__RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent)
Definition TCling.cxx:588
const clang::Decl * TCling__GetObjectDecl(TObject *obj)
Definition TCling.cxx:604
void TCling__UpdateListsOnUnloaded(const cling::Transaction &)
Definition TCling.cxx:569
void TCling__InvalidateGlobal(const clang::Decl *)
Definition TCling.cxx:574
TObject * TCling__GetObjectAddress(const char *Name, void *&LookupCtx)
Definition TCling.cxx:600
EDataType
Definition TDataType.h:28
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Option_t Option_t TPoint TPoint const char text
char name[80]
Definition TGX11.cxx:110
const char * proto
Definition civetweb.c:17535
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:81
SuspendAutoLoadingRAII(TCling *tcling)
Definition TCling.h:608
TUniqueString(const TUniqueString &)=delete
const char * Data()
Definition TCling.cxx:1006
bool Append(const std::string &str)
Append string to the storage if not added already.
Definition TCling.cxx:1014
std::hash< std::string > fHashFunc
Definition TCling.h:622
std::set< size_t > fLinesHashSet
Definition TCling.h:621
std::string fContent
Definition TCling.h:620
This class defines an interface to the cling C++ interpreter.
Definition TCling.h:102
static Int_t DeepAutoLoadImpl(const char *cls, std::unordered_set< std::string > &visited, bool nameIsNormalized)
Definition TCling.cxx:6217
const char * MethodArgInfo_DefaultValue(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9309
bool ClassInfo_IsScopedEnum(ClassInfo_t *info) const final
Definition TCling.cxx:8315
const char * TypeInfo_Name(TypeInfo_t *) const final
Definition TCling.cxx:9401
void * MethodInfo_InterfaceMethod(MethodInfo_t *minfo) const final
Definition TCling.cxx:9063
void LoadEnums(TListOfEnums &cl) const final
Create list of pointers to enums for TClass cl.
Definition TCling.cxx:4408
void UpdateListOfGlobals() final
No op: see TClingCallbacks (used to update the list of globals)
Definition TCling.cxx:3898
bool TypedefInfo_IsValid(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9495
Int_t AutoLoad(const char *classname, Bool_t knowDictNotLoaded=kFALSE) final
Load library containing the specified class.
Definition TCling.cxx:6278
void * GetAutoLoadCallBack() const final
Definition TCling.h:198
void CallFunc_Init(CallFunc_t *func) const final
Definition TCling.cxx:7953
void SetGetline(const char *(*getlineFunc)(const char *prompt), void(*histaddFunc)(const char *line)) final
Set a getline function to call when input is needed.
Definition TCling.cxx:3661
bool LibraryLoadingFailed(const std::string &, const std::string &, bool, bool)
Definition TCling.cxx:6581
void GenericError(const char *error) const final
Let the interpreter issue a generic error, and set its error state.
Definition TCling.cxx:7470
std::vector< void * > fRegisterModuleDyLibs
Definition TCling.h:138
void CallFunc_ExecWithReturn(CallFunc_t *func, void *address, void *ret) const final
Definition TCling.cxx:7879
TypeInfo_t * MethodInfo_Type(MethodInfo_t *minfo) const final
Definition TCling.cxx:9122
std::vector< std::string > fAutoLoadLibStorage
Definition TCling.h:118
void CallFunc_Delete(CallFunc_t *func) const final
Definition TCling.cxx:7856
Bool_t fLockProcessLine
Definition TCling.h:127
int LoadFile(const char *path) const final
Load a source file or library called path into the interpreter.
Definition TCling.cxx:7513
void ResetAll() final
Reset the Cling state to its initial state.
Definition TCling.cxx:3737
void SetDeclAttr(DeclId_t, const char *) final
Definition TCling.cxx:8738
void HandleNewDecl(const void *DV, bool isDeserialized, std::set< TClass * > &modifiedClasses)
Definition TCling.cxx:496
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:6904
Long_t MethodInfo_Property(MethodInfo_t *minfo) const final
Definition TCling.cxx:9104
virtual void LoadFunctionTemplates(TClass *cl) const final
Create list of pointers to function templates for TClass cl.
Definition TCling.cxx:4455
bool ClassInfo_IsValidMethod(ClassInfo_t *info, const char *method, const char *proto, Longptr_t *offset, ROOT::EFunctionMatchMode=ROOT::kConversionMatch) const final
Definition TCling.cxx:8349
Long_t DataMemberInfo_Property(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8671
int SetClassAutoparsing(int) final
Enable/Disable the Autoparsing of headers.
Definition TCling.cxx:7598
std::vector< const char * > fCurExecutingMacros
Definition TCling.h:149
void CreateListOfDataMembers(TClass *cl) const final
Create list of pointers to data members for TClass cl.
Definition TCling.cxx:4502
void RewindDictionary() final
Rewind Cling dictionary to the point where it was before executing the current macro.
Definition TCling.cxx:3782
bool ClassInfo_IsValid(ClassInfo_t *info) const final
Definition TCling.cxx:8341
void UpdateListsOnCommitted(const cling::Transaction &T)
Definition TCling.cxx:6778
int TypeInfo_RefType(TypeInfo_t *) const final
Definition TCling.cxx:9417
void CreateListOfBaseClasses(TClass *cl) const final
Create list of pointers to base class(es) for TClass cl.
Definition TCling.cxx:4384
char * GetPrompt() final
Definition TCling.h:217
ClassInfo_t * ClassInfo_Factory(Bool_t all=kTRUE) const final
Definition TCling.cxx:8228
const char * MethodInfo_Name(MethodInfo_t *minfo) const final
Definition TCling.cxx:9151
BaseClassInfo_t * BaseClassInfo_Factory(ClassInfo_t *info) const final
Definition TCling.cxx:8485
Bool_t LoadText(const char *text) const final
Load the declarations from text into the interpreter.
Definition TCling.cxx:7528
const char * GetSharedLibDeps(const char *lib, bool tryDyld=false) final
Get the list a libraries on which the specified lib depends.
Definition TCling.cxx:7302
EReturnType MethodInfo_MethodCallReturnType(MethodInfo_t *minfo) const final
Definition TCling.cxx:9201
TObject * GetObjectAddress(const char *Name, void *&LookupCtx)
If the interpreter encounters Name, check whether that is an object ROOT could retrieve.
Definition TCling.cxx:7727
Longptr_t ProcessLineAsynch(const char *line, EErrorCode *error=nullptr)
Let cling process a command line asynch.
Definition TCling.cxx:3573
bool MethodInfo_IsValid(MethodInfo_t *minfo) const final
Definition TCling.cxx:9072
FuncTempInfo_t * FuncTempInfo_Factory(DeclId_t declid) const final
Construct a FuncTempInfo_t.
Definition TCling.cxx:8828
TypeInfo_t * TypeInfo_Factory() const final
Definition TCling.cxx:9361
bool IsClassAutoLoadingEnabled() const
Returns if class AutoLoading is currently enabled.
Definition TCling.cxx:7567
void InvalidateGlobal(const clang::Decl *D)
Invalidate cached TCling information for the given global declaration.
Definition TCling.cxx:6889
int Evaluate(const char *, TInterpreterValue &) final
Get the interpreter value corresponding to the statement.
Definition TCling.cxx:7691
std::unique_ptr< TInterpreterValue > MakeInterpreterValue() const final
Definition TCling.cxx:7676
void UpdateListOfLoadedSharedLibraries()
Definition TCling.cxx:3361
const char * TypedefInfo_Title(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9543
void CallFunc_SetFuncProto(CallFunc_t *func, ClassInfo_t *info, const char *method, const char *proto, Longptr_t *Offset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) const final
Interface to cling function.
Definition TCling.cxx:8078
void InitRootmapFile(const char *name)
Create a resource table and read the (possibly) three resource files, i.e.
Definition TCling.cxx:5668
Int_t AutoParse(const char *cls) final
Parse the headers relative to the class Returns 1 in case of success, 0 in case of failure.
Definition TCling.cxx:6536
bool FunctionDeclId_IsMethod(DeclId_t fdeclid) const
Definition TCling.cxx:9608
void LoadPCM(std::string pcmFileNameFullPath)
Tries to load a rdict PCM, issues diagnostics if it fails.
Definition TCling.cxx:1816
void UpdateListOfMethods(TClass *cl) const final
Update the list of pointers to method for TClass cl This is now a nop.
Definition TCling.cxx:4520
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:7780
void PrintIntro() final
No-op; see TRint instead.
Definition TCling.cxx:2653
Bool_t fCxxModulesEnabled
Definition TCling.h:128
int BaseClassInfo_Next(BaseClassInfo_t *bcinfo) const final
Definition TCling.cxx:8505
void RefreshClassInfo(TClass *cl, const clang::NamedDecl *def, bool alias)
Internal function. Actually do the update of the ClassInfo when seeing.
Definition TCling.cxx:6648
CallFunc_t * CallFunc_FactoryCopy(CallFunc_t *func) const final
Definition TCling.cxx:7930
Double_t CallFunc_ExecDouble(CallFunc_t *func, void *address) const final
Definition TCling.cxx:7914
void CallFunc_ResetArg(CallFunc_t *func) const final
Definition TCling.cxx:7979
const char * GetCurrentMacroName() const final
Return the file name of the currently interpreted file, included or not.
Definition TCling.cxx:5476
Bool_t IsLoaded(const char *filename) const final
Return true if the file has already been loaded by cint.
Definition TCling.cxx:3185
void SaveGlobalsContext() final
Save the current Cling state of global objects.
Definition TCling.cxx:3885
void CallFunc_IgnoreExtraArgs(CallFunc_t *func, bool ignore) const final
Definition TCling.cxx:7945
Int_t fExitCode
Definition TCling.h:109
void ApplyToInterpreterMutex(void *delta)
Re-apply the lock count delta that TCling__ResetInterpreterMutex() caused.
Definition TCling.cxx:9647
void * LazyFunctionCreatorAutoload(const std::string &mangled_name)
Autoload a library based on a missing symbol.
Definition TCling.cxx:6604
Int_t GenerateDictionary(const char *classes, const char *includes="", const char *options=nullptr) final
Generate the dictionary for the C++ classes listed in the first argument (in a semi-colon separated l...
Definition TCling.cxx:4736
Bool_t ClassInfo_Contains(ClassInfo_t *info, DeclId_t declid) const final
Return true if the entity pointed to by 'declid' is declared in the context described by 'info'.
Definition TCling.cxx:8144
Bool_t IsLibraryLoaded(const char *libname) const final
Definition TCling.cxx:3151
Long_t GetExecByteCode() const final
This routines used to return the address of the internal wrapper function (of the interpreter) that w...
Definition TCling.cxx:7492
int DataMemberInfo_ArrayDim(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8597
TypeInfo_t * MethodArgInfo_TypeInfo(MethodArgInfo_t *marginfo) const
Definition TCling.cxx:9341
DataMemberInfo_t * DataMemberInfo_FactoryCopy(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8631
Bool_t HandleNewTransaction(const cling::Transaction &T)
Helper function to increase the internal Cling count of transactions that change the AST.
Definition TCling.cxx:3678
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:5541
std::map< SpecialObjectLookupCtx_t, SpecialObjectMap_t > fSpecialObjectMaps
Definition TCling.h:153
int ClassInfo_Next(ClassInfo_t *info) const final
Definition TCling.cxx:8365
void SetErrmsgcallback(void *p) const final
Set a callback to receive error messages.
Definition TCling.cxx:7619
bool MethodArgInfo_IsValid(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9285
int TypeInfo_Size(TypeInfo_t *tinfo) const final
Definition TCling.cxx:9425
Int_t DeleteGlobal(void *obj) final
Delete obj from Cling symbol table so it cannot be accessed anymore.
Definition TCling.cxx:3796
int GetSecurityError() const final
Interface to cling function.
Definition TCling.cxx:7500
void SetTempLevel(int val) const final
Create / close a scope for temporaries.
Definition TCling.cxx:7655
std::set< size_t > fPayloads
Definition TCling.h:122
UInt_t FuncTempInfo_TemplateNargs(FuncTempInfo_t *) const final
Return the maximum number of template arguments of the function template described by ft_info.
Definition TCling.cxx:8862
DeclId_t GetFunctionWithPrototype(ClassInfo_t *cl, const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) final
Return pointer to cling interface function for a method of a class with a certain prototype,...
Definition TCling.cxx:5168
TypedefInfo_t * TypedefInfo_Factory() const final
Definition TCling.cxx:9462
TObjArray * fRootmapFiles
Definition TCling.h:126
bool IsVoidPointerType(const void *QualTypePtr) const
Definition TCling.cxx:9600
Longptr_t ProcessLine(const char *line, EErrorCode *error=nullptr) final
Definition TCling.cxx:2458
int ClassInfo_Size(ClassInfo_t *info) const final
Definition TCling.cxx:8413
const char * MethodArgInfo_TypeName(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9325
cling::Interpreter * GetInterpreterImpl() const
Definition TCling.h:645
Longptr_t ExecuteMacro(const char *filename, EErrorCode *error=nullptr) final
Execute a cling macro.
Definition TCling.cxx:5416
std::vector< std::pair< TClass *, DictFuncPtr_t > > fClassesToUpdate
Definition TCling.h:146
int DataMemberInfo_Next(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8655
const char * TypedefInfo_Name(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9535
void BaseClassInfo_Delete(BaseClassInfo_t *bcinfo) const final
Definition TCling.cxx:8478
Long_t MethodInfo_ExtraProperty(MethodInfo_t *minfo) const final
Definition TCling.cxx:9113
void LoadMacro(const char *filename, EErrorCode *error=nullptr) final
Load a macro file in cling's memory.
Definition TCling.cxx:3565
FuncTempInfo_t * FuncTempInfo_FactoryCopy(FuncTempInfo_t *) const final
Construct a FuncTempInfo_t.
Definition TCling.cxx:8839
int DataMemberInfo_MaxIndex(DataMemberInfo_t *dminfo, Int_t dim) const final
Definition TCling.cxx:8647
Bool_t FuncTempInfo_IsValid(FuncTempInfo_t *) const final
Check validity of a FuncTempInfo_t.
Definition TCling.cxx:8850
void AddIncludePath(const char *path) final
Add a directory to the list of directories in which the interpreter looks for include files.
Definition TCling.cxx:2667
bool ClassInfo_IsBase(ClassInfo_t *info, const char *name) const final
Definition TCling.cxx:8300
void RecursiveRemove(TObject *obj) final
Delete object from cling symbol table so it can not be used anymore.
Definition TCling.cxx:3696
const ROOT::TMetaUtils::TNormalizedCtxt & GetNormalizedContext() const
Definition TCling.h:366
const char * DataMemberInfo_TypeName(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8695
DeclId_t GetDataMemberAtAddr(const void *addr) const final
Return pointer to cling DeclId for a data member with a given name.
Definition TCling.cxx:4963
friend cling::Interpreter * TCling__GetInterpreter()
std::set< TClass * > fModTClasses
Definition TCling.h:145
void CallFunc_SetArgArray(CallFunc_t *func, Longptr_t *paramArr, Int_t nparam) const final
Definition TCling.cxx:8035
TEnv * GetMapfile() const final
Definition TCling.h:212
std::string CallFunc_GetWrapperCode(CallFunc_t *func) const final
Definition TCling.cxx:8125
void * RewindInterpreterMutex()
Reset the interpreter lock to the state it had before interpreter-related calls happened.
Definition TCling.cxx:9677
const char * MethodArgInfo_Name(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9317
Bool_t HasPCMForLibrary(const char *libname) const final
Return true if ROOT has cxxmodules pcm for a given library name.
Definition TCling.cxx:3160
void TypedefInfo_Init(TypedefInfo_t *tinfo, const char *name) const final
Definition TCling.cxx:9485
const char * DataMemberInfo_Title(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8719
Longptr_t CallFunc_ExecInt(CallFunc_t *func, void *address) const final
Definition TCling.cxx:7898
void ClearStack() final
Delete existing temporary values.
Definition TCling.cxx:3098
void SetAlloclockfunc(void(*)()) const final
[Place holder for Mutex Lock] Provide the interpreter with a way to acquire a lock used to protect cr...
Definition TCling.cxx:7549
Bool_t SetErrorMessages(Bool_t enable=kTRUE) final
If error messages are disabled, the interpreter should suppress its failures and warning messages fro...
Definition TCling.cxx:7369
MethodInfo_t * CallFunc_FactoryMethod(CallFunc_t *func) const final
Definition TCling.cxx:7937
bool IsUnsignedIntegerType(const void *QualTypePtr) const
Definition TCling.cxx:9576
TypedefInfo_t * TypedefInfo_FactoryCopy(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9478
void GetFunctionOverloads(ClassInfo_t *cl, const char *funcname, std::vector< DeclId_t > &res) const final
Insert overloads of name in cl to res.
Definition TCling.cxx:5061
void UnRegisterTClassUpdate(const TClass *oldcl) final
If the dictionary is loaded, we can remove the class from the list (otherwise the class might be load...
Definition TCling.cxx:2398
std::string MethodArgInfo_TypeNormalizedName(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9333
DeclId_t GetEnum(TClass *cl, const char *name) const final
Return pointer to cling Decl of global/static variable that is located at the address given by addr.
Definition TCling.cxx:4845
Long_t MethodArgInfo_Property(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9301
int TypedefInfo_Size(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9519
void CallFunc_ExecWithArgsAndReturn(CallFunc_t *func, void *address, const void *args[]=nullptr, int nargs=0, void *ret=nullptr) const final
Definition TCling.cxx:7887
void GetInterpreterTypeName(const char *name, std::string &output, Bool_t full=kFALSE) final
The 'name' is known to the interpreter, this function returns the internal version of this name (usua...
Definition TCling.cxx:5213
Int_t fGlobalsListSerial
Definition TCling.h:114
Bool_t IsAutoParsingSuspended() const final
Definition TCling.h:354
TString fSharedLibs
Definition TCling.h:113
std::map< std::string, llvm::StringRef > fPendingRdicts
Definition TCling.h:635
static void UpdateClassInfoWork(const char *name)
Definition TCling.cxx:6758
Int_t Load(const char *filenam, Bool_t system=kFALSE) final
Load a library file in cling's memory.
Definition TCling.cxx:3528
int TypedefInfo_Next(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9503
void * GetInterfaceMethod(TClass *cl, const char *method, const char *params, Bool_t objectIsConst=kFALSE) final
Return pointer to cling interface function for a method of a class with parameters params (params is ...
Definition TCling.cxx:5020
void TypeInfo_Init(TypeInfo_t *tinfo, const char *funcname) const final
Definition TCling.cxx:9384
Bool_t SetSuspendAutoParsing(Bool_t value) final
Suspend the Autoparsing of headers.
Definition TCling.cxx:7609
int DataMemberInfo_TypeSize(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8687
static void * fgSetOfSpecials
Definition TCling.h:105
const char * ClassInfo_Title(ClassInfo_t *info) const final
Definition TCling.cxx:8455
const char * DataMemberInfo_Name(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8711
const char * TypeName(const char *typeDesc) final
Return the absolute type of typeDesc.
Definition TCling.cxx:5491
ROOT::TMetaUtils::TNormalizedCtxt * fNormalizedCtxt
Definition TCling.h:134
bool IsSignedIntegerType(const void *QualTypePtr) const
Definition TCling.cxx:9568
void ForgetMutexState() final
Definition TCling.cxx:9631
int MethodInfo_Next(MethodInfo_t *minfo) const final
Definition TCling.cxx:9096
void * SetAutoLoadCallBack(void *cb) final
Definition TCling.h:199
Long_t ClassInfo_ClassProperty(ClassInfo_t *info) const final
Definition TCling.cxx:8189
void MethodInfo_Delete(MethodInfo_t *minfo) const final
Interface to cling function.
Definition TCling.cxx:9015
bool fIsShuttingDown
Definition TCling.h:187
void MethodArgInfo_Delete(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9254
DataMemberInfo_t * DataMemberInfo_Factory(ClassInfo_t *clinfo, TDictionary::EMemberSelection selection) const final
Definition TCling.cxx:8612
void ClassInfo_Destruct(ClassInfo_t *info, void *arena) const final
Definition TCling.cxx:8220
TClass * GetClass(const std::type_info &typeinfo, Bool_t load) const final
Demangle the name (from the typeinfo) and then request the class via the usual name based interface (...
Definition TCling.cxx:6123
Int_t UnloadAllSharedLibraryMaps() final
Unload the library map entries coming from all the loaded shared libraries.
Definition TCling.cxx:6011
void ClassInfo_Init(ClassInfo_t *info, const char *funcname) const final
Definition TCling.cxx:8282
std::set< TClass * > & GetModTClasses()
Definition TCling.h:580
ClassInfo_t * BaseClassInfo_ClassInfo(BaseClassInfo_t *) const final
Definition TCling.cxx:8550
TClingCallbacks * fClingCallbacks
Definition TCling.h:139
Long64_t CallFunc_ExecInt64(CallFunc_t *func, void *address) const final
Definition TCling.cxx:7906
Long_t ClassInfo_Property(ClassInfo_t *info) const final
Definition TCling.cxx:8405
Longptr_t ClassInfo_GetBaseOffset(ClassInfo_t *fromDerived, ClassInfo_t *toBase, void *address, bool isDerivedObject) const final
Definition TCling.cxx:8529
void UpdateEnumConstants(TEnum *enumObj, TClass *cl) const final
Definition TCling.cxx:421
void ExecuteWithArgsAndReturn(TMethod *method, void *address, const void *args[]=nullptr, int nargs=0, void *ret=nullptr) const final
Definition TCling.cxx:5398
Bool_t IsErrorMessagesEnabled() const final
If error messages are disabled, the interpreter should suppress its failures and warning messages fro...
Definition TCling.cxx:7355
TString fIncludePath
Definition TCling.h:115
int DisplayIncludePath(FILE *fout) const final
Interface to cling function.
Definition TCling.cxx:7432
void TransactionRollback(const cling::Transaction &T)
Definition TCling.cxx:6964
Long_t FuncTempInfo_Property(FuncTempInfo_t *) const final
Return the property of the function template.
Definition TCling.cxx:8883
TEnum * CreateEnum(void *VD, TClass *cl) const final
Definition TCling.cxx:469
const char * TypeInfo_TrueName(TypeInfo_t *tinfo) const final
Definition TCling.cxx:9433
Int_t UnloadLibraryMap(const char *library) final
Unload library map entries coming from the specified library.
Definition TCling.cxx:6029
void RegisterTemporary(const TInterpreterValue &value)
Definition TCling.cxx:7700
MutexStateAndRecurseCount fInitialMutex
Definition TCling.h:174
const char * GetSharedLibs() final
Return the list of shared libraries loaded into the process.
Definition TCling.cxx:7002
int MethodArgInfo_Next(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9293
void SnapshotMutexState(ROOT::TVirtualRWMutex *mtx) final
Definition TCling.cxx:9616
Long_t TypeInfo_Property(TypeInfo_t *tinfo) const final
Definition TCling.cxx:9409
static constexpr const char * kNullArgv[]
Definition TCling.h:185
friend void TCling__RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent)
Definition TCling.cxx:588
const char * MethodInfo_GetPrototype(MethodInfo_t *minfo) const final
Definition TCling.cxx:9142
UInt_t FuncTempInfo_TemplateMinReqArgs(FuncTempInfo_t *) const final
Return the number of required template arguments of the function template described by ft_info.
Definition TCling.cxx:8873
std::vector< cling::Value > * fTemporaries
Definition TCling.h:133
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) final
Inject the module named "modulename" into cling; load all headers.
Definition TCling.cxx:2015
static Int_t ShallowAutoLoadImpl(const char *cls)
Definition TCling.cxx:6169
void MethodInfo_CreateSignature(MethodInfo_t *minfo, TString &signature) const final
Definition TCling.cxx:9022
Bool_t CheckClassTemplate(const char *name) final
Return true if there is a class template by the given name ...
Definition TCling.cxx:4362
void LibraryLoaded(const void *dyLibHandle, const char *canonicalName)
Definition TCling.cxx:6987
void RegisterTClassUpdate(TClass *oldcl, DictFuncPtr_t dict) final
Register classes that already existed prior to their dictionary loading and that already had a ClassI...
Definition TCling.cxx:2389
TObjArray * GetRootMapFiles() const final
Definition TCling.h:223
bool DataMemberInfo_IsValid(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8639
bool ClassInfo_IsEnum(const char *name) const final
Definition TCling.cxx:8308
int MethodInfo_NDefaultArg(MethodInfo_t *minfo) const final
Definition TCling.cxx:9088
void CreateListOfMethods(TClass *cl) const final
Create list of pointers to methods for TClass cl.
Definition TCling.cxx:4511
Int_t RescanLibraryMap() final
Scan again along the dynamic path for library maps.
Definition TCling.cxx:5938
void * SpecialObjectLookupCtx_t
Definition TCling.h:151
std::map< const cling::Transaction *, size_t > fTransactionHeadersMap
Definition TCling.h:120
void ReportDiagnosticsToErrorHandler(bool enable=true) final
Report diagnostics to the ROOT error handler (see TError.h).
Definition TCling.cxx:7628
const char * MethodInfo_GetMangledName(MethodInfo_t *minfo) const final
Definition TCling.cxx:9131
Bool_t fHeaderParsingOnDemand
Definition TCling.h:181
bool IsIntegerType(const void *QualTypePtr) const
Definition TCling.cxx:9560
std::hash< std::string > fStringHashFunction
Definition TCling.h:124
TEnv * fMapfile
Definition TCling.h:117
static void RemoveAndInvalidateObject(List &L, Object *O)
Definition TCling.h:592
void * GetInterfaceMethodWithPrototype(TClass *cl, const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) final
Return pointer to cling interface function for a method of a class with a certain prototype,...
Definition TCling.cxx:5123
void * ClassInfo_New(ClassInfo_t *info) const final
Definition TCling.cxx:8373
int DisplayClass(FILE *fout, const char *name, int base, int start) const final
Definition TCling.cxx:7423
virtual void GetFunctionName(const clang::Decl *decl, std::string &name) const
Definition TCling.cxx:8774
void CreateListOfMethodArgs(TFunction *m) const final
Create list of pointers to method arguments for TMethod m.
Definition TCling.cxx:4536
void Execute(TMethod *, TObjArray *, int *=nullptr) final
Execute method on this object with parameters stored in the TObjArray.
Definition TCling.h:629
virtual const char * GetSTLIncludePath() const final
Return the directory containing CINT's stl cintdlls.
Definition TCling.cxx:7414
MethodArgInfo_t * MethodArgInfo_FactoryCopy(MethodArgInfo_t *marginfo) const final
Definition TCling.cxx:9277
Longptr_t BaseClassInfo_Offset(BaseClassInfo_t *toBaseClassInfo, void *address, bool isDerivedObject) const final
Definition TCling.cxx:8521
std::unordered_map< std::string, TObject * > SpecialObjectMap_t
Definition TCling.h:152
ECheckClassInfo CheckClassInfo(const char *name, Bool_t autoload, Bool_t isClassOrNamespaceOnly=kFALSE) final
Checks if an entity with the specified name is defined in Cling.
Definition TCling.cxx:4190
void * FindSym(const char *entry) const final
Interface to cling function.
Definition TCling.cxx:7461
void RegisterLoadedSharedLibrary(const char *name)
Register a new shared library name with the interpreter; add it to fSharedLibs.
Definition TCling.cxx:3428
void TypeInfo_Delete(TypeInfo_t *tinfo) const final
Definition TCling.cxx:9354
int MethodInfo_NArg(MethodInfo_t *minfo) const final
Definition TCling.cxx:9080
DeclId_t GetDataMemberWithValue(const void *ptrvalue) const final
NOT IMPLEMENTED.
Definition TCling.cxx:4954
std::unordered_set< const clang::NamespaceDecl * > fNSFromRootmaps
Definition TCling.h:125
EReturnType MethodCallReturnType(TFunction *func) const final
Definition TCling.cxx:9190
void ProcessClassesToUpdate()
Definition TCling.cxx:1985
DeclId_t GetFunctionWithValues(ClassInfo_t *cl, const char *method, const char *params, Bool_t objectIsConst=kFALSE) final
Return pointer to cling DeclId for a method of a class with a certain prototype, i....
Definition TCling.cxx:5146
TString GetMangledName(TClass *cl, const char *method, const char *params, Bool_t objectIsConst=kFALSE) final
Return the cling mangled name for a method of a class with parameters params (params is a string of a...
Definition TCling.cxx:4975
const char * MethodInfo_Title(MethodInfo_t *minfo) const final
Definition TCling.cxx:9181
TString fRootmapLoadPath
Definition TCling.h:116
const char * BaseClassInfo_TmpltName(BaseClassInfo_t *bcinfo) const final
Definition TCling.cxx:8584
Bool_t Declare(const char *code) final
Declare code to the interpreter, without any of the interpreter actions that could trigger a re-inter...
Definition TCling.cxx:3111
const char * BaseClassInfo_FullName(BaseClassInfo_t *bcinfo) const final
Definition TCling.cxx:8566
void CallFunc_SetArgs(CallFunc_t *func, const char *param) const final
Definition TCling.cxx:8043
int UnloadFile(const char *path) const final
Definition TCling.cxx:7661
void SetClassInfo(TClass *cl, Bool_t reload=kFALSE, Bool_t silent=kFALSE) final
Set pointer to the TClingClassInfo in TClass.
Definition TCling.cxx:4054
void CallFunc_Exec(CallFunc_t *func, void *address) const final
Definition TCling.cxx:7863
bool IsPointerType(const void *QualTypePtr) const
Definition TCling.cxx:9592
bool IsFloatingType(const void *QualTypePtr) const
Definition TCling.cxx:9584
Long_t FuncTempInfo_ExtraProperty(FuncTempInfo_t *) const final
Return the property not already defined in Property See TDictionary's EFunctionProperty.
Definition TCling.cxx:8944
bool CallFunc_IsValid(CallFunc_t *func) const final
Definition TCling.cxx:7962
const char * BaseClassInfo_Name(BaseClassInfo_t *bcinfo) const final
Definition TCling.cxx:8576
ROOT::TMetaUtils::TClingLookupHelper * fLookupHelper
Definition TCling.h:135
const char * DataMemberInfo_ValidArrayIndex(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8727
Int_t GetMore() const final
Return whether we are waiting for more input either because the collected input contains unbalanced b...
Definition TCling.cxx:4557
Bool_t fIsAutoParsingSuspended
Definition TCling.h:182
std::string ToString(const char *type, void *obj) final
Definition TCling.cxx:1023
DeclId_t GetDeclId(const llvm::GlobalValue *gv) const
Return pointer to cling DeclId for a global value.
Definition TCling.cxx:4885
void Execute(const char *function, const char *params, int *error=nullptr) final
Execute a global function with arguments params.
Definition TCling.cxx:5246
bool ClassInfo_IsLoaded(ClassInfo_t *info) const final
Definition TCling.cxx:8333
Longptr_t ClassInfo_Tagnum(ClassInfo_t *info) const final
Definition TCling.cxx:8421
Long_t BaseClassInfo_Property(BaseClassInfo_t *bcinfo) const final
Definition TCling.cxx:8542
void CallFunc_SetFunc(CallFunc_t *func, ClassInfo_t *info, const char *method, const char *params, Longptr_t *Offset) const final
Definition TCling.cxx:8051
std::vector< std::string > GetUsingNamespaces(ClassInfo_t *cl) const final
Get the scopes representing using declarations of namespace.
Definition TCling.cxx:4491
const char * ClassInfo_FileName(ClassInfo_t *info) const final
Definition TCling.cxx:8429
void FuncTempInfo_Title(FuncTempInfo_t *, TString &name) const final
Return the comments associates with this function template.
Definition TCling.cxx:8983
const char * ClassInfo_TmpltName(ClassInfo_t *info) const final
Definition TCling.cxx:8463
void SaveContext() final
Save the current Cling state.
Definition TCling.cxx:3872
void LoadPCMImpl(TFile &pcmFile)
Tries to load a PCM from TFile; returns true on success.
Definition TCling.cxx:1701
Bool_t IsAutoLoadNamespaceCandidate(const clang::NamespaceDecl *nsDecl)
Definition TCling.cxx:6640
void ResetGlobals() final
Reset in Cling the list of global variables to the state saved by the last call to TCling::SaveGlobal...
Definition TCling.cxx:3753
void CodeComplete(const std::string &, size_t &, std::vector< std::string > &) final
The call to Cling's tab complition.
Definition TCling.cxx:7683
void ResetGlobalVar(void *obj) final
Reset the Cling 'user' global objects/variables state to the state saved by the last call to TCling::...
Definition TCling.cxx:3767
const char * MapCppName(const char *) const final
Interface to cling function.
Definition TCling.cxx:7536
Longptr_t Calc(const char *line, EErrorCode *error=nullptr) final
Directly execute an executable statement (e.g.
Definition TCling.cxx:3598
Int_t ReloadAllSharedLibraryMaps() final
Reload the library map entries coming from all the loaded shared libraries, after first unloading the...
Definition TCling.cxx:5950
void UpdateListOfGlobalFunctions() final
No op: see TClingCallbacks (used to update the list of global functions)
Definition TCling.cxx:3905
void DataMemberInfo_Delete(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8605
char fPrompt[64]
Definition TCling.h:110
const char * GetTopLevelMacroName() const final
Return the file name of the current un-included interpreted file.
Definition TCling.cxx:5429
void * fPrevLoadedDynLibInfo
Definition TCling.h:137
void UpdateListOfDataMembers(TClass *cl) const
Update the list of pointers to data members for TClass cl This is now a nop.
Definition TCling.cxx:4529
void InspectMembers(TMemberInspector &, const void *obj, const TClass *cl, Bool_t isTransient) final
Visit all members over members, recursing over base classes.
Definition TCling.cxx:2689
Int_t SetClassSharedLibs(const char *cls, const char *libs) final
Register the AutoLoading information for a class.
Definition TCling.cxx:6091
MethodInfo_t * MethodInfo_FactoryCopy(MethodInfo_t *minfo) const final
Definition TCling.cxx:9056
std::set< const char * > fParsedPayloadsAddresses
Definition TCling.h:123
CallFuncIFacePtr_t CallFunc_IFacePtr(CallFunc_t *func) const final
Definition TCling.cxx:7971
Int_t GetExitCode() const final
Definition TCling.h:211
MethodArgInfo_t * MethodArgInfo_Factory() const final
Definition TCling.cxx:9261
void SetProcessLineLock(Bool_t lock=kTRUE) final
Definition TCling.h:321
static void UpdateClassInfo(char *name, Long_t tagnum)
No op: see TClingCallbacks.
Definition TCling.cxx:6752
DeclId_t GetFunction(ClassInfo_t *cl, const char *funcname) final
Return pointer to cling interface function for a method of a class with a certain name.
Definition TCling.cxx:5042
void ClassInfo_Delete(ClassInfo_t *info) const final
Definition TCling.cxx:8197
std::unique_ptr< cling::Interpreter > fInterpreter
Definition TCling.h:130
EDataType ClassInfo_GetUnderlyingType(ClassInfo_t *info) const final
Definition TCling.cxx:8324
void FuncTempInfo_Delete(FuncTempInfo_t *) const final
Delete the FuncTempInfo_t.
Definition TCling.cxx:8819
DeclId_t GetFunctionTemplate(ClassInfo_t *cl, const char *funcname) final
Return pointer to cling interface function for a method of a class with a certain name.
Definition TCling.cxx:5190
TCling & operator=(const TCling &)=delete
Int_t DeleteVariable(const char *name) final
Undeclare obj called name.
Definition TCling.cxx:3811
const char * GetClassSharedLibs(const char *cls, bool skipCore=true) final
Get the list of shared libraries containing the code for class cls.
Definition TCling.cxx:7108
Longptr_t DataMemberInfo_Offset(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8663
CallFunc_t * CallFunc_Factory() const final
Definition TCling.cxx:7922
MethodInfo_t * MethodInfo_Factory() const final
Definition TCling.cxx:9031
Long_t DataMemberInfo_TypeProperty(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8679
void ClearFileBusy() final
Reset the interpreter internal state in case a previous action was not correctly terminated.
Definition TCling.cxx:3090
cling::MetaProcessor * GetMetaProcessorImpl() const
Definition TCling.h:646
bool DiagnoseIfInterpreterException(const std::exception &e) const final
Definition TCling.cxx:2447
void SetAllocunlockfunc(void(*)()) const final
[Place holder for Mutex Unlock] Provide the interpreter with a way to release a lock used to protect ...
Definition TCling.cxx:7559
std::set< size_t > fLookedUpClasses
Definition TCling.h:121
TCling(const TCling &)=delete
bool IsValid() const final
Check if constructor exited correctly, ie the instance is in a valid state.
Definition TCling.cxx:3081
virtual void AddAvailableIndentifiers(TSeqCollection &Idents) final
Definition TCling.cxx:2363
void TypedefInfo_Delete(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9455
void Reset() final
Pressing Ctrl+C should forward here.
Definition TCling.cxx:3721
const char * TypedefInfo_TrueName(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9527
int SetClassAutoLoading(int) const final
Enable/Disable the AutoLoading of libraries.
Definition TCling.cxx:7580
const char * ClassInfo_FullName(ClassInfo_t *info) const final
Definition TCling.cxx:8437
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:6394
const char * MethodInfo_TypeName(MethodInfo_t *minfo) const final
Definition TCling.cxx:9160
void CallFunc_SetArg(CallFunc_t *func, Long_t param) const final
Definition TCling.cxx:7987
const char * GetIncludePath() final
Refresh the list of include paths known to the interpreter and return it with -I prepended.
Definition TCling.cxx:7383
void UpdateListsOnUnloaded(const cling::Transaction &T)
Invalidate stored TCling state for declarations included in transaction ‘T’.
Definition TCling.cxx:6862
void UpdateClassInfoWithDecl(const clang::NamedDecl *ND)
Internal function. Inform a TClass about its new TagDecl or NamespaceDecl.
Definition TCling.cxx:6694
bool IsSameType(const void *QualTypePtr1, const void *QualTypePtr2) const
Definition TCling.cxx:9551
Bool_t IsProcessLineLocked() const final
Definition TCling.h:318
virtual void Initialize() final
Initialize the interpreter, once TROOT::fInterpreter is set.
Definition TCling.cxx:1639
int ClassInfo_GetMethodNArg(ClassInfo_t *info, const char *method, const char *proto, Bool_t objectIsConst=false, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) const final
Definition TCling.cxx:8258
DeclId_t GetDataMember(ClassInfo_t *cl, const char *name) const final
Return pointer to cling Decl of global/static variable that is located at the address given by addr.
Definition TCling.cxx:4784
void * fAutoLoadCallBack
Definition TCling.h:147
void FuncTempInfo_Name(FuncTempInfo_t *, TString &name) const final
Return the name of this function template.
Definition TCling.cxx:8970
std::unique_ptr< cling::MetaProcessor > fMetaProcessor
Definition TCling.h:131
bool TypeInfo_IsValid(TypeInfo_t *tinfo) const final
Definition TCling.cxx:9393
bool RegisterPrebuiltModulePath(const std::string &FullPath, const std::string &ModuleMapName="module.modulemap") const final
Definition TCling.cxx:1911
std::string MethodInfo_TypeNormalizedName(MethodInfo_t *minfo) const final
Definition TCling.cxx:9169
const char * ClassInfo_Name(ClassInfo_t *info) const final
Definition TCling.cxx:8447
TClass * GenerateTClass(const char *classname, Bool_t emulation, Bool_t silent=kFALSE) final
Generate a TClass for the given class.
Definition TCling.cxx:4567
ULong64_t fTransactionCount
Definition TCling.h:148
bool ClassInfo_HasDefaultConstructor(ClassInfo_t *info, Bool_t testio=kFALSE) const final
Definition TCling.cxx:8266
void EndOfLineAction() final
It calls a "fantom" method to synchronize user keyboard input and ROOT prompt line.
Definition TCling.cxx:3134
TypeInfo_t * TypeInfo_FactoryCopy(TypeInfo_t *) const final
Definition TCling.cxx:9377
void * TypeInfo_QualTypePtr(TypeInfo_t *tinfo) const
Definition TCling.cxx:9441
bool ClassInfo_HasMethod(ClassInfo_t *info, const char *name) const final
Definition TCling.cxx:8274
void ClassInfo_DeleteArray(ClassInfo_t *info, void *arena, bool dtorOnly) const final
Definition TCling.cxx:8212
std::map< size_t, std::vector< const char * > > fClassesHeadersMap
Definition TCling.h:119
const char * DataMemberInfo_TypeTrueName(DataMemberInfo_t *dminfo) const final
Definition TCling.cxx:8703
virtual void ShutDown() final
Definition TCling.cxx:1660
unsigned long long GetInterpreterStateMarker() const final
Definition TCling.h:224
void UpdateListOfTypes() final
No op: see TClingCallbacks (used to update the list of types)
Definition TCling.cxx:3912
Long_t TypedefInfo_Property(TypedefInfo_t *tinfo) const final
Definition TCling.cxx:9511
void RegisterRdictForLoadPCM(const std::string &pcmFileNameFullPath, llvm::StringRef *pcmContent)
Register Rdict data for future loading by LoadPCM;.
Definition TCling.cxx:1683
Longptr_t ProcessLineSynch(const char *line, EErrorCode *error=nullptr) final
Let cling process a command line synchronously, i.e we are waiting it will be finished.
Definition TCling.cxx:3582
TString GetMangledNameWithPrototype(TClass *cl, const char *method, const char *proto, Bool_t objectIsConst=kFALSE, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) final
Return the cling mangled name for a method of a class with a certain prototype, i....
Definition TCling.cxx:5002
static void UpdateAllCanvases()
Update all canvases at end the terminal input command.
Definition TCling.cxx:6767
Int_t LoadLibraryMap(const char *rootmapfile=nullptr) final
Load map between class and library.
Definition TCling.cxx:5754
Longptr_t BaseClassInfo_Tagnum(BaseClassInfo_t *bcinfo) const final
Definition TCling.cxx:8558
void LibraryUnloaded(const void *dyLibHandle, const char *canonicalName)
Definition TCling.cxx:6994
This class defines an abstract interface that must be implemented by all classes that contain diction...
The TEnum class implements the enum type.
Definition TEnum.h:33
The TEnv class reads config files, by default named .rootrc.
Definition TEnv.h:124
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Definition TFile.h:53
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:31
Mother of all ROOT objects.
Definition TObject.h:41
Sequenceable collection abstract base class.
Basic string class.
Definition TString.h:139
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...
State as returned by GetStateDelta() that can be passed to Restore()
bool operator()(const char *a, const char *b) const
Definition TCling.h:141
std::unique_ptr< StateDelta > fDelta
Definition TCling.h:171
MutexStateAndRecurseCount fInitialState
Definition TCling.h:170
std::unique_ptr< ROOT::TVirtualRWMutex::State > fState
State of gCoreMutex when the first interpreter-related function was invoked.
Definition TCling.h:157
Int_t fRecurseCount
Interpreter-related functions will push the "entry" lock state to *this.
Definition TCling.h:162
TMarker m
Definition textangle.C:8
static void output()