##// END OF EJS Templates
addset: split simple and ordered iteration...
Pierre-Yves David -
r22741:ef2c1ea8 default
parent child Browse files
Show More
@@ -2638,17 +2638,35 b' class _addset(_orderedsetmixin):'
2638 2638 same time, yielding only one value at a time in the given order.
2639 2639 """
2640 2640 if not self._iter:
2641 if self._ascending is None:
2641 2642 def gen():
2642 if self._ascending is None:
2643 2643 for r in self._r1:
2644 2644 yield r
2645 2645 s = self._r1.set()
2646 2646 for r in self._r2:
2647 2647 if r not in s:
2648 2648 yield r
2649 gen = gen()
2649 2650 else:
2650 2651 iter1 = iter(self._r1)
2651 2652 iter2 = iter(self._r2)
2653 gen = self._iterordered(self._ascending, iter1, iter2)
2654 self._iter = _generatorset(gen)
2655 return self._iter
2656
2657 def __iter__(self):
2658 if self._genlist:
2659 return iter(self._genlist)
2660 return iter(self._iterator())
2661
2662 def _iterordered(self, ascending, iter1, iter2):
2663 """produce an ordered iteration from two iterators with the same order
2664
2665 The ascending is used to indicated the iteration direction.
2666 """
2667 choice = max
2668 if ascending:
2669 choice = min
2652 2670
2653 2671 val1 = None
2654 2672 val2 = None
@@ -2682,15 +2700,6 b' class _addset(_orderedsetmixin):'
2682 2700 for val in it:
2683 2701 yield val
2684 2702
2685 self._iter = _generatorset(gen())
2686
2687 return self._iter
2688
2689 def __iter__(self):
2690 if self._genlist:
2691 return iter(self._genlist)
2692 return iter(self._iterator())
2693
2694 2703 def __contains__(self, x):
2695 2704 return x in self._r1 or x in self._r2
2696 2705
General Comments 0
You need to be logged in to leave comments. Login now