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

📄 bytearray.h

📁 客户端: 这是一个完整的基于Wince 4.1图形图象,网络通讯(C/S)模式下的商用程序源代码包.
💻 H
字号:
#ifndef __BYTE_ARRAY__H__
#define __BYTE_ARRAY__H__

#define OUT_OF_MEMORY_QUITING _T("Fatal Error: Out of memory. Quiting.")

class ByteArray {

public:
	ByteArray(const int nGrowBy = 50) :
		m_nGrowBy(nGrowBy), m_nBufferSize(0), m_nSize(0)
	{
		//m_pBuffer = new BYTE[m_nSize];	
		m_pBuffer = (BYTE*)::malloc(m_nSize);
		//if (! m_pBuffer) {
		//	::AfxMessageBox(OUT_OF_MEMORY_QUITING);
		//	::PostQuitMessage(1);
		//}
	}

	inline int GetSize() const {
		return m_nSize;	
	}

	inline bool Add(const BYTE b) {
		if (m_nSize >= m_nBufferSize) {
			if (! GrowBuffer()) {
				return false;			
			}
		}	
		m_pBuffer[m_nSize++] = b;
		return true;
	}

	inline bool Append(const BYTE* pArray, const int nSize) {
		while ((m_nSize + nSize) > m_nBufferSize) {
			if (! GrowBuffer()) {
				return false;			
			}
		}
		::memcpy((m_pBuffer + m_nSize), pArray, sizeof(BYTE) * nSize);
		m_nSize += nSize;
		return true;
	}

	BYTE* GetData() const {
		return m_pBuffer;	
	}

	~ByteArray() {
		//delete m_pBuffer;	
		::free(m_pBuffer);
		m_pBuffer=NULL;//
	}


private:
	int m_nBufferSize;
	int m_nGrowBy;
	int m_nSize;
	BYTE* m_pBuffer;

	bool GrowBuffer() 
	{
		ASSERT(m_pBuffer);

		int nNewBufferSize = m_nBufferSize + m_nGrowBy;
		//BYTE* pNewBuffer = new BYTE[nNewBufferSize];
		BYTE* pNewBuffer = (BYTE*)::malloc(sizeof(BYTE)*nNewBufferSize);
		if (! pNewBuffer) {
			return false;		
		}
		memcpy(pNewBuffer, m_pBuffer, sizeof(BYTE) * m_nSize);
		//delete m_pBuffer;
		::free(m_pBuffer);	
		m_pBuffer=NULL;//
		m_pBuffer = pNewBuffer;
		m_nBufferSize = nNewBufferSize;
		return true;
	}

};

#endif 

⌨️ 快捷键说明

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