sead
Loading...
Searching...
No Matches
sead::Heap Class Referenceabstract

#include <seadHeap.h>

Inherits sead::IDisposer, and sead::INamable.

Inherited by sead::ExpHeap, sead::FrameHeap, sead::SeparateHeap, and sead::UnitHeap.

Classes

class  Flag

Public Types

enum  HeapDirection { cHeapDirection_Forward = 1 , cHeapDirection_Reverse = -1 }

Public Member Functions

 Heap (const SafeString &name, Heap *parent, void *start, size_t size, HeapDirection direction, bool enable_lock)
 ~Heap () override
virtual void destroy ()=0
virtual size_t adjust ()=0
void * alloc (size_t size, s32 alignment)
virtual void * tryAlloc (size_t size, s32 alignment)=0
virtual void free (void *ptr)=0
virtual void * resizeFront (void *ptr, size_t new_size)=0
virtual void * resizeBack (void *ptr, size_t new_size)=0
virtual void freeAll ()=0
virtual const void * getStartAddress () const =0
virtual const void * getEndAddress () const =0
virtual size_t getSize () const =0
virtual size_t getFreeSize () const =0
virtual size_t getMaxAllocatableSize (s32 alignment=4) const =0
HeapgetParent () const
virtual bool isInclude (const void *ptr) const =0
HeapDirection getDirection () const
virtual bool isFreeable () const =0
virtual bool isResizable () const =0
virtual bool isAdjustable () const =0
void setEnableLock (bool enable_lock)
bool isEnableLock () const
bool lock ()
bool unlock ()
void setEnableWarning (bool)
bool isEnableWarning () const
void setAccessThread (Thread *)
ThreadgetAccessThread () const
virtual void dump () const
OffsetList< Heap >::constIterator childBegin () const
OffsetList< Heap >::constIterator childEnd () const
u32 childSize () const
OffsetList< IDisposer >::constIterator disposerBegin () const
OffsetList< IDisposer >::constIterator disposerEnd () const
u32 disposerSize () const
void pushBackChild_ (Heap *)
Public Member Functions inherited from sead::IDisposer
 IDisposer ()
virtual ~IDisposer ()
Public Member Functions inherited from sead::INamable
 INamable ()
 INamable (const SafeString &name)
void setName (const SafeString &name)
const SafeStringgetName () const

Protected Member Functions

virtual void genInformation_ (hostio::Context *context)
HeapfindContainHeap_ (const void *ptr)
bool hasNoChild_ () const
void destruct_ ()
void dispose_ (const void *, const void *)
void appendDisposer_ (IDisposer *o)
void removeDisposer_ (IDisposer *o)
void eraseChild_ (Heap *)
void checkAccessThread_ () const
friend IDisposer::IDisposer ()
friend IDisposer::~IDisposer ()

Protected Attributes

void * mStart
size_t mSize
HeapmParent
HeapList mChildren
ListNode mListNode
DisposerList mDisposerList
HeapDirection mDirection
CriticalSection mCS
BitFlag32 mFlag

Private Types

typedef OffsetList< HeapHeapList
typedef OffsetList< IDisposerDisposerList

Friends

class HeapMgr

Member Typedef Documentation

◆ HeapList

◆ DisposerList

Member Enumeration Documentation

◆ HeapDirection

Enumerator
cHeapDirection_Forward 
cHeapDirection_Reverse 

Constructor & Destructor Documentation

◆ Heap()

sead::Heap::Heap ( const SafeString & name,
Heap * parent,
void * start,
size_t size,
HeapDirection direction,
bool enable_lock )

◆ ~Heap()

sead::Heap::~Heap ( )
inlineoverride

◆ IDisposer::~IDisposer()

sead::Heap::IDisposer::~IDisposer ( )
protected

Member Function Documentation

◆ destroy()

virtual void sead::Heap::destroy ( )
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ adjust()

virtual size_t sead::Heap::adjust ( )
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ alloc()

void * sead::Heap::alloc ( size_t size,
s32 alignment )
inline

◆ tryAlloc()

virtual void * sead::Heap::tryAlloc ( size_t size,
s32 alignment )
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ free()

virtual void sead::Heap::free ( void * ptr)
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ resizeFront()

virtual void * sead::Heap::resizeFront ( void * ptr,
size_t new_size )
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ resizeBack()

virtual void * sead::Heap::resizeBack ( void * ptr,
size_t new_size )
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ freeAll()

virtual void sead::Heap::freeAll ( )
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ getStartAddress()

virtual const void * sead::Heap::getStartAddress ( ) const
pure virtual

◆ getEndAddress()

virtual const void * sead::Heap::getEndAddress ( ) const
pure virtual

◆ getSize()

virtual size_t sead::Heap::getSize ( ) const
pure virtual

◆ getFreeSize()

virtual size_t sead::Heap::getFreeSize ( ) const
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ getMaxAllocatableSize()

virtual size_t sead::Heap::getMaxAllocatableSize ( s32 alignment = 4) const
pure virtual

Implemented in sead::FrameHeap.

◆ getParent()

Heap * sead::Heap::getParent ( ) const
inline

◆ isInclude()

virtual bool sead::Heap::isInclude ( const void * ptr) const
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ getDirection()

HeapDirection sead::Heap::getDirection ( ) const
inline

◆ isFreeable()

virtual bool sead::Heap::isFreeable ( ) const
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ isResizable()

virtual bool sead::Heap::isResizable ( ) const
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ isAdjustable()

virtual bool sead::Heap::isAdjustable ( ) const
pure virtual

Implemented in sead::FrameHeap, and sead::UnitHeap.

◆ setEnableLock()

void sead::Heap::setEnableLock ( bool enable_lock)
inline

◆ isEnableLock()

bool sead::Heap::isEnableLock ( ) const
inline

◆ lock()

bool sead::Heap::lock ( )

◆ unlock()

bool sead::Heap::unlock ( )

◆ setEnableWarning()

void sead::Heap::setEnableWarning ( bool )

◆ isEnableWarning()

bool sead::Heap::isEnableWarning ( ) const

◆ setAccessThread()

void sead::Heap::setAccessThread ( Thread * )

◆ getAccessThread()

Thread * sead::Heap::getAccessThread ( ) const

◆ dump()

virtual void sead::Heap::dump ( ) const
inlinevirtual

◆ genInformation_()

virtual void sead::Heap::genInformation_ ( hostio::Context * context)
protectedvirtual

◆ findContainHeap_()

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

◆ hasNoChild_()

bool sead::Heap::hasNoChild_ ( ) const
protected

◆ destruct_()

void sead::Heap::destruct_ ( )
protected

◆ dispose_()

void sead::Heap::dispose_ ( const void * ,
const void *  )
protected

◆ appendDisposer_()

void sead::Heap::appendDisposer_ ( IDisposer * o)
protected

◆ removeDisposer_()

void sead::Heap::removeDisposer_ ( IDisposer * o)
protected

◆ eraseChild_()

void sead::Heap::eraseChild_ ( Heap * )
protected

◆ checkAccessThread_()

void sead::Heap::checkAccessThread_ ( ) const
protected

◆ childBegin()

OffsetList< Heap >::constIterator sead::Heap::childBegin ( ) const
inline

◆ childEnd()

OffsetList< Heap >::constIterator sead::Heap::childEnd ( ) const
inline

◆ childSize()

u32 sead::Heap::childSize ( ) const
inline

◆ disposerBegin()

OffsetList< IDisposer >::constIterator sead::Heap::disposerBegin ( ) const
inline

◆ disposerEnd()

OffsetList< IDisposer >::constIterator sead::Heap::disposerEnd ( ) const
inline

◆ disposerSize()

u32 sead::Heap::disposerSize ( ) const
inline

◆ pushBackChild_()

void sead::Heap::pushBackChild_ ( Heap * )

◆ IDisposer::IDisposer()

sead::Heap::IDisposer::IDisposer ( )
protected

◆ HeapMgr

friend class HeapMgr
friend

Member Data Documentation

◆ mStart

void* sead::Heap::mStart
protected

◆ mSize

size_t sead::Heap::mSize
protected

◆ mParent

Heap* sead::Heap::mParent
protected

◆ mChildren

HeapList sead::Heap::mChildren
protected

◆ mListNode

ListNode sead::Heap::mListNode
protected

◆ mDisposerList

DisposerList sead::Heap::mDisposerList
protected

◆ mDirection

HeapDirection sead::Heap::mDirection
protected

◆ mCS

CriticalSection sead::Heap::mCS
protected

◆ mFlag

BitFlag32 sead::Heap::mFlag
protected