Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_linear_pool.h
Go to the documentation of this file.
1#ifndef VL_LINEARPOOL_H
2#define VL_LINEARPOOL_H
3
4#include "vl_buffer.h"
5
27typedef struct{
28 vl_memsize_t elementSize; //size of each element, in bytes.
29 vl_dsidx_t totalTaken; //total number of taken elements
30
32 vl_buffer freeStack; //uses the offset member as a relative stack pointer.
34
35#define VL_POOL_INVALID_IDX VL_STRUCTURE_INDEX_MAX
36
37#ifndef vlLinearPoolSample
44#define vlLinearPoolSample(poolPtr, poolIndex) (vl_transient*)(((vl_usmall_t*)((poolPtr)->buffer.data) + ((poolIndex) * (poolPtr)->elementSize)))
45#endif
46
48
59void vlLinearPoolInit(vl_linearpool* pool, vl_memsize_t elementSize);
60
70
82
93
101
120
134
148
156
164
165#endif //VL_LINEARPOOL_H
A multi-purpose byte buffer.
Definition vl_buffer.h:19
vl_buffer buffer
Definition vl_linear_pool.h:31
vl_linearpool * vlLinearPoolClone(const vl_linearpool *src, vl_linearpool *dest)
Clones the specified source pool.
Definition vl_linear_pool.c:33
vl_linearpool_idx vlLinearPoolTellIndex(vl_linearpool *pool, const vl_transient *dataPtr)
Calculates the index of the specified element pointer. May return VL_POOL_INVALID_IDX if the specifie...
Definition vl_linear_pool.c:57
vl_linearpool_idx vlLinearPoolTake(vl_linearpool *pool)
Definition vl_linear_pool.c:64
void vlLinearPoolReturn(vl_linearpool *pool, vl_linearpool_idx offset)
Definition vl_linear_pool.c:85
void vlLinearPoolReserve(vl_linearpool *pool, vl_memsize_t n)
Reserves space for n-many elements in the underlying pool buffer.
Definition vl_linear_pool.c:46
void vlLinearPoolDelete(vl_linearpool *pool)
De-initializes and deletes the specified pool. This will clear up all memory associated with members ...
Definition vl_linear_pool.c:22
vl_dsidx_t totalTaken
Definition vl_linear_pool.h:29
void vlLinearPoolFree(vl_linearpool *pool)
De-initializes the specified pool instance. This will clear up all memory associated with members of ...
Definition vl_linear_pool.c:11
vl_linearpool * vlLinearPoolNew(vl_memsize_t elementSize)
Allocates and initializes a pool instance.
Definition vl_linear_pool.c:16
vl_buffer freeStack
Definition vl_linear_pool.h:32
vl_dsidx_t vl_linearpool_idx
Definition vl_linear_pool.h:47
vl_memsize_t elementSize
Definition vl_linear_pool.h:28
void vlLinearPoolInit(vl_linearpool *pool, vl_memsize_t elementSize)
Initializes the specified pool instance.
Definition vl_linear_pool.c:4
void vlLinearPoolClear(vl_linearpool *pool)
Definition vl_linear_pool.c:27
A simple pool allocator, useful for avoiding many smaller heap allocations.
Definition vl_linear_pool.h:27
VL_MEMORY_SIZE_T vl_memsize_t
Definition vl_memory.h:18
VL_MEMORY_T vl_transient
Definition vl_memory.h:85
VL_STRUCTURE_INDEX_T vl_dsidx_t
Index type for data structures.
Definition vl_numtypes.h:13