testexecfw/tef/utils/inc/datadictionary.h
changeset 0 3e07fef1e154
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/tef/utils/inc/datadictionary.h	Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2005-2009 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:  
+* @file
+* This contains DataDictionary.h
+*
+*/
+
+
+
+#ifndef __DATA_DICTIONARY_H__
+#define __DATA_DICTIONARY_H__
+
+#include <e32base.h>
+#include <e32hashtab.h>
+
+/**
+ * Data dictionary maximum name size
+ */
+const TInt									KMaxDataDictionaryNameSize = 256;
+
+/**
+ * Defines a modifiable buffer descriptor to contain the name of an entry in the dictionary
+ */
+typedef TBuf<KMaxDataDictionaryNameSize>	TDataDictionaryName;
+
+class CDataWrapper;
+
+class CDataDictionary : public CBase
+/**
+ * @internalAll
+ * @test
+ *
+ * @see		CBase
+ *
+ * This dictionary associates a name with a data wrapper object.
+ * Maintenance of the dictionary is perfomed by the methods AddDataL and DeleteDataL.
+ */
+	{
+private:
+	/**
+	 * @internalAll
+	 * @test
+	 *
+	 * Data dictionary storage area
+	 */
+	typedef RHashMap<TDataDictionaryName, CDataWrapper*>		RDataStore;
+	typedef THashMapIter<TDataDictionaryName, CDataWrapper*>	TDataIter;
+
+public:
+	CDataDictionary();
+	virtual ~CDataDictionary();
+
+	void			AddDataL(const TDataDictionaryName& aName, CDataWrapper* aData);
+	void			DeleteDataL(const TDataDictionaryName& aName);
+	void			SetCurrentDataL(const TDataDictionaryName& aName);
+	CDataWrapper*	GetDataL(const TDataDictionaryName& aName);
+	TAny*			CurrentObject();
+	TAny*			GetObjectL(const TDesC& aName);
+	void			SetObjectL(const TDataDictionaryName& aName, TAny* aObject);
+	void			Empty();
+	TInt			Outstanding(const TDesC& aName, TBool& aMoreToDo);
+
+private:
+	static TUint32	Hash(const TDataDictionaryName& aName);
+	static TBool	Identity(const TDataDictionaryName& aName1, const TDataDictionaryName& aName2);
+
+private:
+	RDataStore		iStore;
+	CDataWrapper*	iCurrentObject;
+	};
+
+#endif // __DATA_DICTIONARY_H__