Qmake: Make finding pro-files fast

Finding the right pro-file was surprisingly slow. Make that fast again.

Task-number: QTCREATORBUG-19131
Change-Id: I4b5a8887cb13c36273a553f935a00d87cee4a7b5
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Tobias Hunger
2017-10-30 16:59:46 +01:00
parent 130a32cbb3
commit 21b0e7c37e
5 changed files with 31 additions and 20 deletions

View File

@@ -199,12 +199,14 @@ QmakePriFile *QmakePriFile::findPriFile(const FileName &fileName)
{
if (fileName == filePath())
return this;
for (QmakePriFile *n : children()) {
if (QmakePriFile *result = n->findPriFile(fileName))
return result;
}
return nullptr;
return findOrDefault(m_children, [&fileName](QmakePriFile *pf) { return pf->findPriFile(fileName); });
}
const QmakePriFile *QmakePriFile::findPriFile(const FileName &fileName) const
{
if (fileName == filePath())
return this;
return findOrDefault(m_children, [&fileName](const QmakePriFile *pf) { return pf->findPriFile(fileName); });
}
void QmakePriFile::makeEmpty()
@@ -1010,6 +1012,11 @@ QmakeProFile *QmakeProFile::findProFile(const FileName &fileName)
return dynamic_cast<QmakeProFile *>(findPriFile(fileName));
}
const QmakeProFile *QmakeProFile::findProFile(const FileName &fileName) const
{
return dynamic_cast<const QmakeProFile *>(findPriFile(fileName));
}
QString QmakeProFile::makefile() const
{
return singleVariableValue(Variable::Makefile);