Mercurial > molko
changeset 555:6c911cbc1fd7
core: alloc_pool is no more
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 07 Mar 2023 22:35:43 +0100 |
parents | cdbc13ceff85 |
children | 7eebac09fcb7 |
files | libmlk-core/mlk/core/alloc.c libmlk-core/mlk/core/alloc.h libmlk-rpg/mlk/rpg/map-loader-file.c libmlk-rpg/mlk/rpg/map-loader.c tests/test-alloc.c |
diffstat | 5 files changed, 4 insertions(+), 150 deletions(-) [+] |
line wrap: on
line diff
--- a/libmlk-core/mlk/core/alloc.c Tue Mar 07 22:15:35 2023 +0100 +++ b/libmlk-core/mlk/core/alloc.c Tue Mar 07 22:35:43 2023 +0100 @@ -270,74 +270,3 @@ if (ptr) funcs->free(blockat(ptr)); } - -void -mlk_alloc_pool_init(struct mlk_alloc_pool *pool, - size_t poolsize, - size_t elemsize, - void (*finalizer)(void *)) -{ - assert(pool); - assert(poolsize > 0 && (poolsize & (poolsize - 1)) == 0); - assert(elemsize != 0); - - pool->data = mlk_alloc_new(poolsize, elemsize); - pool->elemsize = elemsize; - pool->size = 0; - pool->capacity = poolsize; - pool->finalizer = finalizer; -} - -void * -mlk_alloc_pool_new(struct mlk_alloc_pool *pool) -{ - assert(pool); - - if (pool->size >= pool->capacity) { - pool->capacity *= 2; - pool->data = mlk_alloc_resize(pool->data, pool->capacity); - } - - return ((unsigned char *)pool->data) + pool->size++ * pool->elemsize; -} - -void * -mlk_alloc_pool_get(const struct mlk_alloc_pool *pool, size_t index) -{ - assert(pool); - assert(index < pool->size); - - return ((unsigned char *)pool->data) + index * pool->elemsize; -} - -void * -mlk_alloc_pool_shrink(struct mlk_alloc_pool *pool) -{ - assert(pool); - - void *ptr; - - ptr = mlk_alloc_resize(pool->data, pool->size); - memset(pool, 0, sizeof (*pool)); - - return ptr; -} - -void -mlk_alloc_pool_finish(struct mlk_alloc_pool *pool) -{ - unsigned char *tab; - - if (!pool) - return; - - if (pool->finalizer) { - tab = pool->data; - - for (size_t i = 0; i < pool->size; ++i) - pool->finalizer(tab + i * pool->elemsize); - } - - mlk_alloc_free(pool->data); - memset(pool, 0, sizeof (*pool)); -}
--- a/libmlk-core/mlk/core/alloc.h Tue Mar 07 22:15:35 2023 +0100 +++ b/libmlk-core/mlk/core/alloc.h Tue Mar 07 22:35:43 2023 +0100 @@ -160,14 +160,6 @@ void (*free)(void *); }; -struct mlk_alloc_pool { - void *data; - size_t elemsize; - size_t size; - size_t capacity; - void (*finalizer)(void *); -}; - #if defined(__cplusplus) extern "C" { #endif @@ -311,22 +303,6 @@ void mlk_alloc_free(void *ptr); -/* alloc_pool functions. */ -void -mlk_alloc_pool_init(struct mlk_alloc_pool *, size_t, size_t , void (*)(void *)); - -void * -mlk_alloc_pool_new(struct mlk_alloc_pool *); - -void * -mlk_alloc_pool_get(const struct mlk_alloc_pool *, size_t); - -void * -mlk_alloc_pool_shrink(struct mlk_alloc_pool *); - -void -mlk_alloc_pool_finish(struct mlk_alloc_pool *); - #if defined(__cplusplus) } #endif
--- a/libmlk-rpg/mlk/rpg/map-loader-file.c Tue Mar 07 22:15:35 2023 +0100 +++ b/libmlk-rpg/mlk/rpg/map-loader-file.c Tue Mar 07 22:35:43 2023 +0100 @@ -58,9 +58,12 @@ static struct mlk_map_block * expand_blocks(struct mlk_map_loader *self, + struct mlk_map *map, struct mlk_map_block *blocks, size_t blocksz) { + (void)map; + struct mlk_map_loader_file *file = self->data; struct mlk_map_block *ptr;
--- a/libmlk-rpg/mlk/rpg/map-loader.c Tue Mar 07 22:15:35 2023 +0100 +++ b/libmlk-rpg/mlk/rpg/map-loader.c Tue Mar 07 22:35:43 2023 +0100 @@ -96,7 +96,7 @@ * directive has one. */ if (isblock) { - if (!(array = loader->expand_blocks(loader, blocks, blocksz + 1))) + if (!(array = loader->expand_blocks(loader, map, blocks, blocksz + 1))) return -1; blocks = array;
--- a/tests/test-alloc.c Tue Mar 07 22:15:35 2023 +0100 +++ b/tests/test-alloc.c Tue Mar 07 22:35:43 2023 +0100 @@ -137,59 +137,6 @@ } static void -test_basics_pool_simple(void) -{ - struct mlk_alloc_pool pool; - struct point *p, *data; - size_t total = 0; - - mlk_alloc_pool_init(&pool, 16, sizeof (*p), NULL); - - DT_EQ_UINT(pool.elemsize, sizeof (*p)); - DT_EQ_UINT(pool.size, 0); - DT_EQ_UINT(pool.capacity, 16); - - /* Create until we reach the capacity. */ - for (size_t i = 0; i < pool.capacity; ++i) { - p = mlk_alloc_pool_new(&pool); - p->x = (int)i + 1; - p->y = (int)i + 1; - total++; - } - - DT_EQ_UINT(pool.size, pool.capacity); - - /* Verify values are correct. */ - for (size_t i = 0; i < pool.size; ++i) { - p = ((struct point *)pool.data) + i; - - DT_EQ_INT(p->x, (int)i + 1); - DT_EQ_INT(p->y, (int)i + 1); - } - - /* Now it should reallocate. */ - p = mlk_alloc_pool_new(&pool); - p->x = 9999; - p->y = 9999; - - DT_ASSERT(pool.capacity > pool.size); - - /* Shrink it! */ - data = mlk_alloc_pool_shrink(&pool); - - /* Verify values are correct again. */ - for (size_t i = 0; i < total; ++i) { - DT_EQ_INT(data[i].x, (int)i + 1); - DT_EQ_INT(data[i].y, (int)i + 1); - } - - DT_EQ_PTR(pool.data, NULL); - DT_EQ_UINT(pool.size, 0U); - DT_EQ_UINT(pool.capacity, 0U); - DT_EQ_UINT(pool.elemsize, 0U); -} - -static void test_basics_sdupf(void) { char *str = mlk_alloc_sdupf("Hello %s", "David"); @@ -215,7 +162,6 @@ { DT_RUN(test_basics_resize0); DT_RUN(test_basics_expand0); - DT_RUN(test_basics_pool_simple); DT_RUN(test_basics_sdupf); DT_RUN(test_custom_count); DT_SUMMARY();