#include "streamrw.h" #include using namespace CFCPP; StreamRW::StreamRW(const Stream &stream) : stream(stream) { buffer.fill(0); } T_LONG64 StreamRW::Seek(T_LONG64 offset) { stream->seekg(offset); return stream->tellg(); } template std::array StreamRW::ReadArray() { std::array arr(0); stream->read(reinterpret_cast(arr.data()), N); return arr; } std::vector StreamRW::ReadArray(int lenght) { std::vector arr(lenght,0); stream->read(reinterpret_cast(arr.data()), lenght); return arr; } void StreamRW::ReadArray(char *data, int lenght) { stream->read(data, lenght); } void StreamRW::ReadArray(BYTE* data, int lenght) { stream->read(reinterpret_cast(data), lenght); } void StreamRW::WriteArray(const BYTE *arr, int lenght) { stream->write(reinterpret_cast(arr), lenght); } void StreamRW::WriteArray(const char *arr, int lenght) { stream->write(arr, lenght); } template T StreamRW::Read() { T value; char* asByteArr = reinterpret_cast(&value); stream->read(asByteArr, sizeof (T)); std::reverse(asByteArr, asByteArr + sizeof (T)); return value; } template void StreamRW::Write(T value) { char* asByteArr = reinterpret_cast(&value); std::reverse(asByteArr, asByteArr + sizeof (T)); stream->write(asByteArr, sizeof (T)); }