void Interpreter::enableDynamicLookup(bool value /*=true*/) { m_DynamicLookupEnabled = value; if (isDynamicLookupEnabled()) { if (loadModuleForHeader("cling/Interpreter/DynamicLookupRuntimeUniverse.h") != kSuccess) declare("#include \"cling/Interpreter/DynamicLookupRuntimeUniverse.h\""); } }
Interpreter::CompilationResult Interpreter::declare(const std::string& input, Transaction** T/*=0 */) { CompilationOptions CO; CO.DeclarationExtraction = 0; CO.ValuePrinting = 0; CO.ResultEvaluation = 0; CO.DynamicScoping = isDynamicLookupEnabled(); CO.Debug = isPrintingDebug(); return DeclareInternal(input, CO, T); }
void IncrementalParser::enableDynamicLookup(bool value) { m_DynamicLookupEnabled = value; Sema& S = m_CI->getSema(); if (isDynamicLookupEnabled()) { assert(!S.ExternalSource && "Already set Sema ExternalSource"); S.ExternalSource = new DynamicIDHandler(&S); } else { delete S.ExternalSource; S.ExternalSource = 0; } }
///\brief Maybe transform the input line to implement cint command line /// semantics (declarations are global) and compile to produce a module. /// Interpreter::CompilationResult Interpreter::process(const std::string& input, Value* V /* = 0 */, Transaction** T /* = 0 */) { if (isRawInputEnabled() || !ShouldWrapInput(input)) return declare(input, T); CompilationOptions CO; CO.DeclarationExtraction = 1; CO.ValuePrinting = CompilationOptions::VPAuto; CO.ResultEvaluation = (bool)V; CO.DynamicScoping = isDynamicLookupEnabled(); CO.Debug = isPrintingDebug(); if (EvaluateInternal(input, CO, V, T) == Interpreter::kFailure) { return Interpreter::kFailure; } return Interpreter::kSuccess; }
Interpreter::CompilationResult Interpreter::parseForModule(const std::string& input) { CompilationOptions CO; CO.CodeGeneration = 1; CO.CodeGenerationForModule = 1; CO.DeclarationExtraction = 0; CO.ValuePrinting = 0; CO.ResultEvaluation = 0; CO.DynamicScoping = isDynamicLookupEnabled(); CO.Debug = isPrintingDebug(); // When doing parseForModule avoid warning about the user code // being loaded ... we probably might as well extend this to // ALL warnings ... but this will suffice for now (working // around a real bug in QT :(). DiagnosticsEngine& Diag = getCI()->getDiagnostics(); Diag.setSeverity(clang::diag::warn_field_is_uninit, clang::diag::Severity::Ignored, SourceLocation()); return DeclareInternal(input, CO); }