williamr@4: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // XPath expression declaration williamr@4: // williamr@4: williamr@4: williamr@4: williamr@4: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: #ifndef XMLENGXPATHEXPRESSION_H williamr@4: #define XMLENGXPATHEXPRESSION_H williamr@4: williamr@4: #include williamr@4: #include williamr@4: williamr@4: class TXmlEngNode; williamr@4: williamr@4: /** williamr@4: A compiled XPath expression is a textual expression transformed after williamr@4: syntactical analysis into some internal representation of the expression. The williamr@4: only missing element for evaluation of the expression is evaluation context: williamr@4: the context node (where to start) and an optional set of prefix-to-namespace bindings. williamr@4: williamr@4: XPath Expressions are created and instantiated by the Evaluator: williamr@4: @see TXmlEngXPathEvaluator williamr@4: williamr@4: See the XPath spec here: williamr@4: http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/xpath.html williamr@4: */ williamr@4: class RXmlEngXPathExpression williamr@4: { williamr@4: friend class TXmlEngXPathEvaluator; williamr@4: williamr@4: public: williamr@4: /** XPath expression parts */ williamr@4: enum TXmlEngXPathExpressionPartType williamr@4: { williamr@4: EFunction, williamr@4: EPrefix williamr@4: }; williamr@4: williamr@4: public: williamr@4: /** Default constructor */ williamr@4: IMPORT_C RXmlEngXPathExpression(); williamr@4: williamr@4: /** Resets the compiled expression and frees the allocated memory */ williamr@4: IMPORT_C void Destroy(); williamr@4: williamr@4: /** Resets the compiled expression and frees the allocated memory */ williamr@4: inline void Close(); williamr@4: williamr@4: // XPath 1.0 methods williamr@4: williamr@4: /** williamr@4: Evaluates this expression. williamr@4: williamr@4: @param aContextNode The node relative to which the expression is evaluated. williamr@4: @param aResolver Not supported in current API. Reserved for future use. williamr@4: @return Result of evaluation williamr@4: @leave KXmlEngErrXPathResult Error evaluating expression williamr@4: @leave KXmlEngErrXPathSyntax Error compiling expression williamr@4: @leave KErrNoMemory Memory allocation error williamr@4: @leave - Otherwise, any of the system wide errors. williamr@4: */ williamr@4: IMPORT_C RXmlEngXPathResult EvaluateL(TXmlEngNode aContextNode, williamr@4: const MXmlEngNamespaceResolver* aResolver = NULL) const; williamr@4: williamr@4: williamr@4: // Extensions to XPath 1.0 williamr@4: williamr@4: /** williamr@4: Does the same thing as EvaluateL(), but also calculates the dependency list williamr@4: of the expression. williamr@4: williamr@4: @param aContextNode The node relative to which the expression is evaluated. williamr@4: @param aDependents After the method has returned, contains set of nodes that williamr@4: the expression is dependent on. williamr@4: @param aResolver Not supported in current API. Reserved for future use. williamr@4: @return Result of evaluation williamr@4: @leave KXmlEngErrXPathResult Error evaluating expression williamr@4: @leave KXmlEngErrXPathSyntax Error compiling expression williamr@4: @leave KErrNoMemory Memory allocation error williamr@4: @leave - Otherwise, any of the system wide errors. williamr@4: */ williamr@4: IMPORT_C RXmlEngXPathResult EvaluateWithDependenciesL(TXmlEngNode aContextNode, williamr@4: RXmlEngNodeSet& aDependents, williamr@4: const MXmlEngNamespaceResolver* aResolver = NULL) const; williamr@4: williamr@4: /** williamr@4: Set context data for the expression currently being evaluated. williamr@4: williamr@4: Extended Context is data set by API users and available for XPath extension williamr@4: functions. For more information: williamr@4: @see RXmlEngXPathExpression williamr@4: williamr@4: @param aContext Extended context pointer williamr@4: */ williamr@4: IMPORT_C void SetExtendedContext(void* aContext); williamr@4: williamr@4: /** williamr@4: Gets extended context data for the expression currently being evaluated. williamr@4: williamr@4: @return Extended context pointer or NULL if not sete williamr@4: williamr@4: @see SetExtendedContext williamr@4: */ williamr@4: IMPORT_C void* ExtendedContext() const; williamr@4: williamr@4: private: williamr@4: RXmlEngXPathExpression(void* aData, void* aData2); williamr@4: williamr@4: private: williamr@4: void* iInternal; williamr@4: void* iInternal2; williamr@4: TInt32 reserved1; williamr@4: TAny* reserved2; williamr@4: }; williamr@4: williamr@4: #include williamr@4: williamr@4: #endif /* XMLENGXPATHEXPRESSION_H */ williamr@4: