Milán Major

netscape-revival

1 branch
Code

lib/mac/VText/V_PowerPlant_Mods/LFileTube.h

//	===========================================================================
//	LFileTube.h						©1995 Metrowerks Inc. All rights reserved.
//	===========================================================================

#pragma	once

#include	<LFlatTube.h>


class	LFile;

class	LFileTube
			:	public	LFlatTube
{
public:
				//	Maintenance
						LFileTube(
							LFile				*inFile,
							Int16				inPrivileges = fsRdPerm,
							ResIDT				inLevel1Ref = 129);
						LFileTube(
							LFile				*inFile,
							const LTubeableItem	*inTubeableItem,
							Int16				inPrivileges = fsRdWrPerm,
							Boolean				inReqdFlavorsOnly = true,
							ResIDT				inLevel1Ref = 129);
	virtual				~LFileTube();
	virtual FlavorForT	GetFlavorForType(void) const	{return flavorForFile;}

				//	Read
	virtual	Boolean		FlavorExists(FlavorType inFlavor) const;
	virtual	Int32		GetFlavorSize(FlavorType inFlavor) const;
	virtual void *		GetFlavorData(
							FlavorType	inFlavor,
							void		*outFlavorData) const;
	virtual Int32		CountItems(void) const;
	virtual LDataTube	NthItem(Int32 inIndex, ItemReference *outReference = NULL) const;
	virtual LDataTube	KeyedItem(ItemReference inItemRef) const;
	virtual	LStream &	GetFlavorStreamOpen(FlavorType inFlavor) const;
	virtual	void		GetFlavorStreamClose(void) const;

				//	Write
	virtual void		AddFlavor(FlavorType inFlavor);
	virtual void		SetFlavorData(
							FlavorType	inFlavor,
							const void	*inFlavorData,
							Int32		inFlavorSize);
	virtual LStream &	SetFlavorStreamOpen(FlavorType inFlavor);
	virtual void		SetFlavorStreamClose(void);

				//	Implementation
protected:
	virtual	void		CheckDataFork(void) const;
	virtual void		CheckResourceFork(void) const;
	virtual	Boolean	 	HasResourceFork(void) const;
	virtual	void		AddResourceFork(void);
	virtual	void		MakeResourceForkCurrent(void) const;

	ResIDT				mLevel1Ref;
	LFile				*mFile;
	Int16				mPrivileges;
	FlavorType			mFileType;
};