phonebookui/Phonebook/inc/CPbkContactIdSet.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook/inc/CPbkContactIdSet.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,170 @@
+/*
+* 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: 
+*     Set data structure for contact model contact IDs.
+*
+*/
+
+
+#ifndef __CPbkContactIdSet_H__
+#define __CPbkContactIdSet_H__
+
+//  INCLUDES
+#include <cntdef.h>
+
+// CLASS DECLARATION
+
+/**
+ * @internal Only Phonebook internal use supported!
+ *
+ * Data structure for Contact model Contact IDs.
+ */
+class CPbkContactIdSet : public CBase
+	{
+    public: // Interface
+        /**
+         * Constructor.
+         */
+	    IMPORT_C static CPbkContactIdSet* NewL();
+
+        /**
+         * Constructor.
+         */
+	    IMPORT_C static CPbkContactIdSet* NewLC();
+
+        /**
+         * Constructor. Copies the contents of this set from aSet.
+         */
+	    IMPORT_C static CPbkContactIdSet* NewL(const CPbkContactIdSet& aSet);
+
+        /**
+         * Constructor. Copies the contents of this set from aSet.
+         */
+	    IMPORT_C static CPbkContactIdSet* NewLC(const CPbkContactIdSet& aSet);
+
+        /**
+         * Constructor. Copies the contents of this set from aArray.
+         */
+        IMPORT_C static CPbkContactIdSet* NewL(const CContactIdArray& aArray);
+
+        /**
+         * Constructor. Copies the contents of this set from aArray.
+         */
+        IMPORT_C static CPbkContactIdSet* NewLC(const CContactIdArray& aArray);
+
+        /**
+         * Destructor.
+         */
+	    ~CPbkContactIdSet();
+
+        /**
+         * Returns TContactItemId at aIndex in this set.
+         */
+	    inline TContactItemId operator[](TInt aIndex) const;
+
+        /**
+         * Returns number of Ids in the set.
+         */
+	    inline TInt Count() const;
+
+        /**
+         * Removes all items from this set.
+         */
+	    inline void Reset();
+
+        /**
+         * Searches for aId from this set, returns ETrue if found.
+         */
+	    IMPORT_C TBool Find(TContactItemId aId) const;
+
+        /**
+         * Adds aId to this set.
+         *
+         * @exception KErrNoMemory  if this function leaves this set is not 
+         *                          modified.
+         * @postcond Find(aId) && Count() == old(Count()+1)
+         */
+	    IMPORT_C void AddL(TContactItemId aId);
+
+        /**
+         * Adds all Ids in aSet to this set.
+         *
+         * @exception KErrNoMemory  if this function leaves none of the Ids in 
+         *                          aSet are added to this set.
+         * @postcond for all Ids i in aSet: Find(i)==ETrue
+         */
+	    IMPORT_C void AddL(const CPbkContactIdSet& aSet);
+
+        /**
+         * Adds all Ids in aArray to this set.
+         *
+         * @exception KErrNoMemory  if this function leaves none of the Ids in 
+         *                          aArray are added to this set.
+         * @postcond for all Ids i in aArray: Find(i)==ETrue
+         */
+	    IMPORT_C void AddL(const CContactIdArray& aArray);
+
+        /**
+         * Removes aId from this set.
+         */
+	    IMPORT_C void Remove(TContactItemId aId);
+
+        /**
+         * Removes all Ids in aArray from this set.
+         */
+	    IMPORT_C void Remove(const CContactIdArray& aArray);
+
+        /**
+         * Removes all Ids in aSet from this set.
+         */
+        IMPORT_C void Remove(const CPbkContactIdSet& aSet);
+
+        /**
+         * Creates a CContactIdArray copy of this set's contents.
+         *
+         * @return  new CContactIdArray containing all contact Ids in this set.
+         *          Caller is responsible of the returned array.
+         */
+        IMPORT_C CContactIdArray* GetContactIdArrayL() const;
+
+        __DECLARE_TEST;
+
+    private: // Implementation
+	    CPbkContactIdSet();
+        
+    private: // Data
+        /// Own: sorted array of contact Ids.
+	    RArray<TInt> iIds;
+	};
+
+inline TContactItemId CPbkContactIdSet::operator[](TInt aIndex) const
+    {
+    // iIds checks aIndex
+    return iIds[aIndex];
+    }
+
+inline TInt CPbkContactIdSet::Count() const
+    {
+    return iIds.Count();
+    }
+
+inline void CPbkContactIdSet::Reset()
+    {
+    iIds.Reset();
+    }
+
+
+#endif // __CPbkContactIdSet_H__
+
+// End of File