SuperMarioOdysseyOnline/include/sead/heap/seadFrameHeap.h

61 lines
1.8 KiB
C++

#pragma once
#include "heap/seadHeap.h"
namespace sead
{
class FrameHeap : public Heap
{
SEAD_RTTI_OVERRIDE(FrameHeap, Heap)
public:
struct State
{
void* mHeadPtr;
void* mTailPtr;
};
static FrameHeap* tryCreate(size_t size, const SafeString& name, Heap* parent, s32,
HeapDirection direction, bool);
static FrameHeap* create(size_t size, const SafeString& name, Heap* parent, s32,
HeapDirection direction, bool);
static size_t getManagementAreaSize(s32);
void restoreState(const State& state);
void freeHead();
void freeTail();
void destroy() override;
size_t adjust() override;
void* tryAlloc(size_t size, s32 alignment) override;
void free(void* ptr) override;
void* resizeFront(void* p_void, size_t size) override;
void* resizeBack(void* p_void, size_t size) override;
void freeAll() override;
uintptr_t getStartAddress() const override;
uintptr_t getEndAddress() const override;
size_t getSize() const override;
size_t getFreeSize() const override;
size_t getMaxAllocatableSize(int alignment) const override;
bool isInclude(const void* p_void) const override;
bool isEmpty() const override;
bool isFreeable() const override;
bool isResizable() const override;
bool isAdjustable() const override;
void dump() const override;
void dumpYAML(WriteStream& stream, int i) const override;
void genInformation_(hostio::Context* context) override;
protected:
FrameHeap(const SafeString& name, Heap* parent, void* address, size_t size,
HeapDirection direction, bool);
~FrameHeap() override;
void initialize_();
void* getAreaStart_() const;
void* getAreaEnd_() const;
State mState;
};
} // namespace sead