mirror of https://github.com/zeldaret/tp.git
80 lines
2.1 KiB
C++
80 lines
2.1 KiB
C++
|
|
#include "dolphin/types.h"
|
|
#include "JKernel/JKRDisposer.h"
|
|
|
|
typedef void (*JKRErrorHandler)(void*, unsigned long, int);
|
|
class JKRHeap : JKRDisposer {
|
|
public:
|
|
JKRHeap(void*, u32, JKRHeap*, bool);
|
|
~JKRHeap();
|
|
|
|
static bool initArena(char**, u32*, int);
|
|
void becomeSystemHeap();
|
|
void becomeCurrentHeap();
|
|
void destroy();
|
|
|
|
static void* alloc(u32 size, int alignment, JKRHeap* heap);
|
|
void* alloc(u32 size, int alignment);
|
|
|
|
static void free(void* ptr, JKRHeap* heap);
|
|
void free(void* ptr);
|
|
|
|
void callAllDisposer();
|
|
void freeAll();
|
|
void freeTail();
|
|
|
|
static s32 resize(void* ptr, u32 size, JKRHeap* heap);
|
|
s32 resize(void* ptr, u32 size);
|
|
|
|
static s32 getSize(void* ptr, JKRHeap* heap);
|
|
s32 getSize(void* ptr);
|
|
|
|
u32 getFreeSize();
|
|
u32 getMaxFreeBlock();
|
|
u32 getTotalFreeSize();
|
|
u8 changeGroupID(u8 param_1);
|
|
u32 getMaxAllocatableSize(int alignment);
|
|
|
|
static JKRHeap* findFromRoot(void* ptr);
|
|
JKRHeap* find(void* ptr) const;
|
|
JKRHeap* findAllHeap(void* ptr) const;
|
|
|
|
void dispose_subroutine(u32 begin, u32 end);
|
|
void dispose(void* ptr, u32 size);
|
|
void dispose(void* begin, void* end);
|
|
void dispose();
|
|
|
|
static void copyMemory(void* dst, void* src, u32 size);
|
|
static void JKRDefaultMemoryErrorRoutine(JKRHeap* heap, u32 size, int alignment);
|
|
|
|
bool setErrorFlag(bool param_1);
|
|
static JKRErrorHandler setErrorHandler(JKRErrorHandler param_1);
|
|
|
|
bool isSubHeap(JKRHeap* heap) const;
|
|
|
|
public:
|
|
u8 mutex[24];
|
|
u32 begin;
|
|
u32 end;
|
|
u32 size;
|
|
u8 field_0x3c;
|
|
u8 field_0x3d;
|
|
u8 field_0x3e;
|
|
u8 field_0x3f;
|
|
JSUPtrList child_list;
|
|
JSUPtrLink heap_link;
|
|
JSUPtrList disposable_list;
|
|
bool error_handler;
|
|
u8 field_0x69;
|
|
};
|
|
|
|
void* operator new(u32 size);
|
|
void* operator new(u32 size, int alignment);
|
|
void* operator new(u32 size, JKRHeap* heap, int alignment);
|
|
|
|
void* operator new[](u32 size);
|
|
void* operator new[](u32 size, int alignment);
|
|
void* operator new[](u32 size, JKRHeap* heap, int alignment);
|
|
|
|
void operator delete(void* ptr);
|
|
void operator delete[](void* ptr); |