44 lines
771 B
Plaintext
44 lines
771 B
Plaintext
Static_Array :: struct (T : Type, N : int) {
|
|
array : [N] T;
|
|
|
|
count : int;
|
|
}
|
|
|
|
operator *[] :: (sa : *Static_Array, index : int) -> *sa.T {
|
|
assert(index < sa.count);
|
|
return *sa.array[index];
|
|
}
|
|
|
|
array_add :: (sa : *Static_Array, item : sa.T) {
|
|
assert(sa.count + 1 < sa.N);
|
|
|
|
sa.array[sa.count] = item;
|
|
sa.count += 1;
|
|
}
|
|
|
|
array_add :: (sa : *Static_Array) -> *sa.T {
|
|
assert(sa.count + 1 < sa.N);
|
|
|
|
ptr := *sa.array[sa.count];
|
|
sa.count += 1;
|
|
return ptr;
|
|
}
|
|
|
|
pop :: (sa : *Static_Array) -> sa.T {
|
|
assert(sa.count > 0);
|
|
elem := sa.array[sa.count - 1];
|
|
sa.count -= 1;
|
|
return elem;
|
|
}
|
|
|
|
clear :: (sa : *Static_Array) {
|
|
sa.count = 0;
|
|
}
|
|
|
|
to_array :: (sa : *Static_Array) -> []sa.T {
|
|
array : []sa.T;
|
|
array.count = sa.count;
|
|
array.data = sa.array.data;
|
|
return array;
|
|
}
|