2024-07-31 19:35:12 +12:00
|
|
|
#pragma once
|
|
|
|
|
|
2024-06-16 16:57:53 +12:00
|
|
|
#include <cstddef>
|
|
|
|
|
#include <cstdint>
|
2024-07-31 19:35:12 +12:00
|
|
|
|
|
|
|
|
struct IFileReader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
typedef int64_t FilePos_t;
|
|
|
|
|
typedef uint64_t UFilePos_t;
|
|
|
|
|
|
|
|
|
|
virtual size_t Read(void *buffer, size_t sz) = 0;
|
|
|
|
|
virtual size_t FileSize() const = 0;
|
|
|
|
|
virtual bool SeekStart(FilePos_t pos) = 0;
|
|
|
|
|
virtual bool SeekCurrent(FilePos_t pos) = 0;
|
|
|
|
|
virtual bool SeekEnd(FilePos_t pos) = 0;
|
|
|
|
|
virtual FilePos_t GetPosition() const = 0;
|
|
|
|
|
|
|
|
|
|
inline bool ReadExact(void *buffer, size_t sz)
|
|
|
|
|
{
|
|
|
|
|
return this->Read(buffer, sz) == sz;
|
|
|
|
|
}
|
|
|
|
|
};
|