mirror of
https://github.com/izzy2lost/Torch.git
synced 2026-03-26 17:00:59 -07:00
34 lines
770 B
C
34 lines
770 B
C
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <cstdint>
|
||
|
|
#include <memory>
|
||
|
|
#include <vector>
|
||
|
|
|
||
|
|
namespace LUS {
|
||
|
|
enum class SeekOffsetType { Start, Current, End };
|
||
|
|
|
||
|
|
class Stream {
|
||
|
|
public:
|
||
|
|
virtual ~Stream() = default;
|
||
|
|
virtual uint64_t GetLength() = 0;
|
||
|
|
uint64_t GetBaseAddress();
|
||
|
|
|
||
|
|
virtual void Seek(int32_t offset, SeekOffsetType seekType) = 0;
|
||
|
|
|
||
|
|
virtual std::unique_ptr<char[]> Read(size_t length) = 0;
|
||
|
|
virtual void Read(const char* dest, size_t length) = 0;
|
||
|
|
virtual int8_t ReadByte() = 0;
|
||
|
|
|
||
|
|
virtual void Write(char* destBuffer, size_t length) = 0;
|
||
|
|
virtual void WriteByte(int8_t value) = 0;
|
||
|
|
|
||
|
|
virtual std::vector<char> ToVector() = 0;
|
||
|
|
|
||
|
|
virtual void Flush() = 0;
|
||
|
|
virtual void Close() = 0;
|
||
|
|
|
||
|
|
protected:
|
||
|
|
uint64_t mBaseAddress;
|
||
|
|
};
|
||
|
|
} // namespace LUS
|