ProjectExplorer Nodes: Replace dynamic_cast with as* functions

The OS X linker makes using dynamic_casts across shared object
boundaries fail, so do all casting in the projectexplorer library
and provide functions to do it.

Task-number: QTCREATORBUG-13864
Change-Id: I0e13c0986f8342d83c3b838ffdd2dd7b8312b13c
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
Daniel Teske
2015-02-18 13:10:40 +01:00
parent d1e0324b22
commit 2ffd0e2d0d
10 changed files with 97 additions and 35 deletions

View File

@@ -198,6 +198,26 @@ void Node::emitNodeUpdated()
ProjectTree::instance()->emitNodeUpdated(this);
}
FileNode *Node::asFileNode()
{
return 0;
}
FolderNode *Node::asFolderNode()
{
return 0;
}
ProjectNode *Node::asProjectNode()
{
return 0;
}
SessionNode *Node::asSessionNode()
{
return 0;
}
void Node::setParentFolderNode(FolderNode *parentFolder)
{
m_folderNode = parentFolder;
@@ -235,6 +255,11 @@ bool FileNode::isGenerated() const
return m_generated;
}
FileNode *FileNode::asFileNode()
{
return this;
}
/*!
\class ProjectExplorer::FolderNode
@@ -494,6 +519,11 @@ void FolderNode::removeFolderNodes(const QList<FolderNode*> &subFolders)
ProjectTree::instance()->emitFoldersRemoved(this);
}
FolderNode *FolderNode::asFolderNode()
{
return this;
}
bool FolderNode::showInSimpleTree() const
{
return false;
@@ -672,6 +702,11 @@ void ProjectNode::removeProjectNodes(const QList<ProjectNode*> &subProjects)
}
}
ProjectNode *ProjectNode::asProjectNode()
{
return this;
}
/*!
\class ProjectExplorer::SessionNode
@@ -707,6 +742,11 @@ void SessionNode::projectDisplayNameChanged(Node *node)
ProjectTree::instance()->emitNodeSortKeyChanged(node);
}
SessionNode *SessionNode::asSessionNode()
{
return this;
}
QList<ProjectNode*> SessionNode::projectNodes() const
{
return m_projectNodes;