encode method Null safety

void encode(
  1. XdrDataOutputStream stream,
  2. XdrSCObject encoded
)

Implementation

static void encode(XdrDataOutputStream stream, XdrSCObject encoded) {
  stream.writeInt(encoded.discriminant.value);
  switch (encoded.discriminant) {
    case XdrSCObjectType.SCO_VEC:
      int vecSize = encoded.vec!.length;
      stream.writeInt(vecSize);
      for (int i = 0; i < vecSize; i++) {
        XdrSCVal.encode(stream, encoded.vec![i]);
      }
      break;
    case XdrSCObjectType.SCO_MAP:
      int mapSize = encoded.map!.length;
      stream.writeInt(mapSize);
      for (int i = 0; i < mapSize; i++) {
        XdrSCMapEntry.encode(stream, encoded.map![i]);
      }
      break;
    case XdrSCObjectType.SCO_U64:
      XdrUint64.encode(stream, encoded.u64!);
      break;
    case XdrSCObjectType.SCO_I64:
      XdrInt64.encode(stream, encoded.i64!);
      break;
    case XdrSCObjectType.SCO_U128:
      XdrInt128Parts.encode(stream, encoded.u128!);
      break;
    case XdrSCObjectType.SCO_I128:
      XdrInt128Parts.encode(stream, encoded.i128!);
      break;
    case XdrSCObjectType.SCO_BYTES:
      XdrDataValue.encode(stream, encoded.bin!);
      break;
    case XdrSCObjectType.SCO_CONTRACT_CODE:
      XdrSCContractCode.encode(stream, encoded.contractCode!);
      break;
    case XdrSCObjectType.SCO_ADDRESS:
      XdrSCAddress.encode(stream, encoded.address!);
      break;
    case XdrSCObjectType.SCO_NONCE_KEY:
      XdrSCAddress.encode(stream, encoded.nonceKey!);
      break;
  }
}