/* */ #include "ByteArrayDiskWriter.h" ByteArrayDiskWriter::ByteArrayDiskWriter():buf(NULL) { } ByteArrayDiskWriter::~ByteArrayDiskWriter() { closeFile(); } void ByteArrayDiskWriter::clear() { if(buf != NULL) { delete [] buf; buf = NULL; } } void ByteArrayDiskWriter::init() { maxBufLength = 256; buf = new char[maxBufLength]; bufLength = 0; } void ByteArrayDiskWriter::reset() { clear(); init(); } void ByteArrayDiskWriter::initAndOpenFile(string filename) { openFile(filename); } void ByteArrayDiskWriter::openFile(const string& filename) { clear(); init(); } void ByteArrayDiskWriter::closeFile() { clear(); } void ByteArrayDiskWriter::openExistingFile(string filename) { openFile(filename); } void ByteArrayDiskWriter::writeData(const char* data, int dataLength, long long int position) { if(bufLength+dataLength >= maxBufLength) { expandBuffer(bufLength+dataLength); } memcpy(buf+bufLength, data, dataLength); bufLength += dataLength; } void ByteArrayDiskWriter::expandBuffer(int newSize) { char* newbuf = new char[newSize]; memcpy(newbuf, buf, bufLength); delete [] buf; buf = newbuf; maxBufLength = newSize; }