From c129f77ad724aa940b53a125de0e1e4de0ca7240 Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 14 Aug 2022 09:25:16 +0200 Subject: fix arena --- src/vec.hff | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/vec.hff') diff --git a/src/vec.hff b/src/vec.hff index be29fec..35a9331 100644 --- a/src/vec.hff +++ b/src/vec.hff @@ -22,8 +22,7 @@ struct Vec { fn clear(vec *Vec) void { free(vec.dat); - vec.len = 0; - vec.cap = 0; + *vec = {}; } fn compact(vec *Vec) [#]T { @@ -34,6 +33,14 @@ struct Vec { return vec.dat[0::vec.len]; } + fn move(vec *Vec, alloc *Allocator) [#]T { + let len = vec.len; + let dat *T = alloc->alloc(len * sizeof T); + memcpy(dat, vec.dat, len * sizeof T); + vec->clear(); + return dat[0::len]; + } + fn last(vec *const Vec) T { return vec.dat[vec.len - 1]; } fn lastp(vec *Vec) *T { return &vec.dat[vec.len - 1]; } -- cgit v1.2.3