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_ACCOUNT_ID:
XdrAccountID.encode(stream, encoded.accountID!);
break;
}
}