[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