remotemgmt_plat/syncml_ds_customization_api/inc/nsmldevinfextdatacontainerplugin.h
branchRCL_3
changeset 25 b183ec05bd8c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/syncml_ds_customization_api/inc/nsmldevinfextdatacontainerplugin.h	Tue Aug 31 16:04:06 2010 +0300
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2010 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:  Device Info Extension Data Container Plugin header file.
+*
+*/
+
+#ifndef __NSMLDEVINFEXTDATACONTAINERPLUGIN_H__
+#define __NSMLDEVINFEXTDATACONTAINERPLUGIN_H__
+
+
+//  EXTERNAL INCLUDES
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include <ecom/ecomresolverparams.h>
+
+// CONSTANTS
+const TUid KExtDataContainerInterfaceUid = { 0x2002DC7C };
+
+//  CLASS DEFINITION
+/**
+ * Interface definition for Device Info Extension Data Container plugin
+ */
+class CNSmlDevInfExtDataContainerPlugin : public CBase
+    {
+    
+    public:  // Constructor & Destructor
+
+        /**
+         * Destructor
+         */
+        virtual ~CNSmlDevInfExtDataContainerPlugin();
+
+        /**
+         * Constructor for plugin instantiation
+         */
+        static CNSmlDevInfExtDataContainerPlugin* NewL();
+
+    public:  //  Pure virtual methods to be implemented by the actual plugins
+        /**
+         * Resolve number of device info extensions <Ext>
+         *
+         * @return Number of extensions
+         */
+        virtual TInt GetExtensionCountL() = 0;
+
+        /**
+         * Resolve name <XNam> of the extension in the given extension index. 
+         * The number of extensions supported can be deduced using 
+         * GetExtensionCountL() method. If the method is called with an index
+         * out of range (i.e. negative value or value greater than/equal to 
+         * the value returned by GetExtensionCountL()), the method should
+         * leave with KErrArgument.
+         * 
+         * Note that any extension has one <XNam> field.
+         *
+         * @param aExtIndex Index of the extension to be returned.
+         * @return Name of the extension
+         */
+        virtual const TDesC8& GetExtNameL( TInt aExtIndex ) = 0;
+
+        /**
+         * Resolve number of values related to particular extension. If the 
+         * method is called with an index out of range (i.e. negative value 
+         * or value greater than/equal to the value returned by 
+         * GetExtensionCountL()), the method should leave with KErrArgument.
+         *
+         * Note that any extension can have 0...n number of values
+         *
+         * @param aExtIndex Index of an extension
+         * @return Number of available values
+         */
+        virtual TInt GetExtValueCountL( TInt aExtIndex ) = 0;
+
+        /**
+         * Resolve <XVal> field of an extension. If the method is called 
+         * with illegal index values (i.e. negative value or with non-existent
+         * index), the method should leave with KErrArgument.
+         *
+         * @param aExtIndex Index of an extension
+         * @param aValueIndex Index of a value related to particular extension
+         * @return Value on textual format
+         */
+        virtual const TDesC8& GetExtValueL( 
+            TInt aExtIndex, TInt aValueIndex ) = 0;
+
+    private:
+        TUid iDtor_ID_Key;  // Instance identifier key
+    };
+
+#include "nsmldevinfextdatacontainerplugin.inl" // Base implementations for ECOM
+
+#endif // __NSMLDEVINFEXTDATACONTAINERPLUGIN_H__