xml/xmldomandxpath/inc/xpath/xmlengxpathresult.h
changeset 0 e35f40988205
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/xmldomandxpath/inc/xpath/xmlengxpathresult.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:
+// Result of XPath expression
+//
+
+
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+#ifndef XMLENGXPATHRESULT_H
+#define XMLENGXPATHRESULT_H
+
+#include <xml/dom/xmlengnodeset.h>
+
+/**
+Represents the result of a XPath expression.
+
+The result may be one of the standard types: string, boolean, number (float), 
+node set or be undefined in the case of error.
+
+The returned result should be freed after use.
+*/
+class RXmlEngXPathResult
+{
+	friend class RXmlEngXPathExpression;
+    friend class TXmlEngXPathEvaluationContextImpl;
+
+public:
+    /**
+	Result types of a XPath expression.
+	See http://w3.org/TR/xpath#section-Introduction
+    */
+    enum TXmlEngXPathResultType
+        {
+        EUndefined = 0,
+        ENodeset = 1,
+        EBoolean = 2,
+        ENumber = 3,
+        EString = 4
+        //Other node types defined in XPath are not supported.
+	    } ;
+
+public:
+	/** Default constructor */
+	IMPORT_C RXmlEngXPathResult();
+
+	/** Frees any allocated memory */
+	IMPORT_C void Free();
+
+	/** Frees any allocated memory */
+	inline void Close();
+
+	/**
+	Retrieves the type of the result (e.g. boolean, number, string, etc.).  
+	The type of a result should always be checked before using the result.
+	
+	If there was an error and no value was set, undefined is returned.
+	Otherwise nodeset is returned.	
+	
+	@return Type of result.
+	
+	@see TXmlEngXPathResultType
+	*/
+	IMPORT_C TXmlEngXPathResultType Type() const;
+	
+	/**
+	Retrieves a node-set result.  A Non-RXmlEngNodeSet result will return NULL.
+	No conversion is done from other types.
+	
+	For more information no NULL nodes:
+	@see TXmlEngNode
+	
+	@return Node-set result
+	*/
+	IMPORT_C RXmlEngNodeSet AsNodeSet() const;
+	
+	/**
+	Retrieves a string copy of result.
+	@param A buffer allocated by the caller that holds the result string
+	@leave KErrNoMemory if out of memory situation occurs.
+	@leave - Otherwise any of the system wide errors.
+	*/	
+	IMPORT_C void AsStringL(RBuf8& aOutput) const;
+
+	/**
+	Retrieves a numeric value result.  Conversion can occur from other types.
+	 
+	Node sets, strings, and booleans will be cast to numbers.  Anything else
+	will return NAN (i.e. not a number).
+	
+	@return Numeric value of the result.
+	
+	@see Math
+	*/	
+	IMPORT_C TReal AsNumber() const;
+	
+	/**
+	Retrieves a boolean result.  Conversion can occur from other types.
+	
+	Numbers will be returned as true unless it is not a number or 0.0.
+	A string of 0 length will return false, otherwise true.
+	If the node exists it will be returned as true, otherwise false.
+	
+	@return Boolean value of the result
+	*/	
+	IMPORT_C TBool AsBoolean() const;
+
+private:
+	/**
+	Constructor
+	@param aData Internal representation of XPath result
+	*/
+	RXmlEngXPathResult(void* aData);
+	
+private: 
+	void* iInternal;
+    };	
+
+#include <xml/dom/xmlengxpathresult.inl>
+
+#endif /* XMLENGXPATHRESULT_H */
+