Use a 1-byte enum class for TextDirection
[WebKit-https.git] / Source / WebCore / dom / Traversal.h
index 8b4f764..65c6ba5 100644 (file)
  *
  */
 
-#ifndef Traversal_h
-#define Traversal_h
+#pragma once
 
-#include "ScriptState.h"
+#include "ExceptionOr.h"
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-    class Node;
-    class NodeFilter;
+class Node;
+class NodeFilter;
 
-    class Traversal {
-    public:
-        Node* root() const { return m_root.get(); }
-        unsigned whatToShow() const { return m_whatToShow; }
-        NodeFilter* filter() const { return m_filter.get(); }
-        bool expandEntityReferences() const { return m_expandEntityReferences; }
+class NodeIteratorBase {
+public:
+    Node& root() { return m_root.get(); }
+    const Node& root() const { return m_root.get(); }
 
-    protected:
-        Traversal(PassRefPtr<Node>, unsigned whatToShow, PassRefPtr<NodeFilter>, bool expandEntityReferences);
-        short acceptNode(ScriptState*, Node*) const;
+    unsigned whatToShow() const { return m_whatToShow; }
+    NodeFilter* filter() const { return m_filter.get(); }
 
-    private:
-        RefPtr<Node> m_root;
-        unsigned m_whatToShow;
-        RefPtr<NodeFilter> m_filter;
-        bool m_expandEntityReferences;
-    };
+protected:
+    NodeIteratorBase(Node&, unsigned whatToShow, RefPtr<NodeFilter>&&);
+    ExceptionOr<unsigned short> acceptNode(Node&);
 
-} // namespace WebCore
+private:
+    Ref<Node> m_root;
+    RefPtr<NodeFilter> m_filter;
+    unsigned m_whatToShow;
+    bool m_isActive { false };
+};
 
-#endif // Traversal_h
+} // namespace WebCore