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 configuraion functions williamr@4: // williamr@4: williamr@4: williamr@4: williamr@4: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: #ifndef XMLENGXPATHCONFIGURATION_H williamr@4: #define XMLENGXPATHCONFIGURATION_H williamr@4: williamr@4: #include williamr@4: williamr@4: /** williamr@4: This class holds a name, a namespace URI and a pointer to a XPath extension williamr@4: function (either native or defined via MXmlEngXPathExtensionFunction interface). williamr@4: williamr@4: @see XmlEngXPathConfiguration williamr@4: @see MXmlEngXPathExtensionFunction williamr@4: */ williamr@4: class TXmlEngExtensionFunctionDescriptor williamr@4: { williamr@4: public: williamr@4: /** Default constructor */ williamr@4: IMPORT_C TXmlEngExtensionFunctionDescriptor(); williamr@4: williamr@4: public: williamr@4: /** Extension function (Pointer to MXmlEngXPathExtensionFunction) */ williamr@4: void* iFunc; williamr@4: /** Function name */ williamr@4: const char* iName; williamr@4: /** Second name */ williamr@4: const char* iNamespaceUri; williamr@4: /** Reserved */ williamr@4: TInt iReserved; williamr@4: }; williamr@4: williamr@4: /** williamr@4: This object is used to support extension functions used within the XPath library. williamr@4: Extension functions may be added or removed. This object can also determine whether williamr@4: an extension function is supported. williamr@4: williamr@4: Extension functions are stored in a TXmlEngExtensionFunctionDescriptor object which williamr@4: holds the extension function (a MXmlEngXPathExtensionFunction instance), the williamr@4: function name and the function namespace. An extension function can be added williamr@4: to the library using XmlEngXPathConfiguration::AddExtensionFunctionL(). williamr@4: williamr@4: When an extension function is to be evaluated, williamr@4: MXmlEngXPathExtensionFunction::Evaluate() is called with a williamr@4: MXmlEngXPathEvaluationContext instance which holds the function arguments and williamr@4: evaluation result. williamr@4: williamr@4: @see MXmlEngXPathExtensionFunction williamr@4: @see MXmlEngXPathEvaluationContext williamr@4: @see TXmlEngExtensionFunctionDescriptor williamr@4: */ williamr@4: class XmlEngXPathConfiguration williamr@4: { williamr@4: public: williamr@4: /** williamr@4: Unused williamr@4: @internalComponent williamr@4: */ williamr@4: IMPORT_C static void Unused_Func1(TBool aEnable); williamr@4: williamr@4: /** williamr@4: Disables support of any previously registered extension functions williamr@4: and switches to support only the XPath Function Library. williamr@4: @leave KErrNoMemory Memory allocation failure williamr@4: */ williamr@4: IMPORT_C static void ResetExtensionFunctionsL(); williamr@4: williamr@4: /** williamr@4: Check if XPath extension function is supported. williamr@4: williamr@4: @param aFunc Function name williamr@4: @param aNsUri Function namespace URI williamr@4: @return ETrue if supported, EFalse otherwise williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@4: IMPORT_C static TBool IsFunctionSupportedL(const TDesC8& aFunc, const TDesC8& aNsUri); williamr@4: williamr@4: /** williamr@4: Registers an extension function at the global scope. williamr@4: williamr@4: @param aFuncDes Function descriptor. williamr@4: @leave KXmlEngErrWrongUseOfAPI Error initializing XPath context williamr@4: @leave KXmlEngErrXPathResult Error adding function williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@4: IMPORT_C static void AddExtensionFunctionL(const TXmlEngExtensionFunctionDescriptor& aFuncDes); williamr@4: williamr@4: /** williamr@4: Registers a set of extension functions at the global scope. williamr@4: williamr@4: @param aFuncVector Vector with function descriptors. Ownership is not transferred. williamr@4: @param aSize The size of the vector williamr@4: @leave KXmlEngErrWrongUseOfAPI Error initializing XPath context williamr@4: @leave KXmlEngErrXPathResult Error adding function williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@4: IMPORT_C static void AddExtensionFunctionVectorL (const RArray& aFuncVector, TUint aSize); williamr@4: williamr@4: /** williamr@4: Registers a native extension function at the global scope. williamr@4: williamr@4: @param aNativeFuncDes Function descriptor. williamr@4: @leave KXmlEngErrWrongUseOfAPI Error initializing XPath context williamr@4: @leave KXmlEngErrXPathResult Error adding function williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@4: IMPORT_C static void AddNativeExtensionFunctionL(const TXmlEngExtensionFunctionDescriptor& aNativeFuncDes); williamr@4: williamr@4: /** williamr@4: Registers a set of native extension functions at the global scope. williamr@4: williamr@4: @param aNativeFuncVector Function descriptor. williamr@4: @param aSize The size of the vector williamr@4: @leave KXmlEngErrWrongUseOfAPI Error initializing XPath context williamr@4: @leave KXmlEngErrXPathResult Error adding function williamr@4: @leave - One of the system-wide error codes williamr@4: */ williamr@4: IMPORT_C static void AddNativeExtensionFunctionVectorL(const RArray& aNativeFuncVector, TUint aSize); williamr@4: williamr@4: /** williamr@4: Deregisters an extension function. No error is generated if the extension williamr@4: function is not found. williamr@4: williamr@4: @param aFuncDes Function descriptor. williamr@4: */ williamr@4: IMPORT_C static void RemoveExtensionFunction(const TXmlEngExtensionFunctionDescriptor& aFuncDes); williamr@4: williamr@4: /** williamr@4: Deregisters a set of extension functions. No error is generated if an williamr@4: extension function in the vector is not found. williamr@4: williamr@4: @param aFuncVector Vector with function descriptors. williamr@4: @param aSize The size of the vector williamr@4: */ williamr@4: IMPORT_C static void RemoveExtensionFunctionVector(const RArray& aFuncVector, TUint aSize); williamr@4: }; williamr@4: williamr@4: #endif /* XMLENGXPATHCONFIGURATION_H */ williamr@4: