/* */ #include "ByteArrayDiskWriter.h" #include "Util.h" ByteArrayDiskWriter::ByteArrayDiskWriter() { } ByteArrayDiskWriter::~ByteArrayDiskWriter() { closeFile(); } void ByteArrayDiskWriter::clear() { buf.str(""); } void ByteArrayDiskWriter::initAndOpenFile(const string& filename, int64_t totalLength) { clear(); } void ByteArrayDiskWriter::openFile(const string& filename, int64_t totalLength) { initAndOpenFile(filename); } void ByteArrayDiskWriter::closeFile() { clear(); } void ByteArrayDiskWriter::openExistingFile(const string& filename, int64_t totalLength) { openFile(filename); } void ByteArrayDiskWriter::writeData(const char* data, int32_t dataLength, int64_t position) { if(size() < position) { buf.seekg(0, ios_base::end); for(int32_t i = size(); i < position; ++i) { buf.put('\0'); } } else { buf.seekg(position, ios_base::beg); } buf.write(data, dataLength); } int32_t ByteArrayDiskWriter::readData(char* data, int32_t len, int64_t position) { buf.seekg(position, ios_base::beg); buf.read(data, len); // TODO we have to call buf.clear() here? YES buf.clear(); return buf.gcount(); }