1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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)
}
|