mirror of
https://github.com/zeldaret/tp
synced 2026-07-05 05:39:43 -04:00
JSUList.h templates and JKRHeap matches (#13)
* JSULink, JSUList, JSUTree and more matching in JKRHeap * Added JSUListIterator and decompiled JKRHeap::dispose_subroutine * more templates and JKRHeap functions * JKRDisposer! * only 4 functions not OK in JKRHeap * fixed: *this->getObject() Co-authored-by: Pheenoh <pheenoh@gmail.com>
This commit is contained in:
@@ -9,12 +9,11 @@ class JKRDisposer {
|
||||
public:
|
||||
JKRDisposer();
|
||||
virtual ~JKRDisposer();
|
||||
|
||||
virtual void callAllDisposer() = 0;
|
||||
|
||||
public:
|
||||
JKRHeap* heap;
|
||||
JSUPtrLink ptr_link;
|
||||
JKRHeap* mHeap;
|
||||
JSULink<JKRDisposer> mLink;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JKernel/JKRDisposer/JKRDisposer.h"
|
||||
|
||||
typedef void (*JKRErrorHandler)(void*, unsigned long, int);
|
||||
typedef void (*JKRErrorHandler)(void*, u32, int);
|
||||
class JKRHeap : JKRDisposer {
|
||||
public:
|
||||
JKRHeap(void*, u32, JKRHeap*, bool);
|
||||
@@ -31,7 +31,7 @@ class JKRHeap : JKRDisposer {
|
||||
s32 getSize(void* ptr);
|
||||
|
||||
s32 getFreeSize();
|
||||
s32 getMaxFreeBlock();
|
||||
void* getMaxFreeBlock();
|
||||
s32 getTotalFreeSize();
|
||||
u8 changeGroupID(u8 param_1);
|
||||
s32 getMaxAllocatableSize(int alignment);
|
||||
@@ -46,13 +46,41 @@ class JKRHeap : JKRDisposer {
|
||||
void dispose();
|
||||
|
||||
static void copyMemory(void* dst, void* src, u32 size);
|
||||
static void JKRDefaultMemoryErrorRoutine(JKRHeap* heap, u32 size, int alignment);
|
||||
static void fillMemory(void* dst, u32 size, u8 value); // NOTE: never used
|
||||
static bool checkMemoryFilled(void* src, u32 size, u8 value);
|
||||
|
||||
|
||||
bool setErrorFlag(bool param_1);
|
||||
static JKRErrorHandler setErrorHandler(JKRErrorHandler param_1);
|
||||
static void JKRDefaultMemoryErrorRoutine(JKRHeap* heap, u32 size, int alignment);
|
||||
static JKRErrorHandler setErrorHandler(JKRErrorHandler error_handler);
|
||||
|
||||
|
||||
bool isSubHeap(JKRHeap* heap) const;
|
||||
|
||||
void* getBegin() const {
|
||||
return (void*)mBegin;
|
||||
}
|
||||
|
||||
void* getEnd() const {
|
||||
return (void*)mEnd;
|
||||
}
|
||||
|
||||
u32 getSize() const {
|
||||
return mSize;
|
||||
}
|
||||
|
||||
JSUTree<JKRHeap>& getHeapTree() {
|
||||
return this->mChildTree;
|
||||
}
|
||||
|
||||
void appendDisposer(JKRDisposer* disposer) {
|
||||
mDisposerList.append(&disposer->mLink);
|
||||
}
|
||||
|
||||
void removeDisposer(JKRDisposer* disposer) {
|
||||
mDisposerList.remove(&disposer->mLink);
|
||||
}
|
||||
|
||||
protected:
|
||||
void callAllDisposer();
|
||||
virtual void vt_func4() = 0;
|
||||
@@ -68,7 +96,7 @@ class JKRHeap : JKRDisposer {
|
||||
virtual s32 do_resize(void* ptr, u32 size) = 0;
|
||||
virtual s32 do_getSize(void* ptr) = 0;
|
||||
virtual s32 do_getFreeSize() = 0;
|
||||
virtual s32 do_getMaxFreeBlock() = 0;
|
||||
virtual void* do_getMaxFreeBlock() = 0;
|
||||
virtual s32 do_getTotalFreeSize() = 0;
|
||||
virtual u8 do_changeGroupID(u8 param_1);
|
||||
virtual void do_getCurrent();
|
||||
@@ -78,17 +106,16 @@ class JKRHeap : JKRDisposer {
|
||||
|
||||
public:
|
||||
u8 mutex[24];
|
||||
u32 begin;
|
||||
u32 end;
|
||||
u32 size;
|
||||
u32 mBegin;
|
||||
u32 mEnd;
|
||||
u32 mSize;
|
||||
u8 field_0x3c;
|
||||
u8 field_0x3d;
|
||||
u8 field_0x3e;
|
||||
u8 field_0x3f;
|
||||
JSUPtrList child_list;
|
||||
JSUPtrLink heap_link;
|
||||
JSUPtrList disposable_list;
|
||||
bool error_flag;
|
||||
JSUTree<JKRHeap> mChildTree;
|
||||
JSUList<JKRDisposer> mDisposerList;
|
||||
bool mErrorFlag;
|
||||
u8 field_0x69;
|
||||
u8 field_0x6a[2];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user