📄 xbuffer.h
字号:
//////////////////////////////////////////////////////////////////////
// 版权所有(C) 1994-2004 //
// 工程名称: TestBed
// 文件名: XBuffer.h
// 声明类: CXBuffer
// 说明: 自管理缓冲
// //
// 创建日期: 2004.8.8
// 创建人: 邓辉
// 修改记录 //
// 修改日期 修改人 说明 //
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_XBUFFER_H__BB0F060C_0CF5_45FE_86C9_D0C6BD72C618__INCLUDED_)
#define AFX_XBUFFER_H__BB0F060C_0CF5_45FE_86C9_D0C6BD72C618__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
template <class Type>
class CXBuffer
{
public:
//设置缓冲区值(注意:单字节赋值)
void Memset(BYTE bVal);
//释放缓冲
void FreeBuf();
//获取缓冲
Type* GetBuf(UINT nBufLen);
//获取缓冲指针
Type* GetDatePtr();
//获取缓冲指针
Type* GetDatePtr(UINT nOffset);
CXBuffer();
virtual ~CXBuffer();
private:
CXBuffer& operator = (const CXBuffer& rhs);
CXBuffer(const CXBuffer& rhs);
//分配缓冲
Type* AllocBuf(UINT nCount);
//缓冲指针
Type* m_pBuf;
//当前缓冲大小
UINT m_nCount;
//Type的大小
UINT m_nItemSize;
};
template <class Type>
CXBuffer<Type>::CXBuffer()
{
m_pBuf = NULL;
m_nCount = 0;
m_nItemSize = sizeof(Type);
}
template <class Type>
CXBuffer<Type>::~CXBuffer()
{
FreeBuf();
}
template <class Type>
Type* CXBuffer<Type>::GetBuf(UINT nCount)
{
if (m_nCount < nCount)
{
FreeBuf();
AllocBuf(nCount);
}
return m_pBuf;
}
template <class Type>
void CXBuffer<Type>::FreeBuf()
{
if (m_pBuf != NULL) delete []m_pBuf;
m_pBuf = NULL;
m_nCount = 0;
}
template <class Type>
Type* CXBuffer<Type>::AllocBuf(UINT nCount)
{
m_pBuf = new Type[nCount];
if (m_pBuf != NULL) m_nCount = nCount;
return m_pBuf;
}
template <class Type>
void CXBuffer<Type>::Memset(BYTE bVal)
{
if (m_pBuf != NULL) memset(m_pBuf, bVal, m_nCount*m_nItemSize);
}
template <class Type>
Type* CXBuffer<Type>::GetDatePtr()
{
return m_pBuf;
}
template <class Type>
Type* CXBuffer<Type>::GetDatePtr(UINT nOffset)
{
ASSERT(nOffset < m_nCount);
return m_pBuf + nOffset;
}
#endif // !defined(AFX_XBUFFER_H__BB0F060C_0CF5_45FE_86C9_D0C6BD72C618__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -