Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 22755:f9a825b593be
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.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Fri, 03 Oct 2014 12:36:08 -0500 |
parents | 1119e544cd2d |
children | 5308f21c049e |
comparison
equal
deleted
inserted
replaced
22754:1119e544cd2d | 22755:f9a825b593be |
---|---|
2620 requested one or has gone through all the elements in the generator | 2620 requested one or has gone through all the elements in the generator |
2621 | 2621 |
2622 This class does not duck-type baseset and it's only supposed to be used | 2622 This class does not duck-type baseset and it's only supposed to be used |
2623 internally | 2623 internally |
2624 """ | 2624 """ |
2625 def __init__(self, gen): | 2625 def __init__(self, gen, iterasc=None): |
2626 """ | 2626 """ |
2627 gen: a generator producing the values for the generatorset. | 2627 gen: a generator producing the values for the generatorset. |
2628 """ | 2628 """ |
2629 self._gen = gen | 2629 self._gen = gen |
2630 self._cache = {} | 2630 self._cache = {} |
2631 self._genlist = baseset([]) | 2631 self._genlist = baseset([]) |
2632 self._finished = False | 2632 self._finished = False |
2633 if iterasc is not None: | |
2634 if iterasc: | |
2635 self.fastasc = self.__iter__ | |
2636 else: | |
2637 self.fastdesc = self.__iter__ | |
2633 | 2638 |
2634 def __nonzero__(self): | 2639 def __nonzero__(self): |
2635 for r in self: | 2640 for r in self: |
2636 return True | 2641 return True |
2637 return False | 2642 return False |