diff -r 000000000000 -r 8466d47a6819 emailservices/emailstore/base_plugin/inc/Map.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailstore/base_plugin/inc/Map.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,173 @@ +/* +* Copyright (c) 2006 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: Map implementation header. +* +*/ + + +#ifndef __MAP_H__ +#define __MAP_H__ + +/**************************************************************** +This template class represent a hash map +USE ONLY POINTERS TO CLASSES!!! +INSERTION TRANSFERS THE OWNERSHIP OF THE INSERTED POINTER!!! + +For example the correct interger key and value insertion is: +static void InsertEntryL(RMap& aMap, const TInt aKey,const TInt aValue) +{ + TInt64* k64 = new TInt64; + *k64 = aKey; + TInt64* v64 = new TInt64; + *v64 = aValue; + + aMap.InsertL(k64, v64); +} +****************************************************************/ + +#include "SafePointerArray.h" + +template +class RMap +{ +public: + inline RMap(const TLinearOrder& anOrder); + inline void ResetAndDestroy(); + inline void Close(); + + //insert related functions + inline void InsertL(const Tkey* aKey, const Tvalue* aValue); + inline const Tvalue* InsertReplaceL(const Tkey* aKey, const Tvalue* aValue); + + //check if there is an element with this key + inline TBool ContainsKey(const Tkey& aKey) const; + inline TBool ContainsValue(const Tvalue& aValue) const; + inline TInt Find(const Tkey& aKey) const; + + //value by key + inline Tvalue& GetValueL(const Tkey& aKey) const; + //key by value + inline Tkey& GetKeyL(const Tvalue& aValue) const; + + //remove the element with this key + inline void RemoveL(const Tkey& aKey); + inline void RemoveAtL(TInt anIndex, Tkey*& aKey, Tvalue*& aValue); + + RSafePointerArray& Keys(); + RSafePointerArray& Values(); + + //key by index + inline Tkey& KeyAt(TInt anIndex); + inline const Tkey& KeyAt(TInt anIndex) const; + //value by index + inline Tvalue& ValueAt(TInt anIndex); + inline const Tvalue& ValueAt(TInt anIndex) const; + + //length + inline TInt Count() const; + + static TInt CompareAlphabetDes(const TDesC& aFirst,const TDesC& aSecond) + { + if (aFirst < aSecond) + { + return -1; + } + + if (aFirst > aSecond) + { + return 1; + } + + return 0; + } + + static TInt CompareAlphabetDes8(const TDesC8& aFirst,const TDesC8& aSecond) + { + if (aFirst < aSecond) + { + return -1; + } + + if (aFirst > aSecond) + { + return 1; + } + + return 0; + } + + static TInt CompareInt(const TInt64& aFirst,const TInt64& aSecond) + { + if (aFirst < aSecond) + { + return -1; + } + + if (aFirst > aSecond) + { + return 1; + } + + return 0; + } +protected: + TLinearOrder iOrder; + RSafePointerArray iKeys; + RSafePointerArray iValues; +}; +/* +template +class CMap: public CArrayFixFlat +{ +public: + CMap(const TKeyArrayFix& aKey); + inline void Reset(); + + //insert related functions + inline void InsertL(const T& anEntry); + inline Tvalue InsertReplaceL(const T& anEntry); + + //check if there is an element with this key + TBool ContainsKey(const Tkey& aKey); + + //value by key + Tvalue& GetValueL(const Tkey& aKey); + //key by value + Tkey& GetKeyL(const Tvalue& aValue); + + //remove the element with this key + void RemoveL(const Tkey& aKey); + + RArray& Keys(); + RArray& Values(); + + //key by index + Tkey& KeyAt(TInt anIndex); + const Tkey& KeyAt(TInt anIndex) const; + //value by index + Tvalue& ValueAt(TInt anIndex); + const Tvalue& ValueAt(TInt anIndex) const; + + //length + inline TInt Count() const; + +protected: + TKeyArrayFix& iKey; +}; + +*/ + +#include "Map.inl" + +#endif //__MAP_H__