writeVariableSizeElements static method

Tuple2<Uint8List, int> writeVariableSizeElements(
  1. dynamic output,
  2. List elements,
  3. int alignment,
  4. int currentPos, [
  5. bool skipLastElementPadding = false,
])

Implementation

static Tuple2<Uint8List, int> writeVariableSizeElements(dynamic output, List elements, int alignment, int currentPos, [bool skipLastElementPadding = false]) {
  for (var i = 0; i < elements.length; i++) {
    var serializedElement = elements[i].serialize();
    var elementSize = elements[i].size as int;
    output.setRange(currentPos, currentPos + elementSize, serializedElement);
    currentPos = currentPos + elementSize;
    if (!skipLastElementPadding || elements.length - 1 != i) {
      final alignedSize = alignUp(elementSize, alignment);
      if (alignedSize - elements[i].size > 0) {
        output.setRange(currentPos, currentPos + 1, List<int>.filled(alignedSize - elementSize, 0));
        currentPos = currentPos + alignedSize - elementSize;
      }
    }
  }
  return Tuple2(output, currentPos);
}