From 457d70acda9b9c02ddb297fcb36ed1fa5b57f92a Mon Sep 17 00:00:00 2001 From: WormHeamer Date: Tue, 5 Aug 2025 04:58:40 -0400 Subject: write some stuff about language goals --- doc/generics.txt | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/generics.txt (limited to 'doc/generics.txt') diff --git a/doc/generics.txt b/doc/generics.txt new file mode 100644 index 0000000..22745c1 --- /dev/null +++ b/doc/generics.txt @@ -0,0 +1,33 @@ +struct DynArr(T) { + data ^T, + len, cap i64 +} + +proc da_fit(da ^DynArr(T), n i64, a ^Arena) { + let c = da^.cap + if c <= n { + if c = 0 { c := 1 } + while c <= n { + c := c << 1 + } + da^.data := arena_realloc(a, da^.data, da^.cap * sizeof(T), alignof(T)) + da^.cap := c + } +} + +proc da_push(da ^DynArr(T), v T, a ^Arena) { + da_fit(da, da^.len + 1, a) + da^.data[da^.len] := v + da^.len := da^.len + 1 +} + +proc main { + let a = Arena {} + let v = DynArr(i32) {} + da_push(&v, 1, &a) + da_push(&v, 2, &a) + da_push(&v, 3, &a) + da_push(&v, 4, &a) + da_push(&v, 5, &a) + da_push(&v, 6, &a) +} -- cgit v1.2.3