logic: Simplified node bundling by collecting relevant data upfront

This commit is contained in:
Eberhard Graether
2016-05-13 14:17:20 +02:00
parent c61efbbcde
commit 7bb40f2630
6 changed files with 143 additions and 231 deletions
+4 -3
View File
@@ -309,15 +309,16 @@ void Node::forEachChildNode(std::function<void(Node*)> func) const
);
}
void Node::forEachChildNodeRecursive(std::function<void(Node*)> func) const
void Node::forEachNodeRecursive(std::function<void(const Node*)> func) const
{
func(this);
forEachEdgeOfType(Edge::EDGE_MEMBER,
[func, this](Edge* e)
{
if (this != e->getTo())
{
func(e->getTo());
e->getTo()->forEachChildNode(func);
e->getTo()->forEachNodeRecursive(func);
}
}
);
+1 -1
View File
@@ -86,7 +86,7 @@ public:
void forEachEdge(std::function<void(Edge*)> func) const;
void forEachEdgeOfType(Edge::EdgeTypeMask mask, std::function<void(Edge*)> func) const;
void forEachChildNode(std::function<void(Node*)> func) const;
void forEachChildNodeRecursive(std::function<void(Node*)> func) const;
void forEachNodeRecursive(std::function<void(const Node*)> func) const;
bool hasReferences() const;