#ifndef RR_POOL_PROVIDER_H #define RR_POOL_PROVIDER_H #include #include typedef struct rr_pool_unit_header rr_pool_unit_header_s; typedef struct rr_pool rr_pool_s; struct rr_pool_unit_header { rr_pool_unit_header_s *next; }; struct rr_pool { usz_t capacity; usz_t item_size; rr_pool_unit_header_s *first_free; void *allocation; rr_generic_allocator_s *allocator; }; rr_generic_pool_s rr_new_dynamic_pool(rr_generic_allocator_s *allocator, usz_t unit_size, usz_t capacity); rr_generic_pool_s rr_new_static_pool(rr_generic_allocator_s *allocator, usz_t unit_size, usz_t capacity); void rr_destruct_pool(rr_generic_pool_s *pool); void * rr_pool_alloc_slot(rr_generic_pool_s *pool); void rr_pool_free_slot(rr_generic_pool_s *pool, void *block); #endif // RR_POOL_PROVIDER_H