diff -r 820b22e13ff1 -r 39c28ec933dd bintools/rcomp/inc/LINKARRA.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bintools/rcomp/inc/LINKARRA.H Mon May 10 19:54:49 2010 +0100 @@ -0,0 +1,73 @@ +/* +* 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: +* +*/ + + +#include "ARRAY.H" +#include "ASTRING.H" + +class RCBinaryStream; +class ResourceDataStream; + +class LinkItem : public ArrayItem + { +public: + LinkItem(ResourceDataStream& aStream,const String& aResourceName,const String& aFileName,int aLineNumber); + virtual void OverwriteLink(RCBinaryStream& os) const=0; + virtual ostream& StreamOut(ostream& os)=0; +public: + String iResourceName; // Name of resource to which link points. + unsigned long iStreamPosition; + String iFileName; + int iLineNumber; + }; + +class LinkArray : public Array + { + friend ostream& operator<<(ostream& os,LinkArray& o); +public: + LinkArray(); + ~LinkArray(); + void Add(LinkItem* aNewItem); + void OverwriteLinks ( RCBinaryStream & os ) const; +private: + static int iInUse; // Only one instance of this class may exist at a time. + }; + +class WordLink : public LinkItem + { +public: + WordLink(ResourceDataStream& aStream,const String& aResourceName,const String& aFileName,int aLineNumber); + virtual void OverwriteLink(RCBinaryStream& os) const; + virtual ostream& StreamOut(ostream& os); + static int NumberOfBytesOccupiesInStream(); + }; + +class LongLink : public LinkItem + { +public: + LongLink(ResourceDataStream& aStream,const String& aResourceName,const String& aFileName,int aLineNumber); + virtual void OverwriteLink(RCBinaryStream& os) const; + virtual ostream& StreamOut(ostream& os); + static int NumberOfBytesOccupiesInStream(); + }; + +class LinkArrayIterator : public ArrayIterator + { +public: + LinkArrayIterator(const LinkArray& aArray); + LinkItem* operator()(); + };