summaryrefslogtreecommitdiff
path: root/src/ez_arena.h
blob: 19def60fd40a9b71f593a98da46f98d8e80564e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once

#include "common.h"

#define EZ_ARENA_BASE_POS (sizeof(ez_arena_t))

typedef struct {
    u64 alloc_size;
    u64 pos;
} ez_arena_t;

ez_arena_t   *ez_arena_create(u64 size, b32 zero_out);
      void    *ez_arena_alloc(ez_arena_t *arena, u64 alloc_amount);
      void *ez_arena_alloc_nz(ez_arena_t *arena, u64 alloc_amount);
      void     ez_arena_clear(ez_arena_t *arena, b32 zero_out);
      void   ez_arena_destroy(ez_arena_t *arena);

#define EZA_ALLOC_ARRAY(arena, T, n) (T*)ez_arena_alloc(arena, sizeof(T) * (n))