decode method

RitoPrimitiveList decode(
  1. Uint8List bytes
)

Implementation

RitoPrimitiveList decode(Uint8List bytes) {
  if (bytes.length > ritoMaxWireBytes) {
    throw const FormatException('RITODL1 exceeds the byte limit.');
  }
  final reader = RitoBinaryReader(bytes);
  reader.expectMagic(_magic, 'primitive list magic');
  final version = reader.uint32('primitive list version');
  if (version != formatVersion) {
    reader.fail('unsupported primitive list version: $version');
  }
  final ratio = reader.float64('primitive list ratio');
  if (ratio <= 0) {
    reader.fail('primitive list ratio must be positive');
  }
  final count = reader.count('primitive count');
  final commands = <RitoPrimitive>[];
  for (var index = 0; index < count; index += 1) {
    commands.add(_primitive(reader));
  }
  reader.finish('primitive list');
  return RitoPrimitiveList(
    formatVersion: version,
    ratio: ratio,
    commands: commands,
  );
}