linebuffer.h

来自「下棋」· C头文件 代码 · 共 61 行

H
61
字号
// LineBuffer.h: interface for the CLineBuffer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LINEBUFFER_H__4D82D5A2_9DD2_11D4_9C31_0050BAB302C3__INCLUDED_)
#define AFX_LINEBUFFER_H__4D82D5A2_9DD2_11D4_9C31_0050BAB302C3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*****************************************************************************/
/*线形缓冲区用于取代各种场合的线形内存使用。线形缓冲区原理跟MFC的CString类似,  */
/*由于其封装各种操作函数和自动释放资源,增加安全性和可操作性,该系统中除基本数据*/
/*结构(CRingBuffer,CPingBuffer)外,其他线形内存的使用一律用该类取代       */
/**************************************************************************/
class CLineBuffer  
{
public:
	void AddData(void*pBuf,int nLen);
	void BufferSet(BYTE val=0);			//重新设置把缓冲区中的数据值(相当于memset)
	BOOL SetLength(DWORD nLen);					//设置缓冲区中有效数据的长度。
	BOOL WriteToFile(CFile&file);				//把全部数据写入到文件中。
	BOOL WriteToFile(CFile&file,DWORD nLen);	//把指定长度的数据写入到文件中。
	BOOL ReadFromFile(CFile&file,DWORD nLen);	//从文件中读入指定长度的数据到缓冲区。
	void EmptyBuffer();					//清空缓冲区。
	BOOL IsEmpty();						//检查缓冲区是否为空。
	BOOL FromBuffer(LPBYTE pBuf,DWORD nLen);	//直接利用pBuf生成线形缓冲区类。
	BOOL operator ==(/*const*/CLineBuffer&buf);//,LPBYTE pBuf);
	operator LPBYTE() {return m_pBuffer;}		   //通过LPBYTE类型转换以字符指针方式访问线形内存。
	operator LPCSTR() {return (LPCSTR)m_pBuffer;}		   //通过LPBYTE类型转换以字符指针方式访问线形内存。
	operator LPTSTR() {return (LPSTR)m_pBuffer;}		   //通过LPBYTE类型转换以字符指针方式访问线形内存。	
	operator void*(){return (void*)m_pBuffer;}
	BYTE& operator[](int index) {return m_pBuffer[index];}  //以数组方式访问缓冲区。
	BYTE& operator[](BYTE index) {return m_pBuffer[index];}  //以数组方式访问缓冲区。
	BYTE& operator[](DWORD index) {return m_pBuffer[index];}  //以数组方式访问缓冲区。
	BYTE& operator[](WORD index) {return m_pBuffer[index];}  //以数组方式访问缓冲区。
	const CLineBuffer& operator=(CLineBuffer&buf);
	const CLineBuffer& operator+=(CString&str)
	{	AddData((void*)(LPCSTR)str,str.GetLength());
		return *this; }
	const CLineBuffer& operator+=(int val){AddData(&val,sizeof(int));return *this;}
	const CLineBuffer& operator+=(DWORD val){AddData(&val,sizeof(DWORD));return *this;}
	const CLineBuffer& operator+=(WORD val){AddData(&val,sizeof(WORD));return *this;}
	const CLineBuffer& operator+=(BYTE val){AddData(&val,sizeof(BYTE));return *this;}
	const CLineBuffer& operator+=(CLineBuffer&buf);
	BYTE* GetBuffer();
	DWORD GetCount();
	CLineBuffer(LPVOID pBuf,int nLen);
	CLineBuffer(CLineBuffer&other);
	CLineBuffer(DWORD nLen);
	CLineBuffer();
	virtual ~CLineBuffer();

protected:
	DWORD m_nMaxLength;		//申请的内存长度,表示该线形内存的最大容量。
	DWORD m_nLength;		//内存空间中实际存放的数据长度。
	LPBYTE m_pBuffer;		//存放数据的物理内存地址,在初始化时通过new得到。
};

#endif // !defined(AFX_LINEBUFFER_H__4D82D5A2_9DD2_11D4_9C31_0050BAB302C3__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?