//************************************************************************************** // Filename: CBuffer.cp // Copyright © 1999-2003 Abracode, Inc. All rights reserved. // // Description: // //************************************************************************************** // Revision History: // Sunday, June 13, 1999 - Original //Oct 17, 2003 removed dependency on PP //************************************************************************************** #include "CBuffer.h" #include "CThrownResult.h" CBuffer::CBuffer() { mBufferH = NULL; mBufferSize = 0; mDataLen = 0; } CBuffer::~CBuffer() { Free(); } Ptr CBuffer::GetBufferPtr() //automatically re-alloacteas and re-locks itself when needed { Restore(); if( !mIsLocked ) { ::HLockHi(mBufferH); CThrownOSErr err = ::MemError(); mIsLocked = true; } return *mBufferH; } void CBuffer::Free() { if(mBufferH != NULL) ::DisposeHandle(mBufferH); mBufferH = NULL; mIsLocked = false; mDataLen = 0; } void CBuffer::Restore() { if(mBufferH == NULL) { mBufferH = ::NewHandleClear( mBufferSize ); if(mBufferH == NULL) CThrownOSErr err = memFullErr; mIsLocked = false; } }