/* */ #include "ByteArrayDiskWriter.h" #include "Util.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::initAndOpenFile(const string& filename) { openFile(filename); } void ByteArrayDiskWriter::openFile(const string& filename) { clear(); init(); } void ByteArrayDiskWriter::closeFile() { clear(); } void ByteArrayDiskWriter::openExistingFile(const string& filename) { openFile(filename); } void ByteArrayDiskWriter::writeData(const char* data, int dataLength, long long int position) { if(bufLength+dataLength >= maxBufLength) { maxBufLength = Util::expandBuffer(&buf, bufLength, bufLength+dataLength); } memcpy(buf+bufLength, data, dataLength); bufLength += dataLength; } int ByteArrayDiskWriter::readData(char* data, int len, long long int position) { if(position >= bufLength) { return 0; } int readLength; if(position+len <= bufLength) { readLength = len; } else { readLength = bufLength-position; } memcpy(data, buf+position, readLength); return readLength; }