sead::FrameHeap class

Base classes

class Heap

Public types

struct State
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 tryCreate(size_t size, const SafeString& name, Heap* parent, s32, HeapDirection direction, bool) -> FrameHeap*
static auto create(size_t size, const SafeString& name, Heap* parent, s32, HeapDirection direction, bool) -> FrameHeap*
static auto getManagementAreaSize(s32) -> size_t
static auto getListNodeOffset() -> u32

Constructors, destructors, conversion operators

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

Public functions

void restoreState(const State& state)
void freeHead()
void freeTail()
void destroy() override
auto adjust() -> size_t override
auto tryAlloc(size_t size, s32 alignment) -> void* override
void free(void* ptr) override
auto resizeFront(void* p_void, size_t size) -> void* override
auto resizeBack(void* p_void, size_t size) -> void* override
void freeAll() override
auto getStartAddress() const -> uintptr_t override
auto getEndAddress() const -> uintptr_t override
auto getSize() const -> size_t override
auto getFreeSize() const -> size_t override
auto getMaxAllocatableSize(int alignment) const -> size_t override
auto isInclude(const void* p_void) const -> bool override
auto isEmpty() const -> bool override
auto isFreeable() const -> bool override
auto isResizable() const -> bool override
auto isAdjustable() const -> bool override
void dump() const override
void dumpYAML(WriteStream& stream, int i) const override
void genInformation_(hostio::Context* context) override
auto tryRealloc(void* ptr, size_t size, s32 alignment) -> void* virtual
void dumpTreeYAML(WriteStream& stream, int) const
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

void initialize_()
auto getAreaStart_() const -> void*
auto getAreaEnd_() const -> void*
auto getDisposerHeap_() const -> Heap*

Protected variables

State mState

Enum documentation

enum class sead::FrameHeap::HeapNullOption

enum class sead::FrameHeap::NodeClassType

Enumerators
Reflexible

sead::hostio::Reflexible

Node

sead::hostio::Node

Other

Other classes.

enum class sead::FrameHeap::AllocFlg

Typedef documentation

using sead::FrameHeap::HeapList = OffsetList<Heap>

using sead::FrameHeap::DisposerList = OffsetList<IDisposer>

Function documentation

static u32 sead::FrameHeap::getListNodeOffset()

sead::FrameHeap::SEAD_ENUM(Flag, cEnableLock, cDisposing, cEnableWarning, cEnableDebugFillSystem, cEnableDebugFillUser) enum HeapDirection

void* sead::FrameHeap::tryRealloc(void* ptr, size_t size, s32 alignment) virtual

void sead::FrameHeap::dumpTreeYAML(WriteStream& stream, int) const

void sead::FrameHeap::makeMetaString_(BufferedSafeString*) virtual

void sead::FrameHeap::pushBackChild_(Heap* child) virtual

void sead::FrameHeap::appendDisposer_(IDisposer* disposer)

void sead::FrameHeap::removeDisposer_(IDisposer* disposer)

Heap* sead::FrameHeap::findContainHeap_(const void* ptr)

void* sead::FrameHeap::alloc(size_t size, s32 alignment = sizeof(void*))

void sead::FrameHeap::enableLock(bool on)

void sead::FrameHeap::enableWarning(bool on)

void sead::FrameHeap::enableDebugFillSystem(bool on)

void sead::FrameHeap::enableDebugFillUser(bool on)

bool sead::FrameHeap::isLockEnabled() const

bool sead::FrameHeap::isWarningEnabled() const

bool sead::FrameHeap::isDebugFillSystemEnabled() const

bool sead::FrameHeap::isDebugFillUserEnabled() const

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

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

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

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

Variable documentation

void* sead::FrameHeap::mStart

size_t sead::FrameHeap::mSize

Heap* sead::FrameHeap::mParent

HeapList sead::FrameHeap::mChildren

ListNode sead::FrameHeap::mListNode

DisposerList sead::FrameHeap::mDisposerList

HeapDirection sead::FrameHeap::mDirection

CriticalSection sead::FrameHeap::mCS

BitFlag16 sead::FrameHeap::mFlag

u16 sead::FrameHeap::mHeapCheckTag