111 lines
1.8 KiB
Plaintext
111 lines
1.8 KiB
Plaintext
io :: import "@std/io"
|
|
process :: import "@std/process"
|
|
debug :: import "@std/debug"
|
|
|
|
State :: enum {
|
|
idle
|
|
running
|
|
}
|
|
|
|
Payload :: union(enum) {
|
|
count i32
|
|
empty void
|
|
}
|
|
|
|
Pair :: struct { i32, bool }
|
|
|
|
Config :: struct {
|
|
enabled bool
|
|
ratio f64
|
|
label []u8
|
|
state State
|
|
values [2]i32
|
|
pair Pair
|
|
maybe ?i32
|
|
payload Payload
|
|
}
|
|
|
|
first Config :: Config {
|
|
enabled = true,
|
|
ratio = 1.5,
|
|
label = "bro",
|
|
state = .running,
|
|
values = [20, 22],
|
|
pair = Pair {7, true},
|
|
maybe = 9,
|
|
payload = Payload {count = 4},
|
|
}
|
|
|
|
same Config :: Config {
|
|
enabled = true,
|
|
ratio = 1.5,
|
|
label = "bro",
|
|
state = .running,
|
|
values = [20, 22],
|
|
pair = Pair {7, true},
|
|
maybe = 9,
|
|
payload = Payload {count = 4},
|
|
}
|
|
|
|
different Config :: Config {
|
|
enabled = false,
|
|
ratio = 2.5,
|
|
label = "bro",
|
|
state = .idle,
|
|
values = [21, 21],
|
|
pair = Pair {7, false},
|
|
maybe = none,
|
|
payload = .empty,
|
|
}
|
|
|
|
score func($config Config) i32 {
|
|
return config.values[0]
|
|
}
|
|
|
|
Carrier func($config Config) type {
|
|
return struct { value i32 }
|
|
}
|
|
|
|
read_carrier func($config Config, carrier Carrier(config)) i32 {
|
|
return carrier.value + config.values[0]
|
|
}
|
|
|
|
main func(init process.Init) i32 {
|
|
if score(first) != 20 or score(same) != 20 or score(different) != 21 {
|
|
return 1
|
|
}
|
|
carrier Carrier(first) :: Carrier(first) {value = 22}
|
|
if read_carrier(carrier) != 42 {
|
|
return 2
|
|
}
|
|
|
|
writer io.Writer :: io.Writer {impl = init.io, stream = .stdout}
|
|
positive f64 = 1.0
|
|
zero f64 = 0.0
|
|
infinity f64 :: positive / zero
|
|
nan f64 :: zero / zero
|
|
io.print(writer, "{} {} {} {} {s} {d} {b} {o} {x} {X} {c} {e} {{}} {d} {b} {} {} {e}\n", {
|
|
true,
|
|
-42,
|
|
1.5,
|
|
State.running,
|
|
"bro",
|
|
2.5,
|
|
10,
|
|
10,
|
|
255,
|
|
255,
|
|
u8('A'),
|
|
1.5,
|
|
minval!(i64),
|
|
u64(0),
|
|
infinity,
|
|
nan,
|
|
f32(1.5),
|
|
}) catch |_| {
|
|
return 3
|
|
}
|
|
debug.print("debug={} {x}\n", {State.idle, 42})
|
|
return 0
|
|
}
|