33 lines
1.3 KiB
C++
33 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "RE/B/BSIntrusiveRefCounted.h"
|
|
#include "RE/B/BSStorageDefs.h"
|
|
|
|
namespace RE
|
|
{
|
|
class __declspec(novtable) BSStorage :
|
|
public BSIntrusiveRefCounted
|
|
{
|
|
public:
|
|
inline static constexpr auto RTTI = { RTTI::BSStorage };
|
|
inline static constexpr auto VTABLE = { VTABLE::BSStorage };
|
|
|
|
virtual ~BSStorage(); // 00
|
|
|
|
// TODO: Read and Write are templates
|
|
virtual std::size_t GetSize() const = 0; // 01
|
|
virtual std::size_t GetPosition() const = 0; // 02
|
|
virtual BSStorageDefs::ErrorCode Seek(std::size_t a_offset, BSStorageDefs::SeekMode a_seekMode) const = 0; // 03
|
|
virtual BSStorageDefs::ErrorCode Read(std::size_t a_numBytes, std::byte* a_bytes) const = 0; // 04
|
|
virtual BSStorageDefs::ErrorCode Write(std::size_t a_numBytes, const std::byte* a_bytes) = 0; // 05
|
|
|
|
// members
|
|
bool unk0C; // 0C
|
|
bool unk0D; // 0D
|
|
uint16_t unk0E; // 0E
|
|
BSStorageDefs::StreamBuffer* buf; // 10
|
|
bool usingStreambuffer; //18
|
|
};
|
|
static_assert(sizeof(BSStorage) == 0x20);
|
|
}
|