LibWeb: Add NonDocumentTypeChildNode::next_element_in_pre_order()

This is handy for traversing only the elements in a document.
This commit is contained in:
Andreas Kling 2020-08-14 19:38:48 +02:00
parent a37331e236
commit 7698feb8ce
Notes: sideshowbarker 2024-07-19 03:38:22 +09:00

View file

@ -53,8 +53,18 @@ public:
return nullptr;
}
Element* next_element_in_pre_order()
{
for (auto* node = static_cast<NodeType*>(this)->next_in_pre_order(); node; node = node->next_in_pre_order()) {
if (is<Element>(*node))
return downcast<Element>(node);
}
return nullptr;
}
const Element* previous_element_sibling() const { return const_cast<NonDocumentTypeChildNode*>(this)->previous_element_sibling(); }
const Element* next_element_sibling() const { return const_cast<NonDocumentTypeChildNode*>(this)->next_element_sibling(); }
const Element* next_element_in_pre_order() const { return const_cast<NonDocumentTypeChildNode*>(this)->next_element_in_pre_order(); }
protected:
NonDocumentTypeChildNode() { }