mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-08 15:04:54 +00:00
Link IAllocator.cpp
This commit is contained in:
80
include/Kyoto/Alloc/IAllocator.hpp
Normal file
80
include/Kyoto/Alloc/IAllocator.hpp
Normal file
@@ -0,0 +1,80 @@
|
||||
#ifndef _IALLOCATOR_HPP
|
||||
#define _IALLOCATOR_HPP
|
||||
|
||||
#include "Kyoto/Alloc/CMemory.hpp"
|
||||
#include "types.h"
|
||||
|
||||
class COsContext;
|
||||
class CCallStack;
|
||||
|
||||
class IAllocator {
|
||||
public:
|
||||
enum EHint {
|
||||
kHI_Unk = (1 << 0),
|
||||
kHI_RoundUpLen = (1 << 1),
|
||||
};
|
||||
enum EScope {
|
||||
kSC_Unk0,
|
||||
};
|
||||
enum EType {
|
||||
kTP_Unk0
|
||||
};
|
||||
|
||||
struct SMetrics {
|
||||
u32 x0_heapSize;
|
||||
u32 x4_;
|
||||
u32 x8_;
|
||||
u32 xc_;
|
||||
u32 x10_;
|
||||
u32 x14_heapSize2; // Remaining heap size?
|
||||
u32 x18_;
|
||||
u32 x1c_;
|
||||
u32 x20_;
|
||||
u32 x24_;
|
||||
u32 x28_;
|
||||
u32 x2c_smallNumAllocs;
|
||||
u32 x30_smallAllocatedSize;
|
||||
u32 x34_smallRemainingSize;
|
||||
u32 x38_mediumNumAllocs;
|
||||
u32 x3c_mediumAllocatedSize;
|
||||
u32 x40_mediumBlocksAvailable;
|
||||
u32 x44_;
|
||||
u32 x48_;
|
||||
u32 x4c_;
|
||||
u32 x50_mediumTotalAllocated;
|
||||
u32 x54_fakeStatics;
|
||||
SMetrics(u32 heapSize, u32 unk1, u32 unk2, u32 unk3, u32 unk4, u32 heapSize2, u32 unk5, u32 unk6, u32 unk7,
|
||||
u32 unk8, u32 unk9, u32 smallAllocNumAllocs, u32 smallAllocAllocatedSize, u32 smallAllocRemainingSize,
|
||||
u32 mediumAllocNumAllocs, u32 mediumAllocAllocatedSize, u32 mediumAllocBlocksAvailable, u32 unk10, u32 unk11, u32 unk12,
|
||||
u32 mediumAllocTotalAllocated, u32 fakeStatics);
|
||||
};
|
||||
|
||||
struct SAllocInfo {
|
||||
void* x0_infoPtr;
|
||||
u32 x4_len;
|
||||
bool x8_hasPrevious;
|
||||
bool x9_;
|
||||
const char* xc_fileAndLne;
|
||||
const char* x10_type;
|
||||
};
|
||||
|
||||
typedef const bool (*FOutOfMemoryCb)(void*, u32);
|
||||
typedef const bool (*FEnumAllocationsCb)(const SAllocInfo& info, const void* ptr);
|
||||
virtual ~IAllocator();
|
||||
|
||||
virtual bool Initialize(COsContext& ctx) = 0;
|
||||
virtual void Shutdown() = 0;
|
||||
virtual void* Alloc(unsigned long size, EHint hint, EScope scope, EType type, const CCallStack& cs) = 0;
|
||||
virtual void Free(const void* ptr) = 0;
|
||||
virtual void ReleaseAll() = 0;
|
||||
virtual void* AllocSecondary(unsigned long size, EHint hint, EScope scope, EType type, const CCallStack& cs) = 0;
|
||||
virtual void FreeSecondary(const void* ptr) = 0;
|
||||
virtual void ReleaseAllSecondary() = 0;
|
||||
virtual void SetOutOfMemoryCallback(FOutOfMemoryCb cb, const void* data) = 0;
|
||||
virtual void EnumAllocations(FEnumAllocationsCb func, const void* ptr, bool b) const = 0;
|
||||
virtual SAllocInfo GetAllocInfo(const void* ptr) const = 0;
|
||||
virtual void OffsetFakeStatics(s32 offset) = 0;
|
||||
virtual SMetrics GetMetrics() const = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user