richer formatting
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user