aboutsummaryrefslogtreecommitdiff
path: root/src/arena.h
blob: 80636e2ae69b86e92ee5831b52e891e5cb4a0663 (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 ALGDS_ARENA_H_
#define ALGDS_ARENA_H_

struct memblock {
    void *buf;
    int sz;
    int cap;
    struct memblock *next;
};
typedef struct memblock memblock_t;

struct arena {
    struct memblock head;
    struct memblock *current;
    int blocksz;
};
typedef struct arena arena_t;

void init_arena(arena_t *r, int blocksz);
void destroy_arena(arena_t *r);
void *arena_alloc(arena_t *r, int sz);

#endif