2#include "nuklear_internal.h"
11 unsigned int capacity)
13 NK_ASSERT(capacity >= 1);
14 nk_zero(pool,
sizeof(*pool));
16 pool->capacity = capacity;
17 pool->type = NK_BUFFER_DYNAMIC;
21nk_pool_free(
struct nk_pool *pool)
26 if (pool->type == NK_BUFFER_FIXED)
return;
28 struct nk_page *next = iter->next;
29 pool->alloc.free(pool->alloc.userdata, iter);
34nk_pool_init_fixed(
struct nk_pool *pool,
void *memory, nk_size size)
36 nk_zero(pool,
sizeof(*pool));
37 NK_ASSERT(size >=
sizeof(
struct nk_page));
38 if (size <
sizeof(
struct nk_page))
return;
41 pool->pages = (
struct nk_page*)memory;
42 pool->type = NK_BUFFER_FIXED;
46nk_pool_alloc(
struct nk_pool *pool)
48 if (!pool->pages || pool->pages->size >= pool->capacity) {
51 if (pool->type == NK_BUFFER_FIXED) {
52 NK_ASSERT(pool->pages);
53 if (!pool->pages)
return 0;
54 NK_ASSERT(pool->pages->size < pool->capacity);
57 nk_size size =
sizeof(
struct nk_page);
59 page = (
struct nk_page*)pool->alloc.alloc(pool->alloc.userdata,0, size);
60 page->next = pool->pages;
64 }
return &pool->pages->win[pool->pages->size++];