summaryrefslogtreecommitdiff
path: root/mem/allocator.h
blob: 535965abab732eb58741e0a605669dbabd7400ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef MEM_ALLOCATOR_H
#define MEM_ALLOCATOR_H

#include <rt.h>

typedef struct mem_allocator MemAllocator;

typedef void *(*MemAlloc)(MemAllocator *, usize);
typedef void *(*MemRealloc)(MemAllocator *, void *, usize);
typedef void (*MemFree)(MemAllocator *, void *);

/* Abstract object representing an allocator */
struct mem_allocator {
	MemAlloc alloc;
	MemRealloc realloc;
	MemFree free;
};

void *mem_alloc(MemAllocator *self, usize n);
void *mem_realloc(MemAllocator *self, void *ptr, usize n);
void mem_free(MemAllocator *self, void *ptr);

#endif