reflect: add reflect.TypeOf

This is the beginning of true reflection support in TinyGo.
This commit is contained in:
Ayke van Laethem
2018-12-12 11:52:47 +01:00
parent 70f1064f36
commit f0904779a5
4 changed files with 23 additions and 8 deletions
+4 -7
View File
@@ -1,24 +1,21 @@
package reflect
import (
_ "unsafe" // for go:linkname
"unsafe"
)
// This is the same thing as an interface{}.
type Value struct {
typecode Type
value *uint8
value unsafe.Pointer
}
func Indirect(v Value) Value {
return v
}
func ValueOf(i interface{}) Value
//go:linkname _ValueOf reflect.ValueOf
func _ValueOf(i Value) Value {
return i
func ValueOf(i interface{}) Value {
return *(*Value)(unsafe.Pointer(&i))
}
func (v Value) Interface() interface{}
+3 -1
View File
@@ -5,9 +5,11 @@ package runtime
// Interfaces are represented as a pair of {typecode, value}, where value can be
// anything (including non-pointers).
import "unsafe"
type _interface struct {
typecode uintptr
value *uint8
value unsafe.Pointer
}
// Return true iff both interfaces are equal.