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