osncore/osncore/src/alfptrvectorimpl.cpp
changeset 17 3eca7e70b1b8
parent 3 4526337fb576
--- a/osncore/osncore/src/alfptrvectorimpl.cpp	Tue Feb 02 00:28:09 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/*
-* Copyright (c) 2009 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: osn vector pointer implementation.
-*
-*/
-
-#if defined(__GNUC__)
-#include <stdlib.h>
-#include <string.h>
-#else
-#include <libc/string.h>
-#endif
-
-#include <osn/alfptrvectorimpl.h>
-#include <stdexcept>
-
-namespace osncore
-    {
-
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-//
-OSN_EXPORT AlfPtrVectorImpl::AlfPtrVectorImpl(IDeleter& aDeleter)
-    : mdata(0), msize(0), mcount(0), mDeleter(aDeleter)
-    {
-    }
-
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-//
-OSN_EXPORT AlfPtrVectorImpl::AlfPtrVectorImpl(uint aSize, IDeleter& aDeleter): 
-    mdata(0),
-    msize(aSize), 
-    mcount(0), mDeleter(aDeleter)
-    {
-    mdata = (void **)malloc(aSize * sizeof(void *));
-    if(!mdata)
-        {
-        throw std::bad_alloc();    
-        }
-    memset(mdata, 0, aSize * sizeof(void *));
-    }
-
-
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-//
-OSN_EXPORT AlfPtrVectorImpl::~AlfPtrVectorImpl()
-{
-    free(mdata);
-}
-
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-//
-OSN_EXPORT void AlfPtrVectorImpl::clear(bool aDelItems)
-    {
-    mcount = 0;
-    
-    if (aDelItems) 
-        {
-    	for (uint i = 0; i < msize; ++i) 
-    	    {
-            void *item = mdata[i];
-    	    if (item) 
-    	        {
-    		    mDeleter.deleteItem(item);
-    	        }
-    	}
-	}
-    free(mdata);
-    mdata = 0;
-    msize = 0;    
-    }
-
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-//
-OSN_EXPORT bool AlfPtrVectorImpl::remove(uint aCount, bool aDelItems)
-{
-    if (aCount >= msize) {
-        return false;
-    }
-    
-    void *item = mdata[aCount];
-
-    --mcount;
-
-    //Move all the items below the deleted items up by 1 index
-    for(uint i =aCount; i< msize && msize > aCount;++i)
-    {
-    	mdata[i]= mdata[i+1];
-    }
-
-    //Reset the items to null - from index = count to the size  after the shuffling.
-    for(uint i=mcount;i<msize;++i)
-    {
-    	mdata[i] = 0;
-    }
-
-    // Array is now in good shape. Can call out of the class via destructors
-    if (item) {
-        if (aDelItems) {
-            mDeleter.deleteItem(item);
-        }
-    }     
-    return true;
-}
-
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-//
-OSN_EXPORT bool AlfPtrVectorImpl::resize(uint aSize, bool aDelItems)
-{
-    uint oldSize = msize;
-    
-    for (uint i = aSize; i < oldSize; ++i) {
-        void *item = mdata[i];
-        if (item) {
-            --mcount;
-        }
-    }
-    
-    for (uint i = aSize; i < oldSize; ++i) {
-    	void *item = mdata[i];
-    	if (item) {
-        if (aDelItems) {
-           mDeleter.deleteItem(item);
-        	}
-    	}
-    }
-    
-    void** data = (void **)realloc(mdata, aSize * sizeof(void *));
-    if(!data)
-        {
-        throw std::bad_alloc();    
-        }
-    mdata = data;    
-    msize = aSize;    
-
-    if (aSize > oldSize) 
-    {
-        memset(&mdata[oldSize], 0, (aSize - oldSize) * sizeof(void *));
-    }
-    return true;
-}
-
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-//
-OSN_EXPORT bool AlfPtrVectorImpl::insert(uint aCount, void *aItem, bool /*aDelItems*/)
-{
-	uint iNum=0;
-	//If there are no items and  the position to add > 0 or <0 then  return false. Do not do anything
-	//if the Index is greater than the current count then Do not do anything
-	//if aCount== count There will be scope to add at the most one item
-	if((aCount > mcount) || (mcount==0 && aCount >iNum)||(mcount==0 && aCount < iNum))
-           {
-    	   return false;
-           } 
-
-	
-	if(mcount>=msize)
-    	{
-		// 1. Let's increase the count
-		int oldSize = msize;	
-	    msize++;
-	
-		// 2. Re-allocate memeory area 	
-    	void** tmp = (void **)realloc(mdata, msize * sizeof(void *));
-	    if(!tmp)
-	        {
-	        msize--;
-	        throw std::bad_alloc();    
-	        }
-	    mdata = tmp;    
-	   	memset(&mdata[oldSize], 0, (msize- oldSize) * sizeof(void *));
-        }
-
-	    //Now move	elements from nth element to the last element by 1 position
-	    //Move all
-	    if(aCount < mcount)
-	        { 
-		    for(int i =mcount;i > aCount; --i)
-		        {
-		    	mdata[i]= mdata[i-1];
-		        }    
-		    }
-	    //Now assign the new element at this position and increment the count	    	    
-	    
-	    mdata[aCount] = aItem;
-	    if (aItem) 
-	    {
-	        ++mcount;
-	    }
-	        
-    return true;
-}
-
-// -------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-//
-OSN_EXPORT int AlfPtrVectorImpl::findRef(void *aItem)
-{
-    for (unsigned i = 0; i < mcount; i++) {
-        if (mdata[i] == aItem) {
-            return i;
-        }
-    }
-    
-    return -1;
-}
-
-
-
-} //osncore