From 693e2649a4dea7ed848372db7e81fad878bc0df4 Mon Sep 17 00:00:00 2001 From: Bernhard Beschow Date: Sun, 20 Jan 2019 15:25:18 +0100 Subject: [PATCH] CMakeProject: Prefer assignment to out parameter Also change method names from update...() to create...() and mark as const. This communicates that the objects the methods are called on are neither altered nor updated. Change-Id: I29e84dc398ded3ffcbf90741227362c6b4be2bf9 Reviewed-by: Tobias Hunger --- src/plugins/cmakeprojectmanager/builddirmanager.cpp | 8 ++++---- src/plugins/cmakeprojectmanager/builddirmanager.h | 2 +- src/plugins/cmakeprojectmanager/builddirreader.h | 2 +- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 3 +-- .../cmakeprojectmanager/servermodereader.cpp | 6 +++++- src/plugins/cmakeprojectmanager/servermodereader.h | 2 +- src/plugins/cmakeprojectmanager/tealeafreader.cpp | 13 ++++++++----- src/plugins/cmakeprojectmanager/tealeafreader.h | 8 ++++---- 8 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 68a7ceb6847..f17e356509d 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -298,11 +298,11 @@ void BuildDirManager::generateProjectTree(CMakeProjectNode *root, const QListgenerateProjectTree(root, allFiles); } -void BuildDirManager::updateCodeModel(CppTools::RawProjectParts &rpps) +CppTools::RawProjectParts BuildDirManager::createRawProjectParts() const { - QTC_ASSERT(!m_isHandlingError, return); - QTC_ASSERT(m_reader, return); - return m_reader->updateCodeModel(rpps); + QTC_ASSERT(!m_isHandlingError, return {}); + QTC_ASSERT(m_reader, return {}); + return m_reader->createRawProjectParts(); } void BuildDirManager::clearCache() diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.h b/src/plugins/cmakeprojectmanager/builddirmanager.h index 58fe11484cc..d55e05aed2c 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.h +++ b/src/plugins/cmakeprojectmanager/builddirmanager.h @@ -76,7 +76,7 @@ public: void generateProjectTree(CMakeProjectNode *root, const QList &allFiles) const; - void updateCodeModel(CppTools::RawProjectParts &rpps); + CppTools::RawProjectParts createRawProjectParts() const; QList takeBuildTargets() const; CMakeConfig takeCMakeConfiguration() const; diff --git a/src/plugins/cmakeprojectmanager/builddirreader.h b/src/plugins/cmakeprojectmanager/builddirreader.h index e10109701d7..3e600cfe398 100644 --- a/src/plugins/cmakeprojectmanager/builddirreader.h +++ b/src/plugins/cmakeprojectmanager/builddirreader.h @@ -67,7 +67,7 @@ public: virtual CMakeConfig takeParsedConfiguration() = 0; virtual void generateProjectTree(CMakeProjectNode *root, const QList &allFiles) = 0; - virtual void updateCodeModel(CppTools::RawProjectParts &rpps) = 0; + virtual CppTools::RawProjectParts createRawProjectParts() const = 0; signals: void isReadyNow() const; diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index b8c5e3ffcda..9865c93c794 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -285,8 +285,7 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) QtSupport::CppKitInfo kitInfo(this); QTC_ASSERT(kitInfo.isValid(), return); - CppTools::RawProjectParts rpps; - m_buildDirManager.updateCodeModel(rpps); + CppTools::RawProjectParts rpps = m_buildDirManager.createRawProjectParts(); for (CppTools::RawProjectPart &rpp : rpps) { rpp.setQtVersion(kitInfo.projectPartQtVersion); // TODO: Check if project actually uses Qt. diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index d022443b21b..9b293d0ff83 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -356,8 +356,10 @@ void ServerModeReader::generateProjectTree(CMakeProjectNode *root, std::move(cmakeFilesOther)); } -void ServerModeReader::updateCodeModel(CppTools::RawProjectParts &rpps) +CppTools::RawProjectParts ServerModeReader::createRawProjectParts() const { + CppTools::RawProjectParts rpps; + int counter = 0; for (const FileGroup *fg : qAsConst(m_fileGroups)) { // CMake users worked around Creator's inability of listing header files by creating @@ -399,6 +401,8 @@ void ServerModeReader::updateCodeModel(CppTools::RawProjectParts &rpps) : CppTools::ProjectPart::Library); rpps.append(rpp); } + + return rpps; } void ServerModeReader::handleReply(const QVariantMap &data, const QString &inReplyTo) diff --git a/src/plugins/cmakeprojectmanager/servermodereader.h b/src/plugins/cmakeprojectmanager/servermodereader.h index 9c29f2dcca2..a8e998c68c9 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.h +++ b/src/plugins/cmakeprojectmanager/servermodereader.h @@ -60,7 +60,7 @@ public: CMakeConfig takeParsedConfiguration() final; void generateProjectTree(CMakeProjectNode *root, const QList &allFiles) final; - void updateCodeModel(CppTools::RawProjectParts &rpps) final; + CppTools::RawProjectParts createRawProjectParts() const final; private: void handleReply(const QVariantMap &data, const QString &inReplyTo); diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index 62f3753db40..320b470e454 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -342,12 +342,13 @@ static void processCMakeIncludes(const CMakeBuildTarget &cbt, const ToolChain *t } } -void TeaLeafReader::updateCodeModel(CppTools::RawProjectParts &rpps) +CppTools::RawProjectParts TeaLeafReader::createRawProjectParts() const { const ToolChain *tcCxx = ToolChainManager::findToolChain(m_parameters.cxxToolChainId); const ToolChain *tcC = ToolChainManager::findToolChain(m_parameters.cToolChainId); const FileName sysroot = m_parameters.sysRoot; + CppTools::RawProjectParts rpps; QHash targetDataCacheCxx; QHash targetDataCacheC; foreach (const CMakeBuildTarget &cbt, m_buildTargets) { @@ -390,6 +391,8 @@ void TeaLeafReader::updateCodeModel(CppTools::RawProjectParts &rpps) : CppTools::ProjectPart::Library); rpps.append(rpp); } + + return rpps; } void TeaLeafReader::cleanUpProcess() @@ -575,7 +578,7 @@ void TeaLeafReader::processCMakeError() QStringList TeaLeafReader::getFlagsFor(const CMakeBuildTarget &buildTarget, QHash &cache, - Id lang) + Id lang) const { // check cache: auto it = cache.constFind(buildTarget.title); @@ -594,7 +597,7 @@ QStringList TeaLeafReader::getFlagsFor(const CMakeBuildTarget &buildTarget, bool TeaLeafReader::extractFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash &cache, - Id lang) + Id lang) const { QString flagsPrefix; @@ -649,7 +652,7 @@ bool TeaLeafReader::extractFlagsFromMake(const CMakeBuildTarget &buildTarget, bool TeaLeafReader::extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, QHash &cache, - Id lang) + Id lang) const { Q_UNUSED(buildTarget) if (!cache.isEmpty()) // We fill the cache in one go! @@ -667,7 +670,7 @@ bool TeaLeafReader::extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, // found // Get "all" target's working directory QByteArray ninjaFile; - QString buildNinjaFile = takeBuildTargets().at(0).workingDirectory.toString(); + QString buildNinjaFile = m_buildTargets.at(0).workingDirectory.toString(); buildNinjaFile += "/build.ninja"; QFile buildNinja(buildNinjaFile); if (buildNinja.exists()) { diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.h b/src/plugins/cmakeprojectmanager/tealeafreader.h index df3ec8e59d0..142ea4b5afb 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.h +++ b/src/plugins/cmakeprojectmanager/tealeafreader.h @@ -57,7 +57,7 @@ public: CMakeConfig takeParsedConfiguration() final; void generateProjectTree(CMakeProjectNode *root, const QList &allFiles) final; - void updateCodeModel(CppTools::RawProjectParts &rpps) final; + CppTools::RawProjectParts createRawProjectParts() const final; private: void cleanUpProcess(); @@ -69,9 +69,9 @@ private: void processCMakeOutput(); void processCMakeError(); - QStringList getFlagsFor(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang); - bool extractFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang); - bool extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang); + QStringList getFlagsFor(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang) const; + bool extractFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang) const; + bool extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang) const; Utils::QtcProcess *m_cmakeProcess = nullptr;