From 5d575f8cd99e9bc064b3d998f17b194a818e3546 Mon Sep 17 00:00:00 2001 From: steven-na Date: Thu, 6 Aug 2026 02:36:01 -0700 Subject: Sliding window array implementation --- src/vec2sw.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/vec2sw.c (limited to 'src/vec2sw.c') diff --git a/src/vec2sw.c b/src/vec2sw.c new file mode 100644 index 0000000..0e1aec0 --- /dev/null +++ b/src/vec2sw.c @@ -0,0 +1,23 @@ +#include "vec2sw.h" +#include "slidingwindow.h" +#include "vec2.h" + +vec2d_sw_soa_t vec2d_sw_soa(smrt_arena_t *arena, u64 size) { + vec2d_sw_soa_t vs = { .size=size }; + vs.xs = SMRTA_ALLOC_SLIDINGWINDOW(arena, f64, size); + vs.ys = SMRTA_ALLOC_SLIDINGWINDOW(arena, f64, size); + return vs; +} + +void vec2d_sw_soa_insert(vec2d_sw_soa_t sw_vs, vec2d_t v) { + sw_insert(sw_vs.xs, (void*)&v.x); + sw_insert(sw_vs.ys, (void*)&v.y); +} + +vec2d_soa_t vec2d_sw_soa_get(vec2d_sw_soa_t sw_vs) { + return (vec2d_soa_t){ + .size = sw_vs.xs->num_elements, + .xs = SLIDINGWINDOW_GET(sw_vs.xs, f64), + .ys = SLIDINGWINDOW_GET(sw_vs.ys, f64), + }; +} -- cgit v1.2.3