diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp index 565104be473..0525249dcf0 100644 --- a/src/plugins/baremetal/iarewtoolchain.cpp +++ b/src/plugins/baremetal/iarewtoolchain.cpp @@ -223,9 +223,7 @@ static QString buildDisplayName(Abi::Architecture arch, Core::Id language, // IarToolChain IarToolChain::IarToolChain(Detection d) : - ToolChain(Constants::IAREW_TOOLCHAIN_TYPEID, d), - m_predefinedMacrosCache(std::make_shared>()), - m_headerPathsCache(std::make_shared()) + ToolChain(Constants::IAREW_TOOLCHAIN_TYPEID, d) { } IarToolChain::IarToolChain(Core::Id language, Detection d) : @@ -265,9 +263,11 @@ ToolChain::MacroInspectionRunner IarToolChain::createMacroInspectionRunner() con const Utils::FileName compilerCommand = m_compilerCommand; const Core::Id lang = language(); - MacrosCache macrosCache = m_predefinedMacrosCache; + MacrosCache macrosCache = predefinedMacrosCache(); - return [env, compilerCommand, macrosCache, lang] + return [env, compilerCommand, + macrosCache, + lang] (const QStringList &flags) { Q_UNUSED(flags) @@ -303,16 +303,16 @@ ToolChain::BuiltInHeaderPathsRunner IarToolChain::createBuiltInHeaderPathsRunner const Utils::FileName compilerCommand = m_compilerCommand; const Core::Id languageId = language(); - HeaderPathsCachePtr headerPathsCache = m_headerPathsCache; + HeaderPathsCache headerPaths = headerPathsCache(); - return [env, compilerCommand, headerPathsCache, languageId](const QStringList &flags, + return [env, compilerCommand, headerPaths, languageId](const QStringList &flags, const QString &fileName, const QString &) { Q_UNUSED(flags) Q_UNUSED(fileName) const HeaderPaths paths = dumpHeaderPaths(compilerCommand, languageId, env.toStringList()); - headerPathsCache->insert({}, paths); + headerPaths->insert({}, paths); return paths; }; @@ -394,13 +394,6 @@ ToolChain *IarToolChain::clone() const return new IarToolChain(*this); } -void IarToolChain::toolChainUpdated() -{ - m_predefinedMacrosCache->invalidate(); - m_headerPathsCache->invalidate(); - ToolChain::toolChainUpdated(); -} - // IarToolChainFactory IarToolChainFactory::IarToolChainFactory() @@ -538,7 +531,7 @@ QList IarToolChainFactory::autoDetectToolchain( tc->setDisplayName(buildDisplayName(abi.architecture(), language, candidate.second)); const auto languageVersion = ToolChain::languageVersion(language, macros); - tc->m_predefinedMacrosCache->insert({}, {macros, languageVersion}); + tc->predefinedMacrosCache()->insert({}, {macros, languageVersion}); return {tc}; } @@ -580,7 +573,7 @@ void IarToolChainConfigWidget::applyImpl() return; const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros); - tc->m_predefinedMacrosCache->insert({}, {m_macros, languageVersion}); + tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion}); setFromToolchain(); } diff --git a/src/plugins/baremetal/iarewtoolchain.h b/src/plugins/baremetal/iarewtoolchain.h index 8107c03f237..06b93577a2d 100644 --- a/src/plugins/baremetal/iarewtoolchain.h +++ b/src/plugins/baremetal/iarewtoolchain.h @@ -27,7 +27,6 @@ #include #include -#include #include QT_BEGIN_NAMESPACE @@ -86,8 +85,6 @@ public: ToolChain *clone() const final; - void toolChainUpdated() final; - protected: IarToolChain(const IarToolChain &tc) = default; @@ -98,13 +95,6 @@ private: ProjectExplorer::Abi m_targetAbi; Utils::FileName m_compilerCommand; - using MacrosCache = std::shared_ptr>; - mutable MacrosCache m_predefinedMacrosCache; - - using HeaderPathsCache = ProjectExplorer::Cache; - using HeaderPathsCachePtr = std::shared_ptr; - mutable HeaderPathsCachePtr m_headerPathsCache; - friend class IarToolChainFactory; friend class IarToolChainConfigWidget; }; diff --git a/src/plugins/baremetal/keiltoolchain.cpp b/src/plugins/baremetal/keiltoolchain.cpp index fb7e37cfb37..755b25b25a7 100644 --- a/src/plugins/baremetal/keiltoolchain.cpp +++ b/src/plugins/baremetal/keiltoolchain.cpp @@ -240,9 +240,7 @@ static QString buildDisplayName(Abi::Architecture arch, Core::Id language, // KeilToolchain KeilToolchain::KeilToolchain(Detection d) : - ToolChain(Constants::KEIL_TOOLCHAIN_TYPEID, d), - m_predefinedMacrosCache(std::make_shared>()), - m_headerPathsCache(std::make_shared()) + ToolChain(Constants::KEIL_TOOLCHAIN_TYPEID, d) { } KeilToolchain::KeilToolchain(Core::Id language, Detection d) : @@ -282,7 +280,7 @@ ToolChain::MacroInspectionRunner KeilToolchain::createMacroInspectionRunner() co const Utils::FileName compilerCommand = m_compilerCommand; const Core::Id lang = language(); - MacrosCache macroCache = m_predefinedMacrosCache; + MacrosCache macroCache = predefinedMacrosCache(); return [env, compilerCommand, macroCache, lang] (const QStringList &flags) { @@ -316,15 +314,15 @@ ToolChain::BuiltInHeaderPathsRunner KeilToolchain::createBuiltInHeaderPathsRunne { const Utils::FileName compilerCommand = m_compilerCommand; - HeaderPathsCachePtr headerPathsCache = m_headerPathsCache; + HeaderPathsCache headerPaths = headerPathsCache(); return [compilerCommand, - headerPathsCache](const QStringList &flags, const QString &fileName, const QString &) { + headerPaths](const QStringList &flags, const QString &fileName, const QString &) { Q_UNUSED(flags) Q_UNUSED(fileName) const HeaderPaths paths = dumpHeaderPaths(compilerCommand); - headerPathsCache->insert({}, paths); + headerPaths->insert({}, paths); return paths; }; @@ -406,13 +404,6 @@ ToolChain *KeilToolchain::clone() const return new KeilToolchain(*this); } -void KeilToolchain::toolChainUpdated() -{ - m_predefinedMacrosCache->invalidate(); - m_headerPathsCache->invalidate(); - ToolChain::toolChainUpdated(); -} - // KeilToolchainFactory KeilToolchainFactory::KeilToolchainFactory() @@ -544,7 +535,7 @@ QList KeilToolchainFactory::autoDetectToolchain( tc->setDisplayName(buildDisplayName(abi.architecture(), language, candidate.second)); const auto languageVersion = ToolChain::languageVersion(language, macros); - tc->m_predefinedMacrosCache->insert({}, {macros, languageVersion}); + tc->predefinedMacrosCache()->insert({}, {macros, languageVersion}); return {tc}; } @@ -586,7 +577,7 @@ void KeilToolchainConfigWidget::applyImpl() return; const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros); - tc->m_predefinedMacrosCache->insert({}, {m_macros, languageVersion}); + tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion}); setFromToolchain(); } diff --git a/src/plugins/baremetal/keiltoolchain.h b/src/plugins/baremetal/keiltoolchain.h index fb497d7edf7..36f28900f65 100644 --- a/src/plugins/baremetal/keiltoolchain.h +++ b/src/plugins/baremetal/keiltoolchain.h @@ -27,7 +27,6 @@ #include #include -#include #include QT_BEGIN_NAMESPACE @@ -86,8 +85,6 @@ public: ToolChain *clone() const final; - void toolChainUpdated() final; - protected: KeilToolchain(const KeilToolchain &tc) = default; @@ -98,13 +95,6 @@ private: ProjectExplorer::Abi m_targetAbi; Utils::FileName m_compilerCommand; - using MacrosCache = std::shared_ptr>; - mutable MacrosCache m_predefinedMacrosCache; - - using HeaderPathsCache = ProjectExplorer::Cache; - using HeaderPathsCachePtr = std::shared_ptr; - mutable HeaderPathsCachePtr m_headerPathsCache; - friend class KeilToolchainFactory; friend class KeilToolchainConfigWidget; }; diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp index c752a9b230a..493f8867875 100644 --- a/src/plugins/baremetal/sdcctoolchain.cpp +++ b/src/plugins/baremetal/sdcctoolchain.cpp @@ -217,9 +217,7 @@ static Utils::FileName compilerPathFromEnvironment(const QString &compilerName) // SdccToolChain SdccToolChain::SdccToolChain(Detection d) : - ToolChain(Constants::SDCC_TOOLCHAIN_TYPEID, d), - m_predefinedMacrosCache(std::make_shared>()), - m_headerPathsCache(std::make_shared()) + ToolChain(Constants::SDCC_TOOLCHAIN_TYPEID, d) { } SdccToolChain::SdccToolChain(Core::Id language, Detection d) : @@ -260,7 +258,7 @@ ToolChain::MacroInspectionRunner SdccToolChain::createMacroInspectionRunner() co const Core::Id lang = language(); const Abi abi = m_targetAbi; - MacrosCache macrosCache = m_predefinedMacrosCache; + MacrosCache macrosCache = predefinedMacrosCache(); return [env, compilerCommand, macrosCache, lang, abi] (const QStringList &flags) { @@ -300,16 +298,16 @@ ToolChain::BuiltInHeaderPathsRunner SdccToolChain::createBuiltInHeaderPathsRunne const Core::Id languageId = language(); const Abi abi = m_targetAbi; - HeaderPathsCachePtr headerPathsCache = m_headerPathsCache; + HeaderPathsCache headerPaths = headerPathsCache(); - return [env, compilerCommand, headerPathsCache, languageId, abi](const QStringList &flags, - const QString &fileName, - const QString &) { + return [env, compilerCommand, headerPaths, languageId, abi](const QStringList &flags, + const QString &fileName, + const QString &) { Q_UNUSED(flags) Q_UNUSED(fileName) const HeaderPaths paths = dumpHeaderPaths(compilerCommand, env.toStringList(), abi); - headerPathsCache->insert({}, paths); + headerPaths->insert({}, paths); return paths; }; @@ -391,13 +389,6 @@ ToolChain *SdccToolChain::clone() const return new SdccToolChain(*this); } -void SdccToolChain::toolChainUpdated() -{ - m_predefinedMacrosCache->invalidate(); - m_headerPathsCache->invalidate(); - ToolChain::toolChainUpdated(); -} - // SdccToolChainFactory SdccToolChainFactory::SdccToolChainFactory() @@ -519,7 +510,7 @@ QList SdccToolChainFactory::autoDetectToolchain( tc->setDisplayName(buildDisplayName(abi.architecture(), language, candidate.second)); const auto languageVersion = ToolChain::languageVersion(language, macros); - tc->m_predefinedMacrosCache->insert({}, {macros, languageVersion}); + tc->predefinedMacrosCache()->insert({}, {macros, languageVersion}); return {tc}; } @@ -561,7 +552,7 @@ void SdccToolChainConfigWidget::applyImpl() return; const auto languageVersion = ToolChain::languageVersion(tc->language(), m_macros); - tc->m_predefinedMacrosCache->insert({}, {m_macros, languageVersion}); + tc->predefinedMacrosCache()->insert({}, {m_macros, languageVersion}); setFromToolchain(); } diff --git a/src/plugins/baremetal/sdcctoolchain.h b/src/plugins/baremetal/sdcctoolchain.h index 4a7e35f012b..93cbcfab496 100644 --- a/src/plugins/baremetal/sdcctoolchain.h +++ b/src/plugins/baremetal/sdcctoolchain.h @@ -27,7 +27,6 @@ #include #include -#include #include QT_BEGIN_NAMESPACE @@ -86,8 +85,6 @@ public: ToolChain *clone() const final; - void toolChainUpdated() final; - protected: SdccToolChain(const SdccToolChain &tc) = default; @@ -98,13 +95,6 @@ private: ProjectExplorer::Abi m_targetAbi; Utils::FileName m_compilerCommand; - using MacrosCache = std::shared_ptr>; - mutable MacrosCache m_predefinedMacrosCache; - - using HeaderPathsCache = ProjectExplorer::Cache; - using HeaderPathsCachePtr = std::shared_ptr; - mutable HeaderPathsCachePtr m_headerPathsCache; - friend class SdccToolChainFactory; friend class SdccToolChainConfigWidget; }; diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index 692b8a072ed..38e21f4c8b5 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -167,13 +167,6 @@ HeaderPaths GccToolChain::gccHeaderPaths(const FileName &gcc, const QStringList return builtInHeaderPaths; } -void GccToolChain::toolChainUpdated() -{ - m_predefinedMacrosCache->invalidate(); - m_headerPathsCache->invalidate(); - ToolChain::toolChainUpdated(); -} - static QList guessGccAbi(const QString &m, const ProjectExplorer::Macros ¯os) { QList abiList; @@ -244,9 +237,7 @@ GccToolChain::GccToolChain(Detection d) : { } GccToolChain::GccToolChain(Core::Id typeId, Detection d) : - ToolChain(typeId, d), - m_headerPathsCache(std::make_shared>()), - m_predefinedMacrosCache(std::make_shared>()) + ToolChain(typeId, d) { } void GccToolChain::setCompilerCommand(const FileName &path) @@ -382,7 +373,7 @@ ToolChain::MacroInspectionRunner GccToolChain::createMacroInspectionRunner() con const QStringList platformCodeGenFlags = m_platformCodeGenFlags; OptionsReinterpreter reinterpretOptions = m_optionsReinterpreter; QTC_CHECK(reinterpretOptions); - std::shared_ptr> macroCache = m_predefinedMacrosCache; + MacrosCache macroCache = predefinedMacrosCache(); Core::Id lang = language(); // This runner must be thread-safe! @@ -573,7 +564,7 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env, const Utils::FileName &compilerCommand, const QStringList &platformCodeGenFlags, OptionsReinterpreter reinterpretOptions, - std::shared_ptr> headerCache, + HeaderPathsCache headerCache, Core::Id languageId, ExtraHeaderPathsFunction extraHeaderPathsFunction, const QStringList &flags, @@ -621,7 +612,7 @@ ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner compilerCommand = m_compilerCommand, platformCodeGenFlags = m_platformCodeGenFlags, reinterpretOptions = m_optionsReinterpreter, - headerCache = m_headerPathsCache, + headerCache = headerPathsCache(), languageId = language(), extraHeaderPathsFunction = m_extraHeaderPathsFunction](const QStringList &flags, const QString &sysRoot, @@ -1064,7 +1055,7 @@ QList GccToolChainFactory::autoDetectToolChain(const FileName &comp return result; tc->setLanguage(language); - tc->m_predefinedMacrosCache + tc->predefinedMacrosCache() ->insert(QStringList(), ToolChain::MacroInspectionReport{macros, ToolChain::languageVersion(language, macros)}); @@ -1138,7 +1129,7 @@ void GccToolChainConfigWidget::applyImpl() if (m_macros.isEmpty()) return; - tc->m_predefinedMacrosCache + tc->predefinedMacrosCache() ->insert(tc->platformCodeGenFlags(), ToolChain::MacroInspectionReport{m_macros, ToolChain::languageVersion(tc->language(), @@ -1446,7 +1437,7 @@ ToolChain::BuiltInHeaderPathsRunner ClangToolChain::createBuiltInHeaderPathsRunn compilerCommand = m_compilerCommand, platformCodeGenFlags = m_platformCodeGenFlags, reinterpretOptions = m_optionsReinterpreter, - headerCache = m_headerPathsCache, + headerCache = headerPathsCache(), languageId = language(), extraHeaderPathsFunction = m_extraHeaderPathsFunction](const QStringList &flags, const QString &sysRoot, diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h index 9161a6ea37c..facc0e32318 100644 --- a/src/plugins/projectexplorer/gcctoolchain.h +++ b/src/plugins/projectexplorer/gcctoolchain.h @@ -29,7 +29,6 @@ #include "projectexplorerconstants.h" #include "toolchain.h" -#include "toolchaincache.h" #include "abi.h" #include "headerpath.h" @@ -155,7 +154,7 @@ protected: const Utils::FileName &compilerCommand, const QStringList &platformCodeGenFlags, OptionsReinterpreter reinterpretOptions, - std::shared_ptr> headerCache, + HeaderPathsCache headerCache, Core::Id languageId, ExtraHeaderPathsFunction extraHeaderPathsFunction, const QStringList &flags, @@ -178,7 +177,6 @@ protected: bool m_doesEnable = false; bool m_triggered = false; }; - void toolChainUpdated() override; private: explicit GccToolChain(Detection d); @@ -196,7 +194,6 @@ protected: QStringList m_platformLinkerFlags; OptionsReinterpreter m_optionsReinterpreter = [](const QStringList &v) { return v; }; - mutable std::shared_ptr> m_headerPathsCache; mutable ExtraHeaderPathsFunction m_extraHeaderPathsFunction = [](HeaderPaths &) {}; private: @@ -206,8 +203,6 @@ private: mutable HeaderPaths m_headerPaths; mutable QString m_version; - mutable std::shared_ptr> m_predefinedMacrosCache; - friend class Internal::GccToolChainConfigWidget; friend class Internal::GccToolChainFactory; friend class ToolChainFactory; diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index db65595e3b6..427ef014a41 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -792,7 +792,6 @@ MsvcToolChain::MsvcToolChain(const MsvcToolChain &other) , m_headerPathsMutex(new QMutex) , m_environmentModifications(other.m_environmentModifications) , m_debuggerCommand(other.m_debuggerCommand) - , m_predefinedMacrosCache(other.m_predefinedMacrosCache) , m_lastEnvironment(other.m_lastEnvironment) , m_resultEnvironment(other.m_resultEnvironment) , m_abi(other.m_abi) @@ -833,7 +832,6 @@ MsvcToolChain::MsvcToolChain(Core::Id typeId, Detection d) : ToolChain(typeId, d) , m_headerPathsMutex(new QMutex) - , m_predefinedMacrosCache(std::make_shared>()) , m_lastEnvironment(Utils::Environment::systemEnvironment()) , m_abi(abi) , m_vcvarsBat(varsBat) @@ -854,7 +852,6 @@ MsvcToolChain::MsvcToolChain(Core::Id typeId, MsvcToolChain::MsvcToolChain(Core::Id typeId) : ToolChain(typeId, ManualDetection) - , m_predefinedMacrosCache(std::make_shared>()) , m_lastEnvironment(Utils::Environment::systemEnvironment()) {} @@ -877,11 +874,6 @@ void MsvcToolChain::inferWarningsForLevel(int warningLevel, WarningFlags &flags) flags |= WarningFlags::UnusedParams; } -void MsvcToolChain::toolChainUpdated() -{ - m_predefinedMacrosCache->invalidate(); -} - MsvcToolChain::MsvcToolChain() : MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID) {} @@ -1039,7 +1031,7 @@ ToolChain::MacroInspectionRunner MsvcToolChain::createMacroInspectionRunner() co { Utils::Environment env(m_lastEnvironment); addToEnvironment(env); - std::shared_ptr> macroCache = m_predefinedMacrosCache; + MacrosCache macroCache = predefinedMacrosCache(); const Core::Id lang = language(); // This runner must be thread-safe! @@ -1631,12 +1623,6 @@ Utils::LanguageVersion ClangClToolChain::msvcLanguageVersion(const QStringList & return MsvcToolChain::msvcLanguageVersion(cxxflags, language, macros); } -void ClangClToolChain::toolChainUpdated() -{ - MsvcToolChain::toolChainUpdated(); - ToolChain::toolChainUpdated(); -} - ClangClToolChain::BuiltInHeaderPathsRunner ClangClToolChain::createBuiltInHeaderPathsRunner() const { { diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index a6c08eaeeaf..dc74d8c4ebe 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -27,7 +27,6 @@ #include "abi.h" #include "toolchain.h" -#include "toolchaincache.h" #include "toolchainconfigwidget.h" #include @@ -136,7 +135,6 @@ protected: explicit MsvcToolChain(Core::Id typeId); static void inferWarningsForLevel(int warningLevel, WarningFlags &flags); - void toolChainUpdated() override; Utils::Environment readEnvironmentSetting(const Utils::Environment &env) const; // Function must be thread-safe! @@ -169,8 +167,6 @@ private: Utils::FileName m_debuggerCommand; - mutable std::shared_ptr> m_predefinedMacrosCache; - mutable Utils::Environment m_lastEnvironment; // Last checked 'incoming' environment. mutable Utils::Environment m_resultEnvironment; // Resulting environment for VC @@ -214,9 +210,6 @@ public: bool operator==(const ToolChain &) const override; -private: - void toolChainUpdated() override; - private: QString m_clangPath; }; diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 212427417a3..74f62408574 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -58,7 +58,9 @@ public: explicit ToolChainPrivate(Core::Id typeId, Detection d) : m_id(QUuid::createUuid().toByteArray()), m_typeId(typeId), - m_detection(d) + m_detection(d), + m_predefinedMacrosCache(new ToolChain::MacrosCache::element_type()), + m_headerPathsCache(new ToolChain::HeaderPathsCache::element_type()) { QTC_ASSERT(m_typeId.isValid(), return); QTC_ASSERT(!m_typeId.toString().contains(QLatin1Char(':')), return); @@ -70,6 +72,9 @@ public: Core::Id m_typeId; Core::Id m_language; Detection m_detection; + + ToolChain::MacrosCache m_predefinedMacrosCache; + ToolChain::HeaderPathsCache m_headerPathsCache; }; @@ -236,6 +241,9 @@ QVariantMap ToolChain::toMap() const void ToolChain::toolChainUpdated() { + d->m_predefinedMacrosCache->invalidate(); + d->m_headerPathsCache->invalidate(); + ToolChainManager::notifyAboutUpdate(this); } @@ -286,6 +294,16 @@ bool ToolChain::fromMap(const QVariantMap &data) return true; } +const ToolChain::HeaderPathsCache &ToolChain::headerPathsCache() const +{ + return d->m_headerPathsCache; +} + +const ToolChain::MacrosCache &ToolChain::predefinedMacrosCache() const +{ + return d->m_predefinedMacrosCache; +} + static long toLanguageVersionAsLong(QByteArray dateAsByteArray) { dateAsByteArray.chop(1); // Strip 'L'. diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index 84d005ff3db..a352e685086 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -30,6 +30,7 @@ #include "headerpath.h" #include "projectmacro.h" +#include "toolchaincache.h" #include @@ -120,6 +121,9 @@ public: Utils::LanguageVersion languageVersion; }; + using MacrosCache = std::shared_ptr>; + using HeaderPathsCache = std::shared_ptr>; + // A MacroInspectionRunner is created in the ui thread and runs in another thread. using MacroInspectionRunner = std::function; virtual MacroInspectionRunner createMacroInspectionRunner() const = 0; @@ -160,6 +164,9 @@ protected: explicit ToolChain(Core::Id typeId, Detection d); explicit ToolChain(const ToolChain &); + const MacrosCache &predefinedMacrosCache() const; + const HeaderPathsCache &headerPathsCache() const; + virtual void toolChainUpdated(); // Make sure to call this function when deriving!