Add queue implementation
This commit is contained in:
20
src/base/queue/queue.c
Normal file
20
src/base/queue/queue.c
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user