mmuifw_plat/osn_container_api/inc/osn/alfptrvectorimpl.h
branchRCL_3
changeset 20 0e9bb658ef58
parent 0 e83bab7cf002
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmuifw_plat/osn_container_api/inc/osn/alfptrvectorimpl.h	Wed Sep 01 12:23:18 2010 +0100
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2007 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:  vector implementation
+ *
+*/
+
+
+
+#ifndef ALFPTRVECTORIMPL_H
+#define ALFPTRVECTORIMPL_H
+
+#include <osn/osndefines.h>
+#include <osn/osntypes.h>
+
+namespace osncore
+{
+
+class IDeleter
+    {
+private:
+    friend class AlfPtrVectorImpl;
+    virtual void deleteItem(void* aItem)=0;
+    };
+
+
+/**
+ *  @deprecated Use STL vector
+ *  @class AlfPtrVectorImpl alfptrvectorimpl.h "osn/alfptrvectorimpl.h"
+ *  Implementation class for AlfPtrVector
+ *
+ *  @lib osncore.lib
+ *  @since S60 5.0
+ *  @status Draft
+ */
+class AlfPtrVectorImpl
+    {
+public: // constructors / destructor
+
+    /**
+     * @deprecated Use STL vector
+     * Constructor
+     *
+     * @since S60 5.0
+     * @param aDeleter
+     */
+    OSN_IMPORT AlfPtrVectorImpl( IDeleter& aDeleter );
+
+    /**
+     * @deprecated Use STL vector
+     * Constructor
+     *
+     * @since S60 5.0
+     * @param aSize
+     * @param aDeleter
+     */
+    OSN_IMPORT AlfPtrVectorImpl(uint aSize, IDeleter& aDeleter);
+
+    /**
+     * @deprecated Use STL vector
+     * Destructor
+     */
+    OSN_IMPORT ~AlfPtrVectorImpl();
+
+    /**
+     * @deprecated Use STL vector
+     * Clears the vector
+     *
+     * @since S60 5.0
+     * @param aDelItems determines whether the items are deleted
+     */
+    OSN_IMPORT void clear(bool aDelItems);
+
+    /**
+     * @deprecated Use STL vector
+     * Removes an item from the vector
+     *
+     * @since S60 5.0
+     * @param aCount the item to be deleted
+     * @param aDelItems determines whether the item is deleted
+     * @return true/false to indicate if item has been removed.
+     */
+    OSN_IMPORT bool remove(uint aCount, bool aDelItems);
+
+    /**
+     * @deprecated Use STL vector
+     * Resizes the vector to new size. Existing items in
+     * the vector will be restored if auto delete property is false.
+     *
+     * @since S60 5.0
+     * @param aSize New size in bytes.
+     * @param aDelItems determines whether the items are deleted
+     * @return true/false to indicate if item has been resized.
+     */
+    OSN_IMPORT bool resize(uint aSize, bool aDelItems);
+
+    /**
+     * @deprecated Use STL vector
+     * Inserts a new item at given position in the vector.
+     *
+     * @since S60 5.0
+     * @param aCount Position at which item has to be inserted.
+     * @param aItem Pointer to the item to be inserted.
+     * @param aDelItems determines whether the item is deleted, not used!
+     * @return true/false to indicate if the item has been inserted.
+     */
+    OSN_IMPORT bool insert(uint aCount, void *aItem, bool aDelItems);
+
+    /**
+     * @deprecated Use STL vector
+     * Returns the position of the item in the vector.
+     *
+     * @since S60 5.0
+     * @param aItem Pointer to the item being searched in the vector.
+     * @return Position of item in the vector.-1 is returned if item is not found.
+     */
+    OSN_IMPORT int findRef(void *aItem);
+
+public: // inliners
+    bool isEmpty() const { return mcount == 0; }
+    uint count() const { return mcount; }
+    uint size() const { return msize; }
+    void* at(uint aCount) const { return mdata[aCount]; }
+    void** data() { return mdata; }
+
+
+private:
+    AlfPtrVectorImpl& operator=(const AlfPtrVectorImpl&);
+
+    void** mdata;
+    uint msize;
+    uint mcount;
+    IDeleter& mDeleter;
+    };
+
+} // namespace core
+#endif