#ifndef SYMBIAN_TREE_H_INCLUDED
#define SYMBIAN_TREE_H_INCLUDED 1

#include "store.h"
#include <s32btree.h>

class CGenericIntMap : public MGenericIntMap,  public CBase
{
public:
	virtual void AddDataL(uint32 Key, void* data);
	virtual void* GetData(uint32 Key);
	virtual ~CGenericIntMap();
	virtual int Count() const;
	virtual void DeleteL(uint32 Key);
	virtual void SetDeletor( void(*delete_func)(void* data) );
	static CGenericIntMap* NewL();

private:
	struct Entry {
		uint32	key;
		void*	data;
	};

	class GenKey : public MBtreeKey {
	public:
		virtual void Between(const TAny* aLeft,const TAny* aRight,TBtreePivot& aPivot) const;
		virtual TInt Compare(const TAny* aLeft,const TAny* aRight) const;
		virtual const TAny* Key(const TAny* anEntry) const;
	};

	CGenericIntMap();
	void ConstructL();

	TBtreeFix<Entry, uint32>* iTree;
	GenKey iKey;
	CMemPagePool* iPool;
	void(*iDeletor)(void* data);
};


#endif // SYMBIAN_TREE_H_INCLUDED

