From 9364f22aed35e1a1e9d07c121510f80be3ab0502 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 21 Oct 2008 07:00:00 -0700 Subject: Initial Contribution --- WebCore/dom/NodeIterator.h | 54 +++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 27 deletions(-) (limited to 'WebCore/dom/NodeIterator.h') 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 namespace WebCore { + class Document; + typedef int ExceptionCode; class NodeIterator : public Traversal { public: - NodeIterator(PassRefPtr, unsigned whatToShow, PassRefPtr, bool expandEntityReferences); - virtual ~NodeIterator(); + NodeIterator(Node*, unsigned whatToShow, PassRefPtr, 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; - bool isPointerBeforeNode; - NodePointer(); - NodePointer(PassRefPtr, 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 m_referenceNode; + bool m_beforeReferenceNode; bool m_detached; + RefPtr m_doc; }; } // namespace WebCore -- cgit v1.1