--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmuifw_plat/alf_widgetmodel_api/inc/alf/alfvarianttype.h Thu Dec 17 08:56:02 2009 +0200
@@ -0,0 +1,1102 @@
+/*
+* Copyright (c) 2004 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: This interface defines a generic data type
+*
+*/
+
+
+
+#ifndef ALFVARIANTTYPE_H
+#define ALFVARIANTTYPE_H
+
+
+// INCLUDES
+#include <e32def.h>
+#include <osn/osndefines.h>
+#include <osn/osncommon.h>
+#include <alf/ialfvarianttype.h>
+#include <alf/ialfcontainer.h>
+#include <alf/ialfmap.h>
+#include <alf/ialfbranch.h>
+#include <memory>
+#include <alf/ialfsortfunction.h>
+
+
+namespace osncore
+ {
+class UString;
+ }
+namespace std
+ {
+template <class T> class auto_ptr;
+ }
+
+using namespace osncore;
+using std::auto_ptr;
+
+namespace Alf
+ {
+
+// FORWARD DECLARATIONS
+class IAlfContainer;
+class IAlfMap;
+class AlfBranch;
+class AlfVariantDataImpl;
+class AlfContainerDataImpl;
+class AlfMapDataImpl;
+class AlfBranchDataImpl;
+class IAlfModelBase;
+// CLASS DECLARATIONS
+
+/**
+ * @class AlfVariantType alfvarianttype.h "alf/alfvarianttype.h"
+ * Concrete implementation of the variant data type interface.
+ * AlfVariantType can hold data of integer,real,string and unsigned integer types.
+ * @see IAlfVariantType
+ *
+ * @lib alfwidgetmodel.lib
+ * @since S60 ?S60_version
+ * @status Draft
+ */
+class AlfVariantType: public IAlfVariantType
+ {
+public:
+
+ /**
+ * Constructor for variant data type creation for a descriprtor type of data
+ * @exception std::bad_alloc
+ *
+ * @param aValue - Descriptor to be assigned for the variant data
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfVariantType(const UString& aValue);
+
+
+ /**
+ * Constructor for variant data type creation for a integer type of data
+ * @exception std::bad_alloc
+ *
+ * @param aValue - integer to be assigned for the variant data
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfVariantType(const int& aValue);
+
+
+ /**
+ * Constructor for variant data type creation for a Unsigned integer type of data
+ * @exception std::bad_alloc
+ *
+ * @param aValue - unsigned integer to be assigned for the variant data
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfVariantType(const uint& aValue);
+
+
+ /**
+ * Constructor for variant data type creation for a real type of data
+ * @exception std::bad_alloc
+ *
+ * @param aValue - Real value to be assigned for the variant data
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfVariantType(const double& aValue);
+
+
+ /**
+ * Constructor for variant data type creation for a user defined type of data
+ * @exception std::bad_alloc
+ *
+ * @param aValue - IAlfModelBase* to be assigned for the variant data
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfVariantType(IAlfModelBase* aValue) ;
+
+ /**
+ * Constructor for variant data type creation for a bool type of data
+ * @exception std::bad_alloc
+ *
+ * @param aValue - Boolean value to be assigned for the variant data
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfVariantType(const bool& aValue);
+
+ //from IAlfVariantType Interface
+ /**
+ * Set the Data the variantData. From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if aValue
+ * is of invalid type.
+ * @exception std::bad_alloc
+ *
+ * @param aValue The new value.
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void set(IAlfVariantType& aValue);
+
+ /**
+ * Get the data type.From IAlfVariantType Interface
+ *
+ * @since S60 ?S60_version
+ * @return The data type.
+ */
+ OSN_IMPORT IAlfVariantType::Type type() const;
+
+ /**
+ * Get the data value as an bool .From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if aValue
+ * is not of boolean type.
+ *
+ * @return bool data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT bool boolean() const;
+
+ /**
+ * Get the data value as an Integer .From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if aValue
+ * is not of integer type.
+ *
+ * @return Integer data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT int integer() const;
+
+ /**
+ * Get the data value as unsigned int.From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if aValue
+ * is not of unsigned integer type.
+ *
+ * @return unsigned integer value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT uint uinteger() const;
+
+ /**
+ * Get the data value as an bool .From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if aValue
+ * is not of real type.
+ *
+ * @return real data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT double real() const;
+
+ /**
+ * Get the data value as an Descriptor .From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if aValue
+ * is not of string type.
+ *
+ * @return string data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT const UString& string() const;
+
+ /**
+ * Get the data value as an Container .From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfVariantType is not a container.
+ *
+ * @return AlfContainer .
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfContainer* container();
+
+ /**
+ * Get the data value as Map .From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfVariantType is not a map.
+ *
+ * @return Map
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfMap* map() ;
+
+ /**
+ * Get the data value as Branch .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfVariantType is not a branch.
+ *
+ * @return Map
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfBranch* branch() ;
+
+ /**
+ * Get the data value as a User Defined Data Pointer.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if aValue
+ * is not of custom type.
+ *
+ * @return IAlfModelBase interface.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfModelBase* customData();
+
+ /**
+ * Destructor
+ *
+ * @return
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT ~AlfVariantType();
+
+
+ /**
+ * The default constructor.
+ *
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfVariantType();
+
+ /**
+ * Equality comparison operator.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if aValue
+ * is of invalid type.
+ *
+ * @param aOther object to compare against.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT bool operator==(const IAlfVariantType& aOther) const;
+
+private:
+
+
+ /**
+ * 2nd Phase Constructor
+ *
+ * @since S60 ?S60_version
+ * @param aType
+ */
+ void construct(Type aType);
+
+
+private:
+ //data owned
+ auto_ptr<AlfVariantDataImpl> mVarData;
+
+ };
+
+
+/**
+ * @class AlfVariantType alfvarianttype.h "alf/alfvarianttype.h"
+ * Concrete implementation of the variant data type interface.
+ * Simple default container of variant types.
+ * @see IAlfContainer
+ *
+ * @lib alfwidgetmodel.lib
+ * @since S60 ?S60_version
+ * @status Draft
+ */
+class AlfContainer : public IAlfContainer
+ {
+public:
+
+ /**
+ * Constructor for creating a variant data type which can store a alfcontainer
+ * @exception std::bad_alloc
+ *
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfContainer();
+
+ /**
+ * Destructor
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT ~AlfContainer();
+
+ //IAlfContainer APIs
+
+ /**
+ * Adds a variantData item into the container .From IAlfContainer interface
+ * @aData variant data to be added into the container. Ownership is transferred
+ * if the method completes without exceptions. If there is an exception
+ * (e.g. due to out of memory), the client code is responsible for cleaning up the object.
+ * @exception std::bad_alloc
+ *
+ * @return void.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void addItem(IAlfVariantType* aData);
+
+ /**
+ * Adds a variantData item into the container .From IAlfContainer interface
+ * @aIndex index where the data is added
+ * @aData variant data to be added into the container. Ownership is transferred
+ * if the method completes without exceptions. If there is an exception
+ * (e.g. due to out of memory), the client code is responsible for cleaning up the object.
+ * @exception std::bad_alloc
+ *
+ * @return void.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void addItem(uint aIndex, IAlfVariantType* aData);
+
+ /**
+ * Gets the Number of items in the container . From IAlfContainer interface
+ *
+ * @return number of items in the container
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT int count();
+
+ /**
+ * Gets the Item at a given index in the container From IAlfContainer interface
+ * @param aIndex - index at which the element is required
+ * @return item as a MlfVariantType
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfVariantType* item(uint aIndex);
+
+ /**
+ * Clones the entire container From IAlfContainer interface
+ * @exception std::bad_alloc
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if
+ * there is an invalid data type in the container.
+ *
+ * @return the cloned container
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfContainer* clone();
+
+
+ /**
+ * Removes an item from given index in the container. From IAlfContainer interface
+ * @param aIndex - index at which the element is to be removed.
+ * @return item as a IAlfVariantType
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void removeItem(uint aIndex);
+
+ /**
+ * Clear the Container. From IAlfContainer interface
+ *
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void clear() ;
+
+ /**
+ * Replace an item from given index in the container.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidContainerOperation if
+ * the replaceItem fails.
+ *
+ * @param aIndex - index at which the element is to be replaced
+ * @param aNewData - new Data to be replaced
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void replaceItem(uint aIndex, IAlfVariantType* aNewData );
+
+ /**
+ * sorts the container using user defined sort function.
+ *
+ * @param aSortFunction - sort function.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void sort( const IAlfSortFunction& aSortFunction );
+
+ //from IAlfVariantType Interface
+ /**
+ * Set the Data the variantData. From IAlfVariantType Interface.
+ * Always throws an exception always.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidContainerOperation always.
+ * Use the addItem API.
+ *
+ * @param aValue The new value.
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void set(IAlfVariantType& aValue);
+
+ /**
+ * Get the data type.From IAlfVariantType Interface
+ *
+ * @return The data type.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfVariantType::Type type() const;
+
+ /**
+ * Get the data value as an bool .From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfContainer is not boolean.
+ *
+ * @return bool data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT bool boolean() const;
+
+ /**
+ * Get the data value as an Integer .From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfContainer is not an integer.
+ *
+ * @return Integer data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT int integer() const;
+
+ /**
+ * Get the data value as unsigned int.From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfContainer is not an unsigned integer.
+ *
+ * @return unsigned integer data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT uint uinteger() const;
+
+ /**
+ * Get the data value as an bool .From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfContainer is not a real value.
+ *
+ * @return real data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT double real() const;
+
+ /**
+ * Get the data value as an Descriptor .From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfContainer is not a string.
+ *
+ * @return string data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT const UString& string() const;
+
+ /**
+ * Get the data value as an Conatiner .From IAlfVariantType Interface.
+ *
+ * @return AlfContainer .
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfContainer* container();
+
+ /**
+ * Get the data value as Map .From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfContainer is not a map.
+ *
+ * @return Map
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfMap* map();
+
+ /**
+ * Get the data value as Branch .From IAlfVariantType Interface.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfContainer is not a map.
+ *
+ * @return Map
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfBranch* branch();
+
+ /**
+ * Get the data value as a User Defined Data Pointer.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfContainer is not a custom data type.
+ *
+ * @return IAlfModelBase interface.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfModelBase* customData();
+
+ /**
+ * Equality comparison operator.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidContainerOperation always.
+ *
+ * @param aOther object to compare against.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT bool operator==(const IAlfVariantType& aOther) const;
+private:
+ void construct();
+ //Data owned
+ auto_ptr<AlfContainerDataImpl> mContainerData;
+
+ };
+
+/**
+ * @class AlfMap alfvarianttype.h "alf/alfvarianttype.h"
+ * Concrete implementation of the variant data type interface.
+ * Simple map of variant types.The map is contains data and a key.
+ * @see IAlfMap
+ *
+ * @lib alfwidgetmodel.lib
+ * @since S60 ?S60_version
+ * @status Draft
+ */
+class AlfMap : public IAlfMap
+ {
+public:
+
+
+ /**
+ * 1st phase Constructor for creating a variant data type which can store a AlfMap
+ * @exception std::bad_alloc
+ *
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfMap();
+
+
+
+ //IAlfContainer APIs
+
+ /**
+ * Gets the Number of items in the container . From IAlfContainer interface
+ *
+ * @return number of items in the container
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT int count() const;
+
+ /**
+ * Gets the Item at a given index in the container From IAlfContainer interface
+ * @param aIndex - index at which the element is required
+ * @return item as a MlfVariantType
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfVariantType* item(uint aIndex);
+
+ /**
+ * Clones the entire container From IAlfContainer interface
+ * @exception std::bad_alloc
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType if
+ * there is an invalid data type in the container.
+ *
+ * @return the cloned container
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfMap* clone();
+
+
+ /**
+ * Removes an item from given index in the container. From IAlfContainer interface.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidMapOperation if
+ * the removeItem fails.
+ *
+ * @param aIndex - index at which the element is to be removed
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void removeItem(uint aIndex);
+
+ /**
+ * Clear the Container. From IAlfContainer interface
+ *
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void clear() ;
+
+ /**
+ * Replace an item from given index in the container
+ * @exception std::bad_alloc
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidMapOperation if
+ * the replaceItem fails.
+ * @param aIndex - index at which the element is to be replaced
+ * @param aNewData - new Data to be replaced
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void replaceItem(uint aIndex, IAlfVariantType* aNewData );
+
+
+
+ //IAlfMap Interface APis
+
+ /**
+ * Gets the Item for a given name in the map. From IAlfContainer interface
+ * @param aName - name of the element that is required
+ * @return item as a IAlfVariantType
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfVariantType* item(const UString& aName);
+
+ /**
+ * Gets the index of the item by the given name.
+ * @param aName The name associated with requested item.
+ * @return The index corresponding to the name of the item.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT int itemIndex(const UString& aName);
+
+ /**
+ * Removes an item for a given Name in map. From IAlfContainer interface
+ * @exception std::bad_alloc
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidMapOperation if
+ * the removeItem fails.
+ *
+ * @param aName - name of the element that is to be removed
+ * @return item as a MlfVariantType
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void removeItem(const UString& aName);
+
+ /**
+ * Replace an item for a given name in the container
+ * @exception std::bad_alloc
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidMapOperation if
+ * the replaceItem fails.
+ *
+ * @param aName - name of the element that is to be replaced
+ * @param aNewData - new Data to be replaced
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void replaceItem(const UString& aName,IAlfVariantType* aNewData);
+
+ /**
+ * Adds a variantData item into the container .From IAlfContainer interface
+ * @exception std::bad_alloc
+ *
+ * @param aName - name of the data that needs to be added
+ * @param aData- variant data to be added into the container. Ownership is transferred
+ * if the method completes without exceptions. If there is an exception
+ * (e.g. due to out of memory), the client code is responsible for cleaning up the object.
+ * @return void.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void addItem(IAlfVariantType* aData, const UString& aName);
+
+ /**
+ * Adds a variantData item into the container .From IAlfContainer interface
+ * @exception std::bad_alloc
+ *
+ * @aIndex index where the data is added
+ * @param aName - name of the data that needs to be added
+ * @param aData- variant data to be added into the container. Ownership is transferred
+ * if the method completes without exceptions. If there is an exception
+ * (e.g. due to out of memory), the client code is responsible for cleaning up the object.
+ * @return void.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void addItem(uint aIndex, IAlfVariantType* aData, const UString& aName);
+
+ /**
+ * Gets the Name at a given index in the container
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidArrayIndex if
+ * aIndex is invalid.
+ *
+ * @param aIndex - index at which the name of the element in the map is required
+ * @return item name as a TPtr
+ * @since S60 ?S60_version
+ */
+ const UString& name(uint aIndex) const;
+
+ //class methods
+ /**
+ * Destructor
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT ~AlfMap();
+
+
+ //from IAlfVariantType Interface
+ /**
+ * Set the Data the variantData. From IAlfVariantType Interface.
+ * Always throws an exception always.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidMapOperation always.
+ * Use the addItem API.
+ * @param aValue The new value.
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void set(IAlfVariantType& aValue);
+
+ /**
+ * Get the data type.From IAlfVariantType Interface
+ *
+ * @return The data type.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfVariantType::Type type() const;
+
+ /**
+ * Get the data value as an bool .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfMap is not boolean.
+ *
+ * @return bool data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT bool boolean() const;
+
+ /**
+ * Get the data value as an Integer .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfMap is not an integer.
+ *
+ * @return Integer data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT int integer() const;
+
+ /**
+ * Get the data value as unsigned int.From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfMap is not an unsigned integer.
+ *
+ * @return unsigned integer data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT uint uinteger() const;
+
+ /**
+ * Get the data value as an bool .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfMap is not a real value.
+ *
+ * @return double data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT double real() const;
+
+ /**
+ * Get the data value as an Descriptor .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfMap is not a string value.
+ *
+ * @return string data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT const UString& string() const;
+
+ /**
+ * Get the data value as an Conatiner .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfMap is not a container.
+ *
+ * @return AlfContiner .
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfContainer* container();
+
+ /**
+ * Get the data value as Map .From IAlfVariantType Interface
+ *
+ * @return Map
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfMap* map();
+
+ /**
+ * Get the data value as Branch .From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfMap is not a branch.
+ *
+ * @return Branch
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfBranch* branch();
+
+ /**
+ * Get the data value as a User Defined Data Pointer.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfMap is not a custom data type.
+ *
+ * @return IAlfModelBase interface.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfModelBase* customData();
+
+ /**
+ * Equality comparison operator.
+ *
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT bool operator==(const IAlfVariantType& aOther) const;
+
+private:
+ void construct();
+ //data
+ auto_ptr<AlfMapDataImpl> mMapDataImpl;
+ };
+
+/**
+ * @class AlfBranch alfvarianttype.h "alf/alfvarianttype.h"
+ * Concrete implementation of the variant data type interface.
+ * @see IAlfBranch
+ *
+ * @lib alfwidgetmodel.lib
+ * @since S60 ?S60_version
+ * @status Draft
+ */
+class AlfBranch: public IAlfBranch
+ {
+public:
+
+
+ /**
+ * Parameterized Constructor
+ * @exception std::bad_alloc
+ *
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfBranch( IAlfMap* aData, IAlfMap* aChildData);
+
+ /**
+ * Default Constructor
+ * @exception std::bad_alloc
+ *
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT AlfBranch();
+
+ /**
+ *
+ * @return
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfMap* data();
+
+ /**
+ *
+ * @param aData -
+ * @return void.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void setData( IAlfMap* aData );
+
+ /**
+ *
+ * @param aIndex -
+ * @return .
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfVariantType* childData(int aIndex);
+
+ /**
+ *
+ * @param aIndex -
+ * @return .
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT const UString& childName(int aIndex);
+
+ /**
+ *
+ * @return .
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfMap* childData();
+
+ /**
+ *
+ * @param aChildData -
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void setChildData( IAlfMap* aChildData );
+
+ /**
+ *
+ * @return
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT uint childrenCount();
+
+ /**
+ * Destructor
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT ~AlfBranch();
+
+ /**
+ * sorts the branch using user defined sort function.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidBranchOperation if
+ * sorting fails.
+ *
+ * @param aSortFunction - sort function.
+ * return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void sort( const IAlfSortFunction& aSortFunction );
+
+ /**
+ * Function to Clone the Branch
+ * @exception std::bad_alloc
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidBranchOperation if
+ * cloning fails.
+ *
+ * @return
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfBranch* clone();
+
+
+ //from IAlfVariantType Interface
+ /**
+ * Set the Data the variantData. From IAlfVariantType Interface
+ * Always throws an exception always.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidBranchOperation always.
+ * Use the setData API.
+ *
+ * @param aValue The new value.
+ * @return void
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT void set(IAlfVariantType& aValue);
+
+ /**
+ * Get the data type.From IAlfVariantType Interface
+ *
+ * @return The data type.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfVariantType::Type type() const;
+
+ /**
+ * Get the data value as an bool .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfBranch is not boolean.
+ * @return bool data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT bool boolean() const;
+
+ /**
+ * Get the data value as an Integer .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfBranch is not an integer.
+ *
+ * @return Integer data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT int integer() const;
+
+ /**
+ * Get the data value as unsigned int.From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfBranch is not an unsigned integer.
+ *
+ * @return unsigned integer data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT uint uinteger() const;
+
+ /**
+ * Get the data value as an bool .From IAlfVariantType Interface
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfBranch is not a real value.
+ *
+ * @return real data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT double real() const;
+
+ /**
+ * Get the data value as an Descriptor .From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfBranch is not a string value.
+ *
+ * @return string data value.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT const UString& string() const;
+
+ /**
+ * Get the data value as an Conatiner. From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfBranch is not a container.
+ *
+ * @return AlfContiner .
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfContainer* container();
+
+ /**
+ * Get the data value as Map. From IAlfVariantType Interface
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfBranch is not a map.
+ *
+ * @return Map
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfMap* map();
+
+ /**
+ * Get the data value as Branch. From IAlfVariantType Interface
+ *
+ * @return Map
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfBranch* branch();
+
+ /**
+ * Get the data value as a User Defined Data Pointer.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidVariantDataType always
+ * since AlfBranch is not a custom value.
+ *
+ * @return IAlfModelBase interface.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT IAlfModelBase* customData();
+
+ /**
+ * Equality comparison operator.
+ * Always throws an exception.
+ * @exception osncore::AlfDataException Thrown with error code osncore::EInvalidBranchOperation always.
+ *
+ * @param aOther object to compare against.
+ * @since S60 ?S60_version
+ */
+ OSN_IMPORT bool operator==(const IAlfVariantType& aOther) const;
+private:
+ /**
+ * 2nd Phase Constructor
+ * @return
+ * @since S60 ?S60_version
+ */
+ void construct( IAlfMap* aData, IAlfMap* aChildData);
+
+private:
+
+ //Data - owned
+ auto_ptr<AlfBranchDataImpl> mBranchData;
+
+
+ };
+
+ } // namespace Alf
+
+#endif // ALFVARIANTTYPE_H
+
+// End of File