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

Function ParseNativeParamStruct

cmd/utils/native_param.go:126–149  ·  view source on GitHub ↗
(builder *neovm.ParamsBuilder, param interface{}, structAbi *abi.NativeContractParamAbi)

Source from the content-addressed store, hash-verified

124}
125
126func ParseNativeParamStruct(builder *neovm.ParamsBuilder, param interface{}, structAbi *abi.NativeContractParamAbi) error {
127 params, ok := param.([]interface{})
128 if !ok {
129 return fmt.Errorf("assert to []interface{} failed")
130 }
131 if len(params) != len(structAbi.SubType) {
132 return fmt.Errorf("struct abi not match")
133 }
134 builder.EmitPushInteger(big.NewInt(0))
135 builder.Emit(neovm.NEWSTRUCT)
136 builder.Emit(neovm.TOALTSTACK)
137 for i, param := range params {
138 paramAbi := structAbi.SubType[i]
139 err := ParseNativeParams(builder, []interface{}{param}, []*abi.NativeContractParamAbi{paramAbi})
140 if err != nil {
141 return fmt.Errorf("params struct:%s item:%s error:%s", structAbi.Name, paramAbi.Name, err)
142 }
143 builder.Emit(neovm.DUPFROMALTSTACK)
144 builder.Emit(neovm.SWAP)
145 builder.Emit(neovm.APPEND)
146 }
147 builder.Emit(neovm.FROMALTSTACK)
148 return nil
149}
150
151func ParseNativeParamArray(builder *neovm.ParamsBuilder, param interface{}, arrayAbi *abi.NativeContractParamAbi) error {
152 params, ok := param.([]interface{})

Callers 1

ParseNativeParamsFunction · 0.85

Calls 4

ParseNativeParamsFunction · 0.85
ErrorfMethod · 0.80
EmitPushIntegerMethod · 0.80
EmitMethod · 0.80

Tested by

no test coverage detected