#ifndef __MEMBUFFER_GM_H__
#define __MEMBUFFER_GM_H__
// RHH
////////////////////////////////////////////////////////////////////
// 	 Class : GmMemBuf
// Description :	this a base class designed to be used to for items that will 
//					share portions of a memorty buufer and want to avoid copying the data	
//
//					Use if the class wants ot allow for refrence in place of data arrays..
//					** be carefull could be dangerous **
//
//					GmCoreMessage
//					GmRingBuffer
//
//
////////////////////////////////////////////////////////////////////
class EXPCL_PANDA MemBuffer
{
public:
	inline		MemBuffer(void);
	inline		MemBuffer(size_t len);
	inline		MemBuffer(char * data, size_t len);
	virtual ~MemBuffer();
	inline void SetBuffer(char * data, size_t len);
	inline void GrowBuffer(size_t len);
	inline size_t  GetBufferSize(void ) const;
	inline char * GetBuffer(void);
	inline const char * GetBuffer(void) const;
	inline bool InBufferRange(char * );
protected:
	bool		_BufferLocal;  // indicates responsibility of managment of the data
	size_t			_BufferLen;	// the length of the data
	char	*	_Buffer;		// the data

	inline void ClearBuffer(void);
	inline void AllocBuffer(size_t len);
};


#include "membuffer.i"


#endif //__MEMBUFFER_GM_H__

