[Pkg-bazaar-commits] ./bzr/unstable r926: - update more weave code to use intsets

Martin Pool mbp at sourcefrog.net
Fri Apr 10 08:21:28 UTC 2009


------------------------------------------------------------
revno: 926
committer: Martin Pool <mbp at sourcefrog.net>
timestamp: Sun 2005-07-17 15:06:53 -0300
message:
  - update more weave code to use intsets
modified:
  bzrlib/weave.py
-------------- next part --------------
=== modified file 'bzrlib/weave.py'
--- a/bzrlib/weave.py	2005-07-17 17:53:39 +0000
+++ b/bzrlib/weave.py	2005-07-17 18:06:53 +0000
@@ -56,15 +56,7 @@
 
 
 
-
-try:
-    set
-    frozenset
-except NameError:
-    from sets import Set, ImmutableSet
-    set = Set
-    frozenset = ImmutableSet
-    del Set, ImmutableSet
+from bzrlib.intset import IntSet
 
 
 
@@ -241,24 +233,8 @@
         return idx
 
 
-    def inclusions_bitset(self, versions):
-        i = 0
-        for v in versions:
-            i |= (1L << v)
-        v = max(versions)
-        while v >= 0:
-            if i & (1L << v):
-                # if v is included, include all its parents
-                for pv in self._v[v]:
-                    i |= (1L << pv)
-            v -= 1
-        return i
-
-
     def inclusions(self, versions):
         """Return set of all ancestors of given version(s)."""
-        from bzrlib.intset import IntSet
-        
         i = IntSet(versions)
         v = max(versions)
         try:
@@ -274,8 +250,6 @@
 
     def minimal_parents(self, version):
         """Find the minimal set of parents for the version."""
-        from bzrlib.intset import IntSet
-        
         included = self._v[version]
         if not included:
             return []
@@ -300,7 +274,7 @@
         if parents:
             self._v.append(parents)
         else:
-            self._v.append(frozenset())
+            self._v.append(IntSet())
 
 
     def _check_lines(self, text):
@@ -344,7 +318,7 @@
         """
         
         istack = []
-        dset = 0L
+        dset = IntSet()
 
         lineno = 0         # line of weave, 0-based
 
@@ -357,13 +331,10 @@
                 elif c == '}':
                     oldv = istack.pop()
                 elif c == '[':
-                    vs = (1L << v)
-                    assert not (dset & vs)
-                    dset |= vs
+                    assert v not in dset
+                    dset.add(v)
                 elif c == ']':
-                    vs = (1L << v)
-                    assert dset & vs
-                    dset ^= vs
+                    dset.remove(v)
                 else:
                     raise WeaveFormatError('unexpected instruction %r'
                                            % v)
@@ -387,7 +358,7 @@
         included = self.inclusions(versions)
 
         istack = []
-        dset = set()
+        dset = IntSet()
 
         lineno = 0         # line of weave, 0-based
 
@@ -442,7 +413,6 @@
 
     def mash_iter(self, included):
         """Return composed version of multiple included versions."""
-        included = frozenset(included)
         for origin, lineno, text in self._extract(included):
             yield text
 
@@ -577,17 +547,16 @@
 
         Weave lines present in none of them are skipped entirely.
         """
-        inc_a = self.inclusions_bitset([ver_a])
-        inc_b = self.inclusions_bitset([ver_b])
+        inc_a = self.inclusions([ver_a])
+        inc_b = self.inclusions([ver_b])
         inc_c = inc_a & inc_b
 
         for lineno, insert, deleteset, line in self._walk():
-            insertset = (1L << insert)
             if deleteset & inc_c:
                 # killed in parent; can't be in either a or b
                 # not relevant to our work
                 yield 'killed-base', line
-            elif insertset & inc_c:
+            elif insert in inc_c:
                 # was inserted in base
                 killed_a = bool(deleteset & inc_a)
                 killed_b = bool(deleteset & inc_b)
@@ -599,13 +568,13 @@
                     yield 'killed-b', line
                 else:
                     yield 'unchanged', line
-            elif insertset & inc_a:
+            elif insert in inc_a:
                 if deleteset & inc_a:
                     yield 'ghost-a', line
                 else:
                     # new in A; not in B
                     yield 'new-a', line
-            elif insertset & inc_b:
+            elif insert in inc_b:
                 if deleteset & inc_b:
                     yield 'ghost-b', line
                 else:



More information about the Pkg-bazaar-commits mailing list