This commit is contained in:
Ginger Bill
2016-09-07 15:15:10 +01:00
parent 61fcfd6f3d
commit 2c4193a242
8 changed files with 260 additions and 106 deletions
+39 -4
View File
@@ -4,7 +4,7 @@
print_type_info_kind :: proc(info: ^Type_Info) {
using Type_Info
match type i : info {
match type info -> i {
case Named: print_string("Named\n")
case Integer: print_string("Integer\n")
case Float: print_string("Float\n")
@@ -23,6 +23,37 @@ print_type_info_kind :: proc(info: ^Type_Info) {
}
}
println :: proc(args: ..any) {
for i := 0; i < len(args); i++ {
arg := args[i]
if i > 0 {
print_string(" ")
}
using Type_Info
match type arg.type_info -> i {
case Named: print_string("Named")
case Integer: print_string("Integer")
case Float: print_string("Float")
case String: print_string("String")
case Boolean: print_string("Boolean")
case Pointer: print_string("Pointer")
case Procedure: print_string("Procedure")
case Array: print_string("Array")
case Slice: print_string("Slice")
case Vector: print_string("Vector")
case Struct: print_string("Struct")
case Union: print_string("Union")
case Raw_Union: print_string("RawUnion")
case Enum: print_string("Enum")
default: print_string("void")
}
}
print_nl()
}
main :: proc() {
i: int
s: struct {
@@ -30,7 +61,11 @@ main :: proc() {
}
p := ^s
print_type_info_kind(type_info(i))
print_type_info_kind(type_info(s))
print_type_info_kind(type_info(p))
a: any = i
println(137, "Hello", 1.23)
// print_type_info_kind(a.type_info)
// print_type_info_kind(type_info(s))
// print_type_info_kind(type_info(p))
}
+2 -10
View File
@@ -18,11 +18,11 @@ Type_Info :: union {
base: ^Type_Info
}
Integer: struct {
bits: int
size: int // in bytes
signed: bool
}
Float: struct {
bits: int
size: int // in bytes
}
String: struct {}
Boolean: struct {}
@@ -49,14 +49,6 @@ Type_Info :: union {
}
}
Any :: struct {
type_info: ^Type_Info
// pointer to the data stored
data: rawptr
}
assume :: proc(cond: bool) #foreign "llvm.assume"