mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-02 04:38:16 +00:00
any type
This commit is contained in:
+39
-4
@@ -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
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user