⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nodefilter.h

📁 This software aims to create an applet and panel tools to manage a wireless interface card, such as
💻 H
字号:
//
// NodeFilter.h
//
// $Id: //poco/Main/XML/include/DOM/NodeFilter.h#5 $
//
// Definition of the DOM NodeFilter interface.
//
// Copyright (c) 2004, Guenter Obiltschnig/Applied Informatics.
// All rights reserved.
// 
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
// 
// 3. Redistributions in any form must be accompanied by information on
//    how to obtain complete source code for this software and any
//    accompanying software that uses this software.  The source code
//    must either be included in the distribution or be available for no
//    more than the cost of distribution plus a nominal fee, and must be
//    freely redistributable under reasonable conditions.  For an
//    executable file, complete source code means the source code for all
//    modules it contains.  It does not include source code for modules or
//    files that typically accompany the major components of the operating
//    system on which the executable file runs.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//


#ifndef DOM_NodeFilter_INCLUDED
#define DOM_NodeFilter_INCLUDED


#ifndef XML_XML_INCLUDED
#include "XML/XML.h"
#endif
#ifndef XML_XMLString_INCLUDED
#include "XML/XMLString.h"
#endif


XML_BEGIN


class Node;


class XML_API NodeFilter
	/// Filters are objects that know how to "filter out" nodes. If a NodeIterator
	/// or TreeWalker is given a NodeFilter, it applies the filter before it returns
	/// the next node. If the filter says to accept the node, the traversal logic
	/// returns it; otherwise, traversal looks for the next node and pretends that
	/// the node that was rejected was not there.
	/// 
	/// The DOM does not provide any filters. NodeFilter is just an interface that
	/// users can implement to provide their own filters.
	/// 
	/// NodeFilters do not need to know how to traverse from node to node, nor do
	/// they need to know anything about the data structure that is being traversed.
	/// 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 traversals, encouraging code reuse.
{
public:
	enum
	{
		FILTER_ACCEPT = 1,
			/// Accept the node. Navigation methods defined for NodeIterator or TreeWalker will return this node.

		FILTER_REJECT = 2,
			/// Reject the node. Navigation methods defined for NodeIterator or TreeWalker
			/// will not return this node. For TreeWalker, the children of this node will
			/// also be rejected. NodeIterators treat this as a synonym for FILTER_SKIP.

		FILTER_SKIP   = 3
			/// Skip this single node. Navigation methods defined for NodeIterator or TreeWalker
			/// will not return this node. For both NodeIterator and TreeWalker, the children
			/// of this node will still be considered.
	};
	
	enum WhatToShow
		/// These are the available values for the whatToShow parameter used in TreeWalkers
		/// and NodeIterators. 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. If a bit in whatToShow is
		/// set false, that will be taken as a request to skip over this type of node;
		/// the behavior in that case is similar to that of FILTER_SKIP.
		/// 
		/// Note that if node types greater than 32 are ever introduced, they may not
		/// be individually testable via whatToShow. If that need should arise, it can
		/// be handled by selecting SHOW_ALL together with an appropriate NodeFilter.
	{
		SHOW_ALL                    = 0xFFFFFFFF,
			/// Show all Nodes.
	
		SHOW_ELEMENT                = 0x00000001,
			/// Show Element nodes.

		SHOW_ATTRIBUTE              = 0x00000002, 
			/// Show Attr nodes. This is meaningful only when creating an iterator or tree-walker
			/// with an attribute node as its root; in this case, it means that the attribute
			/// node will appear in the first position of the iteration or traversal. Since
			/// attributes are never children of other nodes, they do not appear when traversing
			/// over the document tree.

		SHOW_TEXT                   = 0x00000004,
			/// Show Text nodes.

		SHOW_CDATA_SECTION          = 0x00000008,
			/// Show CDATASection nodes.

		SHOW_ENTITY_REFERENCE       = 0x00000010,
			/// Show EntityReference nodes.

		SHOW_ENTITY                 = 0x00000020,
			/// Show Entity nodes. This is meaningful only when creating an iterator or
			/// tree-walker with an Entity node as its root; in this case, it means that
			/// the Entity node will appear in the first position of the traversal. Since
			/// entities are not part of the document tree, they do not appear when traversing
			/// over the document tree.

		SHOW_PROCESSING_INSTRUCTION = 0x00000040,
			/// Show ProcessingInstruction nodes.

		SHOW_COMMENT                = 0x00000080,
			/// Show Comment nodes.

		SHOW_DOCUMENT               = 0x00000100,
			/// Show Document nodes.

		SHOW_DOCUMENT_TYPE          = 0x00000200,
			/// Show DocumentType nodes.

		SHOW_DOCUMENT_FRAGMENT      = 0x00000400,
			/// Show DocumentFragment nodes.

		SHOW_NOTATION               = 0x00000800
			/// Show Notation nodes. This is meaningful only when creating an iterator or
			/// tree-walker with a Notation node as its root; in this case, it means that
			/// the Notation node will appear in the first position of the traversal. Since
			/// notations are not part of the document tree, they do not appear when traversing
			/// over the document tree.
	};
	
	virtual short acceptNode(Node* node) = 0;
		/// 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 normally called directly from user code. (Though
		/// you could do so if you wanted to use the same filter to guide your own application
		/// logic.)
		///
		/// Returns FILTER_ACCEPT, FILTER_REJECT or FILTER_SKIP.
		
protected:
	virtual ~NodeFilter();
};


XML_END


#endif // DOM_NodeFilter_INCLUDED

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -