// Copyright 2024 The DMBMX2Tools Authors // SPDX-License-Identifier: MIT #pragma once #include namespace dmtools::io { /// A I/O stream using libc FILE*. struct FileStream : public Stream { enum class OpenMode : u8 { Read, ReadWrite }; virtual ~FileStream(); bool Open(const std::string& path, OpenMode mode); void Flush() override; void Close(); StreamDiff ReadSome(u8* buffer, usize length) override; StreamDiff WriteSome(const u8* buffer, usize length) override; StreamDiff Seek(StreamDiff where, StreamSeekDirection dir) override; StreamDiff Tell() const override; bool Ok() const override; bool Eof() const override; private: void* file{}; }; }