diff -r 000000000000 -r 044383f39525 bintools/rcomp/inc/RESOURCE.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bintools/rcomp/inc/RESOURCE.H Tue Oct 27 16:36:35 2009 +0000 @@ -0,0 +1,218 @@ +/* +* Copyright (c) 1997-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 __RESOURCE_H__ +#define __RESOURCE_H__ + +#include "ASTRING.H" +#include "STRINGAR.H" +#include "STRUCTST.H" +#include "STACK.H" +#include "RCBINSTR.H" +#include "NAMEIDMA.H" + + +enum { EResourceItem, ESimpleResourceItem, EArrayResourceItem, EStructTypeResourceItem, EStructArrayResourceItem }; + +class ResourceItem; + +// ResourceItemArray + +class ResourceItemArray : public Array, public StackItem, public ArrayItem + { + friend ostream & operator<< ( ostream & os, ResourceItemArray & o); +public: + ResourceItemArray(); + ~ResourceItemArray(); + void Add( ResourceItem * pNewItem); + void FillFromStruct( const String & StructName); + void Set( const String & Label, const String & Value); + void Set( const String & Label, const StringArray & Values); + ResourceItem * Find( const String & LabelSought); + void AddDefault(); + void StreamOut(ResourceDataStream& aStream) const; +private: + DataType iLenType; + }; + +// ResourceItemArrayIterator + +class ResourceItemArrayIterator : public ArrayIterator + { +public: + ResourceItemArrayIterator( const ResourceItemArray & c); + ResourceItem * operator() (); + }; + +// ResourceItemArrayArray + +class ResourceItemArrayArray : public Array + { + friend ostream & operator<< ( ostream & os, ResourceItemArrayArray & o); +public: + ResourceItemArrayArray(); + ~ResourceItemArrayArray(); + void Add( ResourceItemArray * pNewItem); + void StreamOut(ResourceDataStream& aStream) const; + }; + +// ResourceItemArrayArrayIterator + +class ResourceItemArrayArrayIterator : public ArrayIterator + { +public: + ResourceItemArrayArrayIterator( const ResourceItemArrayArray & c); + ResourceItemArray * operator() (); + }; + + +// ResourceHeader + +class ResourceHeader : public ArrayItem + { + friend ostream & operator<< ( ostream & os, ResourceHeader & o); +public: + ResourceHeader( String LabelToSet); + ResourceHeader(); + ~ResourceHeader(); + void AddDefault(); + void Write( ostream &os); + void SetResourceId(NameIdMap& aMap, unsigned long aId, int aFormatAsHex); + void StreamOut(RCBinaryStream& aStream, int& aSizeOfLargestResourceWhenUncompressed, const char* aDumpFile); + inline bool ContainsCompressedUnicode() const {return iContainsCompressedUnicode;} +public: + String iLabel; + ResourceItemArray iRIA; + unsigned char iLocal; + unsigned long iResourceId; + int iFormatAsHex; + bool iContainsCompressedUnicode; + }; + +// ResourceItem + +class ResourceItem : public ArrayItem, public StackItem + { +public: + virtual ResourceItemArray * GetRIA() = 0; + virtual void Set( const String & ValueToSet) = 0; + virtual void Set( const StringArray & ValuesToSet) = 0; + virtual ostream & StreamOut ( ostream & os) = 0; + virtual void StreamOut(ResourceDataStream& aStream) const = 0; + virtual void AddDefault() = 0; + virtual void SetSRLink( unsigned long SRLinkToSet) = 0; + void Set(const String* FileNameToSet, int LineNumberToSet); + void RegisterErrorLocation(); + int GetResourceItemType(); + String GetLabel(); +protected: + ResourceItem( const String & Label, int aResourceItemType=EResourceItem); + ResourceItem & operator= ( const ResourceItem &); +public: + const String& iLabel; + const String* iFileName; + int iLineNumber; +private: + int iResourceItemType; + }; + +// SimpleResourceItem + +class SimpleResourceItem : public ResourceItem + { +public: + SimpleResourceItem(SimpleStructItem*); + void Set(const String& aValueToSet); + void Set(const StringArray& aValuesToSet); + virtual ostream& StreamOut(ostream& os); + friend ostream& operator<<(ostream& os,SimpleResourceItem & o); + virtual void StreamOut(ResourceDataStream& aStream) const; + virtual void AddDefault(); + virtual void SetSRLink(unsigned long aSRLinkToSet); +private: + ResourceItemArray* GetRIA(); +public: + SimpleStructItem* iStructItem; +private: + String iValue; + unsigned long iLinkValue; + unsigned char iValueSet; + }; + +// ArrayResourceItem + +class ArrayResourceItem : public ResourceItem + { + friend ostream& operator<<(ostream& os,ArrayResourceItem& aItem); +public: + ArrayResourceItem(ArrayStructItem *); + ~ArrayResourceItem(); + void Set(const String& aValueToSet); + void Set(const StringArray& aValuesToSet); + ostream & StreamOut(ostream& os); + virtual void StreamOut(ResourceDataStream& aStream) const; + virtual void AddDefault(); + virtual void SetSRLink(unsigned long aSRLinkToSet); +private: + ResourceItemArray* GetRIA(); +public: + ArrayStructItem* iStructItem; +private: + StringArray iValues; + }; + +// StructTypeResourceItem + +class StructTypeResourceItem : public ResourceItem + { +public: + StructTypeResourceItem(StructTypeStructItem*); + void Set(const String& ValueToSet); + void Set(const StringArray& ValuesToSet); + ostream& StreamOut(ostream& os); + friend ostream& operator<<(ostream& os,StructTypeResourceItem& o); + virtual void StreamOut(ResourceDataStream& aStream) const; + virtual void AddDefault(); + virtual void SetSRLink(unsigned long aSRLinkToSet); + ResourceItemArray* GetRIA(); +public: + StructTypeStructItem* iStructItem; + ResourceItemArray iResourceItems; + }; + +// StructArrayResourceItem + +class StructArrayResourceItem : public ResourceItem + { + friend ostream& operator<<(ostream& os,StructArrayResourceItem& aItem); +public: + StructArrayResourceItem(StructArrayStructItem*); + void Set(const String& ValueToSet); + void Set(const StringArray& ValuesToSet); + ResourceItemArray* GetRIA(); + ostream& StreamOut(ostream& os); + virtual void StreamOut(ResourceDataStream& aStream) const; + virtual void AddDefault(); + virtual void SetSRLink(unsigned long SRLinkToSet); +public: + StructArrayStructItem* iStructItem; + ResourceItemArrayArray iArrayOfResourceItemArrays; + ResourceItemArray* iLastRIA; + }; + +#endif