sead::Heap class

Base classes

class IDisposer
class INamable
class Reflexible

Derived classes

class ExpHeap
class FrameHeap

Public types

using HeapList = OffsetList<Heap>
using DisposerList = OffsetList<IDisposer>
enum class HeapNullOption { AlwaysUseSpecifiedHeap = 0, UseSpecifiedOrContainHeap = 1, DoNotAppendDisposerIfNoHeapSpecified = 2, UseSpecifiedOrCurrentHeap = 3 }
enum class NodeClassType { Reflexible = 0, Node = 1, Other = 2 }
enum class AllocFlg { Name = 1u << 0u, Meta = 1u << 1u }

Public static functions

static auto getListNodeOffset() -> u32

Constructors, destructors, conversion operators

SEAD_ENUM(Flag, cEnableLock, cDisposing, cEnableWarning, cEnableDebugFillSystem, cEnableDebugFillUser) enum HeapDirection
Heap(const SafeString& name, Heap* parent, void* address, size_t size, HeapDirection direction, bool)
~Heap() override

Public functions

void destroy() pure virtual
auto adjust() -> size_t pure virtual
auto tryAlloc(size_t size, s32 alignment) -> void* pure virtual
void free(void* ptr) pure virtual
auto resizeFront(void*, size_t) -> void* pure virtual
auto resizeBack(void*, size_t) -> void* pure virtual
auto tryRealloc(void* ptr, size_t size, s32 alignment) -> void* virtual
void freeAll() pure virtual
auto getStartAddress() const -> uintptr_t pure virtual
auto getEndAddress() const -> uintptr_t pure virtual
auto getSize() const -> size_t pure virtual
auto getFreeSize() const -> size_t pure virtual
auto getMaxAllocatableSize(int alignment) const -> size_t pure virtual
auto isInclude(const void*) const -> bool pure virtual
auto isEmpty() const -> bool pure virtual
auto isFreeable() const -> bool pure virtual
auto isResizable() const -> bool pure virtual
auto isAdjustable() const -> bool pure virtual
void dump() const virtual
void dumpYAML(WriteStream& stream, int) const virtual
void dumpTreeYAML(WriteStream& stream, int) const
void genInformation_(hostio::Context*) virtual
void makeMetaString_(BufferedSafeString*) virtual
void pushBackChild_(Heap* child) virtual
void appendDisposer_(IDisposer* disposer)
void removeDisposer_(IDisposer* disposer)
auto findContainHeap_(const void* ptr) -> Heap*
auto alloc(size_t size, s32 alignment = sizeof(void*)) -> void*
void enableLock(bool on)
void enableWarning(bool on)
void enableDebugFillSystem(bool on)
void enableDebugFillUser(bool on)
auto isLockEnabled() const -> bool
auto isWarningEnabled() const -> bool
auto isDebugFillSystemEnabled() const -> bool
auto isDebugFillUserEnabled() const -> bool
auto getCriticalSection() -> sead::CriticalSection&
auto getName() const -> const SafeString&
void setName(const SafeString& name)
auto getNodeClassType() const -> NodeClassType virtual

Public variables

void* mStart
size_t mSize
Heap* mParent
HeapList mChildren
ListNode mListNode
DisposerList mDisposerList
HeapDirection mDirection
CriticalSection mCS
BitFlag16 mFlag
u16 mHeapCheckTag

Protected functions

auto getDisposerHeap_() const -> Heap*

Enum documentation

enum class sead::Heap::HeapNullOption

enum class sead::Heap::AllocFlg

Function documentation

static u32 sead::Heap::getListNodeOffset()

const SafeString& sead::Heap::getName() const

void sead::Heap::setName(const SafeString& name)

NodeClassType sead::Heap::getNodeClassType() const virtual

Heap* sead::Heap::getDisposerHeap_() const protected