Project: Use std::unique_ptr for root project node

Change-Id: Ice101fa57c5ee09a58dc6c99f6716fa4919ade59
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Tobias Hunger
2018-03-14 15:21:51 +01:00
parent 39306d55eb
commit 530fc225fa

View File

@@ -162,7 +162,7 @@ public:
bool m_isParsing = false; bool m_isParsing = false;
bool m_hasParsingData = false; bool m_hasParsingData = false;
std::unique_ptr<Core::IDocument> m_document; std::unique_ptr<Core::IDocument> m_document;
ProjectNode *m_rootProjectNode = nullptr; std::unique_ptr<ProjectNode> m_rootProjectNode;
std::unique_ptr<ContainerNode> m_containerNode; std::unique_ptr<ContainerNode> m_containerNode;
QList<Target *> m_targets; QList<Target *> m_targets;
Target *m_activeTarget = nullptr; Target *m_activeTarget = nullptr;
@@ -184,10 +184,8 @@ ProjectPrivate::~ProjectPrivate()
{ {
qDeleteAll(m_targets); qDeleteAll(m_targets);
// Make sure our root node is null when deleting // Make sure our root node is null when deleting the actual node
ProjectNode *oldNode = m_rootProjectNode; std::unique_ptr<ProjectNode> oldNode = std::move(m_rootProjectNode);
m_rootProjectNode = nullptr;
delete oldNode;
} }
Project::Project(const QString &mimeType, const Utils::FileName &fileName, Project::Project(const QString &mimeType, const Utils::FileName &fileName,
@@ -508,7 +506,7 @@ void Project::setId(Core::Id id)
void Project::setRootProjectNode(ProjectNode *root) void Project::setRootProjectNode(ProjectNode *root)
{ {
if (d->m_rootProjectNode == root) if (d->m_rootProjectNode.get() == root)
return; return;
if (root && root->nodes().isEmpty()) { if (root && root->nodes().isEmpty()) {
@@ -524,13 +522,11 @@ void Project::setRootProjectNode(ProjectNode *root)
root->setParentFolderNode(d->m_containerNode.get()); root->setParentFolderNode(d->m_containerNode.get());
} }
ProjectNode *oldNode = d->m_rootProjectNode; std::unique_ptr<ProjectNode> oldNode = std::move(d->m_rootProjectNode);
d->m_rootProjectNode = root; d->m_rootProjectNode.reset(root);
if (oldNode || root) if (oldNode || root)
handleSubTreeChanged(d->m_containerNode.get()); handleSubTreeChanged(d->m_containerNode.get());
delete oldNode;
} }
void Project::handleSubTreeChanged(FolderNode *node) void Project::handleSubTreeChanged(FolderNode *node)
@@ -670,7 +666,7 @@ Utils::FileName Project::projectDirectory(const Utils::FileName &top)
ProjectNode *Project::rootProjectNode() const ProjectNode *Project::rootProjectNode() const
{ {
return d->m_rootProjectNode; return d->m_rootProjectNode.get();
} }
ContainerNode *Project::containerNode() const ContainerNode *Project::containerNode() const