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

Function parasReturnValueWasmArray

cmd/utils/params.go:233–277  ·  view source on GitHub ↗
(rawValues []interface{}, returnTypes []interface{})

Source from the content-addressed store, hash-verified

231}
232
233func parasReturnValueWasmArray(rawValues []interface{}, returnTypes []interface{}) ([]interface{}, error) {
234 values := make([]interface{}, 0)
235 for i := 0; i < len(rawValues); i++ {
236 rawValue := rawValues[i]
237 if i == len(returnTypes) {
238 return values, nil
239 }
240 valueType := returnTypes[i]
241
242 var err error
243 switch v := rawValue.(type) {
244 case string:
245 var value interface{}
246 vType := valueType.(string)
247 switch strings.ToLower(vType) {
248 case PARAM_TYPE_BYTE_ARRAY:
249 value, err = ParseWasmVMContractReturnTypeByteArray(v)
250 case PARAM_TYPE_STRING:
251 value, err = ParseWasmVMContractReturnTypeString(v)
252 case PARAM_TYPE_INTEGER:
253 value, err = ParseWasmVMContractReturnTypeInteger(v)
254 case PARAM_TYPE_BOOLEAN:
255 value, err = ParseWasmVMContractReturnTypeBool(v)
256 default:
257 return nil, fmt.Errorf("unknown return type:%s", v)
258 }
259 values = append(values, value)
260 if err != nil {
261 return nil, fmt.Errorf("parse return value:%s type:byte array error:%s", v, err)
262 }
263 case []interface{}:
264 valueTypes, ok := valueType.([]interface{})
265 if !ok {
266 return nil, fmt.Errorf("parse return value:%+v types:%s failed, types doesnot match", v, valueType)
267 }
268 values, err := parasReturnValueWasmArray(v, valueTypes)
269 if err != nil {
270 return nil, fmt.Errorf("parese return values:%+v types:%s error:%s", values, valueType, err)
271 }
272 default:
273 return nil, fmt.Errorf("unknown return type:%s", reflect.TypeOf(rawValue))
274 }
275 }
276 return values, nil
277}
278
279func parseReturnNeoValueArray(rawValues []interface{}, returnTypes []interface{}) ([]interface{}, error) {
280 values := make([]interface{}, 0)

Callers 1

ParseReturnValueFunction · 0.85

Tested by

no test coverage detected