diff options
Diffstat (limited to 'source/blender/blenlib/BLI_mempool.h')
-rw-r--r-- | source/blender/blenlib/BLI_mempool.h | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/source/blender/blenlib/BLI_mempool.h b/source/blender/blenlib/BLI_mempool.h index f14b6f94a5e..fca3d268981 100644 --- a/source/blender/blenlib/BLI_mempool.h +++ b/source/blender/blenlib/BLI_mempool.h @@ -25,8 +25,7 @@ */ #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif #include "BLI_compiler_attrs.h" @@ -36,56 +35,64 @@ struct BLI_mempool_chunk; typedef struct BLI_mempool BLI_mempool; -BLI_mempool *BLI_mempool_create(unsigned int esize, unsigned int totelem, - unsigned int pchunk, unsigned int flag) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT; -void *BLI_mempool_alloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1); -void *BLI_mempool_calloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1); -void BLI_mempool_free(BLI_mempool *pool, void *addr) ATTR_NONNULL(1, 2); -void BLI_mempool_clear_ex(BLI_mempool *pool, - const int totelem_reserve) ATTR_NONNULL(1); -void BLI_mempool_clear(BLI_mempool *pool) ATTR_NONNULL(1); -void BLI_mempool_destroy(BLI_mempool *pool) ATTR_NONNULL(1); -int BLI_mempool_len(BLI_mempool *pool) ATTR_NONNULL(1); -void *BLI_mempool_findelem(BLI_mempool *pool, unsigned int index) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1); - -void BLI_mempool_as_table(BLI_mempool *pool, void **data) ATTR_NONNULL(1, 2); -void **BLI_mempool_as_tableN(BLI_mempool *pool, const char *allocstr) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1, 2); -void BLI_mempool_as_array(BLI_mempool *pool, void *data) ATTR_NONNULL(1, 2); -void *BLI_mempool_as_arrayN(BLI_mempool *pool, const char *allocstr) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1, 2); +BLI_mempool *BLI_mempool_create(unsigned int esize, + unsigned int totelem, + unsigned int pchunk, + unsigned int flag) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT; +void *BLI_mempool_alloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1); +void *BLI_mempool_calloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1); +void BLI_mempool_free(BLI_mempool *pool, void *addr) ATTR_NONNULL(1, 2); +void BLI_mempool_clear_ex(BLI_mempool *pool, const int totelem_reserve) ATTR_NONNULL(1); +void BLI_mempool_clear(BLI_mempool *pool) ATTR_NONNULL(1); +void BLI_mempool_destroy(BLI_mempool *pool) ATTR_NONNULL(1); +int BLI_mempool_len(BLI_mempool *pool) ATTR_NONNULL(1); +void *BLI_mempool_findelem(BLI_mempool *pool, unsigned int index) ATTR_WARN_UNUSED_RESULT + ATTR_NONNULL(1); + +void BLI_mempool_as_table(BLI_mempool *pool, void **data) ATTR_NONNULL(1, 2); +void **BLI_mempool_as_tableN(BLI_mempool *pool, + const char *allocstr) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT + ATTR_NONNULL(1, 2); +void BLI_mempool_as_array(BLI_mempool *pool, void *data) ATTR_NONNULL(1, 2); +void *BLI_mempool_as_arrayN(BLI_mempool *pool, + const char *allocstr) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT + ATTR_NONNULL(1, 2); #ifndef NDEBUG -void BLI_mempool_set_memory_debug(void); +void BLI_mempool_set_memory_debug(void); #endif /** iteration stuff. note: this may easy to produce bugs with */ /* private structure */ typedef struct BLI_mempool_iter { - BLI_mempool *pool; - struct BLI_mempool_chunk *curchunk; - unsigned int curindex; + BLI_mempool *pool; + struct BLI_mempool_chunk *curchunk; + unsigned int curindex; - struct BLI_mempool_chunk **curchunk_threaded_shared; + struct BLI_mempool_chunk **curchunk_threaded_shared; } BLI_mempool_iter; /* flag */ enum { - BLI_MEMPOOL_NOP = 0, - /** allow iterating on this mempool. - * - * \note this requires that the first four bytes of the elements never begin with 'free' (FREEWORD). - * \note order of iteration is only assured to be the order of allocation when no chunks have been freed. - */ - BLI_MEMPOOL_ALLOW_ITER = (1 << 0), + BLI_MEMPOOL_NOP = 0, + /** allow iterating on this mempool. + * + * \note this requires that the first four bytes of the elements never begin with 'free' (FREEWORD). + * \note order of iteration is only assured to be the order of allocation when no chunks have been freed. + */ + BLI_MEMPOOL_ALLOW_ITER = (1 << 0), }; -void BLI_mempool_iternew(BLI_mempool *pool, BLI_mempool_iter *iter) ATTR_NONNULL(); +void BLI_mempool_iternew(BLI_mempool *pool, BLI_mempool_iter *iter) ATTR_NONNULL(); void *BLI_mempool_iterstep(BLI_mempool_iter *iter) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); -BLI_mempool_iter *BLI_mempool_iter_threadsafe_create(BLI_mempool *pool, const size_t num_iter) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(); -void BLI_mempool_iter_threadsafe_free(BLI_mempool_iter *iter_arr) ATTR_NONNULL(); +BLI_mempool_iter *BLI_mempool_iter_threadsafe_create(BLI_mempool *pool, + const size_t num_iter) ATTR_WARN_UNUSED_RESULT + ATTR_NONNULL(); +void BLI_mempool_iter_threadsafe_free(BLI_mempool_iter *iter_arr) ATTR_NONNULL(); #ifdef __cplusplus } #endif -#endif /* __BLI_MEMPOOL_H__ */ +#endif /* __BLI_MEMPOOL_H__ */ |