diff -r 6ca72c0fe49a -r a941bc465d9f IMPSengine/datautils/inc/impsdata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IMPSengine/datautils/inc/impsdata.h Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,405 @@ +/* +* Copyright (c) 2002 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: +* Interface for CImpsData +* +*/ + + +#ifndef IMPS_CIMPSDATA_H +#define IMPS_CIMPSDATA_H + +// INCLUDES +#include "impsdataaccessorapi.h" +#include "impskey.h" + +#ifdef _DEBUG +#include +#endif + + +// FORWARD DECLARATIONS +class CImpsKey; + +// CLASS DECLARATION + +/** +* CImpsElement the key and corresponding value +* +*/ +class CImpsElement : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor + */ + static CImpsElement* NewL( ); + + /** + * Destructor. + */ + virtual ~CImpsElement(); + + public: // New functions + + /** + * SetStringL + * @param Key in + * @param string to store + * @return void + */ + void SetStringL( const CImpsKey* aKey, const TDesC& aBuf ); + + /** + * SetString8L + * @param Key in + * @param string to store + * @return void + */ + void SetString8L( const CImpsKey* aKey, const TDesC8& aBuf ); + + /** + * SetIntL + * @param Key in + * @param int to store + * @return void + */ + void SetIntL( const CImpsKey* aKey, TInt aInt ); + + /** + * SetBooleanL + * @param Key in + * @param boolean to store + * @return void + */ + void SetBooleanL( const CImpsKey* aKey, TBool aBool ); + + /** + * SetEmptyL + * @param Key in + * @return void + */ + void SetEmptyL( const CImpsKey* aKey ); + + /** + * GetKey + * @return Key + */ + inline const CImpsKey* GetKey( ) const; + + /** + * GetKey + * @return Key + */ + inline CImpsKey* GetKey( ); + + /** + * GetInt + * @return int + */ + inline TInt GetInt( ) const; + + /** + * GetString + * @return string + */ + inline TDesC* GetString( ) const; + + /** + * GetString8 + * @return string + */ + inline TDesC8* GetString8( ) const; + + /** + * GetBoolean + * @return boolean + */ + inline TBool GetBoolean( ) const; + + /** + * IsEmpty + * @return true if empty + */ + inline TBool IsEmpty( ) const; + + /** + * GetType + * @return type of the value + */ + inline TImpsDataType GetType( ) const; + + /** + * Size + * @return the size the data used by this object + */ + TInt Size( ) const; + + /** + * Pack + * @param start pointer + * @param end pointer + * @return KErrNone if ok. error status otherwise + */ + TInt Pack( const TUint8*& aPtrStart ) const; + + /** + * UnPackL + * @param Pointer with stream to unpack + */ + void UnPackL( TUint8*& aPtr ); + +#ifdef _DEBUG + /** + * DumpToFile + * @param file where to dump + */ + void DumpToFileL( RFile& aFile ) const; +#endif + + /** + * CopyL + */ + CImpsElement* CopyL( ) const; + + private: + + /** + * By default Symbian OS constructor is private. + */ + CImpsElement(); + + /** + * Actual construction. + */ + void ConstructL(); + + // By default, prohibit copy constructor + CImpsElement( const CImpsElement& ); + // Prohibit assigment operator + CImpsElement& operator= ( const CImpsElement& ); + + private: // Data + CImpsKey* iKey; + TInt iInt; + TBool iBool; + HBufC* iString; + HBufC8* iString8; + TImpsDataType iValueType; + TBool iIsEmpty; // If the element doesn't contain any values + }; + + +// DATA TYPES +typedef CArrayPtrFlat CImpsElements; + +/** +* CImpsData contains a vector of CImpsElements +* Container for CImpsElements +*/ +class CImpsData : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CImpsData* NewL(); + + /** + * Destructor. + */ + virtual ~CImpsData(); + + public: // New functions + + /** + * Stores new key/value pair to the datastore + * @param aKey Key to save with the value + * @param aBuff String value to store + * @return void + */ + void StoreStringL( const CImpsKey *aKey, const TDesC& aBuff ); + + /** + * Stores new key/value pair to the datastore + * @param aKey Key to save with the value + * @param aBuff String value to store + * @return void + */ + void StoreString8L( const CImpsKey *aKey, const TDesC8& aBuff ); + + /** + * Stores new key/value pair to the datastore + * @param aKey Key to save with the value + * @param aInt Interger value to store + * @return void + */ + void StoreIntL( const CImpsKey *aKey, TInt aInt ); + + /** + * Stores new key/value pair to the datastore + * @param aKey Key to save with the value + * @param aBool Boolean value to store + * @return void + */ + void StoreBooleanL( const CImpsKey *aKey, TBool aBool ); + + /** + * Stores new key and empty value pair to the datastore + * @param aKey Key to save with the value + * @return void + */ + void StoreEmptyL( const CImpsKey *aKey ); + + /** + * Restores value from the store found by key + * @param aKey Key used for selecting from the store + * @param aBuff buffer found + * @return true if found, false if not + */ + TBool RestoreString( const CImpsKey *aKey, TDesC*& aBuff ) const; + + /** + * Restores value from the store found by key + * @param aKey Key used for selecting from the store + * @param aBuff buffer found + * @return true if found, false if not + */ + TBool RestoreString8( const CImpsKey *aKey, TDesC8*& aBuff ); + + /** + * Restores value from the store found by key + * @param aKey Key used for selecting from the store + * @param aInt integer found + * @return true if found, false if not + */ + TBool RestoreInt( const CImpsKey *aKey, TInt& aInt ); + + /** + * Restores value from the store found by key + * @param aKey Key used for selecting from the store + * @param aBool Boolean found + * @return true if found, false if not + */ + TBool RestoreBoolean( const CImpsKey *aKey, TBool& aBoolean ); + + /** + * Restores value from the store found by key + * @param aKey Key used for selecting from the store + * @return true if found, false if not + */ + TBool RestoreEmpty( const CImpsKey *aKey ); + + /** + * Checks if the key exists in the datastore. Options + * are partial + * wholekey + * @param aKey Key used for finding from the store + * @param aOpt Find mode (partial or whole) + * @return CImpsKey if found, NULL if not + */ + const CImpsKey* CheckKey( const CImpsKey *aKey, TImpsKeyOptions aOpt = EPartialKey ) const; + + /** + * Finds the element from the list based on a key(no partial key, full key) + * @param aKey Key used for finding from the store + * @param type of the key. + * @return address of the element, NULL if not found + */ + const CImpsElement* Find( const CImpsKey *aKey, TImpsDataType aType ) const; + + /** + * Resets the array to empty array and deletes all elemenst + */ + inline void Reset( ); + + /** + * Size + * @return the size the data used by this object + */ + TInt Size( ) const; + + /** + * Count + * @return the number of elements in the list + */ + inline TInt Count( ) const; + + /** + * Pack + * @param start pointer + * @param end pointer + * @return KErrNone if ok. error status otherwise + */ + TInt Pack( const TUint8*& aPtrStart ) const; + + /** + * UnPackL + * @param Pointer with stream to unpack + */ + void UnPackL( TUint8*& aPtr ); +#ifdef _DEBUG + /** + * DumpToFileL + * @param Filename with path where to dump the object + */ + void DumpToFileL( RFs& aSession, const TDesC& aFileName ) const; +#endif + /** + * Copy + * @param All elements which have the key in the beginning are copied + * If aKey is NULL everything is copied + * @param Source CImpsData + */ + void CopyL( const CImpsKey* aKey, const CImpsData* aSource ); + + /** + * SetKeyIndex + * This function changes all the entries in this data storage + * which have this key. The index of the last key is changed. + * @param Partial key ( All found keys are changed ) + * Cannot be NULL + * @param New index for the key element + */ + void SetKeyIndex( const CImpsKey* aKey, TInt aNewIndex ); + + private: + + /** + * By default Symbian OS constructor is private. + */ + CImpsData(); + + /** + * Symbian OS second phase construction + */ + void ConstructL(); + + // By default, prohibit copy constructor + CImpsData( const CImpsData& ); + // Prohibit assigment operator + CImpsData& operator= ( const CImpsData& ); + + private: // Data + CImpsElements* iElements; + + }; + +#include "ImpsData.inl" + +#endif // IMPS_CIMPSDATA_H + +// End of File