diff options
Diffstat (limited to 'Source/WebCore/dom/TreeWalker.h')
-rw-r--r-- | Source/WebCore/dom/TreeWalker.h | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/Source/WebCore/dom/TreeWalker.h b/Source/WebCore/dom/TreeWalker.h index 6cf575be6..7270f2df8 100644 --- a/Source/WebCore/dom/TreeWalker.h +++ b/Source/WebCore/dom/TreeWalker.h @@ -22,55 +22,43 @@ * */ -#ifndef TreeWalker_h -#define TreeWalker_h +#pragma once #include "NodeFilter.h" #include "ScriptWrappable.h" #include "Traversal.h" -#include <wtf/PassRefPtr.h> #include <wtf/RefCounted.h> namespace WebCore { - typedef int ExceptionCode; - class TreeWalker : public ScriptWrappable, public RefCounted<TreeWalker>, public NodeIteratorBase { public: - static PassRefPtr<TreeWalker> create(PassRefPtr<Node> rootNode, unsigned whatToShow, PassRefPtr<NodeFilter> filter, bool expandEntityReferences) + static Ref<TreeWalker> create(Node& rootNode, unsigned long whatToShow, RefPtr<NodeFilter>&& filter) { - return adoptRef(new TreeWalker(rootNode, whatToShow, filter, expandEntityReferences)); + return adoptRef(*new TreeWalker(rootNode, whatToShow, WTFMove(filter))); } - Node* currentNode() const { return m_current.get(); } - void setCurrentNode(PassRefPtr<Node>, ExceptionCode&); + Node& currentNode() { return m_current.get(); } + const Node& currentNode() const { return m_current.get(); } - Node* parentNode(JSC::ExecState*); - Node* firstChild(JSC::ExecState*); - Node* lastChild(JSC::ExecState*); - Node* previousSibling(JSC::ExecState*); - Node* nextSibling(JSC::ExecState*); - Node* previousNode(JSC::ExecState*); - Node* nextNode(JSC::ExecState*); + WEBCORE_EXPORT void setCurrentNode(Node&); - // Do not call these functions. They are just scaffolding to support the Objective-C bindings. - // They operate in the main thread normal world, and they swallow JS exceptions. - Node* parentNode() { return parentNode(execStateFromNode(mainThreadNormalWorld(), m_current.get())); } - Node* firstChild() { return firstChild(execStateFromNode(mainThreadNormalWorld(), m_current.get())); } - Node* lastChild() { return lastChild(execStateFromNode(mainThreadNormalWorld(), m_current.get())); } - Node* previousSibling() { return previousSibling(execStateFromNode(mainThreadNormalWorld(), m_current.get())); } - Node* nextSibling() { return nextSibling(execStateFromNode(mainThreadNormalWorld(), m_current.get())); } - Node* previousNode() { return previousNode(execStateFromNode(mainThreadNormalWorld(), m_current.get())); } - Node* nextNode() { return nextNode(execStateFromNode(mainThreadNormalWorld(), m_current.get())); } + WEBCORE_EXPORT Node* parentNode(); + WEBCORE_EXPORT Node* firstChild(); + WEBCORE_EXPORT Node* lastChild(); + WEBCORE_EXPORT Node* previousSibling(); + WEBCORE_EXPORT Node* nextSibling(); + WEBCORE_EXPORT Node* previousNode(); + WEBCORE_EXPORT Node* nextNode(); private: - TreeWalker(PassRefPtr<Node>, unsigned whatToShow, PassRefPtr<NodeFilter>, bool expandEntityReferences); + TreeWalker(Node&, unsigned long whatToShow, RefPtr<NodeFilter>&&); + enum class SiblingTraversalType { Previous, Next }; + template<SiblingTraversalType> Node* traverseSiblings(); - Node* setCurrent(PassRefPtr<Node>); + Node* setCurrent(Ref<Node>&&); - RefPtr<Node> m_current; + Ref<Node> m_current; }; } // namespace WebCore - -#endif // TreeWalker_h |