serialize method
Implementation
@override
Uint8List serialize(HtmlExternalScannerState state) {
final buffer = Uint8List(_serializationBufferSize);
final bytes = ByteData.sublistView(buffer);
final tagCount = math.min(state._tags.length, 0xffff);
var serializedTagCount = 0;
var offset = 4;
while (serializedTagCount < tagCount) {
final tag = state._tags[serializedTagCount];
if (tag.type == _custom) {
final name = utf8.encode(tag.customTagName);
final nameLength = math.min(name.length, 0xff);
if (offset + 2 + nameLength >= _serializationBufferSize) break;
buffer[offset++] = tag.type;
buffer[offset++] = nameLength;
buffer.setRange(offset, offset + nameLength, name);
offset += nameLength;
} else {
if (offset + 1 >= _serializationBufferSize) break;
buffer[offset++] = tag.type;
}
serializedTagCount++;
}
bytes
..setUint16(0, serializedTagCount, Endian.host)
..setUint16(2, tagCount, Endian.host);
return Uint8List.sublistView(buffer, 0, offset);
}