copyRange<T> static method

void copyRange<T>(
  1. SignalList<T> target,
  2. int at,
  3. List<T> source, [
  4. int? start,
  5. int? end,
])
override

Copy source items in given range to target

Implementation

static void copyRange<T>(SignalList<T> target, int at, List<T> source,
    [int? start, int? end]) {
  start ??= 0;
  end = RangeError.checkValidRange(start, end, source.length);
  var length = end - start;
  if (target.length < at + length) {
    throw ArgumentError.value(target, 'target',
        'Not big enough to hold $length elements at position $at');
  }
  if (!identical(source, target) || start >= at) {
    for (var i = 0; i < length; i++) {
      target.value[at + i] = source[start + i];
    }
  } else {
    for (var i = length; --i >= 0;) {
      target.value[at + i] = source[start + i];
    }
  }
  target.emit();
}