imgtools/romtools/rofsbuild/r_romnode.h
changeset 590 360bd6b35136
parent 0 044383f39525
child 691 9eeecb73a5d4
--- a/imgtools/romtools/rofsbuild/r_romnode.h	Wed Jun 16 16:51:40 2010 +0300
+++ b/imgtools/romtools/rofsbuild/r_romnode.h	Wed Jun 23 16:56:47 2010 +0800
@@ -1,291 +1,286 @@
-/*
-* Copyright (c) 1995-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: 
-*
-*/
-
-
-#ifndef __R_ROMNODE_H__
-#define __R_ROMNODE_H__
-
-#if defined(__MSVCDOTNET__) || defined(__TOOLS2__)
-#include <fstream>
-#else //!__MSVCDOTNET__
-#include <fstream.h>
-#endif //__MSVCDOTNET__
-
-#include <e32std.h>
-#include "rofs.h"
-#include "e32image.h"
-#include "h_utl.h"
-
-const TUint KOverrideStack = 0x01;
-const TUint KOverrideHeapMin = 0x02;
-const TUint KOverrideHeapMax = 0x04;
-const TUint KOverrideRelocationAddress = 0x08;
-const TUint KOverrideUid1 = 0x10;
-const TUint KOverrideUid2 = 0x20;
-const TUint KOverrideUid3 = 0x40;
-const TUint KOverrideCallEntryPoint = 0x80;
-const TUint KOverrideNoCallEntryPoint = 0x100;
-const TUint KOverridePriority = 0x200;
-const TUint KOverrideStackReserve = 0x400;
-const TUint KOverrideKeepIAT = 0x800;
-const TUint KOverrideCapability = 0x1000;
-const TUint KOverrideFixed = 0x2000;
-const TUint KOverrideDllData  = 0x4000;
-const TUint KOverrideCodeUnpaged = 0x8000;
-const TUint KOverrideCodePaged = 0x10000;
-const TUint KOverrideDataUnpaged = 0x20000;
-const TUint KOverrideDataPaged = 0x40000;
-
-enum ECompression{
-	ECompressionUnknown=0,
-	ECompressionCompress=1,
-	ECompressionUncompress=2
-};
-
-const TInt KFileHidden = 0xFFFFFFFF;
-
-
-
-class TRomBuilderEntry;
-class RomFileStructure;
-class TRomNode
-	{
-public:
-	TRomNode(TText* aName, TRomBuilderEntry* aEntry=0);
-	~TRomNode();
-	void Destroy();
-
-	static inline TRomNode* FirstNode() { return TheFirstNode; };
-	inline TRomNode* NextNode() { return iNextNode; };
-	inline void SetNextNode(TRomNode* aNode) { iNextNode = aNode; };
-	inline TRomNode* Currentchild() const { return iChild; };
-	inline TRomNode* Currentsibling() const { return iSibling; };
-
-	void DisplayStructure(ostream* aOut);
-	TRomNode* FindInDirectory(TText *aName);
-	void AddFile(TRomNode *aChild);
-	TRomNode* NewSubDir(TText *aName);
-	TInt SetAtt(TText *anAttWord);
-	TInt SetAttExtra(TText *anAttWord, TRomBuilderEntry* aFile, enum EKeyword aKeyword);
-	inline void SetStackSize(TInt aValue);
-	inline void SetHeapSizeMin(TInt aValue);
-	inline void SetHeapSizeMax(TInt aValue);
-	inline void SetCapability(SCapabilitySet& aCapability);
-	inline void SetUid1(TInt aValue);
-	inline void SetUid2(TInt aValue);
-	inline void SetUid3(TInt aValue);
-	inline void SetPriority(TProcessPriority aValue);
-	inline void SetFixed();
-	inline void SetDllData();
-
-
-	TBool IsDirectory() const { return 0==iEntry; };
-	TBool IsFile() const { return 0!=iEntry; };
-
-	TInt CalculateDirectoryEntrySize( TInt& aDirectoryBlockSize,
-										    TInt& aFileBlockSize );
-
-	TInt CountFileAndDir(TInt& aFileCount, TInt& aDirCount);
-
-	TInt PlaceFile( TUint8* &aDest, TUint aOffset, TUint aMaxSize, CBytePair *aBPE );
-	TInt Place( TUint8* aDestBase );
-
-	TInt NameCpy(char* aDest, TUint8& aUnicodeLength );
-	TInt NameLengthUnicode() const;
-
-	void Rename(TRomNode *aOldParent, TRomNode* aNewParent, TText* aNewName);
-
-	TRofsEntry* RofsEntry() const { return iRofsEntry; };
-	void SetRofsEntry(TRofsEntry* aEntry);
-	inline void SetImagePosition( TInt aPosition ) { iImagePosition = aPosition; };
-	inline void SetFileBlockPosition( TInt aPosition ) { iFileBlockPosition = aPosition; };
-	
-	void AddNodeForSameFile(TRomNode* aPreviousNode, TRomBuilderEntry* aFile);
-
-	void CountDirectory(TInt& aFileCount, TInt& aDirCount);
-	TInt ProcessDirectory(RomFileStructure* aRFS);
-
-	TRomNode* CopyDirectory(TRomNode*& aLastExecutable);
-	void Alias(TRomNode* aNode);
-	
-	static void deleteTheFirstNode();
-	static void displayFlatList();
-	TInt FullNameLength(TBool aIgnoreHiddenAttrib = EFalse) const;
-	TInt GetFullName(char* aBuf, TBool aIgnoreHiddenAttrib = EFalse) const;
-	static void InitializeCount();
-	// Accessor Function.
-    inline TRomNode* GetParent() const { return iParent; }
-
-private:
-	void Remove(TRomNode* aChild);
-	void Add(TRomNode* aChild);
-	void Clone(TRomNode* aOriginal);
-
-	TInt CalculateEntrySize() const;
-
-private:	
-	static TInt Count;			// seed for unique identifiers
-
-	// Flat linked list of TRomNode structures
-	static TRomNode*	TheFirstNode;
-	static TRomNode*	TheLastNode;
-	TRomNode* iNextNode;
-
-	TRomNode* iParent;
-	TRomNode* iSibling;
-	TRomNode* iChild;
-	TRomNode* iNextNodeForSameFile;
-
-protected:
-	TInt iIdentifier;
-	TRofsEntry* iRofsEntry;		// in ROM image buffer
-
-	TInt	iTotalDirectoryBlockSize;	// calculated size of directory block
-	TInt	iTotalFileBlockSize;		// calculated size of file block
-
-
-	TInt iImagePosition;		// position of directory entry in image
-	TInt iFileBlockPosition;	// position of directory file block in image
-
-	friend class FileEntry;
-
-public:
-	TText* iName;
-	TUint8 iAtt;
-	TUint8 iAttExtra;
-	TBool iHidden;
-	TRomBuilderEntry* iEntry;		// represents file data
-	TUint	iFileStartOffset;		// position in image of start of file
-	TInt iSize;			        // size of associated file
-
-	// Override values
-	TInt iStackSize;
-	TInt iHeapSizeMin;
-	TInt iHeapSizeMax;
-	SCapabilitySet iCapability;
-	TInt iUid1;
-	TInt iUid2;
-	TInt iUid3;
-	TProcessPriority iPriority;
-
-	TInt iOverride;
-	TBool iFileUpdate;
-  bool iAlias;
-  // for a ROM image, all the files have a default read-only attribute, but in data drive, files's default attribute should be 0 
-	static TUint8 sDefaultInitialAttr ;
-	};
-
-
-
-class DllDataEntry;
-class TRomBuilderEntry
-	{
-public:
-	TRomBuilderEntry(const char *aFileName, TText *aName);
-	~TRomBuilderEntry();
-	void SetRomNode(TRomNode* aNode);
-	TRofsEntry* RofsEntry() const {return iRomNode->RofsEntry(); };
-	TInt PlaceFile( TUint8* &aDest, TUint aMaxSize, CBytePair *aBPE );
-
-	inline TInt RealFileSize() const { return iRealFileSize; };
-	inline void SetRealFileSize(TInt aFileSize) { iRealFileSize=aFileSize;};
-	void DisplaySize(TPrintType aWhere);
-	
-private:
-	TRomBuilderEntry();
-	TRomBuilderEntry(const TRomBuilderEntry&);
-	const TRomBuilderEntry& operator==(const TRomBuilderEntry &);
-	DllDataEntry* iFirstDllDataEntry;
-
-public:
-	TText *iName;
-	char *iFileName;
-
-	TRomBuilderEntry* iNext;
-	TRomBuilderEntry* iNextInArea;
-	TBool iExecutable;
-	TBool iFileOffset; // offset of the file in ROM
-	TUint iCompressEnabled;
-	TUint8 iUids[sizeof(TCheckedUid)];
-	TBool iHidden;
-  	DllDataEntry* GetFirstDllDataEntry() const;
-	void SetFirstDllDataEntry(DllDataEntry *aDllDataEntry);
-
-private:
-	TRomNode *iRomNode;
-	TInt	iRealFileSize;	
-	};
-
-
-inline void TRomNode::SetStackSize(TInt aValue)
-	{
-	iStackSize = aValue;
-	iOverride |= KOverrideStack;
-	}
-
-inline void TRomNode::SetHeapSizeMin(TInt aValue)
-	{
-	iHeapSizeMin = aValue;
-	iOverride |= KOverrideHeapMin;
-	}
-
-inline void TRomNode::SetHeapSizeMax(TInt aValue)
-	{
-	iHeapSizeMax = aValue;
-	iOverride |= KOverrideHeapMax;
-	}
-
-inline void TRomNode::SetCapability(SCapabilitySet& aCapability)
-	{
-	iCapability = aCapability;
-	iOverride |= KOverrideCapability;
-	}
-
-inline void TRomNode::SetUid1(TInt aValue)
-	{
-	iUid1 = aValue;
-	iOverride |= KOverrideUid1;
-	}
-
-inline void TRomNode::SetUid2(TInt aValue)
-	{
-	iUid2 = aValue;
-	iOverride |= KOverrideUid2;
-	}
-
-inline void TRomNode::SetUid3(TInt aValue)
-	{
-	iUid3 = aValue;
-	iOverride |= KOverrideUid3;
-	}
-
-inline void TRomNode::SetPriority(TProcessPriority aValue)
-	{
-	iPriority = aValue;
-	iOverride |= KOverridePriority;
-	}
-
-inline void TRomNode::SetFixed()
-	{
-	iOverride |= KOverrideFixed;
-	}
-inline void TRomNode::SetDllData()
-{
-	iOverride |= KOverrideDllData;
-}
-
-#endif
+/*
+* Copyright (c) 1995-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: 
+*
+*/
+
+
+#ifndef __R_ROMNODE_H__
+#define __R_ROMNODE_H__
+
+#include <fstream>
+#include <e32std.h>
+#include "rofs.h"
+#include "e32image.h"
+#include "h_utl.h"
+
+const TUint KOverrideStack = 0x01;
+const TUint KOverrideHeapMin = 0x02;
+const TUint KOverrideHeapMax = 0x04;
+const TUint KOverrideRelocationAddress = 0x08;
+const TUint KOverrideUid1 = 0x10;
+const TUint KOverrideUid2 = 0x20;
+const TUint KOverrideUid3 = 0x40;
+const TUint KOverrideCallEntryPoint = 0x80;
+const TUint KOverrideNoCallEntryPoint = 0x100;
+const TUint KOverridePriority = 0x200;
+const TUint KOverrideStackReserve = 0x400;
+const TUint KOverrideKeepIAT = 0x800;
+const TUint KOverrideCapability = 0x1000;
+const TUint KOverrideFixed = 0x2000;
+const TUint KOverrideDllData  = 0x4000;
+const TUint KOverrideCodeUnpaged = 0x8000;
+const TUint KOverrideCodePaged = 0x10000;
+const TUint KOverrideDataUnpaged = 0x20000;
+const TUint KOverrideDataPaged = 0x40000;
+
+enum ECompression{
+	ECompressionUnknown=0,
+	ECompressionCompress=1,
+	ECompressionUncompress=2
+};
+
+const TInt KFileHidden = 0xFFFFFFFF;
+
+
+
+class TRomBuilderEntry;
+class RomFileStructure;
+class TRomNode
+	{
+public:
+	TRomNode(const char* aName, TRomBuilderEntry* aEntry = 0);
+	~TRomNode();
+	void Destroy();
+
+	static inline TRomNode* FirstNode() { return TheFirstNode; };
+	inline TRomNode* NextNode() { return iNextNode; };
+	inline void SetNextNode(TRomNode* aNode) { iNextNode = aNode; };
+	inline TRomNode* Currentchild() const { return iChild; };
+	inline TRomNode* Currentsibling() const { return iSibling; };
+
+	void DisplayStructure(ostream* aOut);
+	TRomNode* FindInDirectory(const char *aName) const;
+	void AddFile(TRomNode *aChild);
+	TRomNode* NewSubDir(const char *aName);
+	TInt SetAtt(char *anAttWord);
+	TInt SetAttExtra(char *anAttWord, TRomBuilderEntry* aFile, enum EKeyword aKeyword);
+	inline void SetStackSize(TInt aValue);
+	inline void SetHeapSizeMin(TInt aValue);
+	inline void SetHeapSizeMax(TInt aValue);
+	inline void SetCapability(SCapabilitySet& aCapability);
+	inline void SetUid1(TInt aValue);
+	inline void SetUid2(TInt aValue);
+	inline void SetUid3(TInt aValue);
+	inline void SetPriority(TProcessPriority aValue);
+	inline void SetFixed();
+	inline void SetDllData();
+
+
+	TBool IsDirectory() const { return 0 == iEntry; };
+	TBool IsFile() const { return 0!=iEntry; };
+
+	TInt CalculateDirectoryEntrySize( TInt& aDirectoryBlockSize,
+										    TInt& aFileBlockSize );
+
+	TInt CountFileAndDir(TInt& aFileCount, TInt& aDirCount);
+
+	TInt PlaceFile( TUint8* &aDest, TUint aOffset, TUint aMaxSize, CBytePair *aBPE );
+	TInt Place( TUint8* aDestBase ); 
+	
+	TInt NameCpy(char* aDest, TUint8& aUnicodeLength );
+	TInt NameLengthUnicode() const;
+
+	void Rename(TRomNode *aOldParent, TRomNode* aNewParent, const char* aNewName);
+
+	TRofsEntry* RofsEntry() const { return iRofsEntry; };
+	void SetRofsEntry(TRofsEntry* aEntry);
+	inline void SetImagePosition( TInt aPosition ) { iImagePosition = aPosition; };
+	inline void SetFileBlockPosition( TInt aPosition ) { iFileBlockPosition = aPosition; };
+	
+	void AddNodeForSameFile(TRomNode* aPreviousNode, TRomBuilderEntry* aFile);
+
+	void CountDirectory(TInt& aFileCount, TInt& aDirCount);
+	TInt ProcessDirectory(RomFileStructure* aRFS);
+
+	TRomNode* CopyDirectory(TRomNode*& aLastExecutable);
+	void Alias(TRomNode* aNode);
+	
+	static void deleteTheFirstNode();
+	static void displayFlatList();
+	TInt FullNameLength(TBool aIgnoreHiddenAttrib = EFalse) const;
+	TInt GetFullName(char* aBuf, TBool aIgnoreHiddenAttrib = EFalse) const;
+	static void InitializeCount();
+	// Accessor Function.
+    inline TRomNode* GetParent() const { return iParent; }
+
+private:
+	void Remove(TRomNode* aChild);
+	void Add(TRomNode* aChild);
+	void Clone(TRomNode* aOriginal);
+
+	TInt CalculateEntrySize() const;
+
+private:	
+	static TInt Count;			// seed for unique identifiers
+
+	// Flat linked list of TRomNode structures
+	static TRomNode*	TheFirstNode;
+	static TRomNode*	TheLastNode;
+	TRomNode* iNextNode;
+
+	TRomNode* iParent;
+	TRomNode* iSibling;
+	TRomNode* iChild;
+	TRomNode* iNextNodeForSameFile;
+
+protected:
+	TInt iIdentifier;
+	TRofsEntry* iRofsEntry;		// in ROM image buffer
+
+	TInt	iTotalDirectoryBlockSize;	// calculated size of directory block
+	TInt	iTotalFileBlockSize;		// calculated size of file block
+
+
+	TInt iImagePosition;		// position of directory entry in image
+	TInt iFileBlockPosition;	// position of directory file block in image
+
+	friend class FileEntry;
+
+public:
+	char* iName;
+	TUint8 iAtt;
+	TUint8 iAttExtra;
+	TBool iHidden;
+	TRomBuilderEntry* iEntry;		// represents file data
+	TUint	iFileStartOffset;		// position in image of start of file
+	TInt iSize;			        // size of associated file
+
+	// Override values
+	TInt iStackSize;
+	TInt iHeapSizeMin;
+	TInt iHeapSizeMax;
+	SCapabilitySet iCapability;
+	TInt iUid1;
+	TInt iUid2;
+	TInt iUid3;
+	TProcessPriority iPriority;
+
+	TInt iOverride;
+	TBool iFileUpdate;
+  bool iAlias;
+  // for a ROM image, all the files have a default read-only attribute, but in data drive, files's default attribute should be 0 
+	static TUint8 sDefaultInitialAttr ;
+	};
+
+
+
+class DllDataEntry;
+class TRomBuilderEntry
+	{
+public:
+	TRomBuilderEntry(const char *aFileName, const char *aName);
+	~TRomBuilderEntry();
+	void SetRomNode(TRomNode* aNode);
+	TRofsEntry* RofsEntry() const {return iRomNode->RofsEntry(); };
+	TInt PlaceFile( TUint8* &aDest, TUint aMaxSize, CBytePair *aBPE );
+
+	inline TInt RealFileSize() const { return iRealFileSize; };
+	inline void SetRealFileSize(TInt aFileSize) { iRealFileSize=aFileSize;};
+	void DisplaySize(TPrintType aWhere);
+	
+private:
+	TRomBuilderEntry();
+	TRomBuilderEntry(const TRomBuilderEntry&);
+	const TRomBuilderEntry& operator==(const TRomBuilderEntry &);
+	DllDataEntry* iFirstDllDataEntry;
+
+public:
+	char *iName;
+	char *iFileName;
+
+	TRomBuilderEntry* iNext;
+	TRomBuilderEntry* iNextInArea;
+	TBool iExecutable;
+	TBool iFileOffset; // offset of the file in ROM
+	TUint iCompressEnabled;
+	TUint8 iUids[sizeof(TCheckedUid)];
+	TBool iHidden;
+  	DllDataEntry* GetFirstDllDataEntry() const;
+	void SetFirstDllDataEntry(DllDataEntry *aDllDataEntry);
+
+private:
+	TRomNode *iRomNode;
+	TInt	iRealFileSize;	
+	};
+
+
+inline void TRomNode::SetStackSize(TInt aValue)
+	{
+	iStackSize = aValue;
+	iOverride |= KOverrideStack;
+	}
+
+inline void TRomNode::SetHeapSizeMin(TInt aValue)
+	{
+	iHeapSizeMin = aValue;
+	iOverride |= KOverrideHeapMin;
+	}
+
+inline void TRomNode::SetHeapSizeMax(TInt aValue)
+	{
+	iHeapSizeMax = aValue;
+	iOverride |= KOverrideHeapMax;
+	}
+
+inline void TRomNode::SetCapability(SCapabilitySet& aCapability)
+	{
+	iCapability = aCapability;
+	iOverride |= KOverrideCapability;
+	}
+
+inline void TRomNode::SetUid1(TInt aValue)
+	{
+	iUid1 = aValue;
+	iOverride |= KOverrideUid1;
+	}
+
+inline void TRomNode::SetUid2(TInt aValue)
+	{
+	iUid2 = aValue;
+	iOverride |= KOverrideUid2;
+	}
+
+inline void TRomNode::SetUid3(TInt aValue)
+	{
+	iUid3 = aValue;
+	iOverride |= KOverrideUid3;
+	}
+
+inline void TRomNode::SetPriority(TProcessPriority aValue)
+	{
+	iPriority = aValue;
+	iOverride |= KOverridePriority;
+	}
+
+inline void TRomNode::SetFixed()
+	{
+	iOverride |= KOverrideFixed;
+	}
+inline void TRomNode::SetDllData()
+{
+	iOverride |= KOverrideDllData;
+}
+
+#endif