6#include <container/seadOffsetList.h>
7#include <heap/seadDisposer.h>
8#include <prim/seadBitFlag.h>
9#include <prim/seadNamable.h>
10#include <prim/seadRuntimeTypeInfo.h>
11#include <prim/seadSafeString.h>
12#include <thread/seadCriticalSection.h>
62 void*
alloc(size_t size, s32 alignment)
64 return tryAlloc(size, alignment);
67 virtual void*
tryAlloc(size_t size, s32 alignment) = 0;
68 virtual void free(
void* ptr) = 0;
70 virtual void*
resizeBack(
void* ptr, size_t new_size) = 0;
125 return mChildren.constBegin();
130 return mChildren.constEnd();
135 return static_cast<u32>(mChildren.size());
140 return mDisposerList.constBegin();
145 return mDisposerList.constEnd();
150 return static_cast<u32>(mDisposerList.size());
171static_assert(
sizeof(
Heap) == 0x90,
"sead::Heap size mismatch");
Definition seadCriticalSection.h:13
Definition seadHeapMgr.h:21
ValueType
Definition seadHeap.h:39
@ cDontUseThis_StartNumMinus1
Definition seadHeap.h:40
@ cEnableLock
Definition seadHeap.h:41
@ cDontUseThis_MemSize32bit
Definition seadHeap.h:47
~Heap() override
Definition seadHeap.h:55
BitFlag32 mFlag
Definition seadHeap.h:164
virtual bool isAdjustable() const =0
u32 childSize() const
Definition seadHeap.h:133
friend IDisposer::~IDisposer()
void * alloc(size_t size, s32 alignment)
Definition seadHeap.h:62
OffsetList< Heap >::constIterator childBegin() const
Definition seadHeap.h:123
void dispose_(const void *, const void *)
OffsetList< IDisposer >::constIterator disposerBegin() const
Definition seadHeap.h:138
Heap * getParent() const
Definition seadHeap.h:77
DisposerList mDisposerList
Definition seadHeap.h:161
virtual size_t getMaxAllocatableSize(s32 alignment=4) const =0
virtual bool isResizable() const =0
virtual bool isFreeable() const =0
OffsetList< Heap >::constIterator childEnd() const
Definition seadHeap.h:128
Thread * getAccessThread() const
HeapDirection
Definition seadHeap.h:26
@ cHeapDirection_Reverse
Definition seadHeap.h:28
@ cHeapDirection_Forward
Definition seadHeap.h:27
HeapDirection getDirection() const
Definition seadHeap.h:79
virtual void * resizeBack(void *ptr, size_t new_size)=0
Heap * findContainHeap_(const void *ptr)
Definition seadHeap.cpp:20
virtual size_t getSize() const =0
HeapDirection mDirection
Definition seadHeap.h:162
void setEnableLock(bool enable_lock)
Definition seadHeap.h:84
ListNode mListNode
Definition seadHeap.h:160
void setEnableWarning(bool)
bool isEnableLock() const
Definition seadHeap.h:89
void appendDisposer_(IDisposer *o)
Definition seadHeap.cpp:7
Heap * mParent
Definition seadHeap.h:158
OffsetList< Heap > HeapList
Definition seadHeap.h:32
HeapList mChildren
Definition seadHeap.h:159
virtual const void * getStartAddress() const =0
virtual void free(void *ptr)=0
void removeDisposer_(IDisposer *o)
Definition seadHeap.cpp:13
virtual void dump() const
Definition seadHeap.h:101
void setAccessThread(Thread *)
u32 disposerSize() const
Definition seadHeap.h:148
void pushBackChild_(Heap *)
size_t mSize
Definition seadHeap.h:157
virtual const void * getEndAddress() const =0
OffsetList< IDisposer > DisposerList
Definition seadHeap.h:33
CriticalSection mCS
Definition seadHeap.h:163
void checkAccessThread_() const
virtual void genInformation_(hostio::Context *context)
virtual size_t getFreeSize() const =0
void * mStart
Definition seadHeap.h:156
friend IDisposer::IDisposer()
virtual bool isInclude(const void *ptr) const =0
OffsetList< IDisposer >::constIterator disposerEnd() const
Definition seadHeap.h:143
bool isEnableWarning() const
virtual void * tryAlloc(size_t size, s32 alignment)=0
virtual void * resizeFront(void *ptr, size_t new_size)=0
Heap(const SafeString &name, Heap *parent, void *start, size_t size, HeapDirection direction, bool enable_lock)
virtual size_t adjust()=0
Definition seadDisposer.h:12
Definition seadNamable.h:9
Definition seadListImpl.h:11
Definition seadOffsetList.h:11
Definition seadThread.h:28
Definition seadHostIODummy.h:29
Definition seadAssert.h:44
BitFlag< u32 > BitFlag32
Definition seadBitFlag.h:125
SafeStringBase< char > SafeString
Definition seadSafeString.h:409
#define SEAD_RTTI_BASE(CLASS)
Definition seadRuntimeTypeInfo.h:75