Преглед изворни кода

LibHTML: Add TreeNode<T>::for_each_in_subtree(callback)

This helper invokes a callback for the node and each of its descendants
in pre-order.
Andreas Kling пре 5 година
родитељ
комит
b3a63e1d50
1 измењених фајлова са 9 додато и 0 уклоњено
  1. 9 0
      Libraries/LibHTML/TreeNode.h

+ 9 - 0
Libraries/LibHTML/TreeNode.h

@@ -53,6 +53,15 @@ public:
 
     bool is_child_allowed(const T&) const { return true; }
 
+    template<typename Callback>
+    void for_each_in_subtree(Callback callback)
+    {
+        callback(static_cast<T&>(*this));
+        for (auto* child = first_child(); child; child = child->next_sibling()) {
+            child->for_each_in_subtree(callback);
+        }
+    }
+
 protected:
     TreeNode() {}