From ccab86b21825ebc41f0887ea633ea28906b32a8e Mon Sep 17 00:00:00 2001 From: Fabrice Date: Tue, 10 Feb 2026 09:32:35 +0100 Subject: adding vector and eventloop implementation --- src/vec.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/vec.h (limited to 'src/vec.h') diff --git a/src/vec.h b/src/vec.h new file mode 100644 index 0000000..2b4d11c --- /dev/null +++ b/src/vec.h @@ -0,0 +1,38 @@ +#pragma once + +#include "utils.h" + +#define WAYC_VEC_INITIAL 4 +#define WAYC_VEC_GROWTH 2 +#define WAYC_VEC_THRESHOLD 8 + +struct raw_vec_s { + u8 *ptr; + usize size; + usize len, cap; +}; + +#define WAYC_RAW_VEC_INIT(size) {nullptr, size, 0, 0} + +void wayc_raw_vec_push(raw_vec_s *vec, const u8 *at); +bool wayc_raw_vec_pop(raw_vec_s *vec, u8 *out); +void wayc_raw_vec_deinit(raw_vec_s *vec); + +template struct vec_s { + raw_vec_s raw; +}; + +#define WAYC_VEC_INIT(type) {WAYC_RAW_VEC_INIT(sizeof(type))} + +template +static inline void wayc_vec_push(vec_s *vec, const T *at) { + wayc_raw_vec_push(&vec->raw, (u8 *)at); +} + +template static inline bool wayc_vec_pop(vec_s *vec, T *out) { + return wayc_raw_vec_pop(&vec->raw, (u8 *)out); +} + +template static inline void wayc_vec_deinit(vec_s *vec) { + wayc_raw_vec_deinit(&vec->raw); +} \ No newline at end of file -- cgit v1.2.3