| 54 | } |
| 55 | |
| 56 | func ParseNativeFuncParam(builder *neovm.ParamsBuilder, funName string, params []interface{}, paramsAbi []*abi.NativeContractParamAbi) error { |
| 57 | size := len(paramsAbi) |
| 58 | if size == 0 { |
| 59 | //Params cannot empty, if params is empty, fulfil with func name |
| 60 | params = []interface{}{funName} |
| 61 | paramsAbi = []*abi.NativeContractParamAbi{{ |
| 62 | Name: "funcName", |
| 63 | Type: abi.NATIVE_PARAM_TYPE_STRING, |
| 64 | }} |
| 65 | } else if size > 1 { |
| 66 | //If more than one param in func, must using struct |
| 67 | paramRoot := &abi.NativeContractParamAbi{ |
| 68 | Name: "root", |
| 69 | Type: abi.NATIVE_PARAM_TYPE_STRUCT, |
| 70 | SubType: paramsAbi, |
| 71 | } |
| 72 | params = []interface{}{params} |
| 73 | paramsAbi = []*abi.NativeContractParamAbi{paramRoot} |
| 74 | } |
| 75 | return ParseNativeParams(builder, params, paramsAbi) |
| 76 | } |
| 77 | |
| 78 | func ParseNativeParams(builder *neovm.ParamsBuilder, params []interface{}, paramsAbi []*abi.NativeContractParamAbi) error { |
| 79 | if len(params) != len(paramsAbi) { |