mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 04:25:13 +00:00
LibHTML: Add TreeNode::next_in_pre_order()
This function allows you to traverse in pre-order without recursing.
This commit is contained in:
parent
17752b2973
commit
1466a7364c
Notes:
sideshowbarker
2024-07-19 11:22:14 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/1466a7364c1
1 changed files with 20 additions and 0 deletions
|
@ -53,6 +53,26 @@ public:
|
|||
|
||||
bool is_child_allowed(const T&) const { return true; }
|
||||
|
||||
T* next_in_pre_order()
|
||||
{
|
||||
if (first_child())
|
||||
return first_child();
|
||||
T* node;
|
||||
if (!(node = next_sibling())) {
|
||||
node = parent();
|
||||
while (node && !node->next_sibling())
|
||||
node = node->parent();
|
||||
if (node)
|
||||
node = node->next_sibling();
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
const T* next_in_pre_order() const
|
||||
{
|
||||
return const_cast<TreeNode*>(this)->next_in_pre_order();
|
||||
}
|
||||
|
||||
template<typename Callback>
|
||||
IterationDecision for_each_in_subtree(Callback callback) const
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue