metadataUpdateValue function

Uint8List metadataUpdateValue(
  1. Uint8List? oldValue,
  2. Uint8List newValue
)

Implementation

Uint8List metadataUpdateValue(Uint8List? oldValue, Uint8List newValue) {
  if (oldValue == null) {
    return newValue;
  }

  var shorterLength =
      oldValue.length < newValue.length ? oldValue.length : newValue.length;
  var longerLength =
      oldValue.length > newValue.length ? oldValue.length : newValue.length;
  var isNewValueShorter = oldValue.length > newValue.length;

  var result = Uint8List(longerLength);

  var i = 0;
  for (i = 0; i < shorterLength; ++i) {
    result[i] = oldValue[i] ^ newValue[i];
  }

  for (; i < longerLength; ++i) {
    result[i] = (isNewValueShorter ? oldValue : newValue)[i];
  }

  return result;
}