summaryrefslogtreecommitdiffstats
path: root/lib/include/vector.h
diff options
context:
space:
mode:
authorLibravatar bigfoot547 <bigfoot@figboot.dev>2026-01-12 16:30:37 -0600
committerLibravatar bigfoot547 <bigfoot@figboot.dev>2026-01-12 16:30:37 -0600
commit2016dceaa9cfc65ee80ee7e433331390f4263744 (patch)
treed0c97b2ab5fc1933298a050f167b6a68fff08c89 /lib/include/vector.h
parentadd support for verified files (diff)
download jobs
Diffstat (limited to 'lib/include/vector.h')
-rw-r--r--lib/include/vector.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/include/vector.h b/lib/include/vector.h
new file mode 100644
index 0000000..02ed84e
--- /dev/null
+++ b/lib/include/vector.h
@@ -0,0 +1,27 @@
+#ifndef VL_VECTOR_H_INCLUDED
+#define VL_VECTOR_H_INCLUDED
+
+#include <stddef.h>
+
+/* implements a vector type (array of same-sized values) */
+
+typedef struct vl__vector_tag vl_vector;
+
+vl_vector *vl_vector_new(size_t sz);
+vl_vector *vl_vector_new_ex(size_t sz, size_t init_cap);
+void vl_vector_free(vl_vector *vec);
+
+/* will abort if realloc fails to shrink the allocation (should never happen) */
+void vl_vector_shrink_to_size(vl_vector *vec);
+
+#define vl_newvec(_t) vl_vector_new(sizeof(_t))
+#define vl_newvec_ex(_t, _ic) vl_vector_new_ex(sizeof(_t), _ic)
+
+int vl_vector_push(vl_vector *vec, void *data);
+int vl_vector_push_vec(vl_vector *vec, void *data, size_t n);
+int vl_vector_push_2d(vl_vector *vec, void **data, size_t n);
+
+size_t vl_vector_size(const vl_vector *vec);
+void *vl_vector_values(const vl_vector *vec, size_t *psz);
+
+#endif