Source code for curry.backends.cxx.cyrtbindings.fingerprint

from ._cyrtbindings import Fingerprint, LEFT, UNDETERMINED
import itertools
from itertools import zip_longest

[docs] def Fingerprint__iter__(self): for i in range(self.capacity): v = self.get(i) if v != UNDETERMINED: yield i, v
[docs] def Fingerprint__repr__(self, limit=32): def parts(): for i,v in self: yield "%s%s" % (i, 'L' if v == LEFT else 'R') body = list(itertools.islice(parts(), limit)) if len(body) == limit: body += '...' return '<%s>' % ''.join(body)
[docs] def Fingerprint__reduce__(self): return Fingerprint, (), None, None, self.__iter__()
[docs] def Fingerprint__eq__(self, rhs): return all(a==b for a,b in zip_longest(self, rhs))
[docs] def Fingerprint__ne__(self, rhs): return not (self == rhs)
[docs] def Fingerprint__le__(self, rhs): return all(i not in self or self.get(i) == lr for i,lr in rhs)
[docs] def Fingerprint__ge__(self, rhs): return rhs <= self
[docs] def Fingerprint__lt__(self, rhs): return self <= rhs and (self != rhs)
[docs] def Fingerprint__gt__(self, rhs): return rhs < self
[docs] def Fingerprint_consistentWith_(self, rhs): if self.depth < rhs.depth: return self < rhs else: return rhs < self
Fingerprint.__iter__ = Fingerprint__iter__ Fingerprint.__repr__ = Fingerprint__repr__ Fingerprint.__reduce__ = Fingerprint__reduce__ Fingerprint.__eq__ = Fingerprint__eq__ Fingerprint.__ne__ = Fingerprint__ne__ Fingerprint.__le__ = Fingerprint__le__ Fingerprint.__ge__ = Fingerprint__ge__ Fingerprint.__lt__ = Fingerprint__lt__ Fingerprint.__gt__ = Fingerprint__gt__ Fingerprint.consistentWith = Fingerprint_consistentWith_