summaryrefslogtreecommitdiffhomepage
path: root/src/pool.h
blob: 7b0ae78cb7585d7d90afa5970eebacd2db6ea4a5 (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
/*
** pool.h - memory pool
** 
** See Copyright Notice in mruby.h
*/

#include "mruby.h"
#include <stddef.h>

typedef struct mrb_pool {
  mrb_state *mrb;
  struct mrb_pool_page {
    struct mrb_pool_page *next;
    size_t offset;
    size_t len;
    void *last;
    char page[1];
  } *pages;
} mrb_pool;

mrb_pool* mrb_pool_open(mrb_state*);
void mrb_pool_close(mrb_pool*);
void* mrb_pool_alloc(mrb_pool*, size_t);
void* mrb_pool_realloc(mrb_pool*, void*, size_t oldlen, size_t newlen);
int mrb_pool_can_realloc(mrb_pool*, void*, size_t);