LibCore: Add CObject::for_each_child(callback).

This commit is contained in:
Andreas Kling 2019-05-27 03:52:19 +02:00
parent 3654c33c56
commit 906fde8f8c
Notes: sideshowbarker 2024-07-19 13:55:29 +09:00
2 changed files with 13 additions and 3 deletions

View File

@ -100,9 +100,10 @@ void CObject::dump_tree(int indent)
}
printf("%s{%p}\n", class_name(), this);
for (auto* child : children()) {
child->dump_tree(indent + 2);
}
for_each_child([&] (auto& child) {
child.dump_tree(indent + 2);
return IterationDecision::Continue;
});
}
void CObject::deferred_invoke(Function<void(CObject&)> invokee)

View File

@ -20,6 +20,15 @@ public:
Vector<CObject*>& children() { return m_children; }
const Vector<CObject*>& children() const { return m_children; }
template<typename Callback>
void for_each_child(Callback callback)
{
for (auto* child : m_children) {
if (callback(*child) == IterationDecision::Abort)
return;
}
}
CObject* parent() { return m_parent; }
const CObject* parent() const { return m_parent; }