packMapLength method
Pack Map.length or null
.
Implementation
void packMapLength(int? length) {
// max 4 byte header + 1 control byte
if (_buf.length - _offset < 5) _nextBuf();
if (length == null) {
_d.setUint8(_offset++, 0xc0);
} else if (length <= 0xF) {
_d.setUint8(_offset++, 0x80 | length);
} else if (length <= 0xFFFF) {
_d.setUint8(_offset++, 0xde);
_d.setUint16(_offset, length);
_offset += 2;
} else if (length <= 0xFFFFFFFF) {
_d.setUint8(_offset++, 0xdf);
_d.setUint32(_offset, length);
_offset += 4;
} else {
throw ArgumentError('Max map length is 0xFFFFFFFF');
}
}