CMake: Speed up server-mode

Use a QSet to avoid having to search in a QList.

Change-Id: I2261a83acd3924a8483495e1f03322c7574a78a8
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Tobias Hunger
2017-03-24 16:30:05 +01:00
parent 5a13a2b5b4
commit 55a4a62797

View File

@@ -532,14 +532,11 @@ void ServerModeReader::extractCacheData(const QVariantMap &data)
void ServerModeReader::addCMakeLists(CMakeProjectNode *root, const QList<FileNode *> &cmakeLists)
{
const QDir baseDir = QDir(m_parameters.sourceDirectory.toString());
const QSet<Utils::FileName> cmakeDirs
= Utils::transform<QSet>(cmakeLists, [](const Node *n) { return n->filePath().parentDir(); });
root->addNestedNodes(cmakeLists, Utils::FileName(),
[&cmakeLists](const Utils::FileName &fp) -> ProjectExplorer::FolderNode * {
if (Utils::contains(cmakeLists, [&fp](const FileNode *fn) { return fn->filePath().parentDir() == fp; }))
return new CMakeListsNode(fp);
else
return new FolderNode(fp);
[&cmakeDirs](const Utils::FileName &fp) -> ProjectExplorer::FolderNode * {
return cmakeDirs.contains(fp) ? new CMakeListsNode(fp) : new FolderNode(fp);
});
}