diff -r 6ca72c0fe49a -r a941bc465d9f wvsettings20/IMPSSrc/CIMPSSAPKeyValuePair.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvsettings20/IMPSSrc/CIMPSSAPKeyValuePair.h Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,246 @@ +/* +* 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: Key - value container. +* +*/ + +#ifndef __CIMPSSAPKEYVALUEPAIR_H +#define __CIMPSSAPKEYVALUEPAIR_H + +// INCLUDES +#include +#include + +// CLASS DECLARATION +/** + * Key - value container. + * Can be derived to expand services. + * + * @since 3.0 + **/ +NONSHARABLE_CLASS( CIMPSSAPKeyValuePair ): public CBase + { +public: // Enumerations + + /** + * Data type enumeration. + * List supported value data types. + * @since 3.0 + **/ + enum TValueType + { + EValueTypeNone = 0, + EValueTypeInt, + EValueTypeDesC8, + EValueTypeDesC16 + }; + + +public: // Constructors and destructor + + /** + * Non leaving two phased constructor. + * + * If object allocation fails, returns NULL. + * + * @since 3.0 + * @param aKey The key. + */ + static CIMPSSAPKeyValuePair* New( const TDesC& aKey ); + + /** + * Two phased constructor initializing object state + * from the stream. + * + * @since 3.0 + * @param aStream The stream to read object state. + */ + static CIMPSSAPKeyValuePair* NewLC( RReadStream& aStream ); + + /** + * Two phased constructor initializing object state + * from given flat descriptor. + * + * @since 3.0 + * @param aKeyValuePairFlat The flat representation of key-value pair + */ + + static CIMPSSAPKeyValuePair* NewLC( const TDesC& aKeyValuePairFlat ); + + /** + * Destructor. + */ + virtual ~CIMPSSAPKeyValuePair(); + + + +protected: // Constructor + + /** + * C++ default constructor. + */ + CIMPSSAPKeyValuePair(); + + + /** + * Symbian OS constructor. + * Initializes object state from given stream. + * + * @since 3.0 + * @param aStream The stream to read object state. + */ + void ConstructL( RReadStream& aStream ); + + +public: //Data access + + /** + * Key accessor. + * + * Gets the key associated with key-value object. + * Virtual to allow derived classes to expand behaviour. + * + * @since 3.0 + * @return The key. + */ + virtual const TDesC& Key() const; + + + /** + * Data setters. + * + * Overloaded to support integer type and + * narrow and wide descriptors. + * + * @since 3.0 + * @param aValue The value to assign for key-value object. + * @return Error code. One of following: + * KErrNone: Value assigned/updated succesfully. + * KErrGeneral: Different data type already assigned. + * KErrNoMemory: No memory to allocate the new value. + * Original value remains if assigning new value fails. + */ + TInt SetValue( TInt aValue ); + TInt SetValue( const TDesC8& aValue ); + TInt SetValue( const TDesC16& aValue ); + + + /** + * Data getters. + * + * Overloaded to support integer type and + * narrow and wide descriptors. + * + * @since 3.0 + * @param aValue The value to get. + * @return Error code. One of following: + * KErrNone: Value read succesfully. + * KErrNotFound: No value yet assigned. + * KErrGeneral: Different data type assigned. + * Given aValue isn't changed if reading fails. + */ + TInt GetValue( TInt& aValue ) const; + TInt GetValue( TPtrC8& aValue ) const; + TInt GetValue( TPtrC16& aValue ) const; + + + /** + * Key-Value pair flat representation + * + * Creates flat representation of the key-value pair + * and pushes it in cleanup stack. + * Ownership is transferred to calling method. + * + * @since 3.0 + * @return The flat representation of key-value pair + */ + + HBufC* KeyValuePairFlatLC(); + + +public: // Streaming support + + + /** + * Externalises the value pair to given stream. + * + * @since 3.0 + * @param aStream stream to write to. + */ + void ExternalizeL( RWriteStream& aStream ) const; + + + /** + * Approximates the value pair data size. + * + * @since 3.0 + * @return The value pair data size. + */ + TInt DataSize() const; + + /** + * Approximates the value pair data size + * in decimal textual representation + * + * @since 3.0 + * @return The value pair data size. + */ + TInt DataSizeDec() const; + + /** + * Checks if the data fits in the flat + * descriptor + * + * @since 3.0 + * @return ETrue if data is too big. + */ + + TBool IsDataTooBig() const; + +private: // Help functions + + /** + * Resets the value pair data. + * @since 3.0 + */ + void Reset(); + + /** + * Parses value pair data from flat descriptor. + * @param aKeyValuePairFlat flat descriptor to parse + * @since 3.0 + */ + void ParseFlatKeyValuePairL( const TDesC& aKeyValuePairFlat ); + +private: // Data + + + HBufC16* iKey; //OWN: The key. + + TValueType iValueType; //OWN: The value type. + + union //OWN: The value. Value type is determined from iValueType. + { + TInt iInt; + HBufC8* iBuf8; + HBufC16* iBuf16; + }; + + }; + +#endif // __CIMPSSAPKEYVALUEPAIR_H + + +// End of File +