34 lines
655 B
Plaintext
34 lines
655 B
Plaintext
require = fn (ok: u1) void
|
|
{
|
|
if (!ok)
|
|
{
|
|
#trap();
|
|
}
|
|
}
|
|
|
|
c_string_length = fn (c_string: &u8) u64
|
|
{
|
|
>it = c_string;
|
|
|
|
while (it.&)
|
|
{
|
|
it = it + 1;
|
|
}
|
|
|
|
return #int_from_pointer(it) - #int_from_pointer(c_string);
|
|
}
|
|
|
|
c_string_slice_build = fn (c_string: &u8, length: u64) []u8
|
|
{
|
|
return c_string[0..length];
|
|
}
|
|
|
|
[export] main = fn [cc(c)] (argument_count: u32, argument_pointer: &&u8) s32
|
|
{
|
|
>length = c_string_length(argument_pointer[0]);
|
|
>string = c_string_slice_build(argument_pointer[0], length);
|
|
require(string.pointer == argument_pointer[0]);
|
|
require(string.length == length);
|
|
return 0;
|
|
}
|