diff -r 4ea6f81c838a -r 0e9bb658ef58 mmuifw_plat/alf_widgetmodel_api/inc/alf/alfvarianttype.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmuifw_plat/alf_widgetmodel_api/inc/alf/alfvarianttype.h Wed Sep 01 12:23:18 2010 +0100 @@ -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 +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace osncore + { +class UString; + } +namespace std + { +template 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 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 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 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 mBranchData; + + + }; + + } // namespace Alf + +#endif // ALFVARIANTTYPE_H + +// End of File