Milán Major

netscape-revival

1 branch
Code

lib/mac/VText/V_PowerPlant_Mods/LDynamicBuffer.h

#pragma	once

//	===========================================================================
//	LDynamicBuffer.h				©1994 Metrowerks Inc. All rights reserved.
//	===========================================================================

#include	<PP_Prefix.h>

//	NOTE:
//	
//	Unlike other PowerPlant collection classes, offsets in LDynamicBuffer
//	are zero based.

class	LDynamicBuffer
{
public:
	
				//	Maintenance
						LDynamicBuffer();
						LDynamicBuffer(const LDynamicBuffer &inBuffer);
	virtual				~LDynamicBuffer();
	
				//	General
	virtual void		Clear(void);
	virtual Int32		GetSize(void) const;
	
				//	Removal
	virtual void		Delete(Int32 inOffset, Int32 inAmount);
	
				//	Data placement
	virtual void *		Insert(Int32 inOffset, const void *inData, Int32 inDataSize);
	virtual void *		Append(const void *inData, Int32 inDataSize) {return Insert(GetSize(), inData, inDataSize);} 
	virtual void *		Prepend(const void *inData, Int32 inDataSize) {return Insert(0, inData, inDataSize);}

				//	Data query
	virtual void		GetData(Int32 inOffset, Int32 inAmount, void *outData) const;

				//	Implementation details (avoid using)
	virtual void *		GetOffsetPtr(Int32 inOffset) const;
	Handle				mData;
protected:
	virtual void		Shift(Int32 inOffset, Int32 inDelta);
};