pushParam method

dynamic pushParam (dynamic param)

Implementation

pushParam(dynamic param) {
  if (param is Uint8List) {
    pushHex(param);
  } else if (param is String) {
    pushStr(param);
  } else if (param is bool) {
    pushBool(param);
  } else if (param is int) {
    pushInt(param);
  } else if (param is BigInt) {
    pushBigInt(param);
  } else if (param is Address) {
    pushAddress(param);
  } else if (param is Struct) {
    var pb = VmParamsBuilder();
    pb.pushStruct(param);
    pushHex(pb.buf.bytes);
  } else if (param is Map<String, dynamic>) {
    pushMap(param);
  } else if (param is List<dynamic>) {
    for (var item in param.reversed) {
      pushParam(item);
    }
    pushInt(param.length);
    pushOpcode(OpCode.pack);
  } else {
    throw ArgumentError(
        'Unsupported param type: ' + param.runtimeType.toString());
  }
}