From 7b494c068eaa4012471b5f80be1ecfd964448cab Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 8 Jan 2019 12:33:18 +0100 Subject: [PATCH] CppTools: Simplify ProjectUpdateInfo ...by using KitInfo. Change-Id: I17b4dd6c368ba8b10b765f12a4663c041c9be7e5 Reviewed-by: Christian Kandeler --- .../autotoolsproject.cpp | 3 +- .../cmakeprojectmanager/cmakeproject.cpp | 3 +- .../compilationdatabaseproject.cpp | 11 ++++--- src/plugins/cpptools/cppkitinfo.cpp | 3 ++ src/plugins/cpptools/cppkitinfo.h | 2 ++ src/plugins/cpptools/projectinfo.cpp | 31 ++++++------------- src/plugins/cpptools/projectinfo.h | 12 +++---- .../genericprojectmanager/genericproject.cpp | 3 +- src/plugins/qbsprojectmanager/qbsproject.cpp | 3 +- .../qmakeprojectmanager/qmakeproject.cpp | 3 +- 10 files changed, 29 insertions(+), 45 deletions(-) diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 95dc6e5cd0c..99c62b7497a 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -280,6 +280,5 @@ void AutotoolsProject::updateCppCodeModel() rpp.setMacros(m_makefileParserThread->macros()); rpp.setFiles(m_files); - m_cppCodeModelUpdater->update( - {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, {rpp}}); + m_cppCodeModelUpdater->update({this, kitInfo, {rpp}}); } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 398fe84440e..bb07c99f23d 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -296,8 +296,7 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) rpp.setFlagsForC({kitInfo.cToolChain, rpp.flagsForC.commandLineFlags}); } - m_cppCodeModelUpdater->update( - {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, rpps}); + m_cppCodeModelUpdater->update({this, kitInfo, rpps}); updateQmlJSCodeModel(); diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index cc01b1fd476..f4865d7edf7 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -358,10 +359,10 @@ void CompilationDatabaseProject::buildTreeAndProjectParts(const Utils::FileName auto root = std::make_unique(projectDirectory()); + CppTools::KitInfo kitInfo(this); + QTC_ASSERT(kitInfo.isValid(), return); CppTools::RawProjectParts rpps; Utils::FileName commonPath; - ToolChain *cToolchain = nullptr; - ToolChain *cxxToolchain = nullptr; std::sort(array.begin(), array.end(), [](const Entry &lhs, const Entry &rhs) { return std::lexicographical_compare(lhs.flags.begin(), lhs.flags.end(), @@ -383,8 +384,8 @@ void CompilationDatabaseProject::buildTreeAndProjectParts(const Utils::FileName CppTools::RawProjectPart rpp = makeRawProjectPart(projectFile, m_kit.get(), - cToolchain, - cxxToolchain, + kitInfo.cToolChain, + kitInfo.cxxToolChain, entry.workingDir, entry.fileName, entry.flags); @@ -401,7 +402,7 @@ void CompilationDatabaseProject::buildTreeAndProjectParts(const Utils::FileName setRootProjectNode(std::move(root)); - m_cppCodeModelUpdater->update({this, cToolchain, cxxToolchain, m_kit.get(), rpps}); + m_cppCodeModelUpdater->update({this, kitInfo, rpps}); emitParsingFinished(true); } diff --git a/src/plugins/cpptools/cppkitinfo.cpp b/src/plugins/cpptools/cppkitinfo.cpp index d7bfcdebdaa..6cdf7d52df3 100644 --- a/src/plugins/cpptools/cppkitinfo.cpp +++ b/src/plugins/cpptools/cppkitinfo.cpp @@ -51,6 +51,9 @@ KitInfo::KitInfo(Project *project) cToolChain = ToolChainKitInformation::toolChain(kit, Constants::C_LANGUAGE_ID); cxxToolChain = ToolChainKitInformation::toolChain(kit, Constants::CXX_LANGUAGE_ID); } + + // Sysroot + sysRootPath = ProjectExplorer::SysRootKitInformation::sysRoot(kit).toString(); } bool KitInfo::isValid() const diff --git a/src/plugins/cpptools/cppkitinfo.h b/src/plugins/cpptools/cppkitinfo.h index d9b01a3e7cc..30ff3008590 100644 --- a/src/plugins/cpptools/cppkitinfo.h +++ b/src/plugins/cpptools/cppkitinfo.h @@ -49,6 +49,8 @@ public: ProjectExplorer::ToolChain *cxxToolChain = nullptr; ProjectPart::QtVersion projectPartQtVersion = ProjectPart::NoQt; + + QString sysRootPath; }; } // namespace CppTools diff --git a/src/plugins/cpptools/projectinfo.cpp b/src/plugins/cpptools/projectinfo.cpp index c39449fef7a..1cc5515eb9d 100644 --- a/src/plugins/cpptools/projectinfo.cpp +++ b/src/plugins/cpptools/projectinfo.cpp @@ -25,6 +25,8 @@ #include "projectinfo.h" +#include "cppkitinfo.h" + #include #include #include @@ -33,7 +35,7 @@ namespace CppTools { ToolChainInfo::ToolChainInfo(const ProjectExplorer::ToolChain *toolChain, - const ProjectExplorer::Kit *kit) + const QString &sysRootPath) { if (toolChain) { // Keep the following cheap/non-blocking for the ui thread... @@ -46,36 +48,21 @@ ToolChainInfo::ToolChainInfo(const ProjectExplorer::ToolChain *toolChain, // ...and save the potentially expensive operations for later so that // they can be run from a worker thread. - sysRootPath = ProjectExplorer::SysRootKitInformation::sysRoot(kit).toString(); + this->sysRootPath = sysRootPath; headerPathsRunner = toolChain->createBuiltInHeaderPathsRunner(); macroInspectionRunner = toolChain->createMacroInspectionRunner(); } } ProjectUpdateInfo::ProjectUpdateInfo(ProjectExplorer::Project *project, - const ProjectExplorer::ToolChain *cToolChain, - const ProjectExplorer::ToolChain *cxxToolChain, - const ProjectExplorer::Kit *kit, + const KitInfo &kitInfo, const RawProjectParts &rawProjectParts) : project(project) , rawProjectParts(rawProjectParts) - , cToolChain(cToolChain) - , cxxToolChain(cxxToolChain) - , cToolChainInfo(ToolChainInfo(cToolChain, kit)) - , cxxToolChainInfo(ToolChainInfo(cxxToolChain, kit)) -{ -} - -ProjectUpdateInfo::ProjectUpdateInfo(ProjectExplorer::Project *project, - const ToolChainInfo &cToolChainInfo, - const ToolChainInfo &cxxToolChainInfo, - const RawProjectParts &rawProjectParts) - : project(project) - , rawProjectParts(rawProjectParts) - , cToolChain(nullptr) - , cxxToolChain(nullptr) - , cToolChainInfo(cToolChainInfo) - , cxxToolChainInfo(cxxToolChainInfo) + , cToolChain(kitInfo.cToolChain) + , cxxToolChain(kitInfo.cxxToolChain) + , cToolChainInfo(ToolChainInfo(cToolChain, kitInfo.sysRootPath)) + , cxxToolChainInfo(ToolChainInfo(cxxToolChain, kitInfo.sysRootPath)) { } diff --git a/src/plugins/cpptools/projectinfo.h b/src/plugins/cpptools/projectinfo.h index a69ffd8fdfe..4cf43d0ff6e 100644 --- a/src/plugins/cpptools/projectinfo.h +++ b/src/plugins/cpptools/projectinfo.h @@ -40,12 +40,14 @@ namespace CppTools { +class KitInfo; + class ToolChainInfo { public: ToolChainInfo() = default; ToolChainInfo(const ProjectExplorer::ToolChain *toolChain, - const ProjectExplorer::Kit *kit); + const QString &sysRootPath); bool isValid() const { return type.isValid(); } @@ -66,13 +68,7 @@ class CPPTOOLS_EXPORT ProjectUpdateInfo public: ProjectUpdateInfo() = default; ProjectUpdateInfo(ProjectExplorer::Project *project, - const ProjectExplorer::ToolChain *cToolChain, - const ProjectExplorer::ToolChain *cxxToolChain, - const ProjectExplorer::Kit *kit, - const RawProjectParts &rawProjectParts); - ProjectUpdateInfo(ProjectExplorer::Project *project, - const ToolChainInfo &cToolChainInfo, - const ToolChainInfo &cxxToolChainInfo, + const KitInfo &kitInfo, const RawProjectParts &rawProjectParts); bool isValid() const { return project && !rawProjectParts.isEmpty(); } diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 9f6e3847160..16b544fd910 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -438,8 +438,7 @@ void GenericProject::refreshCppCodeModel() rpp.setConfigFileName(m_configFileName); rpp.setFiles(m_files); - m_cppCodeModelUpdater->update( - {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, {rpp}}); + m_cppCodeModelUpdater->update({this, kitInfo, {rpp}}); } void GenericProject::updateDeploymentData() diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 614cd3ff182..67590599027 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -1052,8 +1052,7 @@ void QbsProject::updateCppCodeModel() } CppTools::GeneratedCodeModelSupport::update(m_extraCompilers); - m_cppCodeModelUpdater->update( - {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, rpps}); + m_cppCodeModelUpdater->update({this, kitInfo, rpps}); } void QbsProject::updateQmlJsCodeModel() diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 3eee5621761..a3fa4b3fc07 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -323,8 +323,7 @@ void QmakeProject::updateCppCodeModel() } CppTools::GeneratedCodeModelSupport::update(generators); - m_cppCodeModelUpdater->update( - {this, kitInfo.cToolChain, kitInfo.cxxToolChain, kitInfo.kit, rpps}); + m_cppCodeModelUpdater->update({this, kitInfo, rpps}); } void QmakeProject::updateQmlJSCodeModel()