From a58dd232dc72f20971707c99dfa6266133f70a20 Mon Sep 17 00:00:00 2001 From: David Scholberg Date: Tue, 20 Jan 2026 22:02:07 -0500 Subject: added append function to vec --- std/vec.zc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'std/vec.zc') diff --git a/std/vec.zc b/std/vec.zc index 2205cca..d310535 100644 --- a/std/vec.zc +++ b/std/vec.zc @@ -90,6 +90,19 @@ impl Vec { self.data = (T*)realloc(self.data, self.cap * sizeof(T)); } + fn grow_to_fit(self, new_len: usize) { + if self.cap >= new_len { + return; + } + + if (self.cap == 0) { self.cap = 8; } + while self.cap < new_len { + self.cap = self.cap * 2; + } + + self.data = (T*)realloc(self.data, self.cap * sizeof(T)); + } + fn iterator(self) -> VecIter { return VecIter { data: self.data, @@ -161,6 +174,14 @@ impl Vec { return item; } + fn append(self, other: Vec) { + var new_len = self.len + other.len; + self.grow_to_fit(new_len); + + memcpy(self.data + self.len, other.data, other.len * sizeof(T)); + self.len = new_len; + } + fn get(self, idx: usize) -> T { if (idx >= self.len) { !"Panic: Index out of bounds"; -- cgit v1.2.3