Add queue implementation

This commit is contained in:
2026-01-11 23:46:23 +00:00
parent 9af9cedd51
commit a9f5b9c3c6
9 changed files with 245 additions and 1 deletions

20
src/base/queue/queue.c Normal file
View File

@@ -0,0 +1,20 @@
// vim:fileencoding=utf-8:foldmethod=marker
#include "queue.h"
#include "../array/array.h"
#include "../../common/assert/assert.h"
#include <string.h>
void _queue_pop_front(GenericQueue *queue, void *output, u64 item_size) {
wapp_debug_assert(queue != NULL && output != NULL, "`queue` and `output` should not be NULL");
wapp_runtime_assert(item_size == wapp_array_item_size(queue->items), "Invalid type");
memcpy(output, queue->items, item_size);
u64 new_count = wapp_array_count(queue->items) - 1;
for (u64 i = 0; i < new_count; ++i) {
_array_set(queue->items, i, _array_get(queue->items, i + 1, item_size), item_size);
}
wapp_array_set_count(queue->items, new_count);
}