Mercurial > molko
changeset 237:1bf5bd306bb0
core: add alloc_pool_get function
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 27 Nov 2020 13:31:27 +0100 |
parents | 4896bb07a8db |
children | b30c3af37a01 |
files | libcore/core/alloc.c libcore/core/alloc.h |
diffstat | 2 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libcore/core/alloc.c Fri Nov 27 13:31:16 2020 +0100 +++ b/libcore/core/alloc.c Fri Nov 27 13:31:27 2020 +0100 @@ -186,6 +186,15 @@ return ((unsigned char *)pool->data) + pool->size++ * pool->elemsize; } +void * +alloc_pool_get(const struct alloc_pool *pool, size_t index) +{ + assert(pool); + assert(index < pool->size); + + return ((unsigned char *)pool->data) + index * pool->elemsize; +} + void alloc_pool_finish(struct alloc_pool *pool) {
--- a/libcore/core/alloc.h Fri Nov 27 13:31:16 2020 +0100 +++ b/libcore/core/alloc.h Fri Nov 27 13:31:27 2020 +0100 @@ -235,6 +235,18 @@ alloc_pool_new(struct alloc_pool *pool); /** + * Get the value at the given index. + * + * \pre pool != NULL + * \pre index < pool->size + * \param pool the pool + * \param index the object index + * \return The pointer to the region. + */ +void * +alloc_pool_get(const struct alloc_pool *pool, size_t index); + +/** * Finalize the pool and all individual element if a finalizer is set. * * You must call \ref alloc_pool_init again before reusing it.