dmtools/lib/base/io/FileStream.hpp

42 lines
724 B
C++

// Copyright 2024 The DMBMX2Tools Authors
// SPDX-License-Identifier: MIT
#pragma once
#include <base/io/Stream.hpp>
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{};
};
}