nctref/tests/GenericStruct.nct
2025-05-03 10:03:51 +03:00

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);*/