# HG changeset patch # User Pierre-Yves David # Date 2014-10-03 04:38:30 # Node ID 6bbc26adcc6a2d494b23cd5edc402eb5375e033b # Parent ef2c1ea8fb2cb75766498d8f772afd8e3e72d5a4 addset: offer a fastasc and fastdesc methods If the underlying object offers fast iterators, we use them to provide fast iterators too. diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2659,6 +2659,22 @@ class _addset(_orderedsetmixin): return iter(self._genlist) return iter(self._iterator()) + @property + def fastasc(self): + iter1 = self._r1.fastasc + iter2 = self._r2.fastasc + if None in (iter1, iter2): + return None + return lambda: self._iterordered(True, iter1(), iter2()) + + @property + def fastdesc(self): + iter1 = self._r1.fastdesc + iter2 = self._r2.fastdesc + if None in (iter1, iter2): + return None + return lambda: self._iterordered(False, iter1(), iter2()) + def _iterordered(self, ascending, iter1, iter2): """produce an ordered iteration from two iterators with the same order