Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_queue.h
Go to the documentation of this file.
1#ifndef VL_QUEUE_H
2#define VL_QUEUE_H
3
4#include "vl_linear_pool.h"
5
16typedef struct{
17 vl_linearpool nodes; //pool nodes
18 vl_memsize_t elementSize; //size of a single element, in bytes.
19 vl_linearpool_idx head; //first element
20 vl_linearpool_idx tail; //last element
21} vl_queue;
22
33void vlQueueInit(vl_queue* queue, vl_memsize_t elementSize);
34
44void vlQueueFree(vl_queue* queue);
45
56vl_queue* vlQueueNew(vl_memsize_t elementSize);
57
67void vlQueueDelete(vl_queue* queue);
68
84vl_queue* vlQueueClone(const vl_queue* src, vl_queue* dest);
85
96
106void vlQueueClear(vl_queue* queue);
107
117void vlQueuePushBack(vl_queue* queue, const void* element);
118
129int vlQueuePopFront(vl_queue* queue, void* element);
130
138
139#endif //VL_QUEUE_H
vl_dsidx_t vl_linearpool_idx
Definition vl_linear_pool.h:47
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_STRUCTURE_INDEX_T vl_dsidx_t
Index type for data structures.
Definition vl_numtypes.h:13
vl_queue * vlQueueClone(const vl_queue *src, vl_queue *dest)
Clones the specified queue to another.
Definition vl_queue.c:39
vl_linearpool_idx head
Definition vl_queue.h:19
int vlQueuePopFront(vl_queue *queue, void *element)
Copies the first element in the queue, and removes it from the queue.
Definition vl_queue.c:72
void vlQueueClear(vl_queue *queue)
Clears the specified queue.
Definition vl_queue.c:34
vl_linearpool_idx tail
Definition vl_queue.h:20
vl_queue * vlQueueNew(vl_memsize_t elementSize)
Allocates on the heap, initializes, and returns a queue instance.
Definition vl_queue.c:23
void vlQueueReserve(vl_queue *queue, vl_memsize_t n)
Reserves space for n-many elements in the underlying buffer of the specified queue.
Definition vl_queue.c:52
void vlQueuePushBack(vl_queue *queue, const void *element)
Adds a new element to the end of the queue.
Definition vl_queue.c:56
void vlQueueInit(vl_queue *queue, vl_memsize_t elementSize)
Initializes the specified queue.
Definition vl_queue.c:12
vl_dsidx_t vlQueueSize(vl_queue *queue)
Returns the total number of elements in the specified queue.
Definition vl_queue.c:91
vl_linearpool nodes
Definition vl_queue.h:17
vl_memsize_t elementSize
Definition vl_queue.h:18
void vlQueueFree(vl_queue *queue)
Frees the specified queue.
Definition vl_queue.c:19
void vlQueueDelete(vl_queue *queue)
Deletes the specified queue.
Definition vl_queue.c:29
First in, first out queue.
Definition vl_queue.h:16