int vlDequePopBack(vl_deque *deq, void *val)
Copies and removes an element from the end of the deque.
Definition vl_deque.c:141
vl_deque * vlDequeClone(const vl_deque *src, vl_deque *dest)
Clones the specified deque to another.
Definition vl_deque.c:51
void vlDequeClear(vl_deque *deq)
Clears the specified deque.
Definition vl_deque.c:41
void vlDequeInit(vl_deque *deq, vl_memsize_t elementSize)
Initializes the specified instance of vl_deque.
Definition vl_deque.c:16
void vlDequePushBack(vl_deque *deq, const void *val)
Adds and copies an en element to the end of the deque.
Definition vl_deque.c:118
vl_memsize_t elementSize
Definition vl_deque.h:20
vl_linearpool nodes
Definition vl_deque.h:19
vl_linearpool_idx tail
Definition vl_deque.h:22
vl_memsize_t vlDequeSize(vl_deque *deq)
Returns the total number of elements.
Definition vl_deque.c:63
void vlDequePushFront(vl_deque *deq, const void *val)
Adds and copies an element to the front of the deque.
Definition vl_deque.c:67
int vlDequePopFront(vl_deque *deq, void *val)
Copies and removes an element from the front of the deque.
Definition vl_deque.c:92
void vlDequeFree(vl_deque *deq)
Frees the specified instance of vl_deque.
Definition vl_deque.c:23
vl_deque * vlDequeNew(vl_memsize_t elementSize)
Allocates, initializes, and returns an instance of vl_deque.
Definition vl_deque.c:30
vl_linearpool_idx head
Definition vl_deque.h:21
void vlDequeDelete(vl_deque *deq)
De-initializes and deletes the specified instance of vl_deque.
Definition vl_deque.c:36
void vlDequeReserve(vl_deque *deque, vl_memsize_t n)
Reserves space for n-many elements in the underlying buffer of the specified deque.
Definition vl_deque.c:47
Double-ended queue.
Definition vl_deque.h:18
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