encode method

List<int> encode(
  1. List<int> data, {
  2. XZCheck check = XZCheck.crc64,
})

Implementation

List<int> encode(List<int> data, {XZCheck check = XZCheck.crc64}) {
  var flags = 0;
  switch (check) {
    case XZCheck.none:
      break;
    case XZCheck.crc32:
      flags |= 0x1;
      break;
    case XZCheck.crc64:
      flags |= 0x4;
      break;
    case XZCheck.sha256:
      flags |= 0xa;
      break;
  }

  final output = OutputStream();
  _writeStreamHeader(output, flags: flags);

  var records = <_XZBlockSize>[];
  if (data.isNotEmpty) {
    var compressedLength = _writeBlock(output, data, streamFlags: flags);
    records.add(_XZBlockSize(compressedLength, data.length));
  }

  var indexStart = output.length;
  _writeStreamIndex(output, records: records);
  var indexSize = output.length - indexStart;

  _writeStreamFooter(output, indexSize: indexSize, flags: flags);

  return output.getBytes();
}