Show More
@@ -2314,6 +2314,35 b' class orderedlazyset(lazyset):' | |||
|
2314 | 2314 | self._subset.reverse() |
|
2315 | 2315 | self._ascending = not self._ascending |
|
2316 | 2316 | |
|
2317 | class addset(object): | |
|
2318 | """Wrapper structure for lazily adding two structures without losing much | |
|
2319 | performance on the __contains__ method | |
|
2320 | """ | |
|
2321 | def __init__(self, revs1, revs2): | |
|
2322 | self._r1 = revs1 | |
|
2323 | self._r2 = revs2 | |
|
2324 | self._iter = None | |
|
2325 | ||
|
2326 | def _iterator(self): | |
|
2327 | if not self._iter: | |
|
2328 | def gen(): | |
|
2329 | for r in self._r1: | |
|
2330 | yield r | |
|
2331 | s = self._r1.set() | |
|
2332 | for r in self._r2: | |
|
2333 | if r not in s: | |
|
2334 | yield r | |
|
2335 | self._iter = generatorset(gen()) | |
|
2336 | ||
|
2337 | return self._iter | |
|
2338 | ||
|
2339 | def __iter__(self): | |
|
2340 | for r in self._iterator(): | |
|
2341 | yield r | |
|
2342 | ||
|
2343 | def __contains__(self, x): | |
|
2344 | return x in self._r1 or x in self._r2 | |
|
2345 | ||
|
2317 | 2346 | class generatorset(object): |
|
2318 | 2347 | """Wrapper structure for generators that provides lazy membership and can |
|
2319 | 2348 | be iterated more than once. |
General Comments 0
You need to be logged in to leave comments.
Login now