292 while off <= stop: |
292 while off <= stop: |
293 # read fixed part |
293 # read fixed part |
294 o1 = off + _fm1fsize |
294 o1 = off + _fm1fsize |
295 t, secs, tz, flags, numsuc, numpar, nummeta, prec = ufixed(data[off:o1]) |
295 t, secs, tz, flags, numsuc, numpar, nummeta, prec = ufixed(data[off:o1]) |
296 |
296 |
297 _fm1node = _fm1nodesha1 |
|
298 fnodesize = _fm1nodesha1size |
|
299 if flags & usingsha256: |
297 if flags & usingsha256: |
300 _fm1node = _fm1nodesha256 |
298 # read 0 or more successors |
301 fnodesize = _fm1nodesha256size |
299 o2 = o1 + _fm1nodesha256size * numsuc |
302 |
300 sucs = _unpack(_fm1nodesha256 * numsuc, data[o1:o2]) |
303 # read 0 or more successors |
301 |
304 o2 = o1 + fnodesize * numsuc |
302 # read parents |
305 sucs = _unpack(_fm1node * numsuc, data[o1:o2]) |
303 if numpar == _fm1parentnone: |
306 |
304 o3 = o2 |
307 # read parents |
305 parents = None |
308 if numpar == _fm1parentnone: |
306 else: |
309 o3 = o2 |
307 o3 = o2 + _fm1nodesha256size * numpar |
310 parents = None |
308 parents = _unpack(_fm1nodesha256 * numpar, data[o2:o3]) |
311 else: |
309 else: |
312 o3 = o2 + fnodesize * numpar |
310 # read 0 or more successors |
313 parents = _unpack(_fm1node * numpar, data[o2:o3]) |
311 o2 = o1 + _fm1nodesha1size * numsuc |
|
312 sucs = _unpack(_fm1nodesha1 * numsuc, data[o1:o2]) |
|
313 |
|
314 # read parents |
|
315 if numpar == _fm1parentnone: |
|
316 o3 = o2 |
|
317 parents = None |
|
318 else: |
|
319 o3 = o2 + _fm1nodesha1size * numpar |
|
320 parents = _unpack(_fm1nodesha1 * numpar, data[o2:o3]) |
314 |
321 |
315 # read metadata |
322 # read metadata |
316 metaformat = '>' + (_fm1metapair * nummeta) |
323 metaformat = '>' + (_fm1metapair * nummeta) |
317 off = o3 + _fm1metapairsize * nummeta |
324 off = o3 + _fm1metapairsize * nummeta |
318 metapairsize = _unpack(metaformat, data[o3:off]) |
325 metapairsize = _unpack(metaformat, data[o3:off]) |