XHPool
typedef struct XHPool{
size_t item_size;
uint32_t page_capacity;
uint32_t page_shift;
uint32_t page_mask;
void **pages;
uint32_t page_count;
uint32_t page_cap;
uint32_t free_head;
uint32_t next_index;
uint32_t *alive;
uint32_t alive_count;
uint32_t alive_cap;
XHPoolCtorFn ctor;
XHPoolDtorFn dtor;
void *user;
}XHPool;
XHPoolConfig
typedef struct XHPoolConfig{
uint32_t page_capacity;
uint32_t initial_pages;
}XHPoolConfig;
XHPoolCtorFn
typedef void(*XHPoolCtorFn)(void *user, void *item);
XHPoolDtorFn
typedef void(*XHPoolDtorFn)(void *user, void *item);
x_hpool_alive_count
X_HPOOL_API uint32_t x_hpool_alive_count(XHPool *p);
x_hpool_capacity
X_HPOOL_API uint32_t x_hpool_capacity(XHPool *p);
x_hpool_init
X_HPOOL_API int x_hpool_init(
XHPool *p,
size_t item_size,
XHPoolConfig cfg,
XHPoolCtorFn ctor,
XHPoolDtorFn dtor,
void *user
);
x_hpool_page_capacity
X_HPOOL_API uint32_t x_hpool_page_capacity(XHPool *p);
x_hpool_term
X_HPOOL_API void x_hpool_term(XHPool *p);