xml/xmldomandxpath/inc/xpath/xmlengxpathexpression.h
changeset 0 e35f40988205
--- /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 */
+