#include #include "filesystem/stream.h" #include "filesystem/filemanager.h" class FileStream : public StreamBase { public: FileStream(File* file); ~FileStream(); size_t Read(void* buffer, size_t size); size_t Write(void* buffer, size_t size); void Seek(SeekDir way, long offset); size_t Tell(); bool Eof(); private: File* m_file; }; FileStream::FileStream(File* file) { assert(file && "Cannot open file stream with nullptr file handle."); m_file = file; } FileStream::~FileStream() { if (m_file) g_fileManager->CloseFile(m_file); } size_t FileStream::Read(void* buffer, size_t size) { return m_file->Read(buffer, size); } size_t FileStream::Write(void* buffer, size_t size) { return m_file->Write(buffer, size); } void FileStream::Seek(SeekDir way, long offset) { m_file->Seek(way, offset); } size_t FileStream::Tell() { return m_file->Tell(); } bool FileStream::Eof() { return m_file->Eof();; } StreamBase* CreateFileStream(File* file) { return new FileStream(file); }