45 lines
806 B
Plaintext
45 lines
806 B
Plaintext
record StaticList[T, S; capacity] {
|
|
S size;
|
|
T[capacity] data;
|
|
}
|
|
|
|
StaticList_remove: [T, S; capacity]u0(StaticList[T, S; capacity]* this, S index) -> {
|
|
T* data = &((*this).data[index]);
|
|
(*this).size = (*this).size - 1;
|
|
S sz = (*this).size;
|
|
loop {
|
|
if(index == sz) {
|
|
break;
|
|
}
|
|
|
|
*data = *(data + 1);
|
|
|
|
data = data + 1;
|
|
index = index + 1;
|
|
}
|
|
return;
|
|
};
|
|
|
|
StaticList_add: [T, S; capacity]u0(StaticList[T, S; capacity]* this, T value) -> {
|
|
(*this).data[(*this).size] = value;
|
|
(*this).size = (*this).size + 1;
|
|
return;
|
|
};
|
|
|
|
@instantiate StaticList_remove[u8, u32; 4];
|
|
@instantiate StaticList_add[u8, u32; 4];
|
|
|
|
/*StaticList[u8, u32; 4] kbbuf;
|
|
|
|
kbbuf.size = 4;
|
|
kbbuf.data[0] = 0;
|
|
kbbuf.data[5] = 2;
|
|
|
|
foo: [T]T(T a, T b) -> {
|
|
return a + b;
|
|
};
|
|
|
|
@instantiate foo[u32];
|
|
|
|
u32 c = foo[u32](5, 3);*/
|