⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ringbuffer.h

📁 下棋
💻 H
字号:
// RingBuffer.h: interface for the CRingBuffer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_RINGBUFFER_H__A5C97CE0_8FCD_11D4_A61A_00105A763C82__INCLUDED_)
#define AFX_RINGBUFFER_H__A5C97CE0_8FCD_11D4_A61A_00105A763C82__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/*********************************************************************/
/*循环缓冲区管理类,大小由结构函数指定,使用前要调用Init()函数       */
/*输入数据由Write函数操作,最大长度等于剩余空间						 */
/*输出数据由Read或GetData操作,其最大长度不得大于其内容(GetDataCount)*/
/* ->-------------------------------------------------------->|      */  
/* |<--------------------------------------------------------<-		 */
/*            |__ m_nReadPoint               |__ m_nWritePoint       */
/*********************************************************************/
class CRingBuffer  
{
public:
	BOOL ReadFromFile(CFile&file,DWORD nLen);
	BOOL WriteToFile(CFile&file);
	BOOL WriteToFile(CFile&file,DWORD nLen);
	void Lock(BOOL bLock=TRUE);
	BOOL IsLocked();
	BOOL Skip(int nLen);
	BOOL CanRead(DWORD nLen);
	BOOL CanWrite(DWORD nLen);
	BOOL GetData(LPBYTE pBuf,DWORD nLen);
	BOOL Write(LPBYTE pBuf,DWORD nLen);
	DWORD GetFreeCount();
	BOOL Read(LPBYTE pBuf,DWORD nLen);
	void Reset(DWORD kBytes=0);
	BOOL IsEmpty();
	BOOL IsFull();
	DWORD GetDataCount();
	BOOL Init(DWORD nKb=64);
	void Release();
	CRingBuffer();
	virtual ~CRingBuffer();

protected:
	void ReadData(LPBYTE pBuf,int nLen);
	BYTE   m_bFull;
	BYTE   m_bLocked[2];
	LPBYTE m_pBuffer;
	DWORD  m_readPoint;
	DWORD  m_writePoint;
	DWORD  m_nSize;
};

#endif // !defined(AFX_RINGBUFFER_H__A5C97CE0_8FCD_11D4_A61A_00105A763C82__INCLUDED_)

⌨️ 快捷键说明

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