// cBuffer.cpp: implementation of the cBuffer class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "cBuffer.h" #include ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// cBuffer::cBuffer() { Init(); } cBuffer::cBuffer( uint32 uBuffLen ) { Init(); Create( uBuffLen ); } cBuffer::~cBuffer() { Destroy(); } void cBuffer::Init() { m_pDT = NULL; m_unLen = 0; m_unMax = 0; } void cBuffer::Destroy() { if( m_pDT ) delete []m_pDT; m_pDT = NULL; m_unLen = 0; m_unMax = 0; } ////////////////////////////////////////////////////////////////////// // Create/Erase ////////////////////////////////////////////////////////////////////// bool cBuffer::Create( uint32 uBuffLen ) { if( m_pDT ) Destroy(); m_pDT = new uint8[ uBuffLen ]; if( m_pDT ) { m_unLen = 0; m_unMax = uBuffLen; Erase(); return true; } return false; } bool cBuffer::Erase() { if( m_pDT ) { ZeroMemory( m_pDT, m_unLen ); m_unLen = 0; return true; } return false; } void cBuffer::Resize( uint32 uBuffLen ) { if(m_unMax < uBuffLen) { Create(uBuffLen); } } ////////////////////////////////////////////////////////////////////// // Copy/Append ////////////////////////////////////////////////////////////////////// bool cBuffer::Copy( const TCHAR* pDT ) { if( m_pDT ) { uint32 unLen = _tcslen( pDT ) + 1; if( unLen <= m_unMax ) { Erase(); m_unLen = unLen; CopyMemory( m_pDT, pDT, m_unLen ); return true; } } return false; } bool cBuffer::Copy( uint32 unDst, const TCHAR* pDT ) { if( m_pDT ) { uint32 unLen = _tcslen( pDT ) + 1; if( (unDst+unLen) <= m_unMax ) { CopyMemory( m_pDT+unDst, pDT, unLen ); m_unLen = unDst + unLen; return true; } } return false; } bool cBuffer::Copy( const uint8* pDT, uint32 unLen ) { if( m_pDT ) { if( unLen <= m_unMax ) { Erase(); m_unLen = unLen; CopyMemory( m_pDT, pDT, m_unLen ); return true; } } return false; } bool cBuffer::Copy( uint32 unDst, const uint8* pDT, uint32 unLen ) { if( m_pDT ) { if( (unDst+unLen) <= m_unMax ) { CopyMemory( m_pDT + unDst, pDT, unLen ); m_unLen = unDst + unLen; return true; } } return false; } bool cBuffer::Append( const TCHAR* pDT ) { if( m_pDT ) { uint32 unLen = _tcslen( pDT ) + 1; if( (unLen+m_unLen) <= m_unMax ) { CopyMemory( m_pDT+m_unLen, pDT, unLen ); m_unLen += unLen; return true; } } return false; } bool cBuffer::Append( const uint8* pDT, uint32 unLen ) { if( m_pDT ) { if( (unLen+m_unLen) <= m_unMax ) { CopyMemory( m_pDT + m_unLen, pDT, unLen ); m_unLen += unLen; return true; } } return false; }