📄 xpathpredicate.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 + -