Merge branch 'revert-c06889aa' into 'master'
Revert "removed corpix/reflect, use github.com/corpix/reflect" See merge request overflow/util-go!1
This commit is contained in:
		
						commit
						d6dfb1fdf7
					
				
							
								
								
									
										1153
									
								
								reflect/convert.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1153
									
								
								reflect/convert.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										41
									
								
								reflect/error.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								reflect/error.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | ||||
| package reflect | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"reflect" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| type ErrCanNotConvertType struct { | ||||
| 	value  interface{} | ||||
| 	from   reflect.Type | ||||
| 	to     reflect.Type | ||||
| 	reason []string | ||||
| } | ||||
| 
 | ||||
| func (e ErrCanNotConvertType) Error() string { | ||||
| 	var ( | ||||
| 		reason = strings.Join(e.reason, ", ") | ||||
| 	) | ||||
| 
 | ||||
| 	if reason != "" { | ||||
| 		reason = ", reason: " + reason | ||||
| 	} | ||||
| 
 | ||||
| 	return fmt.Sprintf( | ||||
| 		"Can not convert '%#v' of type '%s' to '%s'%s", | ||||
| 		e.value, | ||||
| 		e.from, | ||||
| 		e.to, | ||||
| 		reason, | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| func NewErrCanNotConvertType(value interface{}, from reflect.Type, to reflect.Type, reason ...string) ErrCanNotConvertType { | ||||
| 	return ErrCanNotConvertType{ | ||||
| 		value:  value, | ||||
| 		from:   from, | ||||
| 		to:     to, | ||||
| 		reason: reason, | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										31
									
								
								reflect/indirect.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								reflect/indirect.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| package reflect | ||||
| 
 | ||||
| import ( | ||||
| 	"reflect" | ||||
| ) | ||||
| 
 | ||||
| func Indirect(v interface{}) interface{} { | ||||
| 	if v == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	return IndirectValue(reflect.ValueOf(v)).Interface() | ||||
| } | ||||
| 
 | ||||
| func IndirectValue(reflectValue reflect.Value) reflect.Value { | ||||
| 	if reflectValue.Kind() == reflect.Ptr { | ||||
| 		return reflectValue.Elem() | ||||
| 	} | ||||
| 	return reflectValue | ||||
| } | ||||
| 
 | ||||
| func IndirectType(reflectType reflect.Type) reflect.Type { | ||||
| 	if reflectType == TypeInvalid { | ||||
| 		return TypeInvalid | ||||
| 	} | ||||
| 
 | ||||
| 	if reflectType.Kind() == reflect.Ptr { | ||||
| 		return reflectType.Elem() | ||||
| 	} | ||||
| 	return reflectType | ||||
| } | ||||
							
								
								
									
										35
									
								
								reflect/kind.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								reflect/kind.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| package reflect | ||||
| 
 | ||||
| import ( | ||||
| 	"reflect" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	Invalid       = reflect.Invalid | ||||
| 	Bool          = reflect.Bool | ||||
| 	Int           = reflect.Int | ||||
| 	Int8          = reflect.Int8 | ||||
| 	Int16         = reflect.Int16 | ||||
| 	Int32         = reflect.Int32 | ||||
| 	Int64         = reflect.Int64 | ||||
| 	Uint          = reflect.Uint | ||||
| 	Uint8         = reflect.Uint8 | ||||
| 	Uint16        = reflect.Uint16 | ||||
| 	Uint32        = reflect.Uint32 | ||||
| 	Uint64        = reflect.Uint64 | ||||
| 	Uintptr       = reflect.Uintptr | ||||
| 	Float32       = reflect.Float32 | ||||
| 	Float64       = reflect.Float64 | ||||
| 	Complex64     = reflect.Complex64 | ||||
| 	Complex128    = reflect.Complex128 | ||||
| 	Array         = reflect.Array | ||||
| 	Chan          = reflect.Chan | ||||
| 	Func          = reflect.Func | ||||
| 	Interface     = reflect.Interface | ||||
| 	Map           = reflect.Map | ||||
| 	Ptr           = reflect.Ptr | ||||
| 	Slice         = reflect.Slice | ||||
| 	String        = reflect.String | ||||
| 	Struct        = reflect.Struct | ||||
| 	UnsafePointer = reflect.UnsafePointer | ||||
| ) | ||||
| @ -4,6 +4,51 @@ import ( | ||||
| 	"reflect" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	TypeOf = reflect.TypeOf | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	Types = []reflect.Type{ | ||||
| 		TypeBool, | ||||
| 		TypeInt, | ||||
| 		TypeInt8, | ||||
| 		TypeInt16, | ||||
| 		TypeInt32, | ||||
| 		TypeInt64, | ||||
| 		TypeUint, | ||||
| 		TypeUint8, | ||||
| 		TypeUint16, | ||||
| 		TypeUint32, | ||||
| 		TypeUint64, | ||||
| 		TypeFloat32, | ||||
| 		TypeFloat64, | ||||
| 		TypeComplex64, | ||||
| 		TypeComplex128, | ||||
| 		TypeUintptr, | ||||
| 		TypeString, | ||||
| 	} | ||||
| 
 | ||||
| 	TypeInvalid    = reflect.Type(nil) | ||||
| 	TypeBool       = reflect.TypeOf(false) | ||||
| 	TypeInt        = reflect.TypeOf(int(0)) | ||||
| 	TypeInt8       = reflect.TypeOf(int8(0)) | ||||
| 	TypeInt16      = reflect.TypeOf(int16(0)) | ||||
| 	TypeInt32      = reflect.TypeOf(int32(0)) | ||||
| 	TypeInt64      = reflect.TypeOf(int64(0)) | ||||
| 	TypeUint       = reflect.TypeOf(uint(0)) | ||||
| 	TypeUint8      = reflect.TypeOf(uint8(0)) | ||||
| 	TypeUint16     = reflect.TypeOf(uint16(0)) | ||||
| 	TypeUint32     = reflect.TypeOf(uint32(0)) | ||||
| 	TypeUint64     = reflect.TypeOf(uint64(0)) | ||||
| 	TypeFloat32    = reflect.TypeOf(float32(0)) | ||||
| 	TypeFloat64    = reflect.TypeOf(float64(0)) | ||||
| 	TypeComplex64  = reflect.TypeOf(complex64(0)) | ||||
| 	TypeComplex128 = reflect.TypeOf(complex128(0)) | ||||
| 	TypeUintptr    = reflect.TypeOf(uintptr(0)) | ||||
| 	TypeString     = reflect.TypeOf(string("")) | ||||
| ) | ||||
| 
 | ||||
| func IsTypeKind(t reflect.Type, kind reflect.Kind, removePtr bool) bool { | ||||
| 	if reflect.Ptr == t.Kind() { | ||||
| 		if removePtr { | ||||
| @ -21,3 +66,7 @@ func GetTypeInfo(t reflect.Type) (realType reflect.Type, pkgName string, name st | ||||
| 
 | ||||
| 	return t, t.PkgPath(), t.Name() | ||||
| } | ||||
| 
 | ||||
| func ConvertStringToType() { | ||||
| 
 | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user