sead::ExpHeap class

Base classes

class Heap

Public types

enum class AllocMode { FirstFit = 0, BestFit = 1 }
enum class FindFreeBlockMode { Auto = 0, FromFreeList = 1, ByIteratingMemBlock = 2 }
enum class FindMode { }
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 create(size_t size, const SafeString& name, Heap* parent, s32 alignment, HeapDirection direction, bool) -> ExpHeap*
static auto create(void* address, size_t size, const SafeString& name, bool) -> ExpHeap*
static auto tryCreate(size_t size, const SafeString& name, Heap* parent, s32 alignment, HeapDirection direction, bool) -> ExpHeap*
static auto tryCreate(void* address, size_t size, const SafeString& name, bool) -> ExpHeap*
static auto getManagementAreaSize(s32) -> size_t
static auto getListNodeOffset() -> u32

Constructors, destructors, conversion operators

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

Public functions

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
auto tryRealloc(void* ptr, size_t size, s32 alignment) -> 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 destroyAndGetAllocatableSize(s32) -> s32 virtual
void setFindFreeBlockMode(FindFreeBlockMode mode) virtual
auto getAllocMode() const -> AllocMode
void setAllocMode(AllocMode mode)
auto getAllocatedSize(void* object) -> size_t
void dumpFreeList() const
void dumpUseList() const
void checkFreeList() const
auto tryCheckFreeList() const -> bool
void checkUseList() const
auto tryCheckUseList() const -> bool
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 static functions

static void doCreate(ExpHeap*, Heap*)
static void createMaxSizeFreeMemBlock_(ExpHeap*)
static auto compareMemBlockAddr_(const MemBlock*, const MemBlock*) -> s32

Protected functions

auto findFreeMemBlockFromHead_(size_t, FindMode) const -> MemBlock*
auto findFreeMemBlockFromHead_(size_t, s32, FindMode) const -> MemBlock*
auto findFreeMemBlockFromTail_(size_t, FindMode) const -> MemBlock*
auto findFreeMemBlockFromTail_(size_t, s32, FindMode) const -> MemBlock*
auto findLastMemBlockIfFree_() -> MemBlock*
auto findFirstMemBlockIfFree_() -> MemBlock*
void pushToUseList_(MemBlock*)
void pushToFreeList_(MemBlock*)
auto adjustBack_() -> size_t
auto adjustFront_() -> size_t
auto allocFromHead_(size_t) -> MemBlock*
auto allocFromHead_(size_t, s32) -> MemBlock*
auto allocFromTail_(size_t) -> MemBlock*
auto allocFromTail_(size_t, s32) -> MemBlock*
auto getDisposerHeap_() const -> Heap*

Protected variables

SizedEnum<AllocMode, u8> mAllocMode
SizedEnum<FindFreeBlockMode, u8> mFindFreeBlockMode
MemBlockList mFreeList
MemBlockList mUseList

Enum documentation

enum class sead::ExpHeap::HeapNullOption

enum class sead::ExpHeap::NodeClassType

Enumerators
Reflexible

sead::hostio::Reflexible

Node

sead::hostio::Node

Other

Other classes.

enum class sead::ExpHeap::AllocFlg

Typedef documentation

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

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

Function documentation

static u32 sead::ExpHeap::getListNodeOffset()

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

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

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

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

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

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

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

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

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

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

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

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

bool sead::ExpHeap::isLockEnabled() const

bool sead::ExpHeap::isWarningEnabled() const

bool sead::ExpHeap::isDebugFillSystemEnabled() const

bool sead::ExpHeap::isDebugFillUserEnabled() const

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

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

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

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

Variable documentation

void* sead::ExpHeap::mStart

size_t sead::ExpHeap::mSize

Heap* sead::ExpHeap::mParent

HeapList sead::ExpHeap::mChildren

ListNode sead::ExpHeap::mListNode

DisposerList sead::ExpHeap::mDisposerList

HeapDirection sead::ExpHeap::mDirection

CriticalSection sead::ExpHeap::mCS

BitFlag16 sead::ExpHeap::mFlag

u16 sead::ExpHeap::mHeapCheckTag