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

📄 xbuffer.h

📁 排序算法以及评估
💻 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 + -