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

📄 buffer.h

📁 虚拟打印机
💻 H
字号:
/* * * buffer.h   Copyright (C) 2006 Michael H. Overlin   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      Contact at poster_printer@yahoo.com * */#ifndef BUFFER_H#define BUFFER_H#include "utils.h"class Buffer {public:	enum errcode { eAllocateFail };	Buffer(DWORD dwSize)  throw(.../*errcode*/) {		this->pBuff = this->MyRealloc(NULL, dwSize);		this->dwSize = dwSize;	}	~Buffer() { MyFree(this->pBuff); }	VOID RequireMinSize(DWORD dwNewSize)  {		if (this->dwSize < dwNewSize) {			this->pBuff = MyRealloc(this->pBuff, dwNewSize);			this->dwSize = dwNewSize;		}	}	PVOID GetPtr(VOID) const { return this->pBuff; }	DWORD GetSize(VOID) const { return this->dwSize; }private:	static PVOID MyRealloc(PVOID pvOld, DWORD dwNewSize) throw(.../*errcode*/) {		PVOID pvRetValue = NULL;		if (dwNewSize != 0) {			if (pvOld != NULL) {				pvRetValue = realloc(pvOld, dwNewSize);			} else {				pvRetValue = malloc(dwNewSize);			}			if (pvRetValue == NULL) {				throw(eAllocateFail);			}		} else {			MyFree(pvOld);		}		return pvRetValue;	}	static VOID MyFree(PVOID pv) {		if (pv != NULL) {			free(pv);		}	}				PVOID pBuff;	DWORD dwSize;};class ItemBuffer {public:	ItemBuffer(DWORD dwItemCount, DWORD dwItemSize)  throw(.../*Buffer::errcode*/) 		:	dwItemSize(dwItemSize),			buff(dwItemCount * dwItemSize)  { 		this->dwItemCount = dwItemCount;	}	~ItemBuffer() {}	VOID RequireMinCount(DWORD dwNewItemCount)  throw(.../*Buffer::errcode*/) { 		this->buff.RequireMinSize(dwNewItemCount * this->dwItemSize);		this->dwItemCount = dwNewItemCount;	}	PVOID GetPtr(VOID) const { return this->buff.GetPtr(); }	DWORD GetCount(VOID) const { return this->dwItemCount; }private:	const DWORD dwItemSize;	DWORD dwItemCount;	Buffer buff;};#endif

⌨️ 快捷键说明

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