# HG changeset patch # User Pierre-Yves David # Date 2014-10-03 17:36:08 # Node ID f9a825b593bef0d98eb22bf6d61ce73781053b52 # Parent 1119e544cd2d338047b1b5b36d0eb5d84b788a4c generatorset: make it possible to use gen as fastasc or fastdesc We gain a parameter to inform that the generator is ascending or descending. If the generator is ordered, it is also used for the `fastasc` or `fastdesc` version. The _ascgeneratorset and _descgeneratorset class will be removed soon. diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2622,7 +2622,7 @@ class _generatorset(abstractsmartset): This class does not duck-type baseset and it's only supposed to be used internally """ - def __init__(self, gen): + def __init__(self, gen, iterasc=None): """ gen: a generator producing the values for the generatorset. """ @@ -2630,6 +2630,11 @@ class _generatorset(abstractsmartset): self._cache = {} self._genlist = baseset([]) self._finished = False + if iterasc is not None: + if iterasc: + self.fastasc = self.__iter__ + else: + self.fastdesc = self.__iter__ def __nonzero__(self): for r in self: