diff options
Diffstat (limited to 'khtml/dom/dom2_traversal.h')
-rw-r--r-- | khtml/dom/dom2_traversal.h | 617 |
1 files changed, 0 insertions, 617 deletions
diff --git a/khtml/dom/dom2_traversal.h b/khtml/dom/dom2_traversal.h deleted file mode 100644 index ea3d3521b..000000000 --- a/khtml/dom/dom2_traversal.h +++ /dev/null @@ -1,617 +0,0 @@ -/* - * This file is part of the DOM implementation for KDE. - * - * (C) 1999 Lars Knoll (knoll@kde.org) - * (C) 2000 Frederik Holljen (frederik.holljen@hig.no) - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * This file includes excerpts from the Document Object Model (DOM) - * Level 2 Specification (Candidate Recommendation) - * http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510/ - * Copyright © 2000 W3C® (MIT, INRIA, Keio), All Rights Reserved. - * - */ -#ifndef _dom2_traversal_h_ -#define _dom2_traversal_h_ -#include <dom/dom_node.h> -#include <dom/dom_misc.h> - -#include <tdelibs_export.h> - -namespace DOM { -class Node; -class NodeFilter; -class NodeImpl; -class NodeIteratorImpl; -class NodeFilterImpl; -class TreeWalkerImpl; -class CustomNodeFilter; -class CustomNodeFilterImpl; - -/** - * NodeIterators are used to step through a set of nodes, e.g. the set - * of nodes in a NodeList, the document subtree governed by a - * particular node, the results of a query, or any other set of nodes. - * The set of nodes to be iterated is determined by the implementation - * of the NodeIterator. DOM Level 2 specifies a single NodeIterator - * implementation for document-order traversal of a document subtree. - * Instances of these iterators are created by calling - * DocumentTraversal.createNodeIterator(). - * - * Any Iterator that returns nodes may implement the - * \c NodeIterator interface. Users and vendor libraries may also - * choose to create Iterators that implement the \c NodeIterator - * interface. - * - */ -class KHTML_EXPORT NodeIterator -{ - friend class NodeIteratorImpl; - friend class Document; -public: - NodeIterator(); - NodeIterator(const NodeIterator &other); - - NodeIterator & operator = (const NodeIterator &other); - - ~NodeIterator(); - - /** - * The root node of the NodeIterator, as specified when it was created. - */ - Node root(); - - /** - * This attribute determines which node types are presented via the - * iterator. The available set of constants is defined in the NodeFilter - * interface. Nodes not accepted by whatToShow will be skipped, but their - * children may still be considered. Note that this skip takes precedence - * over the filter, if any. - */ - unsigned long whatToShow(); - - /** - * The NodeFilter used to screen nodes. - */ - NodeFilter filter(); - - /** - * The value of this flag determines whether the children of entity - * reference nodes are visible to the iterator. If false, they and - * their descendents will be rejected. Note that this rejection takes - * precedence over whatToShow and the filter. Also note that this is - * currently the only situation where NodeIterators may reject a complete - * subtree rather than skipping individual nodes. - * - * To produce a view of the document that has entity references expanded - * and does not expose the entity reference node itself, use the whatToShow - * flags to hide the entity reference node and set expandEntityReferences to - * true when creating the iterator. To produce a view of the document that - * has entity reference nodes but no entity expansion, use the whatToShow - * flags to show the entity reference node and set expandEntityReferences to - * false. - */ - bool expandEntityReferences(); - - /** - * Returns the next node in the set and advances the position of - * the Iterator in the set. After a NodeIterator is created, the - * first call to nextNode() returns the first node in the set. - * - * @return The next \c Node in the set being iterated - * over, or \c null if there are no more members in - * that set. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node nextNode(); - - /** - * Returns the previous node in the set and moves the position of - * the Iterator backwards in the set. - * - * @return The previous \c Node in the set being - * iterated over, or \c null if there are no more - * members in that set. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node previousNode(); - - /** - * Detaches the NodeIterator from the set which it iterated over, - * releasing any computational resources and placing the iterator in the - * INVALID state. After detach has been invoked, calls to nextNode or - * previousNode will raise the exception INVALID_STATE_ERR. - */ - void detach(); - - /** - * @internal - * not part of the DOM - */ - NodeIteratorImpl *handle() const; - bool isNull() const; - -protected: - NodeIteratorImpl *impl; - NodeIterator(NodeIteratorImpl *i); -}; - - -/** - * Filters are objects that know how to "filter out" nodes. If an - * Iterator or \c TreeWalker is given a filter, before it - * returns the next node, it applies the filter. If the filter says to - * accept the node, the Iterator returns it; otherwise, the Iterator - * looks for the next node and pretends that the node that was - * rejected was not there. - * - * The DOM does not provide any filters. Filter is just an interface - * that users can implement to provide their own filters. - * - * Filters do not need to know how to iterate, nor do they need to - * know anything about the data structure that is being iterated. This - * makes it very easy to write filters, since the only thing they have - * to know how to do is evaluate a single node. One filter may be used - * with a number of different kinds of Iterators, encouraging code - * reuse. - * - * To create your own custom NodeFilter, define a subclass of - * CustomNodeFilter which overrides the acceptNode() method and assign - * an instance of it to the NodeFilter. For more details see the - * CustomNodeFilter class - */ -class KHTML_EXPORT NodeFilter -{ - friend class NodeIterator; - friend class NodeIteratorImpl; - friend class TreeWalker; - friend class TreeWalkerImpl; - friend class NodeFilterImpl; -public: - NodeFilter(); - NodeFilter(const NodeFilter &other); - NodeFilter(NodeFilterImpl *i); - - virtual NodeFilter & operator = (const NodeFilter &other); - - virtual ~NodeFilter(); - /** - * The following constants are returned by the acceptNode() - * method: - * - */ - enum AcceptCode { - FILTER_ACCEPT = 1, - FILTER_REJECT = 2, - FILTER_SKIP = 3 - }; - - /** - * These are the available values for the whatToShow parameter. - * They are the same as the set of possible types for Node, and - * their values are derived by using a bit position corresponding - * to the value of NodeType for the equivalent node type. - * - */ - enum ShowCode { - SHOW_ALL = 0xFFFFFFFF, - SHOW_ELEMENT = 0x00000001, - SHOW_ATTRIBUTE = 0x00000002, - SHOW_TEXT = 0x00000004, - SHOW_CDATA_SECTION = 0x00000008, - SHOW_ENTITY_REFERENCE = 0x00000010, - SHOW_ENTITY = 0x00000020, - SHOW_PROCESSING_INSTRUCTION = 0x00000040, - SHOW_COMMENT = 0x00000080, - SHOW_DOCUMENT = 0x00000100, - SHOW_DOCUMENT_TYPE = 0x00000200, - SHOW_DOCUMENT_FRAGMENT = 0x00000400, - SHOW_NOTATION = 0x00000800 - }; - - /** - * Test whether a specified node is visible in the logical view of - * a TreeWalker or NodeIterator. This function will be called by - * the implementation of TreeWalker and NodeIterator; it is not - * intended to be called directly from user code. - * - * @param n The node to check to see if it passes the filter or - * not. - * - * @return a constant to determine whether the node is accepted, - * rejected, or skipped, as defined <a - * href="#Traversal-NodeFilter-acceptNode-constants"> above </a> . - * - */ - virtual short acceptNode (const Node &n); - - /** - * @internal - * not part of the DOM - */ - virtual NodeFilterImpl *handle() const; - virtual bool isNull() const; - - void setCustomNodeFilter(CustomNodeFilter *custom); - CustomNodeFilter *customNodeFilter(); - static NodeFilter createCustom(CustomNodeFilter *custom); - -protected: - NodeFilterImpl *impl; -}; - -/** - * CustomNodeFilter can be used to define your own NodeFilter for use - * with NodeIterators and TreeWalkers. You can create a custom filter - * by doing the following: - * - * class MyCustomNodeFilter { - * ..... - * virtual short acceptNode (const Node &n); - * ..... - * } - * - * Then in your program: - * - * short MyCustomNodeFilter::acceptNode (const Node &n) - * { - * if (condition) - * return NodeFilter::FILTER_ACCEPT; - * else - * .... - * } - * - * - * MyCustomFilter *filter = new MyCustomFilter(); - * NodeFilter nf = NodeFilter::createCustom(filter); - * NodeIterator ni = document.createNodeIterator(document,NodeFilter.SHOW_ALL,nf,false); - * - * The default implementation of acceptNode() returns NodeFilter::FILTER_ACCEPT - * for all nodes. - * - */ - -class KHTML_EXPORT CustomNodeFilter : public DomShared { -public: - CustomNodeFilter(); - virtual ~CustomNodeFilter(); - virtual short acceptNode (const Node &n); - virtual bool isNull(); - - /** - * @internal - * not part of the DOM - * - * Returns a name specifying the type of custom node filter. Useful for checking - * if an custom node filter is of a particular sublass. - * - */ - virtual DOMString customNodeFilterType(); - -protected: - /** - * @internal - * Reserved. Do not use in your subclasses. - */ - CustomNodeFilterImpl *impl; -}; - -/** - * \c TreeWalker objects are used to navigate a document - * tree or subtree using the view of the document defined by its - * \c whatToShow flags and any filters that are defined - * for the \c TreeWalker . Any function which performs - * navigation using a \c TreeWalker will automatically - * support any view defined by a \c TreeWalker . - * - * Omitting nodes from the logical view of a subtree can result in a - * structure that is substantially different from the same subtree in - * the complete, unfiltered document. Nodes that are siblings in the - * TreeWalker view may be children of different, widely separated - * nodes in the original view. For instance, consider a Filter that - * skips all nodes except for Text nodes and the root node of a - * document. In the logical view that results, all text nodes will be - * siblings and appear as direct children of the root node, no matter - * how deeply nested the structure of the original document. - * - */ -class KHTML_EXPORT TreeWalker -{ - friend class Document; - friend class TreeWalkerImpl; -public: - TreeWalker(); - TreeWalker(const TreeWalker &other); - - TreeWalker & operator = (const TreeWalker &other); - - ~TreeWalker(); - - - /** - * The root node of the TreeWalker, as specified when it was created. - */ - Node root(); - - /** - * This attribute determines which node types are presented via the - * TreeWalker. The available set of constants is defined in the NodeFilter - * interface. Nodes not accepted by whatToShow will be skipped, but their - * children may still be considered. Note that this skip takes precedence - * over the filter, if any. - */ - unsigned long whatToShow(); - - /** - * The filter used to screen nodes. - */ - NodeFilter filter(); - - /** - * The value of this flag determines whether the children of entity - * reference nodes are visible to the TreeWalker. If false, they and their - * descendents will be rejected. Note that this rejection takes precedence - * over whatToShow and the filter, if any. - * - * To produce a view of the document that has entity references expanded - * and does not expose the entity reference node itself, use the whatToShow - * flags to hide the entity reference node and set expandEntityReferences - * to true when creating the TreeWalker. To produce a view of the document - * that has entity reference nodes but no entity expansion, use the - * whatToShow flags to show the entity reference node and set - * expandEntityReferences to false. - */ - bool expandEntityReferences(); - - /** - * The node at which the TreeWalker is currently positioned. - * Alterations to the DOM tree may cause the current node to no longer be - * accepted by the TreeWalker's associated filter. currentNode may also be - * explicitly set to any node, whether or not it is within the subtree - * specified by the root node or would be accepted by the filter and - * whatToShow flags. Further traversal occurs relative to currentNode even - * if it is not part of the current view, by applying the filters in the - * requested direction; if no traversal is possible, currentNode is not changed. - * - * @exception DOMException - * NOT_SUPPORTED_ERR: Raised if an attempt is made to set currentNode to null. - */ - Node currentNode(); - - /** - * see currentNode - */ - void setCurrentNode(const Node &_currentNode); - - /** - * Moves to and returns the parent node of the current node. If - * there is no parent node, or if the current node is the root - * node from which this TreeWalker was created, retains the - * current position and returns null. - * - * @return The new parent node, or null if the current node has no - * parent in the TreeWalker's logical view. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node parentNode(); - - /** - * Moves the \c TreeWalker to the first child of the - * current node, and returns the new node. If the current node has - * no children, returns \c null , and retains the - * current node. - * - * @return The new node, or \c null if the current - * node has no children. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node firstChild(); - - /** - * Moves the \c TreeWalker to the last child of the - * current node, and returns the new node. If the current node has - * no children, returns \c null , and retains the - * current node. - * - * @return The new node, or \c null if the current - * node has no children. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node lastChild(); - - /** - * Moves the \c TreeWalker to the previous sibling of - * the current node, and returns the new node. If the current node - * has no previous sibling, returns \c null , and - * retains the current node. - * - * @return The new node, or \c null if the current - * node has no previous sibling. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node previousSibling(); - - /** - * Moves the \c TreeWalker to the next sibling of the - * current node, and returns the new node. If the current node has - * no next sibling, returns \c null , and retains the - * current node. - * - * @return The new node, or \c null if the current - * node has no next sibling. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node nextSibling(); - - /** - * Moves the \c TreeWalker to the previous node in - * document order relative to the current node, and returns the - * new node. If the current node has no previous node, returns - * \c null , and retains the current node. - * - * @return The new node, or \c null if the current - * node has no previous node. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node previousNode(); - - /** - * Moves the \c TreeWalker to the next node in - * document order relative to the current node, and returns the - * new node. If the current node has no next node, returns - * \c null , and retains the current node. - * - * @return The new node, or \c null if the current - * node has no next node. - * - * @exception Exceptions from user code - * Any exceptions raised by a user-written Filter will propagate - * through. - * - */ - Node nextNode(); - - /** - * @internal - * not part of the DOM - */ - TreeWalkerImpl *handle() const; - bool isNull() const; - -protected: - TreeWalker(TreeWalkerImpl *i); - TreeWalkerImpl *impl; -}; - - -// ### not sure if this this class is really needed - both methods are in -// Document - -/** - * \c DocumentTraversal contains methods that creates - * Iterators to traverse a node and its children in document order - * (depth first, pre-order traversal, which is equivalent to the order - * in which the start tags occur in the text representation of the - * document). - * - * -class DocumentTraversal // : public Document ? -{ -public: - DocumentTraversal(); - DocumentTraversal(const DocumentTraversal &other); - - DocumentTraversal & operator = (const DocumentTraversal &other); - - ~DocumentTraversal(); - - ** - * - * - * @param root The node which will be iterated together with its - * children. The iterator is initially positioned just before this - * node. The whatToShow flags and the filter, if any, are not - * considered when setting this position. - * - * @param whatToShow This flag specifies which node types may - * appear in the logical view of the tree presented by the - * Iterator. See the description of Iterator for the set of - * possible values. These flags can be combined using OR. - * - * These flags can be combined using \c OR . - * - * @param filter The Filter to be used with this TreeWalker, or - * null to indicate no filter. - * - * @param entityReferenceExpansion The value of this flag - * determines whether entity reference nodes are expanded. - * - * @return The newly created \c NodeIterator . - * - * - NodeIterator createNodeIterator ( const Node &root, long whatToShow, - const NodeFilter &filter, bool entityReferenceExpansion ); - - ** - * Create a new TreeWalker over the subtree rooted by the - * specified node. - * - * @param root The node which will serve as the root for the - * \c TreeWalker . The currentNode of the TreeWalker - * is set to this node. The whatToShow flags and the NodeFilter - * are not considered when setting this value; any node type will - * be accepted as the root. The root must not be null. - * - * @param whatToShow This flag specifies which node types may - * appear in the logical view of the tree presented by the - * Iterator. See the description of TreeWalker for the set of - * possible values. These flags can be combined using OR. - * - * These flags can be combined using \c OR . - * - * @param filter The Filter to be used with this TreeWalker, or - * null to indicate no filter. - * - * @param entityReferenceExpansion The value of this flag - * determines whether entity reference nodes are expanded. - * - * @return The newly created \c TreeWalker . - * - * @exception DOMException - * Raises the exception NOT_SUPPORTED_ERR if the specified root - * node is null. - * - * - TreeWalker createTreeWalker ( const Node &root, long whatToShow, - const NodeFilter &filter, bool entityReferenceExpansion ); -}; -*/ - -} // namespace - -#endif |