decode static method
Implementation
static XdrSCVal decode(XdrDataInputStream stream) {
XdrSCVal decoded = XdrSCVal(XdrSCValType.decode(stream));
switch (decoded.discriminant) {
case XdrSCValType.SCV_BOOL:
decoded.b = stream.readBoolean();
break;
case XdrSCValType.SCV_VOID:
break;
case XdrSCValType.SCV_ERROR:
decoded.error = XdrSCError.decode(stream);
break;
case XdrSCValType.SCV_U32:
decoded.u32 = XdrUint32.decode(stream);
break;
case XdrSCValType.SCV_I32:
decoded.i32 = XdrInt32.decode(stream);
break;
case XdrSCValType.SCV_U64:
decoded.u64 = XdrUint64.decode(stream);
break;
case XdrSCValType.SCV_I64:
decoded.i64 = XdrInt64.decode(stream);
break;
case XdrSCValType.SCV_TIMEPOINT:
decoded.timepoint = XdrUint64.decode(stream);
break;
case XdrSCValType.SCV_DURATION:
decoded.duration = XdrUint64.decode(stream);
break;
case XdrSCValType.SCV_U128:
decoded.u128 = XdrUInt128Parts.decode(stream);
break;
case XdrSCValType.SCV_I128:
decoded.i128 = XdrInt128Parts.decode(stream);
break;
case XdrSCValType.SCV_U256:
decoded.u256 = XdrUInt256Parts.decode(stream);
break;
case XdrSCValType.SCV_I256:
decoded.i256 = XdrInt256Parts.decode(stream);
break;
case XdrSCValType.SCV_BYTES:
decoded.bytes = XdrDataValue.decode(stream);
break;
case XdrSCValType.SCV_STRING:
decoded.str = stream.readString();
break;
case XdrSCValType.SCV_SYMBOL:
decoded.sym = stream.readString();
break;
case XdrSCValType.SCV_VEC:
int vecPresent = stream.readInt();
if (vecPresent != 0) {
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 XdrSCValType.SCV_MAP:
int mapPresent = stream.readInt();
if (mapPresent != 0) {
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 XdrSCValType.SCV_ADDRESS:
decoded.address = XdrSCAddress.decode(stream);
break;
case XdrSCValType.SCV_LEDGER_KEY_CONTRACT_INSTANCE:
break;
case XdrSCValType.SCV_LEDGER_KEY_NONCE:
decoded.nonce_key = XdrSCNonceKey.decode(stream);
break;
case XdrSCValType.SCV_CONTRACT_INSTANCE:
decoded.instance = XdrSCContractInstance.decode(stream);
break;
}
return decoded;
}