go-json/rtype.go

261 lines
5.7 KiB
Go
Raw Normal View History

2020-04-24 14:23:26 +03:00
package json
import (
"reflect"
"unsafe"
)
// rtype representing reflect.rtype for noescape trick
type rtype struct{}
//go:linkname rtype_Align reflect.(*rtype).Align
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_Align(*rtype) int
func (t *rtype) Align() int {
return rtype_Align(t)
}
//go:linkname rtype_FieldAlign reflect.(*rtype).FieldAlign
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_FieldAlign(*rtype) int
func (t *rtype) FieldAlign() int {
return rtype_FieldAlign(t)
}
//go:linkname rtype_Method reflect.(*rtype).Method
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_Method(*rtype, int) reflect.Method
func (t *rtype) Method(a0 int) reflect.Method {
return rtype_Method(t, a0)
}
//go:linkname rtype_MethodByName reflect.(*rtype).MethodByName
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_MethodByName(*rtype, string) (reflect.Method, bool)
func (t *rtype) MethodByName(a0 string) (reflect.Method, bool) {
return rtype_MethodByName(t, a0)
}
//go:linkname rtype_NumMethod reflect.(*rtype).NumMethod
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_NumMethod(*rtype) int
func (t *rtype) NumMethod() int {
return rtype_NumMethod(t)
}
//go:linkname rtype_Name reflect.(*rtype).Name
//go:noescape
func rtype_Name(*rtype) string
func (t *rtype) Name() string {
return rtype_Name(t)
}
//go:linkname rtype_PkgPath reflect.(*rtype).PkgPath
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_PkgPath(*rtype) string
func (t *rtype) PkgPath() string {
return rtype_PkgPath(t)
}
//go:linkname rtype_Size reflect.(*rtype).Size
//go:noescape
func rtype_Size(*rtype) uintptr
func (t *rtype) Size() uintptr {
return rtype_Size(t)
}
//go:linkname rtype_String reflect.(*rtype).String
//go:noescape
func rtype_String(*rtype) string
func (t *rtype) String() string {
return rtype_String(t)
}
//go:linkname rtype_Kind reflect.(*rtype).Kind
//go:noescape
func rtype_Kind(*rtype) reflect.Kind
func (t *rtype) Kind() reflect.Kind {
return rtype_Kind(t)
}
//go:linkname rtype_Implements reflect.(*rtype).Implements
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_Implements(*rtype, reflect.Type) bool
func (t *rtype) Implements(u reflect.Type) bool {
return rtype_Implements(t, u)
}
//go:linkname rtype_AssignableTo reflect.(*rtype).AssignableTo
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_AssignableTo(*rtype, reflect.Type) bool
func (t *rtype) AssignableTo(u reflect.Type) bool {
return rtype_AssignableTo(t, u)
}
//go:linkname rtype_ConvertibleTo reflect.(*rtype).ConvertibleTo
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_ConvertibleTo(*rtype, reflect.Type) bool
func (t *rtype) ConvertibleTo(u reflect.Type) bool {
return rtype_ConvertibleTo(t, u)
}
//go:linkname rtype_Comparable reflect.(*rtype).Comparable
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_Comparable(*rtype) bool
func (t *rtype) Comparable() bool {
return rtype_Comparable(t)
}
//go:linkname rtype_Bits reflect.(*rtype).Bits
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_Bits(*rtype) int
func (t *rtype) Bits() int {
return rtype_Bits(t)
}
//go:linkname rtype_ChanDir reflect.(*rtype).ChanDir
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_ChanDir(*rtype) reflect.ChanDir
func (t *rtype) ChanDir() reflect.ChanDir {
return rtype_ChanDir(t)
}
//go:linkname rtype_IsVariadic reflect.(*rtype).IsVariadic
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_IsVariadic(*rtype) bool
func (t *rtype) IsVariadic() bool {
return rtype_IsVariadic(t)
}
//go:linkname rtype_Elem reflect.(*rtype).Elem
//go:noescape
func rtype_Elem(*rtype) reflect.Type
func (t *rtype) Elem() *rtype {
return type2rtype(rtype_Elem(t))
}
//go:linkname rtype_Field reflect.(*rtype).Field
//go:noescape
func rtype_Field(*rtype, int) reflect.StructField
func (t *rtype) Field(i int) reflect.StructField {
return rtype_Field(t, i)
}
//go:linkname rtype_FieldByIndex reflect.(*rtype).FieldByIndex
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_FieldByIndex(*rtype, []int) reflect.StructField
func (t *rtype) FieldByIndex(index []int) reflect.StructField {
return rtype_FieldByIndex(t, index)
}
//go:linkname rtype_FieldByName reflect.(*rtype).FieldByName
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_FieldByName(*rtype, string) (reflect.StructField, bool)
func (t *rtype) FieldByName(name string) (reflect.StructField, bool) {
return rtype_FieldByName(t, name)
}
//go:linkname rtype_FieldByNameFunc reflect.(*rtype).FieldByNameFunc
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_FieldByNameFunc(*rtype, func(string) bool) (reflect.StructField, bool)
func (t *rtype) FieldByNameFunc(match func(string) bool) (reflect.StructField, bool) {
return rtype_FieldByNameFunc(t, match)
}
//go:linkname rtype_In reflect.(*rtype).In
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_In(*rtype, int) reflect.Type
func (t *rtype) In(i int) reflect.Type {
return rtype_In(t, i)
}
//go:linkname rtype_Key reflect.(*rtype).Key
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_Key(*rtype) reflect.Type
func (t *rtype) Key() *rtype {
return type2rtype(rtype_Key(t))
}
//go:linkname rtype_Len reflect.(*rtype).Len
//go:noescape
func rtype_Len(*rtype) int
func (t *rtype) Len() int {
return rtype_Len(t)
}
//go:linkname rtype_NumField reflect.(*rtype).NumField
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_NumField(*rtype) int
func (t *rtype) NumField() int {
return rtype_NumField(t)
}
//go:linkname rtype_NumIn reflect.(*rtype).NumIn
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_NumIn(*rtype) int
func (t *rtype) NumIn() int {
return rtype_NumIn(t)
}
//go:linkname rtype_NumOut reflect.(*rtype).NumOut
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_NumOut(*rtype) int
func (t *rtype) NumOut() int {
return rtype_NumOut(t)
}
//go:linkname rtype_Out reflect.(*rtype).Out
2020-04-24 15:57:11 +03:00
//go:noescape
2020-04-24 14:23:26 +03:00
func rtype_Out(*rtype, int) reflect.Type
func (t *rtype) Out(i int) reflect.Type {
return rtype_Out(t, i)
}
2020-04-24 15:57:11 +03:00
//go:linkname rtype_escape reflect.(*rtype).Kind
func rtype_escape(*rtype) reflect.Kind
func (t *rtype) escape() {
rtype_escape(t)
}
//go:linkname rtype2type reflect.toType
//go:noescape
func rtype2type(t *rtype) reflect.Type
2020-04-24 14:23:26 +03:00
type interfaceHeader struct {
typ *rtype
ptr unsafe.Pointer
}
func type2rtype(t reflect.Type) *rtype {
return (*rtype)(((*interfaceHeader)(unsafe.Pointer(&t))).ptr)
}