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 <tobias.hunger@qt.io>
This commit is contained in:
Bernhard Beschow
2019-01-20 15:25:18 +01:00
parent e3522fd718
commit 693e2649a4
8 changed files with 25 additions and 19 deletions

View File

@@ -298,11 +298,11 @@ void BuildDirManager::generateProjectTree(CMakeProjectNode *root, const QList<co
m_reader->generateProjectTree(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()

View File

@@ -76,7 +76,7 @@ public:
void generateProjectTree(CMakeProjectNode *root,
const QList<const ProjectExplorer::FileNode *> &allFiles) const;
void updateCodeModel(CppTools::RawProjectParts &rpps);
CppTools::RawProjectParts createRawProjectParts() const;
QList<CMakeBuildTarget> takeBuildTargets() const;
CMakeConfig takeCMakeConfiguration() const;

View File

@@ -67,7 +67,7 @@ public:
virtual CMakeConfig takeParsedConfiguration() = 0;
virtual void generateProjectTree(CMakeProjectNode *root,
const QList<const ProjectExplorer::FileNode *> &allFiles) = 0;
virtual void updateCodeModel(CppTools::RawProjectParts &rpps) = 0;
virtual CppTools::RawProjectParts createRawProjectParts() const = 0;
signals:
void isReadyNow() const;

View File

@@ -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.

View File

@@ -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)

View File

@@ -60,7 +60,7 @@ public:
CMakeConfig takeParsedConfiguration() final;
void generateProjectTree(CMakeProjectNode *root,
const QList<const ProjectExplorer::FileNode *> &allFiles) final;
void updateCodeModel(CppTools::RawProjectParts &rpps) final;
CppTools::RawProjectParts createRawProjectParts() const final;
private:
void handleReply(const QVariantMap &data, const QString &inReplyTo);

View File

@@ -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<QString, QStringList> targetDataCacheCxx;
QHash<QString, QStringList> 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<QString, QStringList> &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<QString, QStringList> &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<QString, QStringList> &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()) {

View File

@@ -57,7 +57,7 @@ public:
CMakeConfig takeParsedConfiguration() final;
void generateProjectTree(CMakeProjectNode *root,
const QList<const ProjectExplorer::FileNode *> &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<QString, QStringList> &cache, Core::Id lang);
bool extractFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash<QString, QStringList> &cache, Core::Id lang);
bool extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, QHash<QString, QStringList> &cache, Core::Id lang);
QStringList getFlagsFor(const CMakeBuildTarget &buildTarget, QHash<QString, QStringList> &cache, Core::Id lang) const;
bool extractFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash<QString, QStringList> &cache, Core::Id lang) const;
bool extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, QHash<QString, QStringList> &cache, Core::Id lang) const;
Utils::QtcProcess *m_cmakeProcess = nullptr;