--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/IMPSengine/datautils/inc/impsdata.h Thu Dec 17 08:41:52 2009 +0200
@@ -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 <f32file.h>
+#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<CImpsElement> 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