##// END OF EJS Templates
generatorset: move membership testing on ordered gen to the main class...
Pierre-Yves David -
r22757:d34969a4 default
parent child Browse files
Show More
@@ -2633,8 +2633,10 b' class _generatorset(abstractsmartset):'
2633 if iterasc is not None:
2633 if iterasc is not None:
2634 if iterasc:
2634 if iterasc:
2635 self.fastasc = self.__iter__
2635 self.fastasc = self.__iter__
2636 self.__contains__ = self._asccontains
2636 else:
2637 else:
2637 self.fastdesc = self.__iter__
2638 self.fastdesc = self.__iter__
2639 self.__contains__ = self._desccontains
2638
2640
2639 def __nonzero__(self):
2641 def __nonzero__(self):
2640 for r in self:
2642 for r in self:
@@ -2653,6 +2655,36 b' class _generatorset(abstractsmartset):'
2653 self._cache[x] = False
2655 self._cache[x] = False
2654 return False
2656 return False
2655
2657
2658 def _asccontains(self, x):
2659 """version of contains optimised for ascending generator"""
2660 if x in self._cache:
2661 return self._cache[x]
2662
2663 # Use new values only, as existing values would be cached.
2664 for l in self._consumegen():
2665 if l == x:
2666 return True
2667 if l > x:
2668 break
2669
2670 self._cache[x] = False
2671 return False
2672
2673 def _desccontains(self, x):
2674 """version of contains optimised for descending generator"""
2675 if x in self._cache:
2676 return self._cache[x]
2677
2678 # Use new values only, as existing values would be cached.
2679 for l in self._consumegen():
2680 if l == x:
2681 return True
2682 if l < x:
2683 break
2684
2685 self._cache[x] = False
2686 return False
2687
2656 def __iter__(self):
2688 def __iter__(self):
2657 if self._finished:
2689 if self._finished:
2658 return iter(self._genlist)
2690 return iter(self._genlist)
@@ -2707,20 +2739,6 b' class _ascgeneratorset(_generatorset):'
2707 def __init__(self, gen):
2739 def __init__(self, gen):
2708 super(_ascgeneratorset, self).__init__(gen, iterasc=True)
2740 super(_ascgeneratorset, self).__init__(gen, iterasc=True)
2709
2741
2710 def __contains__(self, x):
2711 if x in self._cache:
2712 return self._cache[x]
2713
2714 # Use new values only, as existing values would be cached.
2715 for l in self._consumegen():
2716 if l == x:
2717 return True
2718 if l > x:
2719 break
2720
2721 self._cache[x] = False
2722 return False
2723
2724 class _descgeneratorset(_generatorset):
2742 class _descgeneratorset(_generatorset):
2725 """Wrap a generator of descending elements for lazy iteration
2743 """Wrap a generator of descending elements for lazy iteration
2726
2744
@@ -2734,20 +2752,6 b' class _descgeneratorset(_generatorset):'
2734 def __init__(self, gen):
2752 def __init__(self, gen):
2735 super(_descgeneratorset, self).__init__(gen, iterasc=False)
2753 super(_descgeneratorset, self).__init__(gen, iterasc=False)
2736
2754
2737 def __contains__(self, x):
2738 if x in self._cache:
2739 return self._cache[x]
2740
2741 # Use new values only, as existing values would be cached.
2742 for l in self._consumegen():
2743 if l == x:
2744 return True
2745 if l < x:
2746 break
2747
2748 self._cache[x] = False
2749 return False
2750
2751 def spanset(repo, start=None, end=None):
2755 def spanset(repo, start=None, end=None):
2752 """factory function to dispatch between fullreposet and actual spanset
2756 """factory function to dispatch between fullreposet and actual spanset
2753
2757
General Comments 0
You need to be logged in to leave comments. Login now