mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Start implementing Tagged Unions
This commit is contained in:
+10
-52
@@ -3,62 +3,20 @@
|
||||
#load "game.odin"
|
||||
|
||||
main :: proc() {
|
||||
|
||||
print_ints :: proc(args: ..int) {
|
||||
for i := 0; i < len(args); i++ {
|
||||
print_int(args[i])
|
||||
nl()
|
||||
Entity :: type union {
|
||||
FROG: struct {
|
||||
jump_height: f32
|
||||
}
|
||||
HELICOPTER: struct {
|
||||
weight: f32
|
||||
blade_code: int
|
||||
}
|
||||
}
|
||||
// print_ints()
|
||||
// print_ints(1)
|
||||
print_ints(1, 2, 3, 4, 5)
|
||||
|
||||
// print_int(min(1, 2)); nl()
|
||||
// print_int(max(1, 2)); nl()
|
||||
// print_int(abs(-1337)); nl()
|
||||
e: Entity
|
||||
f: Entity = Entity.FROG{1};
|
||||
h: Entity = Entity.HELICOPTER{123, 4};
|
||||
|
||||
// a, b, c := 1, 2, -1337
|
||||
|
||||
// print_int(min(a, b)); nl()
|
||||
// print_int(max(a, b)); nl()
|
||||
// print_int(abs(c) as int); nl()
|
||||
|
||||
// nl()
|
||||
/*
|
||||
Vec3 :: type struct { x, y, z: f32 }
|
||||
Entity :: type struct {
|
||||
using pos: Vec3
|
||||
name: string
|
||||
}
|
||||
|
||||
Amp :: type struct {
|
||||
using entity: Entity
|
||||
jump_height: f32
|
||||
}
|
||||
Frog :: type struct {
|
||||
using amp: Amp
|
||||
volume: f64
|
||||
}
|
||||
|
||||
f := Frog{};
|
||||
f.name = "ribbit"
|
||||
f.jump_height = 1337
|
||||
|
||||
e := ^f.entity
|
||||
parent := e down_cast ^Frog
|
||||
|
||||
print_name :: proc(using e: Entity, v: Vec3) {
|
||||
print_string(name); nl()
|
||||
print_int(v.x as int); nl()
|
||||
}
|
||||
|
||||
print_f32(f.jump_height); nl()
|
||||
print_f32(parent.jump_height); nl()
|
||||
|
||||
print_name(f, Vec3{1, 2, 3})
|
||||
print_name(parent, Vec3{3, 2, 1})
|
||||
*/
|
||||
}
|
||||
|
||||
nl :: proc() { print_nl() }
|
||||
|
||||
Reference in New Issue
Block a user