Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_queue.h
Go to the documentation of this file.
1
14#ifndef VL_QUEUE_H
15#define VL_QUEUE_H
16
17#include "vl_pool.h"
18
31typedef struct
32{
33 vl_pool nodes; // pool nodes
34 vl_dsidx_t totalElements; // total elements in the queue.
35 vl_uint16_t elementSize; // size of a single element, in bytes.
36 vl_pool_idx head; // first element
37 vl_pool_idx tail; // last element
38} vl_queue;
39
62VL_API void vlQueueInit(vl_queue* queue, vl_uint16_t elementSize);
63
83VL_API void vlQueueFree(vl_queue* queue);
84
105VL_API vl_queue* vlQueueNew(vl_uint16_t elementSize);
106
126VL_API void vlQueueDelete(vl_queue* queue);
127
156VL_API vl_queue* vlQueueClone(const vl_queue* src, vl_queue* dest);
157
179VL_API void vlQueueReserve(vl_queue* queue, vl_dsidx_t n);
180
200VL_API void vlQueueClear(vl_queue* queue);
201
221VL_API void vlQueuePushBack(vl_queue* queue, const void* element);
222
244VL_API int vlQueuePopFront(vl_queue* queue, void* element);
245
263static inline vl_dsidx_t vlQueueSize(vl_queue* queue) { return queue->totalElements; }
264
265#endif // VL_QUEUE_H
VL_STRUCTURE_INDEX_T vl_dsidx_t
Index type for data structures.
Definition vl_numtypes.h:75
VL_POOL_INDEX_T vl_pool_idx
Definition vl_pool.h:53
Fixed-size memory pool with stable indices and geometric growth.
Definition vl_pool.h:141
VL_API void vlQueueReserve(vl_queue *queue, vl_dsidx_t n)
Reserves space for n-many elements in the underlying buffer of the specified queue.
Definition vl_queue.c:59
VL_API void vlQueueFree(vl_queue *queue)
De-initializes and frees the internal resources of the specified queue.
Definition vl_queue.c:24
VL_API void vlQueueInit(vl_queue *queue, vl_uint16_t elementSize)
Initializes the specified queue with a specific element size.
Definition vl_queue.c:16
VL_API void vlQueueClear(vl_queue *queue)
Clears the specified queue.
Definition vl_queue.c:39
VL_API vl_queue * vlQueueClone(const vl_queue *src, vl_queue *dest)
Clones the specified source queue to another.
Definition vl_queue.c:45
VL_API void vlQueueDelete(vl_queue *queue)
De-initializes and deletes the specified queue and its resources.
Definition vl_queue.c:33
VL_API void vlQueuePushBack(vl_queue *queue, const void *element)
Adds a new element to the end of the queue.
Definition vl_queue.c:61
VL_API int vlQueuePopFront(vl_queue *queue, void *element)
Copies the first element in the queue and removes it.
Definition vl_queue.c:78
VL_API vl_queue * vlQueueNew(vl_uint16_t elementSize)
Allocates on the heap, initializes, and returns a new queue instance.
Definition vl_queue.c:26