summaryrefslogtreecommitdiff
path: root/libs/revolution/src/axfx/AXFXHooks.c
blob: bb24859c5a0df190df49713f8e1de4761b973b11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <revolution/axfx.h>
#include <revolution/os.h>
#include <revolution/os/OSAlloc.h>
#include <cstdio>

static void* __AXFXAllocFunction(size_t size);
static void __AXFXFreeFunction(void* block);

AXFXAllocHook __AXFXAlloc = __AXFXAllocFunction;
AXFXFreeHook __AXFXFree = __AXFXFreeFunction;

static void* __AXFXAllocFunction(size_t size) {
    return OSAllocFromHeap(__OSCurrHeap, size);
}

static void __AXFXFreeFunction(void* block) {
    OSFreeToHeap(__OSCurrHeap, block);
}

void AXFXSetHooks(AXFXAllocHook alloc, AXFXFreeHook free) {
    __AXFXAlloc = alloc;
    __AXFXFree = free;
}

void AXFXGetHooks(AXFXAllocHook* alloc, AXFXFreeHook* free) {
    *alloc = __AXFXAlloc;
    *free = __AXFXFree;
}