Base/platform/exports/librr/alloc/generic.h

39 lines
1.4 KiB
C
Raw Normal View History

#ifndef RR_GENERIC_ALLOCATOR_H
#define RR_GENERIC_ALLOCATOR_H
#include <librr/types.h>
typedef struct rr_generic_allocator rr_generic_allocator_s;
typedef struct rr_generic_pool rr_generic_pool_s;
typedef struct rr_generic_arena rr_generic_arena_s;
typedef rr_generic_arena_s (*rr_create_arena_fn) (usz_t capacity);
typedef rr_generic_pool_s (*rr_create_pool_fn) (usz_t item_size, usz_t num_items);
struct rr_generic_allocator
{
void * (*fn_alloc) (rr_generic_allocator_s *allocator, usz_t num_bytes);
void (*fn_free) (rr_generic_allocator_s *allocator, void *block);
void (*fn_destruct) (rr_generic_allocator_s *allocator);
void *specifics;
};
struct rr_generic_pool
{
void * (*fn_alloc) (rr_generic_pool_s *pool);
void (*fn_free) (rr_generic_pool_s *pool, void *block);
void (*fn_destruct) (rr_generic_pool_s *pool);
usz_t (*fn_get_unit_size) (rr_generic_pool_s *pool);
void *specifics;
};
struct rr_generic_arena
{
void * (*fn_alloc) (rr_generic_arena_s *arena, usz_t num_bytes);
void (*fn_destruct) (rr_generic_arena_s *arena);
void *specifics;
};
#endif // RR_GENERIC_ALLOCATOR_H