16#include "cling/Interpreter/DynamicLibraryManager.h" 
   17#include "cling/Interpreter/Interpreter.h" 
   18#include "cling/Interpreter/InterpreterCallbacks.h" 
   19#include "cling/Interpreter/Transaction.h" 
   20#include "cling/Utils/AST.h" 
   22#include "clang/AST/ASTConsumer.h" 
   23#include "clang/AST/ASTContext.h" 
   24#include "clang/AST/DeclBase.h" 
   25#include "clang/AST/DeclTemplate.h" 
   26#include "clang/AST/GlobalDecl.h" 
   27#include "clang/Frontend/CompilerInstance.h" 
   28#include "clang/Lex/HeaderSearch.h" 
   29#include "clang/Lex/PPCallbacks.h" 
   30#include "clang/Lex/Preprocessor.h" 
   31#include "clang/Parse/Parser.h" 
   32#include "clang/Sema/Lookup.h" 
   33#include "clang/Sema/Scope.h" 
   34#include "clang/Serialization/ASTReader.h" 
   35#include "clang/Serialization/GlobalModuleIndex.h" 
   37#include "llvm/ExecutionEngine/Orc/Core.h" 
   39#include "llvm/Support/Error.h" 
   40#include "llvm/Support/FileSystem.h" 
   41#include "llvm/Support/Path.h" 
   42#include "llvm/Support/Process.h" 
   70                  std::string &args, std::string &io, std::string &fname);
 
   74                                  llvm::StringRef canonicalName);
 
   76                                    llvm::StringRef canonicalName);
 
   94   StringRef 
getName()
 const override { 
return "<Symbols from Autoloaded Library>"; }
 
   96   void materialize(std::unique_ptr<llvm::orc::MaterializationResponsibility> 
R)
 override 
   99         R->failMaterialization();
 
  103      llvm::orc::SymbolMap loadedSymbols;
 
  104      llvm::orc::SymbolNameSet failedSymbols;
 
  105      bool loadedLibrary = 
false;
 
  108         std::string symbolStr = (*symbol).str();
 
  112         void *addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(nameForDlsym);
 
  114         if (!addr && !loadedLibrary) {
 
  122            loadedLibrary = 
true;
 
  124            addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(nameForDlsym);
 
  128            loadedSymbols[symbol] =
 
  129               llvm::JITEvaluatedSymbol(llvm::pointerToJITTargetAddress(addr), llvm::JITSymbolFlags::Exported);
 
  134            failedSymbols.insert(symbol);
 
  138      if (!failedSymbols.empty()) {
 
  139         auto failingMR = 
R->delegate(failedSymbols);
 
  141            (*failingMR)->failMaterialization();
 
  145      if (!loadedSymbols.empty()) {
 
  146         llvm::cantFail(
R->notifyResolved(loadedSymbols));
 
  147         llvm::cantFail(
R->notifyEmitted());
 
  151   void discard(
const llvm::orc::JITDylib &JD, 
const llvm::orc::SymbolStringPtr &Name)
 override {}
 
  156      llvm::orc::SymbolFlagsMap map;
 
  157      for (
auto symbolName : Symbols)
 
  158         map[symbolName] = llvm::JITSymbolFlags::Exported;
 
  170   llvm::Error 
tryToGenerate(llvm::orc::LookupState &LS, llvm::orc::LookupKind K, llvm::orc::JITDylib &JD,
 
  171                             llvm::orc::JITDylibLookupFlags JDLookupFlags,
 
  172                             const llvm::orc::SymbolLookupSet &Symbols)
 override 
  175         llvm::Error::success();
 
  181      std::unordered_map<std::string, llvm::orc::SymbolNameVector> found;
 
  182      llvm::orc::SymbolNameSet missing;
 
  187      for (
auto &&KV : Symbols) {
 
  188         llvm::orc::SymbolStringPtr 
name = KV.first;
 
  190         const cling::DynamicLibraryManager &DLM = *
fInterpreter->getDynamicLibraryManager();
 
  192         std::string libName = DLM.searchLibrariesForSymbol((*name).str(),
 
  196         assert(libName.find(
"/libNew.") == std::string::npos && 
"We must not autoload libNew!");
 
  202         assert(libName.find(
"/libCling.") == std::string::npos && 
"Must not autoload libCling!");
 
  205            missing.insert(
name);
 
  207            found[libName].push_back(
name);
 
  210      for (
auto &&KV : found) {
 
  211         auto MU = std::make_unique<AutoloadLibraryMU>(
fCallbacks, KV.first, std::move(KV.second));
 
  212         if (
auto Err = JD.define(MU))
 
  216      if (!missing.empty())
 
  217         return llvm::make_error<llvm::orc::SymbolsNotFound>(std::move(missing));
 
  219      return llvm::Error::success();
 
  227      m_Interpreter->declare(
"namespace __ROOT_SpecialObjects{}", &T);
 
  230      interp->addGenerator(std::make_unique<AutoloadLibraryGenerator>(interp, *
this));
 
  238                                         const clang::Token &,
 
  239                                         llvm::StringRef FileName,
 
  241                                         clang::CharSourceRange ,
 
  242                                         const clang::FileEntry *FE,
 
  245                                         const clang::Module * Imported,
 
  246                                         clang::SrcMgr::CharacteristicKind FileType) {
 
  248   Sema &SemaR = m_Interpreter->getSema();
 
  251      if (!SemaR.isModuleVisible(Imported))
 
  253                                "Module %s resolved but not visible!", Imported->Name.c_str());
 
  269   bool isHeaderFile = FileName.endswith(
".h") || FileName.endswith(
".hxx") || FileName.endswith(
".hpp");
 
  273   std::string localString(FileName.str());
 
  275   DeclarationName Name = &SemaR.getASTContext().Idents.get(localString.c_str());
 
  276   LookupResult RHeader(SemaR, Name, sLoc, Sema::LookupOrdinaryName);
 
  283    bool permanent, 
bool resolved) {
 
  291                                   llvm::SmallVectorImpl<char> &RecoveryPath) {
 
  299   Preprocessor& PP = m_Interpreter->getCI()->getPreprocessor();
 
  302   std::string 
filename(FileName.str().substr(0,FileName.str().find_last_of(
'"')));
 
  303   std::string fname, 
mode, arguments, io;
 
  306   if (
mode.length() > 0) {
 
  307      if (llvm::sys::fs::exists(fname)) {
 
  309         std::string options = 
"k";
 
  310         if (
mode.find(
"++") != std::string::npos) options += 
"f";
 
  311         if (
mode.find(
"g")  != std::string::npos) options += 
"g";
 
  312         if (
mode.find(
"O")  != std::string::npos) options += 
"O";
 
  315         Preprocessor::CleanupAndRestoreCacheRAII cleanupRAII(PP);
 
  316         Parser& P = 
const_cast<Parser&
>(m_Interpreter->getParser());
 
  318         clang::Parser::ParserCurTokRestoreRAII fSavedCurToken(P);
 
  322         Token& Tok = 
const_cast<Token&
>(P.getCurToken());
 
  323         Tok.setKind(tok::semi);
 
  335         Sema& SemaR = m_Interpreter->getSema();
 
  336         ASTContext& C = SemaR.getASTContext();
 
  337         Sema::ContextAndScopeRAII pushedDCAndS(SemaR, C.getTranslationUnitDecl(),
 
  344               fPPOldFlag = PP.GetSuppressIncludeNotFoundError();
 
  345            PP.SetSuppressIncludeNotFoundError(
true);
 
  354      PP.SetSuppressIncludeNotFoundError(
fPPOldFlag);
 
  365   DeclContext* DC = S->getEntity();
 
  374   clang::DeclContext* MaybeTU = DC;
 
  375   while (MaybeTU && !isa<TranslationUnitDecl>(MaybeTU)) {
 
  377      MaybeTU = MaybeTU->getParent();
 
  379   return isa<FunctionDecl>(DC);
 
  397   if (m_Interpreter->getSema().getDiagnostics().hasErrorOccurred())
 
  435   llvm::Optional<std::string> envUseGMI = llvm::sys::Process::GetEnv(
"ROOT_USE_GMI");
 
  436   if (envUseGMI.hasValue())
 
  440   const CompilerInstance *CI = m_Interpreter->getCI();
 
  441   const LangOptions &LangOpts = CI->getPreprocessor().getLangOpts();
 
  443   if (!LangOpts.Modules)
 
  447   if (LangOpts.isCompilingModule())
 
  457   Sema &SemaR = m_Interpreter->getSema();
 
  458   if (SemaR.InstantiatingSpecializations.size() > 0)
 
  461   GlobalModuleIndex *Index = CI->getASTReader()->getGlobalIndex();
 
  467   GlobalModuleIndex::FileNameHitSet FoundModules;
 
  471   if (Index->lookupIdentifier(Name.getAsString(), FoundModules)) {
 
  472      for (llvm::StringRef FileName : FoundModules) {
 
  473         StringRef ModuleName = llvm::sys::path::stem(FileName);
 
  478               llvm::errs() << 
"Module '" << ModuleName << 
"' already loaded" 
  479                            << 
" for '" << Name.getAsString() << 
"'\n";
 
  485            llvm::errs() << 
"Loading '" << ModuleName << 
"' on demand" 
  486                         << 
" for '" << Name.getAsString() << 
"'\n";
 
  488         m_Interpreter->loadModule(ModuleName.str());
 
  491         if (loadFirstMatchOnly)
 
  511   if (
Name.getNameKind() != DeclarationName::Identifier)
 
  514   Sema &SemaR = m_Interpreter->getSema();
 
  515   auto *D = cast<Decl>(DC);
 
  516   SourceLocation Loc = D->getLocation();
 
  517   if (Loc.isValid() && SemaR.getSourceManager().isInSystemHeader(Loc)) {
 
  526   NamespaceDecl* NSD = dyn_cast<NamespaceDecl>(
const_cast<DeclContext*
>(DC));
 
  537   const DeclContext* primaryDC = NSD->getPrimaryContext();
 
  541   LookupResult 
R(SemaR, Name, SourceLocation(), Sema::LookupOrdinaryName);
 
  542   R.suppressDiagnostics();
 
  545      = NSD->getQualifiedNameAsString() + 
"::" + 
Name.getAsString();
 
  551   clang::Scope 
S(SemaR.TUScope, clang::Scope::DeclScope, SemaR.getDiagnostics());
 
  552   S.setEntity(
const_cast<DeclContext*
>(DC));
 
  553   Sema::ContextAndScopeRAII pushedDCAndS(SemaR, 
const_cast<DeclContext*
>(DC), &S);
 
  556      llvm::SmallVector<NamedDecl*, 4> lookupResults;
 
  557      for(LookupResult::iterator 
I = 
R.begin(), E = 
R.end(); 
I < 
E; ++
I)
 
  558         lookupResults.push_back(*
I);
 
  559      UpdateWithNewDecls(DC, Name, llvm::makeArrayRef(lookupResults.data(),
 
  560                                                      lookupResults.size()));
 
  581   Sema &SemaR = m_Interpreter->getSema();
 
  583   SourceLocation Loc = Tag->getLocation();
 
  584   if (SemaR.getSourceManager().isInSystemHeader(Loc)) {
 
  590   for (
auto ReRD: Tag->redecls()) {
 
  592      if (ReRD->isBeingDefined())
 
  597   if (RecordDecl* RD = dyn_cast<RecordDecl>(Tag)) {
 
  598      ASTContext& C = SemaR.getASTContext();
 
  599      Parser& P = 
const_cast<Parser&
>(m_Interpreter->getParser());
 
  608                                          C.getTypeDeclType(RD),
 
  614         Tag->setHasExternalLexicalStorage(
false);
 
  630                                           Scope *S, 
const FileEntry* FE ) {
 
  636   Sema &SemaR = m_Interpreter->getSema();
 
  645     Sema::LookupNameKind kind = 
R.getLookupKind();
 
  646     if (!(kind == Sema::LookupTagName || kind == Sema::LookupOrdinaryName
 
  647           || kind == Sema::LookupNestedNameSpecifierName
 
  648           || kind == Sema::LookupNamespaceName))
 
  653     bool lookupSuccess = 
false;
 
  655     Parser &P = 
const_cast<Parser &
>(m_Interpreter->getParser());
 
  662        lookupSuccess = SemaR.LookupName(
R, S);
 
  664           if (
R.isSingleResult()) {
 
  665              if (isa<clang::RecordDecl>(
R.getFoundDecl())) {
 
  681        lookupSuccess = FE || SemaR.LookupName(
R, S);
 
  687        std::string incl = 
"#include \"";
 
  688        incl += FE->getName();
 
  690        m_Interpreter->declare(incl);
 
  726   if (
R.isForRedeclaration())
 
  731   const Sema::LookupNameKind LookupKind = 
R.getLookupKind();
 
  732   if (LookupKind != Sema::LookupOrdinaryName)
 
  736   Sema &SemaR = m_Interpreter->getSema();
 
  737   ASTContext& C = SemaR.getASTContext();
 
  738   Preprocessor &PP = SemaR.getPreprocessor();
 
  739   DeclContext *CurDC = SemaR.CurContext;
 
  740   DeclarationName Name = 
R.getLookupName();
 
  743   if(!CurDC || !CurDC->isFunctionOrMethod())
 
  748   Preprocessor::CleanupAndRestoreCacheRAII cleanupPPRAII(PP);
 
  755#if defined(R__MUST_REVISIT) 
  756#if R__MUST_REVISIT(6,2) 
  761      if (!fgSetOfSpecials) {
 
  762         fgSetOfSpecials = 
new std::set<TObject*>;
 
  764      ((std::set<TObject*>*)fgSetOfSpecials)->insert((
TObject*)*obj);
 
  768     VarDecl *VD = cast_or_null<VarDecl>(utils::Lookup::Named(&SemaR, Name,
 
  773         TObject **address = (
TObject**)m_Interpreter->getAddressOfGlobal(GD);
 
  777         CStyleCastExpr *CStyleCast = cast<CStyleCastExpr>(VD->getInit());
 
  778         Expr* newInit = utils::Synthesize::IntegerLiteralExpr(C, (uint64_t)obj);
 
  779         CStyleCast->setSubExpr(newInit);
 
  786         Preprocessor::CleanupAndRestoreCacheRAII cleanupRAII(PP);
 
  790         QualType QT = C.getPointerType(C.getTypeDeclType(cast<TypeDecl>(TD)));
 
  793                              SourceLocation(), Name.getAsIdentifierInfo(), QT,
 
  797           = utils::Synthesize::CStyleCastPtrExpr(&SemaR, QT, (uint64_t)obj);
 
  802         cling::CompilationOptions CO;
 
  803         CO.DeclarationExtraction = 0;
 
  804         CO.ValuePrinting = CompilationOptions::VPDisabled;
 
  805         CO.ResultEvaluation = 0;
 
  806         CO.DynamicScoping = 0;
 
  808         CO.CodeGeneration = 1;
 
  810         cling::Transaction* T = 
new cling::Transaction(CO, SemaR);
 
  812         T->setState(cling::Transaction::kCompleted);
 
  814         m_Interpreter->emitAllDecls(T);
 
  816      assert(VD && 
"Cannot be null!");
 
  833   DeclarationName Name = 
R.getLookupName();
 
  834   IdentifierInfo* II = Name.getAsIdentifierInfo();
 
  835   SourceLocation Loc = 
R.getNameLoc();
 
  836   Sema& SemaRef = 
R.getSema();
 
  837   ASTContext& C = SemaRef.getASTContext();
 
  838   DeclContext* TU = C.getTranslationUnitDecl();
 
  839   assert(TU && 
"Must not be null.");
 
  842   clang::FunctionDecl* Wrapper = 
nullptr;
 
  845      DeclContext* DCCursor = 
Cursor->getEntity();
 
  848      Wrapper = dyn_cast_or_null<FunctionDecl>(DCCursor);
 
  850         if (utils::Analyze::IsWrapper(Wrapper)) {
 
  864   VarDecl* Result = VarDecl::Create(C, TU, Loc, Loc, II, C.DependentTy,
 
  876   Wrapper->addAttr(AnnotateAttr::CreateImplicit(C, 
"__ResolveAtRuntime"));
 
  880   Sema::ContextRAII pushedDC(SemaRef, TU);
 
  891   if (
R.getLookupKind() != Sema::LookupOrdinaryName)
 
  894   if (
R.isForRedeclaration())
 
  900   const Transaction* T = getInterpreter()->getCurrentTransaction();
 
  903   const cling::CompilationOptions& COpts = T->getCompilationOpts();
 
  904   if (!COpts.DynamicScoping)
 
  907   auto &PP = 
R.getSema().PP;
 
  911   SourceLocation LocAfterIdent = PP.getLocForEndOfToken(
R.getNameLoc());
 
  913   PP.getRawToken(LocAfterIdent, LookAhead0, 
true);
 
  914   if (LookAhead0.is(tok::raw_identifier))
 
  933   for (Scope* DepScope = S; DepScope; DepScope = DepScope->getParent()) {
 
  934      if (DeclContext* Ctx = 
static_cast<DeclContext*
>(DepScope->getEntity())) {
 
  935         if (!Ctx->isDependentContext())
 
  937            if (isa<FunctionDecl>(Ctx))
 
  955   if (
R.isForRedeclaration())
 
  958   if (
R.getLookupKind() != Sema::LookupOrdinaryName)
 
  961   if (!isa<FunctionDecl>(
R.getSema().CurContext))
 
  966      DeclContext* ScopeDC = S->getEntity();
 
  967      if (!ScopeDC || !llvm::isa<FunctionDecl>(ScopeDC))
 
  972      Scope* FnScope = S->getFnParent();
 
  975      auto FD = dyn_cast_or_null<FunctionDecl>(FnScope->getEntity());
 
  976      if (!FD || !utils::Analyze::IsWrapper(FD))
 
  980   Sema& SemaRef = 
R.getSema();
 
  981   ASTContext& C = SemaRef.getASTContext();
 
  982   DeclContext* DC = SemaRef.CurContext;
 
  983   assert(DC && 
"Must not be null.");
 
  986   Preprocessor& PP = 
R.getSema().getPreprocessor();
 
  989   if (PP.LookAhead(0).isNot(tok::equal)) {
 
  995   DeclarationName Name = 
R.getLookupName();
 
  996   IdentifierInfo* II = Name.getAsIdentifierInfo();
 
  997   SourceLocation Loc = 
R.getNameLoc();
 
  998   VarDecl* Result = VarDecl::Create(C, DC, Loc, Loc, II,
 
  999                                     C.getAutoType(QualType(),
 
 1000                                                   clang::AutoTypeKeyword::Auto,
 
 1006                              "Cannot create VarDecl");
 
 1013   Result->addAttr(AnnotateAttr::CreateImplicit(C, 
"__Auto"));
 
 1024      Sema& SemaR = m_Interpreter->getSema();
 
 1025      cling::Transaction TPrev((cling::CompilationOptions(), SemaR));
 
 1026      TPrev.append(SemaR.getASTContext().getTranslationUnitDecl());
 
 1065   if (
const RecordDecl* RD = dyn_cast<RecordDecl>(D)) {
 
 1078                                    llvm::StringRef canonicalName) {
 
 1083                                      llvm::StringRef canonicalName) {
 
The file contains utilities which are foundational and could be used across the core component of ROO...
 
bool TCling__LibraryLoadingFailed(const std::string &, const std::string &, bool, bool)
Lookup libraries in LD_LIBRARY_PATH and DYLD_LIBRARY_PATH with mangled_name, which is extracted by er...
 
void * TCling__LockCompilationDuringUserCodeExecution()
Lock the interpreter.
 
int TCling__LoadLibrary(const char *library)
Load a library.
 
void TCling__UpdateListsOnCommitted(const cling::Transaction &, Interpreter *)
 
void TCling__SplitAclicMode(const char *fileName, std::string &mode, std::string &args, std::string &io, std::string &fname)
 
void TCling__TransactionRollback(const cling::Transaction &)
 
const char * TCling__GetClassSharedLibs(const char *className)
 
int TCling__AutoParseCallback(const char *className)
 
Decl * TCling__GetObjectDecl(TObject *obj)
 
void TCling__GetNormalizedContext(const ROOT::TMetaUtils::TNormalizedCtxt *&)
 
void TCling__RestoreInterpreterMutex(void *state)
Re-apply the lock count delta that TCling__ResetInterpreterMutex() caused.
 
int TCling__CompileMacro(const char *fileName, const char *options)
 
void * TCling__ResetInterpreterMutex()
Reset the interpreter lock to the state it had before interpreter-related calls happened.
 
int TCling__AutoLoadCallback(const char *className)
 
void TCling__LibraryUnloadedRTTI(const void *dyLibHandle, llvm::StringRef canonicalName)
 
void TCling__PrintStackTrace()
Print a StackTrace!
 
int TCling__IsAutoLoadNamespaceCandidate(const clang::NamespaceDecl *name)
 
void TCling__UpdateListsOnUnloaded(const cling::Transaction &)
 
void TCling__UnlockCompilationDuringUserCodeExecution(void *state)
Unlock the interpreter.
 
static bool topmostDCIsFunction(Scope *S)
 
void TCling__InvalidateGlobal(const clang::Decl *)
 
void TCling__LibraryLoadedRTTI(const void *dyLibHandle, llvm::StringRef canonicalName)
 
TObject * TCling__GetObjectAddress(const char *Name, void *&LookupCtx)
 
void TCling__RestoreInterpreterMutex(void *delta)
Re-apply the lock count delta that TCling__ResetInterpreterMutex() caused.
 
void TCling__TransactionRollback(const cling::Transaction &T)
 
void TCling__InvalidateGlobal(const clang::Decl *D)
 
void * TCling__LockCompilationDuringUserCodeExecution()
Lock the interpreter.
 
void TCling__UpdateListsOnUnloaded(const cling::Transaction &T)
 
void TCling__GetNormalizedContext(const ROOT::TMetaUtils::TNormalizedCtxt *&normCtxt)
 
bool TCling__LibraryLoadingFailed(const std::string &errmessage, const std::string &libStem, bool permanent, bool resolved)
Lookup libraries in LD_LIBRARY_PATH and DYLD_LIBRARY_PATH with mangled_name, which is extracted by er...
 
void TCling__UnlockCompilationDuringUserCodeExecution(void *)
Unlock the interpreter.
 
const char * TCling__GetClassSharedLibs(const char *className)
 
int TCling__AutoParseCallback(const char *className)
 
void TCling__LibraryUnloadedRTTI(const void *dyLibHandle, const char *canonicalName)
 
void TCling__UpdateListsOnCommitted(const cling::Transaction &T, cling::Interpreter *)
 
const Decl * TCling__GetObjectDecl(TObject *obj)
 
int TCling__CompileMacro(const char *fileName, const char *options)
 
void * TCling__ResetInterpreterMutex()
Reset the interpreter lock to the state it had before interpreter-related calls happened.
 
int TCling__AutoLoadCallback(const char *className)
 
void TCling__PrintStackTrace()
Print a StackTrace!
 
void TCling__LibraryLoadedRTTI(const void *dyLibHandle, const char *canonicalName)
 
TObject * TCling__GetObjectAddress(const char *Name, void *&LookupCtx)
 
int TCling__IsAutoLoadNamespaceCandidate(const clang::NamespaceDecl *nsDecl)
 
void TCling__SplitAclicMode(const char *fileName, string &mode, string &args, string &io, string &fname)
 
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 mode
 
AutoloadLibraryGenerator(cling::Interpreter *interp, const TClingCallbacks &cb)
 
const TClingCallbacks & fCallbacks
 
cling::Interpreter * fInterpreter
 
llvm::Error tryToGenerate(llvm::orc::LookupState &LS, llvm::orc::LookupKind K, llvm::orc::JITDylib &JD, llvm::orc::JITDylibLookupFlags JDLookupFlags, const llvm::orc::SymbolLookupSet &Symbols) override
 
void discard(const llvm::orc::JITDylib &JD, const llvm::orc::SymbolStringPtr &Name) override
 
void materialize(std::unique_ptr< llvm::orc::MaterializationResponsibility > R) override
 
llvm::orc::SymbolNameVector fSymbols
 
StringRef getName() const override
 
const TClingCallbacks & fCallbacks
 
static llvm::orc::SymbolFlagsMap getSymbolFlagsMap(const llvm::orc::SymbolNameVector &Symbols)
 
AutoloadLibraryMU(const TClingCallbacks &cb, const std::string &Library, const llvm::orc::SymbolNameVector &Symbols)
 
void LibraryUnloaded(const void *dyLibHandle, llvm::StringRef canonicalName) override
 
bool tryAutoParseInternal(llvm::StringRef Name, clang::LookupResult &R, clang::Scope *S, const clang::FileEntry *FE=0)
 
bool tryFindROOTSpecialInternal(clang::LookupResult &R, clang::Scope *S)
 
void ReturnedFromUserCode(void *stateInfo) override
 
bool fIsAutoParsingSuspended
 
bool tryResolveAtRuntimeInternal(clang::LookupResult &R, clang::Scope *S)
 
bool findInGlobalModuleIndex(clang::DeclarationName Name, bool loadFirstMatchOnly=true)
 
void PrintStackTrace() override
 
bool tryInjectImplicitAutoKeyword(clang::LookupResult &R, clang::Scope *S)
 
clang::NamespaceDecl * fROOTSpecialNamespace
 
void TransactionRollback(const cling::Transaction &T) override
 
void TransactionCommitted(const cling::Transaction &T) override
 
TClingCallbacks(cling::Interpreter *interp, bool hasCodeGen)
 
llvm::DenseMap< llvm::StringRef, clang::DeclarationName > m_LoadedModuleFiles
 
void DeclDeserialized(const clang::Decl *D) override
 
bool IsAutoLoadingEnabled() const
 
void InclusionDirective(clang::SourceLocation, const clang::Token &, llvm::StringRef FileName, bool, clang::CharSourceRange, const clang::FileEntry *, llvm::StringRef, llvm::StringRef, const clang::Module *, clang::SrcMgr::CharacteristicKind) override
 
void DefinitionShadowed(const clang::NamedDecl *D) override
A previous definition has been shadowed; invalidate TCling' stored data about the old (global) decl.
 
bool FileNotFound(llvm::StringRef FileName, llvm::SmallVectorImpl< char > &RecoveryPath) override
 
void * EnteringUserCode() override
 
bool fIsAutoLoadingRecursively
 
void UnlockCompilationDuringUserCodeExecution(void *StateInfo) override
 
bool LibraryLoadingFailed(const std::string &, const std::string &, bool, bool) override
 
void * LockCompilationDuringUserCodeExecution() override
 
bool LookupObject(clang::LookupResult &R, clang::Scope *S) override
 
void LibraryLoaded(const void *dyLibHandle, llvm::StringRef canonicalName) override
 
bool shouldResolveAtRuntime(clang::LookupResult &R, clang::Scope *S)
 
void TransactionUnloaded(const cling::Transaction &T) override
 
Mother of all ROOT objects.
 
bool ConvertEnvValueToBool(const std::string &value)
 
RooArgSet S(Args_t &&... args)
 
constexpr Double_t E()
Base of natural log: .
 
RAII used to store Parser, Sema, Preprocessor state for recursive parsing.
 
clang::Preprocessor::CleanupAndRestoreCacheRAII fCleanupRAII
 
clang::Sema::ContextAndScopeRAII fPushedDCAndS