imgtools/imglib/filesystem/include/filesystemclass.h
author timothy.murphy@nokia.com
Thu, 25 Mar 2010 13:43:28 +0000
branchfix
changeset 408 a819f9223567
parent 0 044383f39525
permissions -rw-r--r--
fix: stop using "magic" numbers in string operations for the copyannofile2log feature fix: When using the copylogfromannofile workaround, extract the build ID and build duration and add to the log as these are useful for analysis. The log should now be identical to the stdout file. fix: Remove extra blank lines from output in copylogfromannofile mode.

/*
* 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: 
* Base file system class for FileSystem component
* @internalComponent
* @released
*
*/


#ifndef FIlESYSTEMCLASS_H
#define FIlESYSTEMCLASS_H

#include "cluster.h"
#include "fat16bootsector.h"
#include "fat32bootsector.h"
#include "filesysteminterface.h"

#include<map>
#include <fstream>



//default root cluster number 
const int KDefaultRootCluster=2;
const int KDefaultSectorSizeinBytes=512;
const int KDefaultRootDirEntrySize=32;



typedef	TClustersPerEntryMap::iterator Iterator;
/**
Class representing base class  of all FAT type 

@internalComponent
@released
*/
class CFileSystem
{
protected:
	//Pointer to dynamically allocated array for containing the boot sector values of a FAT volume
	unsigned char* iData;
	//cluster size in bytes
	unsigned long int iClusterSize;
	//number of sectors occupied by a root directory
	unsigned long iRootDirSectors;	
	//total number of clusters in data segment
	unsigned long int iTotalClusters;
	unsigned int iBytesPerSector;

public:
	//constructor
	CFileSystem();
	// virtual destructor
	virtual ~CFileSystem();
	virtual void CreateBootSector(Long64 aPartitionSize,ConfigurableFatAttributes* aConfigurableFatAttributes)=0 ;
	virtual void WriteBootSector(ofstream& aOutPutStream)=0 ;
	virtual void CreateFatTable(ofstream& aOutPutStream)=0;
	virtual void ComputeClusterSizeInBytes()=0;
	virtual void ComputeRootDirSectors()=0;
	virtual void ComputeTotalClusters(Long64 aPartitionSize)=0;
	virtual void Execute(Long64 aPartitionSize,EntryList aNodeList,ofstream& aOutPutStream,
						ConfigurableFatAttributes* aConfigurableFatAttributes)=0;
	unsigned long int  GetTotalCluster() const;
	unsigned long GetRootDirSectors() const;
	unsigned long int GetClusterSize() const;
	unsigned int GetBytesPerSector() const;
};

#endif //FIlESYSTEMCLASS_H