append method

MemRef append(
  1. Uint8List bytes
)

Copies bytes into the arena and returns a reference to it.

Implementation

MemRef append(Uint8List bytes) {
  final length = bytes.length;
  if (length > _chunkSize) {
    // Oversized document: give it its own chunk so it stays contiguous.
    final chunk = Uint8List(length)..setRange(0, length, bytes);
    _chunks.add(chunk);
    _total += length;
    return (chunk: _chunks.length - 1, offset: 0, length: length);
  }
  if (_current < 0 || _used + length > _chunkSize) {
    _chunks.add(Uint8List(_chunkSize));
    _current = _chunks.length - 1;
    _used = 0;
  }
  final chunk = _chunks[_current];
  final offset = _used;
  chunk.setRange(offset, offset + length, bytes);
  _used += length;
  _total += length;
  return (chunk: _current, offset: offset, length: length);
}