tzdbDeserialize function

Iterable<Location> tzdbDeserialize(
  1. List<int> rawData
)

Deserialize TimeZone Database

Implementation

Iterable<Location> tzdbDeserialize(List<int> rawData) sync* {
  final data = rawData is Uint8List ? rawData : Uint8List.fromList(rawData);
  final bdata = data.buffer.asByteData(data.offsetInBytes, data.lengthInBytes);

  var offset = 0;
  while (offset < data.length) {
    final length = bdata.getUint32(offset);
    // u32 _pad;
    assert((length % 8) == 0);
    offset += 8;

    yield _deserializeLocation(
        data.buffer.asUint8List(data.offsetInBytes + offset, length));
    offset += length;
  }
}