[poincare] Add method 'hasNode' on TreeHandle

This commit is contained in:
Émilie Feral
2019-02-05 11:48:31 +01:00
committed by LeaNumworks
parent 4f3bd12fea
commit 79f0834f4e
3 changed files with 5 additions and 3 deletions

View File

@@ -107,6 +107,8 @@ protected:
void setIdentifierAndRetain(int newId);
void setTo(const TreeHandle & tr);
static bool hasNode(int identifier) { return identifier > TreeNode::NoNodeIdentifier; }
/* Hierarchy operations */
// Add
void addChildAtIndexInPlace(TreeHandle t, int index, int currentNumberOfChildren);

View File

@@ -16,7 +16,7 @@ TreeHandle TreeHandle::clone() const {
}
/* Hierarchy operations */
TreeNode * TreeHandle::node() const { assert(m_identifier != TreeNode::NoNodeIdentifier); return TreePool::sharedPool()->node(m_identifier); }
TreeNode * TreeHandle::node() const { assert(hasNode(m_identifier)); return TreePool::sharedPool()->node(m_identifier); }
size_t TreeHandle::size() const { return node()->deepSize(node()->numberOfChildren()); }
@@ -204,7 +204,7 @@ void TreeHandle::setTo(const TreeHandle & tr) {
}
void TreeHandle::release(int identifier) {
if (identifier == TreeNode::NoNodeIdentifier) {
if (!hasNode(identifier)) {
return;
}
TreeNode * node = TreePool::sharedPool()->node(identifier);

View File

@@ -31,7 +31,7 @@ void TreeNode::rename(int identifier, bool unregisterPreviousIdentifier) {
// Hierarchy
TreeNode * TreeNode::parent() const {
return m_parentIdentifier == NoNodeIdentifier ? nullptr : TreePool::sharedPool()->node(m_parentIdentifier);
return TreeHandle::hasNode(m_parentIdentifier) ? TreePool::sharedPool()->node(m_parentIdentifier) : nullptr;
}
TreeNode * TreeNode::root() {