Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
 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)
Пример #4
0
 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)
Пример #5
0
    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)
Пример #6
0
    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)