packListLength method

void packListLength(
  1. int? length
)

Pack List.length or null.

Implementation

void packListLength(int? length) {
  // max 4 length header + 1 control byte
  if (_buf.length - _offset < 5) _nextBuf();
  if (length == null) {
    _d.setUint8(_offset++, 0xc0);
  } else if (length <= 0xF) {
    _d.setUint8(_offset++, 0x90 | length);
  } else if (length <= 0xFFFF) {
    _d.setUint8(_offset++, 0xdc);
    _d.setUint16(_offset, length);
    _offset += 2;
  } else if (length <= 0xFFFFFFFF) {
    _d.setUint8(_offset++, 0xdd);
    _d.setUint32(_offset, length);
    _offset += 4;
  } else {
    throw ArgumentError('Max list length is 0xFFFFFFFF');
  }
}