deepCompare static method

int deepCompare(
  1. dynamic lhs,
  2. dynamic rhs
)

Implementation

static int deepCompare(dynamic lhs, dynamic rhs) {
  if(lhs is int) lhs = intToUnsignedInt(lhs);
  if(rhs is int) rhs = intToUnsignedInt(rhs);

  if(lhs is Tuple2) lhs = [lhs.item1, lhs.item2];
  if(rhs is Tuple2) rhs = [rhs.item1, rhs.item2];

  if (!(lhs is List) && !(lhs is Uint8List) && !(lhs is Tuple2)) {
    if (lhs == rhs) return 0;
    return lhs > rhs ? 1 : -1;
  }

  if (lhs.length != rhs.length) return lhs.length > rhs.length ? 1 : -1;

  for (var i = 0; i < lhs.length; ++i) {
    final compareResult = deepCompare(lhs[i], rhs[i]);
    if (0 != compareResult) return compareResult;
  }

  return 0;
}