summaryrefslogtreecommitdiffstats
path: root/WebCore/dom/NodeIterator.h
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
commit9364f22aed35e1a1e9d07c121510f80be3ab0502 (patch)
treed49911209b132da58d838efa852daf28d516df21 /WebCore/dom/NodeIterator.h
parent87eb0cb35bad8784770ebc807e6c982432e47107 (diff)
downloadexternal_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.h54
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