/* */ #include "ByteArrayDiskWriter.h" #include "Util.h" ByteArrayDiskWriter::ByteArrayDiskWriter():buf(0) { } ByteArrayDiskWriter::~ByteArrayDiskWriter() { closeFile(); } void ByteArrayDiskWriter::clear() { delete [] buf; } void ByteArrayDiskWriter::init() { maxBufLength = 256; buf = new char[maxBufLength]; bufLength = 0; } void ByteArrayDiskWriter::initAndOpenFile(const string& filename, uint64_t totalLength) { clear(); init(); } void ByteArrayDiskWriter::openFile(const string& filename, uint64_t totalLength) { initAndOpenFile(filename); } void ByteArrayDiskWriter::closeFile() { clear(); } void ByteArrayDiskWriter::openExistingFile(const string& filename) { openFile(filename); } void ByteArrayDiskWriter::writeData(const char* data, uint32_t dataLength, int64_t position) { if(bufLength+dataLength >= maxBufLength) { maxBufLength = Util::expandBuffer(&buf, bufLength, bufLength+dataLength); } memcpy(buf+bufLength, data, dataLength); bufLength += dataLength; } int ByteArrayDiskWriter::readData(char* data, uint32_t len, int64_t position) { if(position >= bufLength) { return 0; } uint32_t readLength; if(position+len <= bufLength) { readLength = len; } else { readLength = bufLength-position; } memcpy(data, buf+position, readLength); return readLength; }