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