removeRange method

void removeRange(
  1. int start,
  2. int end
)

Implementation

void removeRange(int start, int end) {
  assert(start == 0, 'Sorry only zero is supported');
  assert(start <= end);
  assert(end <= length);

  var remaining = end;
  while (remaining > 0 && _buffers.isNotEmpty) {
    final buffer = _buffers.first;

    // Remove the whole buffer
    if (remaining > (buffer.length - _offset)) {
      _buffers.removeFirst();
      remaining -= buffer.length - _offset;
      _offset = 0;
      continue;
    }

    // Remove part of the buffer
    _offset += remaining;
    remaining -= remaining;
  }

  assert(
    remaining == 0,
    'Should have removed all the data, but $remaining remain',
  );
}