/******************************************************************************* * BBuffer.c Buffer Class * T.Barnaby, BEAM Ltd, 27/2/94 ******************************************************************************* */ #include <stdlib.h> #include <memory.h> #include <BBuffer.h> #define SIZE 1024 BBuffer::BBuffer(){ osize = 0; odatasize = SIZE; odata = malloc(odatasize); } BBuffer::~BBuffer(){ free(odata); } uint32_t BBuffer::size(){ return osize; } int BBuffer::setSize(uint32_t size){ uint32_t asize; asize = size; if(asize < SIZE) asize = SIZE; if(asize != odatasize){ if((odata = realloc(odata, asize)) == 0){ return 1; } odatasize = asize; } osize = size; return 0; } void* BBuffer::data(){ return odata; } int BBuffer::setData(const void* data, uint32_t size){ if(!setSize(size)){ memcpy(odata, data, size); return 0; } else { return 1; } } int BBuffer::writeData(uint32_t pos, const void* data, uint32_t size){ if(odata && ((pos + size) <= osize)){ memcpy((char*)odata + pos, data, size); return 0; } else { return 1; } }