--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/rombuild/r_coreimage.cpp Tue Oct 27 16:36:35 2009 +0000
@@ -0,0 +1,189 @@
+/*
+* Copyright (c) 2008-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:
+*
+*/
+
+
+#include <e32def.h>
+#include <e32def_private.h>
+#include <e32rom.h>
+
+#include "h_utl.h"
+#include "r_rom.h"
+
+#include "r_coreimage.h"
+
+// CoreRomImage
+//
+CoreRomImage::CoreRomImage(char* aFileName) :
+iReader(0),
+iFileName(aFileName),
+iRomHdr(0),
+iRootDirectory(0),
+iNumVariants(0),
+iVariants(0),
+iRomAlign(0),
+iDataRunAddress(0)
+{
+}
+
+CoreRomImage::~CoreRomImage()
+{
+ if(iReader)
+ delete iReader;
+
+ if(iVariants)
+ delete[] iVariants;
+}
+
+TBool CoreRomImage::ProcessImage(const TBool aUseMemMap)
+{
+ TBool Status = EFalse;
+ TRomRootDirectoryList *rootDirInfo = 0;
+ TInt dirCount = 0;
+
+ iReader = new CoreRomImageReader(iFileName, aUseMemMap);
+
+ if(!iReader)
+ {
+ return EFalse;
+ }
+
+ if(iReader->OpenImage())
+ {
+ Status = iReader->ProcessImage();
+ }
+
+ if(Status)
+ {
+ // CoreRomHeader Info
+ iRomHdr = iReader->GetCoreRomHeader();
+
+ if(iRomHdr)
+ {
+ // Root Directory Info
+ rootDirInfo = iReader->GetRootDirList();
+ dirCount = rootDirInfo->iNumRootDirs;
+ if(dirCount)
+ {
+ iNumVariants = dirCount;
+ iVariants = new THardwareVariant[dirCount];
+
+ if(iVariants)
+ {
+ while(dirCount--)
+ {
+ iVariants[dirCount] = rootDirInfo->iRootDir[dirCount].iHardwareVariant;
+ }
+ }
+
+ // RootDirectory Info
+ iRootDirectory = iReader->GetRootDirectory();
+ }
+ else
+ {
+ Status = EFalse;
+ }
+ }
+ else
+ {
+ Status = EFalse;
+ }
+ }
+
+ return Status;
+}
+
+TRomNode* CoreRomImage::CopyDirectory(TRomNode*& aSourceDirectory)
+{
+ return iRootDirectory->CopyDirectory(aSourceDirectory,0);
+}
+
+TUint32 CoreRomImage::RomBase()
+{
+ return (iRomHdr->iRomBase);
+}
+
+TUint32 CoreRomImage::RomSize()
+{
+ return (iRomHdr->iRomSize);
+}
+
+TVersion CoreRomImage::Version()
+{
+ return (iRomHdr->iVersion);
+}
+
+TInt64 CoreRomImage::Time()
+{
+ return (iRomHdr->iTime);
+}
+
+TUint32 CoreRomImage::CheckSum()
+{
+ return (iRomHdr->iCheckSum);
+}
+
+TUint32 CoreRomImage::CompressionType()
+{
+ return (iRomHdr->iCompressionType);
+}
+
+TRomNode* CoreRomImage::RootDirectory()
+{
+ return iRootDirectory;
+}
+
+TText* CoreRomImage::RomFileName()
+{
+ return (TText*)iFileName.data();
+}
+
+TUint32 CoreRomImage::RomAlign()
+{
+ return iRomAlign;
+}
+
+TUint32 CoreRomImage::DataRunAddress()
+{
+ return iDataRunAddress;
+}
+
+TInt32 CoreRomImage::VariantCount()
+{
+ return iNumVariants;
+}
+
+THardwareVariant* CoreRomImage::VariantList()
+{
+ return iVariants;
+}
+
+void CoreRomImage::SetRomAlign(const TUint32 aAlign)
+{
+ iRomAlign = aAlign;
+}
+
+void CoreRomImage::SetDataRunAddress(const TUint32 aRunAddress)
+{
+ iDataRunAddress = aRunAddress;
+}
+
+void CoreRomImage::DisplayNodes()
+{
+ iReader->Display(iRootDirectory);
+ return;
+}
+