diff -r 1af5c1be89f8 -r 92d87f2e53c2 tools/elf4rom/src/e32romimage.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/elf4rom/src/e32romimage.h Fri Jan 15 09:07:44 2010 +0000 @@ -0,0 +1,68 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this program. If not, see . +*/ + +#ifndef E32ROMIMAGE_H_ +#define E32ROMIMAGE_H_ + +#include + +#include "defs.h" +#include "filefragment.h" +#include "inputfile.h" + +class E32RomImage : public FileFragmentOwner { +public: + typedef struct // this is the structure of an EPOC rom header + { + char name[16]; + unsigned char versionStr[4]; + unsigned char buildNumStr[4]; + unsigned long romSize; + unsigned long wrapSize; + } E32RomHeader; +public: + + E32RomImage(PathName aPath): + iRomFile(aPath), iData(NULL) + {}; + + void SetupRomData(); + + // The FileFragmentOwner protocol + virtual void GetFileFragmentData(FileFragmentData & aFileFragmentData ); + virtual size_t Size() { + assert(iRomFile.Size() - iRomFile.GetOffset()); + return iRomFile.Size() - iRomFile.GetOffset(); + }; + virtual void DeleteFileFragmentData(); + +private: + + void Open(); + void Close(); + void SetSize(); + +private: + InputFile iRomFile; + char * iData; + E32RomHeader iE32RomHeader; + + +}; + +#endif /*E32ROMIMAGE_H_*/