tzdbSerialize function
Serialize TimeZone Database
Implementation
List<int> tzdbSerialize(LocationDatabase db) {
final locationsInBytes = <List<int>>[];
var bufferLength = 0;
for (final l in db.locations.values.toList()
..sort((l, r) => l.name.compareTo(r.name))) {
List<int> b = _serializeLocation(l);
locationsInBytes.add(b);
bufferLength += 8 + b.length;
bufferLength = _align(bufferLength, 8);
}
final r = Uint8List(bufferLength);
final rb = r.buffer.asByteData();
var offset = 0;
for (final b in locationsInBytes) {
var length = _align(b.length, 8);
rb.setUint32(offset, length);
r.setAll(offset + 8, b);
offset += 8 + length;
}
return r;
}