179#define cxMempoolCreateSimple(capacity) cxMempoolCreate(capacity, CX_MEMPOOL_TYPE_SIMPLE)
189#define cxMempoolCreateAdvanced(capacity) cxMempoolCreate(capacity, CX_MEMPOOL_TYPE_ADVANCED)
199#define cxMempoolCreatePure(capacity) cxMempoolCreate(capacity, CX_MEMPOOL_TYPE_PURE)
Interface for custom allocators.
void(* cx_destructor_func2)(void *data, void *memory)
Function pointer type for destructor functions.
Definition allocator.h:116
struct cx_allocator_s CxAllocator
High-Level type alias for the allocator type.
Definition allocator.h:80
void(* cx_destructor_func)(void *memory)
Function pointer type for destructor functions.
Definition allocator.h:103
Common definitions and feature checks.
#define CX_MALLOC
The attributed function always returns freshly allocated memory.
Definition common.h:156
#define CX_DEALLOC(...)
Not supported in clang.
Definition common.h:172
#define CX_NONNULL
All pointer arguments must be non-NULL.
Definition common.h:141
#define CX_NODISCARD
Warn about discarded return value.
Definition common.h:256
#define CX_NONNULL_ARG(...)
The specified pointer arguments must be non-NULL.
Definition common.h:146
#define CX_EXTERN
Declares a function with external linkage.
Definition common.h:297
int cxMempoolTransfer(CxMempool *source, CxMempool *dest)
Transfers all the memory managed by one pool to another.
int cxMempoolRegister2(CxMempool *pool, void *memory, cx_destructor_func2 destr, void *data)
Registers foreign memory with this pool.
void cxMempoolGlobalDestructor(CxMempool *pool, cx_destructor_func fnc)
Sets the global destructor for all memory blocks within the specified pool.
void cxMempoolSetDestructor2(void *memory, cx_destructor_func2 fnc, void *data)
Sets the destructor function for a specific allocated memory object.
void cxMempoolFree(CxMempool *pool)
Deallocates a memory pool and frees the managed memory.
void cxMempoolRemoveDestructor2(void *memory)
Removes the destructor function for a specific allocated memory object.
struct cx_mempool_s CxMempool
Common type for all memory pool implementations.
Definition mempool.h:148
CxMempool * cxMempoolCreate(size_t capacity, enum cx_mempool_type type)
Creates an array-based memory pool.
cx_mempool_type
Specifies how individual blocks are allocated.
Definition mempool.h:75
@ CX_MEMPOOL_TYPE_ADVANCED
Allows registration of cx_destructor_func2 for each memory block.
Definition mempool.h:83
@ CX_MEMPOOL_TYPE_PURE
No individual destructor registration allowed.
Definition mempool.h:89
@ CX_MEMPOOL_TYPE_SIMPLE
Allows registration of cx_destructor_func for each memory block.
Definition mempool.h:79
int cxMempoolTransferObject(CxMempool *source, CxMempool *dest, const void *obj)
Transfers an object from one pool to another.
void cxMempoolRemoveDestructor(void *memory)
Removes the destructor function for a specific allocated memory object.
int cxMempoolRegister(CxMempool *pool, void *memory, cx_destructor_func destr)
Registers foreign memory with this pool.
void cxMempoolSetDestructor(void *memory, cx_destructor_func fnc)
Sets the destructor function for a specific allocated memory object.
void cxMempoolGlobalDestructor2(CxMempool *pool, cx_destructor_func2 fnc, void *data)
Sets the global destructor for all memory blocks within the specified pool.
Represents memory that is not allocated by, but registered with a pool.
Definition mempool.h:61
void * destr2_data
Data for the advanced destructor.
Definition mempool.h:71
void * mem
The foreign memory.
Definition mempool.h:63
cx_destructor_func destr
Simple destructor.
Definition mempool.h:66
cx_destructor_func2 destr2
Advanced destructor.
Definition mempool.h:68
A memory block in an advanced memory pool.
Definition mempool.h:51
void * data
Data for the destructor.
Definition mempool.h:55
char c[]
The actual memory.
Definition mempool.h:57
cx_destructor_func2 destructor
The destructor.
Definition mempool.h:53
A memory block in a simple memory pool.
Definition mempool.h:43
char c[]
The actual memory.
Definition mempool.h:47
cx_destructor_func destructor
The destructor.
Definition mempool.h:45
The basic structure of a memory pool.
Definition mempool.h:96
size_t capacity
Memory pool capacity.
Definition mempool.h:110
size_t registered_size
Number of registered memory items.
Definition mempool.h:116
const CxAllocator * allocator
The provided allocator.
Definition mempool.h:101
const CxAllocator *const base_allocator
The used allocator, initialized with the cxDefaultAllocator.
Definition mempool.h:98
cx_destructor_func2 destr2
A destructor that shall be called before deallocating a memory block.
Definition mempool.h:137
void ** data
Array of pooled memory.
Definition mempool.h:104
void * destr2_data
Additional data for the destr2.
Definition mempool.h:142
size_t size
Number of pooled memory items.
Definition mempool.h:107
cx_destructor_func destr
A destructor that shall be called before deallocating a memory block.
Definition mempool.h:128
size_t registered_capacity
Capacity for registered memory.
Definition mempool.h:119
struct cx_mempool_foreign_memory_s * registered
Array of registered memory.
Definition mempool.h:113