diff options
| author | WormHeamer | 2025-08-05 04:58:40 -0400 |
|---|---|---|
| committer | WormHeamer | 2025-08-05 04:58:40 -0400 |
| commit | 457d70acda9b9c02ddb297fcb36ed1fa5b57f92a (patch) | |
| tree | a9254683bb8ffd1076821eb9cfdd2128dfcfda41 /doc/generics.txt | |
| parent | 98bf590247c281137fdc62478699c66bb35ff29f (diff) | |
write some stuff about language goals
Diffstat (limited to 'doc/generics.txt')
| -rw-r--r-- | doc/generics.txt | 33 |
1 files changed, 33 insertions, 0 deletions
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) +} |
