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

@@ -44,20 +44,21 @@ namespace QmakeProjectManager {
*/
QmakePriFileNode::QmakePriFileNode(QmakeProject *project, QmakeProFileNode *qmakeProFileNode,
const FileName &filePath) :
const FileName &filePath, QmakePriFile *pf) :
ProjectNode(filePath),
m_project(project),
m_qmakeProFileNode(qmakeProFileNode)
m_qmakeProFileNode(qmakeProFileNode),
m_qmakePriFile(pf)
{ }
QmakePriFile *QmakePriFileNode::priFile() const
{
return m_project->rootProFile()->findPriFile(filePath());
return m_qmakePriFile;
}
bool QmakePriFileNode::deploysFolder(const QString &folder) const
{
QmakePriFile *pri = priFile();
const QmakePriFile *pri = priFile();
return pri ? pri->deploysFolder(folder) : false;
}
@@ -145,7 +146,7 @@ bool QmakePriFileNode::supportsAction(ProjectAction action, const Node *node) co
bool QmakePriFileNode::canAddSubProject(const QString &proFilePath) const
{
QmakePriFile *pri = priFile();
const QmakePriFile *pri = priFile();
return pri ? pri->canAddSubProject(proFilePath) : false;
}
@@ -213,8 +214,8 @@ QmakeProFileNode *QmakeProFileNode::findProFileFor(const FileName &fileName) con
\class QmakeProFileNode
Implements abstract ProjectNode class
*/
QmakeProFileNode::QmakeProFileNode(QmakeProject *project, const FileName &filePath) :
QmakePriFileNode(project, this, filePath)
QmakeProFileNode::QmakeProFileNode(QmakeProject *project, const FileName &filePath, QmakeProFile *pf) :
QmakePriFileNode(project, this, filePath, pf)
{ }
bool QmakeProFileNode::showInSimpleTree() const
@@ -224,7 +225,7 @@ bool QmakeProFileNode::showInSimpleTree() const
QmakeProFile *QmakeProFileNode::proFile() const
{
return m_project->rootProFile()->findProFile(filePath());
return static_cast<QmakeProFile*>(QmakePriFileNode::priFile());
}
FolderNode::AddNewInformation QmakeProFileNode::addNewInformation(const QStringList &files, Node *context) const