MCPcopy Create free account
hub / github.com/DNAProject/DNA / ParseNativeParams

Function ParseNativeParams

cmd/utils/native_param.go:78–124  ·  view source on GitHub ↗
(builder *neovm.ParamsBuilder, params []interface{}, paramsAbi []*abi.NativeContractParamAbi)

Source from the content-addressed store, hash-verified

76}
77
78func ParseNativeParams(builder *neovm.ParamsBuilder, params []interface{}, paramsAbi []*abi.NativeContractParamAbi) error {
79 if len(params) != len(paramsAbi) {
80 return fmt.Errorf("abi unmatch")
81 }
82 var err error
83 for i, param := range params {
84 paramAbi := paramsAbi[i]
85 switch strings.ToLower(paramAbi.Type) {
86 case abi.NATIVE_PARAM_TYPE_STRUCT:
87 err = ParseNativeParamStruct(builder, param, paramAbi)
88 if err != nil {
89 return fmt.Errorf("param:%s parse:%v error:%s", paramAbi.Name, param, err)
90 }
91 case abi.NATIVE_PARAM_TYPE_ARRAY:
92 err = ParseNativeParamArray(builder, param, paramAbi)
93 default:
94 rawParam, ok := param.(string)
95 if !ok {
96 return fmt.Errorf("param:%v assert to string failed", param)
97 }
98 rawParam = strings.TrimSpace(rawParam)
99 switch strings.ToLower(paramAbi.Type) {
100 case abi.NATIVE_PARAM_TYPE_ADDRESS:
101 err = ParseNativeParamAddress(builder, rawParam)
102 case abi.NATIVE_PARAM_TYPE_BOOL:
103 err = ParseNativeParamBool(builder, rawParam)
104 case abi.NATIVE_PARAM_TYPE_BYTE:
105 err = ParseNativeParamByte(builder, rawParam)
106 case abi.NATIVE_PARAM_TYPE_BYTEARRAY:
107 err = ParseNativeParamByteArray(builder, rawParam)
108 case abi.NATIVE_PARAM_TYPE_INTEGER:
109 err = ParseNativeParamInteger(builder, rawParam)
110 case abi.NATIVE_PARAM_TYPE_STRING:
111 err = ParseNativeParamString(builder, rawParam)
112 case abi.NATIVE_PARAM_TYPE_UINT256:
113 err = ParseNativeParamUint256(builder, rawParam)
114 default:
115 return fmt.Errorf("unknown param type:%s", paramAbi.Type)
116 }
117 }
118 if err != nil {
119 return fmt.Errorf("param:%s parse:%v error:%s", paramAbi.Name, param, err)
120 }
121 }
122
123 return nil
124}
125
126func ParseNativeParamStruct(builder *neovm.ParamsBuilder, param interface{}, structAbi *abi.NativeContractParamAbi) error {
127 params, ok := param.([]interface{})

Callers 3

ParseNativeFuncParamFunction · 0.85
ParseNativeParamStructFunction · 0.85
ParseNativeParamArrayFunction · 0.85

Calls 10

ParseNativeParamStructFunction · 0.85
ParseNativeParamArrayFunction · 0.85
ParseNativeParamAddressFunction · 0.85
ParseNativeParamBoolFunction · 0.85
ParseNativeParamByteFunction · 0.85
ParseNativeParamIntegerFunction · 0.85
ParseNativeParamStringFunction · 0.85
ParseNativeParamUint256Function · 0.85
ErrorfMethod · 0.80

Tested by

no test coverage detected