encode static method

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

Implementation

static void encode(XdrDataOutputStream stream, XdrSCVal encoded) {
  stream.writeInt(encoded.discriminant.value);
  switch (encoded.discriminant) {
    case XdrSCValType.SCV_BOOL:
      stream.writeBoolean(encoded.b!);
      break;
    case XdrSCValType.SCV_VOID:
      break;
    case XdrSCValType.SCV_ERROR:
      XdrSCError.encode(stream, encoded.error!);
      break;
    case XdrSCValType.SCV_U32:
      XdrUint32.encode(stream, encoded.u32!);
      break;
    case XdrSCValType.SCV_I32:
      XdrInt32.encode(stream, encoded.i32!);
      break;
    case XdrSCValType.SCV_U64:
      XdrUint64.encode(stream, encoded.u64!);
      break;
    case XdrSCValType.SCV_I64:
      XdrInt64.encode(stream, encoded.i64!);
      break;
    case XdrSCValType.SCV_TIMEPOINT:
      XdrUint64.encode(stream, encoded.timepoint!);
      break;
    case XdrSCValType.SCV_DURATION:
      XdrUint64.encode(stream, encoded.duration!);
      break;
    case XdrSCValType.SCV_U128:
      XdrUInt128Parts.encode(stream, encoded.u128!);
      break;
    case XdrSCValType.SCV_I128:
      XdrInt128Parts.encode(stream, encoded.i128!);
      break;
    case XdrSCValType.SCV_U256:
      XdrUInt256Parts.encode(stream, encoded.u256!);
      break;
    case XdrSCValType.SCV_I256:
      XdrInt256Parts.encode(stream, encoded.i256!);
      break;
    case XdrSCValType.SCV_BYTES:
      XdrDataValue.encode(stream, encoded.bytes!);
      break;
    case XdrSCValType.SCV_STRING:
      stream.writeString(encoded.str!);
      break;
    case XdrSCValType.SCV_SYMBOL:
      stream.writeString(encoded.sym!);
      break;
    case XdrSCValType.SCV_VEC:
      if (encoded.vec == null) {
        stream.writeInt(0);
      } else {
        stream.writeInt(1);
        int vecSize = encoded.vec!.length;
        stream.writeInt(vecSize);
        for (int i = 0; i < vecSize; i++) {
          XdrSCVal.encode(stream, encoded.vec![i]);
        }
      }
      break;
    case XdrSCValType.SCV_MAP:
      if (encoded.map == null) {
        stream.writeInt(0);
      } else {
        stream.writeInt(1);
        int mapSize = encoded.map!.length;
        stream.writeInt(mapSize);
        for (int i = 0; i < mapSize; i++) {
          XdrSCMapEntry.encode(stream, encoded.map![i]);
        }
      }
      break;
    case XdrSCValType.SCV_ADDRESS:
      XdrSCAddress.encode(stream, encoded.address!);
      break;
    case XdrSCValType.SCV_LEDGER_KEY_CONTRACT_INSTANCE:
      break;
    case XdrSCValType.SCV_LEDGER_KEY_NONCE:
      XdrSCNonceKey.encode(stream, encoded.nonce_key!);
      break;
    case XdrSCValType.SCV_CONTRACT_INSTANCE:
      XdrSCContractInstance.encode(stream, encoded.instance!);
      break;
  }
}