decode method Null safety

XdrSCObject decode(
  1. XdrDataInputStream stream
)

Implementation

static XdrSCObject decode(XdrDataInputStream stream) {
  XdrSCObject decoded = XdrSCObject(XdrSCObjectType.decode(stream));
  switch (decoded.discriminant) {
    case XdrSCObjectType.SCO_VEC:
      int vecSize = stream.readInt();
      decoded.vec = List<XdrSCVal>.empty(growable: true);
      for (int i = 0; i < vecSize; i++) {
        decoded.vec!.add(XdrSCVal.decode(stream));
      }
      break;
    case XdrSCObjectType.SCO_MAP:
      int mapSize = stream.readInt();
      decoded.map = List<XdrSCMapEntry>.empty(growable: true);
      for (int i = 0; i < mapSize; i++) {
        decoded.map!.add(XdrSCMapEntry.decode(stream));
      }
      break;
    case XdrSCObjectType.SCO_U64:
      decoded.u64 = XdrUint64.decode(stream);
      break;
    case XdrSCObjectType.SCO_I64:
      decoded.i64 = XdrInt64.decode(stream);
      break;
    case XdrSCObjectType.SCO_U128:
      decoded.u128 = XdrInt128Parts.decode(stream);
      break;
    case XdrSCObjectType.SCO_I128:
      decoded.i128 = XdrInt128Parts.decode(stream);
      break;
    case XdrSCObjectType.SCO_BYTES:
      decoded.bin = XdrDataValue.decode(stream);
      break;
    case XdrSCObjectType.SCO_CONTRACT_CODE:
      decoded.contractCode = XdrSCContractCode.decode(stream);
      break;
    case XdrSCObjectType.SCO_ADDRESS:
      decoded.address = XdrSCAddress.decode(stream);
      break;
    case XdrSCObjectType.SCO_NONCE_KEY:
      decoded.nonceKey = XdrSCAddress.decode(stream);
      break;
  }
  return decoded;
}