From feccf0adf3e6861b11a7768669a63c327f77ec10 Mon Sep 17 00:00:00 2001 From: Kyle Gunger Date: Wed, 1 May 2024 03:11:07 -0400 Subject: Vector code --- include/osm/utils.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 include/osm/utils.h (limited to 'include/osm/utils.h') diff --git a/include/osm/utils.h b/include/osm/utils.h new file mode 100644 index 0000000..5a53f41 --- /dev/null +++ b/include/osm/utils.h @@ -0,0 +1,52 @@ +#ifndef OSM_UTILS_H +#define OSM_UTILS_H + +// Vector utilities + +/** + * Vector represents a dynamic array + */ +typedef struct { + unsigned int count, size, elsz; + void *data; +} Vector; + +Vector vect_init(unsigned int elsz); + +/** + * Add an element to an arbitrary index in the vector + */ +void vect_add(Vector *vec, unsigned int index); + +/** + * Remove an element from an arbitrary index in the vector + */ +void vect_remove(Vector *vec, unsigned int index); + +/** + * Push an element to the end of the vector + */ +void vect_push(Vector *vec, void *el); + +/** + * Pop an element from the end of the vector + */ +void vect_pop(Vector *vec); + +/** + * Get an element from the vector + */ +void *vect_get(Vector *vec, unsigned int index); + +/** + * Set an element inside the vector + */ +void *vect_set(Vector *vec, unsigned int index, void *el); + +/** + * Remove all associated data from the vector + */ +void vect_end(Vector *vect); + + +#endif -- cgit v1.2.3