diff -r c7c26511138f -r 360bd6b35136 imgtools/imglib/filesystem/source/cluster.cpp --- a/imgtools/imglib/filesystem/source/cluster.cpp Wed Jun 16 16:51:40 2010 +0300 +++ b/imgtools/imglib/filesystem/source/cluster.cpp Wed Jun 23 16:56:47 2010 +0800 @@ -1,191 +1,191 @@ -/* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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: -* Cluster class used to allocate cluster numbers for directory entries -* and while writing file contents. And it is responsible to create the -* MAP of content starting cluster to ending cluster which can be used -* to generate FAT table. Since the cluster number is unique all over the -* filesystem component, this class is designed as singleton class. -* @internalComponent -* @released -* -*/ - - -#include "cluster.h" - - -//Initialize the Static CCluster instance pointer -CCluster* CCluster::iClusterInstance = NULL; - -/** -Static function which is used to instantiate and return the address of CCluster class. - -@internalComponent -@released - -@param aClusterSize - single cluster size in Bytes -@param aTotalNumberOfClusters - Maximum number of clusters -@return - returns the instance of CCluster class -*/ - -CCluster* CCluster::Instance(unsigned int aClusterSize,unsigned int aTotalNumberOfClusters) -{ - if (iClusterInstance == NULL) // is it the first call? - { - // create sole instance - iClusterInstance = new CCluster(aClusterSize, aTotalNumberOfClusters); - } - return iClusterInstance; // address of sole instance -} - -/** -Destructor: Clears the clusters per entry map - -@internalComponent -@released -*/ -CCluster::~CCluster () -{ - iClustersPerEntry.clear(); - iClusterInstance = NULL; -} - - -/** -Constructor Receives inputs from dirregion Class and initializes the class variables - -@internalComponent -@released - -@param aClusterSize - Size of every Cluster -@param aTotalNumberOfClusters - maximum number of clusters allowed for current FAT image -*/ -CCluster::CCluster(unsigned int aClusterSize, unsigned int aTotalNumberOfClusters) - :iClusterSize(aClusterSize),iTotalNumberOfClusters(aTotalNumberOfClusters) -{ - iRootClusterNumber = KRootClusterNumber; - iCurrentClusterNumber = iRootClusterNumber; -} - -/** -Function to return the current cluster number - -@internalComponent -@released - -@return - returns the current cluster number -*/ -unsigned int CCluster::GetCurrentClusterNumber() const -{ - return iCurrentClusterNumber; -} - -/** -Function to decrement the current cluster number - -@internalComponent -@released -*/ -void CCluster::DecrementCurrentClusterNumber() -{ - --iCurrentClusterNumber; -} - -/** -Function to get the High word of Current cluster number - -@internalComponent -@released - -@return - returns the 16 bit HIGH word -*/ -unsigned short int CCluster::GetHighWordClusterNumber() const -{ - return (unsigned short)(iCurrentClusterNumber >> KBitShift16); -} - -/** -Function to get the Low word of Current cluster number - -@internalComponent -@released - -@return - returns the 16 bit LOW word -*/ -unsigned short int CCluster::GetLowWordClusterNumber() const -{ - return (unsigned short)(iCurrentClusterNumber & KHighWordMask); -} - - -/** -Function responsible to -1. Increment the current Cluster Number -2. Throw the error "image size too big" if the allocated clusters count exceeds total -number of available clusters. - -@internalComponent -@released -*/ -void CCluster::UpdateNextAvailableClusterNumber() -{ - if(iCurrentClusterNumber >= iTotalNumberOfClusters) - { - throw ErrorHandler(IMAGESIZETOOBIG,"Occupied number of clusters count exceeded than available clusters",__FILE__,__LINE__); - } - ++iCurrentClusterNumber; -} - -/** -Function to Return the cluster size - -@internalComponent -@released - -@return the cluster size -*/ -unsigned int CCluster::GetClusterSize() const -{ - return iClusterSize; -} - -/** -Function Creates mapping between starting cluster number (where data starts) and -the sub sequent cluster numbers (where the data extends). - -@internalComponent -@released - -@param aStartingClusterNumber - Cluster number where the data starts -@param aPairClusterNumber - Cluster number where the data extends -*/ -void CCluster::CreateMap(unsigned int aStartingClusterNumber,unsigned int aPairClusterNumber) -{ - iClustersPerEntry.insert(std::make_pair(aStartingClusterNumber,aPairClusterNumber)); -} - -/** -Function to get Clusters per Entry MAP container. - -@internalComponent -@released - -@return - returns the CLusters per entry container -*/ - -TClustersPerEntryMap* CCluster::GetClustersPerEntryMap() -{ - return &iClustersPerEntry; -} +/* +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* Cluster class used to allocate cluster numbers for directory entries +* and while writing file contents. And it is responsible to create the +* MAP of content starting cluster to ending cluster which can be used +* to generate FAT table. Since the cluster number is unique all over the +* filesystem component, this class is designed as singleton class. +* @internalComponent +* @released +* +*/ + + +#include "cluster.h" + + +//Initialize the Static CCluster instance pointer +CCluster* CCluster::iClusterInstance = NULL; + +/** +Static function which is used to instantiate and return the address of CCluster class. + +@internalComponent +@released + +@param aClusterSize - single cluster size in Bytes +@param aTotalNumberOfClusters - Maximum number of clusters +@return - returns the instance of CCluster class +*/ + +CCluster* CCluster::Instance(unsigned int aClusterSize,unsigned int aTotalNumberOfClusters) +{ + if (iClusterInstance == NULL) // is it the first call? + { + // create sole instance + iClusterInstance = new CCluster(aClusterSize, aTotalNumberOfClusters); + } + return iClusterInstance; // address of sole instance +} + +/** +Destructor: Clears the clusters per entry map + +@internalComponent +@released +*/ +CCluster::~CCluster () +{ + iClustersPerEntry.clear(); + iClusterInstance = NULL; +} + + +/** +Constructor Receives inputs from dirregion Class and initializes the class variables + +@internalComponent +@released + +@param aClusterSize - Size of every Cluster +@param aTotalNumberOfClusters - maximum number of clusters allowed for current FAT image +*/ +CCluster::CCluster(unsigned int aClusterSize, unsigned int aTotalNumberOfClusters) + :iClusterSize(aClusterSize),iTotalNumberOfClusters(aTotalNumberOfClusters) +{ + iRootClusterNumber = KRootClusterNumber; + iCurrentClusterNumber = iRootClusterNumber; +} + +/** +Function to return the current cluster number + +@internalComponent +@released + +@return - returns the current cluster number +*/ +unsigned int CCluster::GetCurrentClusterNumber() const +{ + return iCurrentClusterNumber; +} + +/** +Function to decrement the current cluster number + +@internalComponent +@released +*/ +void CCluster::DecrementCurrentClusterNumber() +{ + --iCurrentClusterNumber; +} + +/** +Function to get the High word of Current cluster number + +@internalComponent +@released + +@return - returns the 16 bit HIGH word +*/ +unsigned short int CCluster::GetHighWordClusterNumber() const +{ + return (unsigned short)(iCurrentClusterNumber >> KBitShift16); +} + +/** +Function to get the Low word of Current cluster number + +@internalComponent +@released + +@return - returns the 16 bit LOW word +*/ +unsigned short int CCluster::GetLowWordClusterNumber() const +{ + return (unsigned short)(iCurrentClusterNumber & KHighWordMask); +} + + +/** +Function responsible to +1. Increment the current Cluster Number +2. Throw the error "image size too big" if the allocated clusters count exceeds total +number of available clusters. + +@internalComponent +@released +*/ +void CCluster::UpdateNextAvailableClusterNumber() +{ + if(iCurrentClusterNumber >= iTotalNumberOfClusters) + { + throw ErrorHandler(IMAGESIZETOOBIG,"Occupied number of clusters count exceeded than available clusters",__FILE__,__LINE__); + } + ++iCurrentClusterNumber; +} + +/** +Function to Return the cluster size + +@internalComponent +@released + +@return the cluster size +*/ +unsigned int CCluster::GetClusterSize() const +{ + return iClusterSize; +} + +/** +Function Creates mapping between starting cluster number (where data starts) and +the sub sequent cluster numbers (where the data extends). + +@internalComponent +@released + +@param aStartingClusterNumber - Cluster number where the data starts +@param aPairClusterNumber - Cluster number where the data extends +*/ +void CCluster::CreateMap(unsigned int aStartingClusterNumber,unsigned int aPairClusterNumber) +{ + iClustersPerEntry.insert(make_pair(aStartingClusterNumber,aPairClusterNumber)); +} + +/** +Function to get Clusters per Entry MAP container. + +@internalComponent +@released + +@return - returns the CLusters per entry container +*/ + +TClustersPerEntryMap* CCluster::GetClustersPerEntryMap() +{ + return &iClustersPerEntry; +}