forked from qt-creator/qt-creator
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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user