gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/reflectx/ref-desc-enum.go (about) 1 package reflectx 2 3 import ( 4 "gitee.com/zhongguo168a/gocodes/datax/schemax" 5 ) 6 7 type EnumDeclRef struct { 8 } 9 10 func (desc *EnumDeclRef) RefNew() IRefObject { 11 return &schemax.EnumDecl{} 12 } 13 14 func (desc *EnumDeclRef) RefType() string { 15 return "enumdecl" 16 } 17 18 func (desc *EnumDeclRef) RefHas(field string) bool { 19 switch field { 20 case "Name": 21 return true 22 case "Kind": 23 return true 24 case "Package": 25 return true 26 case "Fields": 27 return true 28 } 29 return false 30 } 31 32 func (desc *EnumDeclRef) RefGet(target IRefObject, key string) (interface{}, bool) { 33 obj := target.(*schemax.EnumDecl) 34 switch key { 35 case "Name": 36 return obj.Name, false 37 case "Kind": 38 return obj.Kind, false 39 case "Package": 40 return obj.Package, false 41 case "Fields": 42 return obj.Fields, false 43 } 44 return nil, true 45 } 46 func (desc *EnumDeclRef) RefSet(target IRefObject, key string, val interface{}) { 47 obj := target.(*schemax.EnumDecl) 48 switch key { 49 case "Name": 50 obj.Name = val.(string) 51 case "Kind": 52 obj.Kind = val.(int) 53 case "Package": 54 obj.Package = val.(string) 55 case "Fields": 56 obj.Fields = val.([]*schemax.Field) 57 } 58 return 59 } 60 func (desc *EnumDeclRef) RefSliceLength(target IRefObject, key string) int { 61 obj := target.(*schemax.EnumDecl) 62 switch key { 63 case "Fields": 64 return len(obj.Fields) 65 } 66 return 0 67 } 68 69 func (desc *EnumDeclRef) RefSliceGet(target IRefObject, key string, index int) (interface{}, bool) { 70 obj := target.(*schemax.EnumDecl) 71 switch key { 72 case "Fields": 73 val := obj.Fields[index] 74 return val, val == nil 75 } 76 return nil, true 77 } 78 func (desc *EnumDeclRef) RefSliceSet(target IRefObject, key string, index int, val interface{}) { 79 obj := target.(*schemax.EnumDecl) 80 switch key { 81 case "Fields": 82 obj.Fields[index] = val.(*schemax.Field) 83 } 84 return 85 } 86 87 func (desc *EnumDeclRef) RefSliceNew(field string, len int, cap int) interface{} { 88 89 switch field { 90 case "Fields": 91 return make([]*schemax.Field, len, cap) 92 } 93 return nil 94 }