From 47b5504cfd0224bf82477549236a363b9e0dc8b5 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 3 Feb 2022 10:54:07 +0000 Subject: feat(dynamic_array): implement for future use --- include/viv/dynamic_array.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 include/viv/dynamic_array.h (limited to 'include') diff --git a/include/viv/dynamic_array.h b/include/viv/dynamic_array.h new file mode 100644 index 0000000..40deac6 --- /dev/null +++ b/include/viv/dynamic_array.h @@ -0,0 +1,34 @@ +/* http://www.martinbroadhurst.com/dynamic-array-in-c.html */ + +#ifndef VIV_DYNAMIC_ARRAY_H +#define VIV_DYNAMIC_ARRAY_H + +#pragma once + +typedef struct { + void **buffer; + unsigned int size; + unsigned int count; +} VIV_DYNAMIC_ARRAY_dynamic_array; + +typedef void (*VIV_DYNAMIC_ARRAY_for_function)(void *); + +VIV_DYNAMIC_ARRAY_dynamic_array *VIV_DYNAMIC_ARRAY_create(unsigned int); +void VIV_DYNAMIC_ARRAY_empty(VIV_DYNAMIC_ARRAY_dynamic_array *); +void VIV_DYNAMIC_ARRAY_delete(VIV_DYNAMIC_ARRAY_dynamic_array *); +void VIV_DYNAMIC_ARRAY_add_tail(VIV_DYNAMIC_ARRAY_dynamic_array *, void *); +void VIV_DYNAMIC_ARRAY_add_head(VIV_DYNAMIC_ARRAY_dynamic_array *, void *); +void *VIV_DYNAMIC_ARRAY_remove_tail(VIV_DYNAMIC_ARRAY_dynamic_array *); +void *VIV_DYNAMIC_ARRAY_remove_head(VIV_DYNAMIC_ARRAY_dynamic_array *); +void VIV_DYNAMIC_ARRAY_insert(VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int, void *); +void *VIV_DYNAMIC_ARRAY_remove(VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int); +void *VIV_DYNAMIC_ARRAY_get(const VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int); +void *VIV_DYNAMIC_ARRAY_set(VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int, void *); +void VIV_DYNAMIC_ARRAY_for_each( + const VIV_DYNAMIC_ARRAY_dynamic_array *, + VIV_DYNAMIC_ARRAY_for_function +); +unsigned int VIV_DYNAMIC_ARRAY_get_count(const VIV_DYNAMIC_ARRAY_dynamic_array *); +void VIV_DYNAMIC_ARRAY_set_size(VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int); + +#endif /* VIV_DYNAMIC_ARRAY_H */ -- cgit v1.2.3