Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/B/BSResource_StreamBase.h
T
2026-05-30 18:33:24 +12:00

50 lines
1.3 KiB
C++

#pragma once
#include "RE/B/BSResource_ErrorCode.h"
#include "RE/B/BSResource_Info.h"
#include "RE/M/MemoryManager.h"
namespace RE::BSResource
{
class __declspec(novtable) StreamBase
{
public:
inline static constexpr auto RTTI = { RTTI::BSResource__StreamBase };
inline static constexpr auto VTABLE = { VTABLE::BSResource__StreamBase };
enum : std::uint32_t
{
kWritable = 1 << 0,
kBuffered = 1 << 1,
kFullReadHint = 1 << 2,
kUnk3 = 1 << 3,
kUnk4 = 1 << 4,
kRefCountBeg = 0x1000,
kRefCountMask = (std::uint32_t)0xFFFFF000
};
StreamBase();
StreamBase(const StreamBase& a_rhs);
StreamBase(StreamBase&& a_rhs);
StreamBase(std::uint32_t a_totalSize, bool writable);
virtual ~StreamBase() = default; // 00
// add
virtual ErrorCode DoOpen() = 0; // 01
virtual void DoClose() = 0; // 02
[[nodiscard]] virtual std::uint64_t DoGetKey() const; // 03 - { return 0; }
virtual ErrorCode DoGetInfo(Info& a_info); // 04 - { return ErrorCode::kUnsupported; }
F4_HEAP_REDEFINE_NEW(StreamBase);
std::uint32_t DecRef();
std::uint32_t IncRef();
[[nodiscard]] bool IsWritable() const;
// members
std::uint32_t totalSize; // 08
std::uint32_t flags; // 0C
};
static_assert(sizeof(StreamBase) == 0x10);
}