mercurial/revset.py
changeset 22800 29a8c20e14a8
parent 22799 bafa371d7af3
child 22801 6af9e9b6af39
equal deleted inserted replaced
22799:bafa371d7af3 22800:29a8c20e14a8
  2621         self._gen = gen
  2621         self._gen = gen
  2622         self._asclist = None
  2622         self._asclist = None
  2623         self._cache = {}
  2623         self._cache = {}
  2624         self._genlist = []
  2624         self._genlist = []
  2625         self._finished = False
  2625         self._finished = False
       
  2626         self._ascending = True
  2626         if iterasc is not None:
  2627         if iterasc is not None:
  2627             if iterasc:
  2628             if iterasc:
  2628                 self.fastasc = self._iterator
  2629                 self.fastasc = self._iterator
  2629                 self.__contains__ = self._asccontains
  2630                 self.__contains__ = self._asccontains
  2630             else:
  2631             else:
  2677 
  2678 
  2678         self._cache[x] = False
  2679         self._cache[x] = False
  2679         return False
  2680         return False
  2680 
  2681 
  2681     def __iter__(self):
  2682     def __iter__(self):
  2682         return self._iterator()
  2683         if self._ascending:
       
  2684             it = self.fastasc
       
  2685         else:
       
  2686             it = self.fastdesc
       
  2687         if it is not None:
       
  2688             return it()
       
  2689         # we need to consume the iterator
       
  2690         for x in self._consumegen():
       
  2691             pass
       
  2692         # recall the same code
       
  2693         return iter(self)
  2683 
  2694 
  2684     def _iterator(self):
  2695     def _iterator(self):
  2685         if self._finished:
  2696         if self._finished:
  2686             return iter(self._genlist)
  2697             return iter(self._genlist)
  2687 
  2698 
  2721 
  2732 
  2722     def set(self):
  2733     def set(self):
  2723         return self
  2734         return self
  2724 
  2735 
  2725     def sort(self, reverse=False):
  2736     def sort(self, reverse=False):
  2726         if not self._finished:
  2737         self._ascending = not reverse
  2727             for i in self:
  2738 
  2728                 continue
  2739     def reverse(self):
  2729         self._genlist.sort(reverse=reverse)
  2740         self._ascending = not self._ascending
  2730 
  2741 
  2731 def spanset(repo, start=None, end=None):
  2742 def spanset(repo, start=None, end=None):
  2732     """factory function to dispatch between fullreposet and actual spanset
  2743     """factory function to dispatch between fullreposet and actual spanset
  2733 
  2744 
  2734     Feel free to update all spanset call sites and kill this function at some
  2745     Feel free to update all spanset call sites and kill this function at some