unpack method

dynamic unpack(
  1. Struct s
)

Unpacks a single value from the buffer based on the given format.

Implementation

dynamic unpack(Struct s) {
  final Uint8List data = buffer.sublist(readOffset, readOffset + s.size);
  advance(s);

  final List<num> result = [];

  if (s.format == "<f") {
    result.add(nd.bytesToFloat(data));
  } else if (s.format == "<h") {
    result.add(nd.bytesToInt(data, signed: true));
  } else if (["<H", "<HH", "<HHH"].contains(s.format)) {
    for (int i = 0; i < data.length; i += 2) {
      result.add(nd.bytesToInt(data.sublist(i, i + 2)));
    }
  } else {
    throw ArgumentError("Invalid format.");
  }

  if (result.length == 1) {
    return result[0];
  }
  return result;
}