def diff(self, other): assert(self.__class__ == other.__class__) us = set(self.iterAll()) them = set(other.iterAll()) added = us - them removed = them - us if not added and not removed: return None l = [] if len(removed) >= (1 << 16): raise OverflowError if len(added) >= (1 << 16): raise OverflowError l.append(struct.pack("!HH", len(removed), len(added))) for typeId, item in removed: s = item.freeze() l.append(struct.pack('!B', typeId)) l.append(pack.dynamicSize(len(s))) l.append(s) # make sure the additions are ordered for typeId, item in self.iterAll(): if (typeId, item) in added: s = item.freeze() l.append(struct.pack('!B', typeId)) l.append(pack.dynamicSize(len(s))) l.append(s) return "".join(l)
def diff(self, other): assert (self.__class__ == other.__class__) us = set(self.iterAll()) them = set(other.iterAll()) added = us - them removed = them - us if not added and not removed: return None l = [] if len(removed) >= (1 << 16): raise OverflowError if len(added) >= (1 << 16): raise OverflowError l.append(struct.pack("!HH", len(removed), len(added))) for typeId, item in removed: s = item.freeze() l.append(struct.pack('!B', typeId)) l.append(pack.dynamicSize(len(s))) l.append(s) # make sure the additions are ordered for typeId, item in self.iterAll(): if (typeId, item) in added: s = item.freeze() l.append(struct.pack('!B', typeId)) l.append(pack.dynamicSize(len(s))) l.append(s) return "".join(l)
def freeze(self, skipSet = None): if not self: return '' l = [] for s in self: l.append(pack.dynamicSize(len(s))) l.append(s) return ''.join(l)
def freeze(self, skipSet=None): if not self: return '' l = [] for s in self: l.append(pack.dynamicSize(len(s))) l.append(s) return ''.join(l)
def freeze(self, skipSet = {}): if self._data is not None: if not skipSet: return self._data else: self._thaw() l = [] for typeId, itemList in (self._items.iteritems()): for item in itemList: s = item.freeze(skipSet = skipSet) l.append(struct.pack('!B', typeId)) l.append(pack.dynamicSize(len(s))) l.append(s) return "".join(l)
def freeze(self, skipSet={}): if self._data is not None: if not skipSet: return self._data else: self._thaw() l = [] for typeId, itemList in (self._items.iteritems()): for item in itemList: s = item.freeze(skipSet=skipSet) l.append(struct.pack('!B', typeId)) l.append(pack.dynamicSize(len(s))) l.append(s) return "".join(l)