decode static method

XdrClaimPredicate decode(
  1. XdrDataInputStream stream
)

Implementation

static XdrClaimPredicate decode(XdrDataInputStream stream) {
  XdrClaimPredicate decoded =
      XdrClaimPredicate(XdrClaimPredicateType.decode(stream));
  switch (decoded.discriminant) {
    case XdrClaimPredicateType.CLAIM_PREDICATE_UNCONDITIONAL:
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_AND:
      int predicatesSize = stream.readInt();

      List<XdrClaimPredicate> andPredicates =
          List<XdrClaimPredicate>.empty(growable: true);
      for (int i = 0; i < predicatesSize; i++) {
        andPredicates.add(XdrClaimPredicate.decode(stream));
      }
      decoded.andPredicates = andPredicates;
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_OR:
      int predicatesSize = stream.readInt();
      List<XdrClaimPredicate> orPredicates =
          List<XdrClaimPredicate>.empty(growable: true);
      for (int i = 0; i < predicatesSize; i++) {
        orPredicates.add(XdrClaimPredicate.decode(stream));
      }
      decoded.orPredicates = orPredicates;
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_NOT:
      int predicatesSize = stream.readInt();
      List<XdrClaimPredicate> notPredicates =
          List<XdrClaimPredicate>.empty(growable: true);
      for (int i = 0; i < predicatesSize; i++) {
        notPredicates.add(XdrClaimPredicate.decode(stream));
      }
      decoded.notPredicate = notPredicates.first;
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME:
      decoded.absBefore = XdrInt64.decode(stream);
      break;
    case XdrClaimPredicateType.CLAIM_PREDICATE_BEFORE_RELATIVE_TIME:
      decoded.relBefore = XdrInt64.decode(stream);
      break;
  }
  return decoded;
}