diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
commit | 9364f22aed35e1a1e9d07c121510f80be3ab0502 (patch) | |
tree | d49911209b132da58d838efa852daf28d516df21 /WebCore/dom/NodeIterator.h | |
parent | 87eb0cb35bad8784770ebc807e6c982432e47107 (diff) | |
download | external_webkit-9364f22aed35e1a1e9d07c121510f80be3ab0502.zip external_webkit-9364f22aed35e1a1e9d07c121510f80be3ab0502.tar.gz external_webkit-9364f22aed35e1a1e9d07c121510f80be3ab0502.tar.bz2 |
Initial Contribution
Diffstat (limited to 'WebCore/dom/NodeIterator.h')
-rw-r--r-- | WebCore/dom/NodeIterator.h | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/WebCore/dom/NodeIterator.h b/WebCore/dom/NodeIterator.h index b2a7c70..b737e57 100644 --- a/WebCore/dom/NodeIterator.h +++ b/WebCore/dom/NodeIterator.h @@ -1,9 +1,11 @@ /* + * This file is part of the DOM implementation for KDE. + * * Copyright (C) 1999 Lars Knoll (knoll@kde.org) * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no) * Copyright (C) 2001 Peter Kelly (pmk@post.com) * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) - * Copyright (C) 2004, 2008 Apple Inc. All rights reserved. + * Copyright (C) 2004 Apple Computer, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -26,47 +28,45 @@ #define NodeIterator_h #include "Traversal.h" -#include <wtf/PassRefPtr.h> namespace WebCore { + class Document; + typedef int ExceptionCode; class NodeIterator : public Traversal { public: - NodeIterator(PassRefPtr<Node>, unsigned whatToShow, PassRefPtr<NodeFilter>, bool expandEntityReferences); - virtual ~NodeIterator(); + NodeIterator(Node*, unsigned whatToShow, PassRefPtr<NodeFilter>, bool expandEntityReferences); + ~NodeIterator(); - Node* nextNode(ExceptionCode&, KJS::JSValue*& exception); - Node* previousNode(ExceptionCode&, KJS::JSValue*& exception); + Node* nextNode(ExceptionCode&); + Node* previousNode(ExceptionCode&); void detach(); - Node* referenceNode() const { return m_referenceNode.node.get(); } - bool pointerBeforeReferenceNode() const { return m_referenceNode.isPointerBeforeNode; } + Node* referenceNode() const { return m_referenceNode.get(); } + bool pointerBeforeReferenceNode() const { return m_beforeReferenceNode; } - // This function is called before any node is removed from the document tree. - void notifyBeforeNodeRemoval(Node* nodeToBeRemoved); - - // For non-JS bindings. Silently ignores the JavaScript exception if any. - Node* nextNode(ExceptionCode& ec) { KJS::JSValue* exception; return nextNode(ec, exception); } - Node* previousNode(ExceptionCode& ec) { KJS::JSValue* exception; return previousNode(ec, exception); } + /** + * This function has to be called if you delete a node from the + * document tree and you want the Iterator to react if there + * are any changes concerning it. + */ + void notifyBeforeNodeRemoval(Node* removed); private: - struct NodePointer { - RefPtr<Node> node; - bool isPointerBeforeNode; - NodePointer(); - NodePointer(PassRefPtr<Node>, bool); - void clear(); - bool moveToNext(Node* root); - bool moveToPrevious(Node* root); - }; - - void updateForNodeRemoval(Node* nodeToBeRemoved, NodePointer&) const; + void setReferenceNode(Node*); + void setPointerBeforeReferenceNode(bool flag = true) { m_beforeReferenceNode = flag; } + bool detached() const { return m_detached; } + void setDetached(bool flag = true) { m_detached = flag; } + Document* document() const { return m_doc.get(); } + Node* findNextNode(Node*) const; + Node* findPreviousNode(Node*) const; - NodePointer m_referenceNode; - NodePointer m_candidateNode; + RefPtr<Node> m_referenceNode; + bool m_beforeReferenceNode; bool m_detached; + RefPtr<Document> m_doc; }; } // namespace WebCore |