comparison mercurial/revset.py @ 20708:17c89e5a5627

revset: made addset a private class This class is not supposed to be used outside revset.py since it only wraps content that is used by baseset typed classes. It only gets created by revset operations or private methods.
author Lucas Moscovicz <lmoscovicz@fb.com>
date Wed, 12 Mar 2014 17:20:26 -0700
parents 1d5d6f622b94
children 71df845d86cf
comparison
equal deleted inserted replaced
20707:1d5d6f622b94 20708:17c89e5a5627
2234 2234
2235 def __sub__(self, x): 2235 def __sub__(self, x):
2236 return lazyset(self, lambda r: r not in x) 2236 return lazyset(self, lambda r: r not in x)
2237 2237
2238 def __add__(self, x): 2238 def __add__(self, x):
2239 return lazyset(addset(self, x)) 2239 return lazyset(_addset(self, x))
2240 2240
2241 def __nonzero__(self): 2241 def __nonzero__(self):
2242 for r in self: 2242 for r in self:
2243 return True 2243 return True
2244 return False 2244 return False
2305 2305
2306 def reverse(self): 2306 def reverse(self):
2307 self._subset.reverse() 2307 self._subset.reverse()
2308 self._ascending = not self._ascending 2308 self._ascending = not self._ascending
2309 2309
2310 class addset(object): 2310 class _addset(object):
2311 """Wrapper structure for lazily adding two structures without losing much 2311 """Represent the addition of two sets
2312
2313 Wrapper structure for lazily adding two structures without losing much
2312 performance on the __contains__ method 2314 performance on the __contains__ method
2315
2316 This class does not duck-type baseset and it's only supposed to be used
2317 internally
2313 """ 2318 """
2314 def __init__(self, revs1, revs2): 2319 def __init__(self, revs1, revs2):
2315 self._r1 = revs1 2320 self._r1 = revs1
2316 self._r2 = revs2 2321 self._r2 = revs2
2317 self._iter = None 2322 self._iter = None
2493 return orderedlazyset(self, lambda r: r not in x) 2498 return orderedlazyset(self, lambda r: r not in x)
2494 else: 2499 else:
2495 return orderedlazyset(self, lambda r: r not in x, ascending=False) 2500 return orderedlazyset(self, lambda r: r not in x, ascending=False)
2496 2501
2497 def __add__(self, x): 2502 def __add__(self, x):
2498 return lazyset(addset(self, x)) 2503 return lazyset(_addset(self, x))
2499 2504
2500 def __len__(self): 2505 def __len__(self):
2501 if not self._hiddenrevs: 2506 if not self._hiddenrevs:
2502 return abs(self._end - self._start) 2507 return abs(self._end - self._start)
2503 else: 2508 else: