Files
libsm64/src/obj_pool.c
T
2020-10-28 13:51:03 -06:00

37 lines
822 B
C

#include "obj_pool.h"
#include <stdlib.h>
uint32_t obj_pool_alloc_index( struct ObjPool *pool, size_t size )
{
for( uint32_t i = 0; i < pool->size; ++i )
{
if( pool->objects[i] == NULL )
{
pool->objects[i] = malloc( size );
return i;
}
}
uint32_t i = pool->size;
pool->size++;
pool->objects = realloc( pool->objects, pool->size * sizeof( void * ));
pool->objects[i] = malloc( size );
return i;
}
void obj_pool_free_index( struct ObjPool *pool, uint32_t index )
{
free( pool->objects[index] );
pool->objects[index] = NULL;
}
void obj_pool_free_all( struct ObjPool *pool )
{
for( uint32_t i = 0; i < pool->size; ++i )
free( pool->objects[i] );
free( pool->objects );
pool->size = 0;
pool->objects = NULL;
}