182#define cxMempoolCreateSimple(capacity) cxMempoolCreate(capacity, CX_MEMPOOL_TYPE_SIMPLE)
192#define cxMempoolCreateAdvanced(capacity) cxMempoolCreate(capacity, CX_MEMPOOL_TYPE_ADVANCED)
202#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:120
struct cx_allocator_s CxAllocator
High-Level type alias for the allocator type.
Definition allocator.h:84
void(* cx_destructor_func)(void *memory)
Function pointer type for destructor functions.
Definition allocator.h:107
Common definitions and feature checks.
#define cx_attr_nonnull
All pointer arguments must be non-NULL.
Definition common.h:141
#define CX_EXPORT
Only used for building Windows DLLs.
Definition common.h:278
#define cx_attr_nodiscard
Warn about discarded return value.
Definition common.h:256
#define cx_attr_malloc
The attributed function always returns freshly allocated memory.
Definition common.h:156
#define cx_attr_nonnull_arg(...)
The specified pointer arguments must be non-NULL.
Definition common.h:146
#define cx_attr_dealloc(...)
Not supported in clang.
Definition common.h:172
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:152
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:79
@ CX_MEMPOOL_TYPE_ADVANCED
Allows registration of cx_destructor_func2 for each memory block.
Definition mempool.h:87
@ CX_MEMPOOL_TYPE_PURE
No individual destructor registration allowed.
Definition mempool.h:93
@ CX_MEMPOOL_TYPE_SIMPLE
Allows registration of cx_destructor_func for each memory block.
Definition mempool.h:83
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:65
void * destr2_data
Data for the advanced destructor.
Definition mempool.h:75
void * mem
The foreign memory.
Definition mempool.h:67
cx_destructor_func destr
Simple destructor.
Definition mempool.h:70
cx_destructor_func2 destr2
Advanced destructor.
Definition mempool.h:72
A memory block in an advanced memory pool.
Definition mempool.h:55
void * data
Data for the destructor.
Definition mempool.h:59
char c[]
The actual memory.
Definition mempool.h:61
cx_destructor_func2 destructor
The destructor.
Definition mempool.h:57
A memory block in a simple memory pool.
Definition mempool.h:47
char c[]
The actual memory.
Definition mempool.h:51
cx_destructor_func destructor
The destructor.
Definition mempool.h:49
The basic structure of a memory pool.
Definition mempool.h:100
size_t capacity
Memory pool capacity.
Definition mempool.h:114
size_t registered_size
Number of registered memory items.
Definition mempool.h:120
const CxAllocator * allocator
The provided allocator.
Definition mempool.h:105
const CxAllocator *const base_allocator
The used allocator, initialized with the cxDefaultAllocator.
Definition mempool.h:102
cx_destructor_func2 destr2
A destructor that shall be called before deallocating a memory block.
Definition mempool.h:141
void ** data
Array of pooled memory.
Definition mempool.h:108
void * destr2_data
Additional data for the destr2.
Definition mempool.h:146
size_t size
Number of pooled memory items.
Definition mempool.h:111
cx_destructor_func destr
A destructor that shall be called before deallocating a memory block.
Definition mempool.h:132
size_t registered_capacity
Capacity for registered memory.
Definition mempool.h:123
struct cx_mempool_foreign_memory_s * registered
Array of registered memory.
Definition mempool.h:117