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

📄 xpathpredicate.h

📁 简单的xml解析类
💻 H
字号:
//************************************************************************************************************************** 
//* Blue Xml Extension
//* Copyright (c) 2002-2004 Josh Harler
//* 
//* Blue - General Purpose C++ Library
//* Copyright (c) 2002-2004 Josh Harler
//* 
//* This software is provided 'as-is', without any express or implied warranty. In no event
//* will the authors be held liable for any damages arising from the use of this software.
//* 
//* Permission is granted to anyone to use this software for any purpose, including commercial
//* applications, and to alter it and redistribute it freely, subject to the following restrictions:
//* 
//* 	1. The origin of this software must not be misrepresented; you must not claim that you
//* 	wrote the original software. If you use this software in a product, an acknowledgment in the
//* 	product documentation would be appreciated but is not required.
//* 
//* 	2. Altered source versions must be plainly marked as such, and must not be misrepresented as
//* 	being the original software.
//* 
//* 	3. This notice may not be removed or altered from any source distribution.
//*
//*
//* file   Blue/Extension/Xml/XPathPredicate.h
//**

#ifndef __blue_ext_xml_XPathPredicate_h_included__
#define __blue_ext_xml_XPathPredicate_h_included__

// Public Headers ==========================================================================================================

#include "../XPathExpression.h"


// Public Defines/Enums/Typedefs/Etc. ======================================================================================

// Public Classes/Structs ==================================================================================================

namespace blue {
namespace ext {
namespace xml {

	/****
	 * \class XPathPredicate
	 * \brief Evaluates an XPath predicate.
	 */
	class XPathPredicate
	{
	public:
		// ===========================================================
		//  creation/destruction
		// ===========================================================

		/** Constructor. */
		XPathPredicate();

		/** Destructor. */
		~XPathPredicate();


		// ===========================================================
		//  query
		// ===========================================================

		/**
		 * Parses the string into a series of tokens that are used to
		 * evaluate the predicate.
		 */
		Array<XPathToken> parsePredicate( String predicate );

		/**
		 * Determines if the function exists for use in the predicate
		 * object.
		 */
		bool hasFunction( String function );

		/** Returns a pointer to the function object. */
		XPathFunction* getFunction( String function );
		/** overload. */
		const XPathFunction* getFunction( String function ) const;


		// ===========================================================
		//  manipulation
		// ===========================================================

		/** Adds a function for use with this predicate object. */
		void addFunction( XPathFunction* function );

		/** Removes a function from use with this predicate object. */
		void removeFunction( String function );

		/** Evaluates the predicate. */
		XPathToken evaluate( Array<XPathToken> predicate, Array<DomNode*> search, DomNode* context );


	private:
		/**
		 * Copy constructor. Private because XPathPredicates should not be
		 * manipulated by more than one instance.
		 */
		XPathPredicate( const XPathPredicate& );
		/** Private assignment operator. See copy constructor documentation. */
		const XPathPredicate& operator=( const XPathPredicate& );


		XPathToken evaluateSection( Array<XPathToken> predicate, Array<DomNode*> search, DomNode* context, int begIdx, int endIdx, bool func );

		
		Array<XPathFunction*> m_operators;
		Array<XPathFunction*> m_defaults;
		Array<XPathFunction*> m_functions;
	};

}}}	// namespaces


// Public External Variables ===============================================================================================

// Public Function Prototypes ==============================================================================================

// Public Inline Functions =================================================================================================

#endif // include guard

⌨️ 快捷键说明

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