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  }