diff -r 4ea6f81c838a -r 0e9bb658ef58 mmuifw_plat/osn_container_api/inc/osn/alfptrvector.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmuifw_plat/osn_container_api/inc/osn/alfptrvector.h Wed Sep 01 12:23:18 2010 +0100 @@ -0,0 +1,214 @@ +/* +* 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 ALF_PTRVECTOR_H +#define ALF_PTRVECTOR_H + + +#include +#include + +namespace osncore +{ + +/** +* @deprecated Use STL vector +* @class AlfPtrVector alfptrvector.h "osn/alfptrvector.h" +* Template class for a pointer vector +* +* @lib osncore.lib +* @since S60 5.0 +* @status Draft +* @interfaces AlfPtrVector +*/ +template +class AlfPtrVector: public IDeleter + { +public: + /** + * @deprecated Use STL vector + * Default constructor for vector. + * By default contents are automatically deleted + * when destructor is called. + * + * @since S60 5.0 + */ + AlfPtrVector() : mImpl(*this),mDelItem(true) {} + + /** + * @deprecated Use STL vector + * Constructor for vector with some default size. + * Size can be increased or decreased afterwards. + * + * @since S60 5.0 + * @param aSize Default size of vector. + */ + explicit AlfPtrVector(uint aSize) : mImpl(aSize,*this),mDelItem(true) {} + + /** + * @deprecated Use STL vector + * Destructor. + */ + ~AlfPtrVector() { if (mDelItem) { mImpl.clear(mDelItem); } } + + /** + * @deprecated Use STL vector + * Returns the value of auto delete property. + * + * @since S60 5.0 + * @return true or false. + */ + bool autoDelete() { return mDelItem; } + + /** + * @deprecated Use STL vector + * Sets the auto delete property of vector. + * + * @since S60 5.0 + * @param aAutoDelete Value(true/false) of the property.Default value is true. + */ + void setAutoDelete(bool aAutoDelete=true) { mDelItem = aAutoDelete; } + + /** + * Deletes all items of vector. + * + * @since S60 5.0 + */ + void clear() { mImpl.clear(mDelItem); } + + /** + * @deprecated Use STL vector + * Checks if there are some items in vector. + * + * @since S60 5.0 + * @return true or false. + */ + bool isEmpty() const { return mImpl.isEmpty(); } + + /** + * @deprecated Use STL vector + * Returns number of items in vector. + * + * @since S60 5.0 + * @return number of items in vector. + */ + uint count() const { return mImpl.count(); } + + /** + * @deprecated Use STL vector + * Returns the size in bytes occupied by vector. + * + * @since S60 5.0 + * @return number of bytes used by vector. + */ + uint size() const { return mImpl.size(); } + + /** + * @deprecated Use STL vector + * Removes the item from vector at given position. + * Item will be automatically deleted if auto delete + * property is set to true. + * + * @since S60 5.0 + * @param aPos Position of the item to be removed. + * @return true/false to indicate if item has been removed. + */ + bool remove(uint aPos) { return mImpl.remove(aPos, mDelItem); } + + /** + * @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. + * @return true/false to indicate if item has been resized. + */ + bool resize(uint aSize) { return mImpl.resize(aSize, mDelItem); } + + /** + * @deprecated Use STL vector + * Inserts a new item at given position in the vector. + * + * @since S60 5.0 + * @param aPos Position at which item has to be inserted. + * @param aItem Pointer to the item to be inserted. + * @return true/false to indicate if the item has been inserted. + */ + bool insert(uint aPos, T *aItem) { return mImpl.insert(aPos, aItem, mDelItem); } + + /** + * @deprecated Use STL vector + * Returns pointer to the item at given position in the vector. + * + * @since S60 5.0 + * @param aPos Position from which item is queried. + * @return Pointer to the item. + */ + T *at(int aPos) const {return (T *)mImpl.at(aPos); } + + /** + * @deprecated Use STL vector + * Returns pointer to the raw data used by vector to stroe the items. + * + * @since S60 5.0 + * @return Pointer to data. + */ + T **data() {return (T **)mImpl.data(); } + + /** + * @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. + */ + int findRef(T *aItem){return mImpl.findRef(aItem);} + + /** + * @deprecated Use STL vector + * Returns the item at given index in the vector. + * + * @since S60 5.0 + * @param aPos Position from which item has been queried. + * @return Pointer to the item at given position. + */ + T* operator[](uint aPos) const { return (T *)mImpl.at(aPos); } + +private: + void deleteItem(void* aItem) + { + delete (T*) aItem; + } + AlfPtrVector(const AlfPtrVector&); + AlfPtrVector& operator=(const AlfPtrVector&); +private: + /** + * Owned body + */ + AlfPtrVectorImpl mImpl; + /** + * Auto delete + */ + bool mDelItem; + + }; + +} +#endif