12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package reflect2
- import (
- "reflect"
- "unsafe"
- )
- type UnsafePtrType struct {
- unsafeType
- }
- func newUnsafePtrType(cfg *frozenConfig, type1 reflect.Type) *UnsafePtrType {
- return &UnsafePtrType{
- unsafeType: *newUnsafeType(cfg, type1),
- }
- }
- func (type2 *UnsafePtrType) IsNil(obj interface{}) bool {
- if obj == nil {
- return true
- }
- objEFace := unpackEFace(obj)
- assertType("Type.IsNil argument 1", type2.ptrRType, objEFace.rtype)
- return type2.UnsafeIsNil(objEFace.data)
- }
- func (type2 *UnsafePtrType) UnsafeIsNil(ptr unsafe.Pointer) bool {
- if ptr == nil {
- return true
- }
- return *(*unsafe.Pointer)(ptr) == nil
- }
- func (type2 *UnsafePtrType) LikePtr() bool {
- return true
- }
- func (type2 *UnsafePtrType) Indirect(obj interface{}) interface{} {
- objEFace := unpackEFace(obj)
- assertType("Type.Indirect argument 1", type2.ptrRType, objEFace.rtype)
- return type2.UnsafeIndirect(objEFace.data)
- }
- func (type2 *UnsafePtrType) UnsafeIndirect(ptr unsafe.Pointer) interface{} {
- return packEFace(type2.rtype, *(*unsafe.Pointer)(ptr))
- }
|