mmuifw_plat/osn_container_api/inc/osn/alfptrvector.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:23:18 +0100
branchRCL_3
changeset 26 0e9bb658ef58
parent 0 e83bab7cf002
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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 <osn/osntypes.h>
#include <osn/alfptrvectorimpl.h>

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 T>
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