equal
deleted
inserted
replaced
283 _fm1parentshift = 14 |
283 _fm1parentshift = 14 |
284 _fm1parentmask = (_fm1parentnone << _fm1parentshift) |
284 _fm1parentmask = (_fm1parentnone << _fm1parentshift) |
285 _fm1metapair = 'BB' |
285 _fm1metapair = 'BB' |
286 _fm1metapairsize = _calcsize('BB') |
286 _fm1metapairsize = _calcsize('BB') |
287 |
287 |
288 def _fm1readmarkers(data, off): |
288 def _fm1purereadmarkers(data, off): |
289 # make some global constants local for performance |
289 # make some global constants local for performance |
290 noneflag = _fm1parentnone |
290 noneflag = _fm1parentnone |
291 sha2flag = usingsha256 |
291 sha2flag = usingsha256 |
292 sha1size = _fm1nodesha1size |
292 sha1size = _fm1nodesha1size |
293 sha2size = _fm1nodesha256size |
293 sha2size = _fm1nodesha256size |
299 unpack = _unpack |
299 unpack = _unpack |
300 |
300 |
301 # Loop on markers |
301 # Loop on markers |
302 stop = len(data) - _fm1fsize |
302 stop = len(data) - _fm1fsize |
303 ufixed = util.unpacker(_fm1fixed) |
303 ufixed = util.unpacker(_fm1fixed) |
304 |
|
305 fast = getattr(parsers, 'fm1readmarker', None) |
|
306 if fast is not None: |
|
307 while off <= stop: |
|
308 ret = fast(data, off) |
|
309 yield ret[1:] |
|
310 off += ret[0] |
|
311 return |
|
312 |
304 |
313 while off <= stop: |
305 while off <= stop: |
314 # read fixed part |
306 # read fixed part |
315 o1 = off + fsize |
307 o1 = off + fsize |
316 t, secs, tz, flags, numsuc, numpar, nummeta, prec = ufixed(data[off:o1]) |
308 t, secs, tz, flags, numsuc, numpar, nummeta, prec = ufixed(data[off:o1]) |
401 data = [_pack(format, *data)] |
393 data = [_pack(format, *data)] |
402 for key, value in metadata: |
394 for key, value in metadata: |
403 data.append(key) |
395 data.append(key) |
404 data.append(value) |
396 data.append(value) |
405 return ''.join(data) |
397 return ''.join(data) |
|
398 |
|
399 def _fm1readmarkers(data, off): |
|
400 native = getattr(parsers, 'fm1readmarkers', None) |
|
401 if not native: |
|
402 return _fm1purereadmarkers(data, off) |
|
403 stop = len(data) - _fm1fsize |
|
404 return native(data, off, stop) |
406 |
405 |
407 # mapping to read/write various marker formats |
406 # mapping to read/write various marker formats |
408 # <version> -> (decoder, encoder) |
407 # <version> -> (decoder, encoder) |
409 formats = {_fm0version: (_fm0readmarkers, _fm0encodeonemarker), |
408 formats = {_fm0version: (_fm0readmarkers, _fm0encodeonemarker), |
410 _fm1version: (_fm1readmarkers, _fm1encodeonemarker)} |
409 _fm1version: (_fm1readmarkers, _fm1encodeonemarker)} |