readVariableSizeElements static method

List readVariableSizeElements(
  1. Uint8List buffer,
  2. dynamic FactoryClass,
  3. int alignment, [
  4. bool skipLastElementPadding = false,
])

Implementation

static List readVariableSizeElements(Uint8List buffer, dynamic FactoryClass, int alignment, [bool skipLastElementPadding = false]) {
  final elements = <dynamic>[];
  while (0 < buffer.lengthInBytes) {
    final element = FactoryClass.deserialize(buffer);

    if (0 >= element.size) throw RangeError('element size has invalid size');

    elements.add(element);

    final alignedSize = (skipLastElementPadding && element.size >= buffer.lengthInBytes)
        ? element.size
        : alignUp(element.size, alignment);
    if (alignedSize > buffer.lengthInBytes) throw RangeError('unexpected buffer length');
    buffer = buffer.sublist(alignedSize);
  }
  return elements;
}