Show More
@@ -2195,7 +2195,93 b' def funcsused(tree):' | |||||
2195 | funcs.add(tree[1][1]) |
|
2195 | funcs.add(tree[1][1]) | |
2196 | return funcs |
|
2196 | return funcs | |
2197 |
|
2197 | |||
2198 |
class |
|
2198 | class abstractsmartset(object): | |
|
2199 | ||||
|
2200 | def __nonzero__(self): | |||
|
2201 | """True if the smartset is not empty""" | |||
|
2202 | raise NotImplementedError() | |||
|
2203 | ||||
|
2204 | def __contains__(self, rev): | |||
|
2205 | """provide fast membership testing""" | |||
|
2206 | raise NotImplementedError() | |||
|
2207 | ||||
|
2208 | def __set__(self): | |||
|
2209 | """Returns a set or a smartset containing all the elements. | |||
|
2210 | ||||
|
2211 | The returned structure should be the fastest option for membership | |||
|
2212 | testing. | |||
|
2213 | ||||
|
2214 | This is part of the mandatory API for smartset.""" | |||
|
2215 | raise NotImplementedError() | |||
|
2216 | ||||
|
2217 | def __iter__(self): | |||
|
2218 | """iterate the set in the order it is supposed to be iterated""" | |||
|
2219 | raise NotImplementedError() | |||
|
2220 | ||||
|
2221 | def isascending(self): | |||
|
2222 | """True if the set will iterate in ascending order""" | |||
|
2223 | raise NotImplementedError() | |||
|
2224 | ||||
|
2225 | def ascending(self): | |||
|
2226 | """Sorts the set in ascending order (in place). | |||
|
2227 | ||||
|
2228 | This is part of the mandatory API for smartset.""" | |||
|
2229 | raise NotImplementedError() | |||
|
2230 | ||||
|
2231 | def isdescending(self): | |||
|
2232 | """True if the set will iterate in descending order""" | |||
|
2233 | raise NotImplementedError() | |||
|
2234 | ||||
|
2235 | def descending(self): | |||
|
2236 | """Sorts the set in descending order (in place). | |||
|
2237 | ||||
|
2238 | This is part of the mandatory API for smartset.""" | |||
|
2239 | raise NotImplementedError() | |||
|
2240 | ||||
|
2241 | def min(self): | |||
|
2242 | """return the minimum element in the set""" | |||
|
2243 | raise NotImplementedError() | |||
|
2244 | ||||
|
2245 | def max(self): | |||
|
2246 | """return the maximum element in the set""" | |||
|
2247 | raise NotImplementedError() | |||
|
2248 | ||||
|
2249 | def reverse(self): | |||
|
2250 | """reverse the expected iteration order""" | |||
|
2251 | raise NotImplementedError() | |||
|
2252 | ||||
|
2253 | def sort(self, reverse=True): | |||
|
2254 | """get the set to iterate in an ascending or descending order""" | |||
|
2255 | raise NotImplementedError() | |||
|
2256 | ||||
|
2257 | def __and__(self, other): | |||
|
2258 | """Returns a new object with the intersection of the two collections. | |||
|
2259 | ||||
|
2260 | This is part of the mandatory API for smartset.""" | |||
|
2261 | raise NotImplementedError() | |||
|
2262 | ||||
|
2263 | def __add__(self, other): | |||
|
2264 | """Returns a new object with the union of the two collections. | |||
|
2265 | ||||
|
2266 | This is part of the mandatory API for smartset.""" | |||
|
2267 | raise NotImplementedError() | |||
|
2268 | ||||
|
2269 | def __sub__(self, other): | |||
|
2270 | """Returns a new object with the substraction of the two collections. | |||
|
2271 | ||||
|
2272 | This is part of the mandatory API for smartset.""" | |||
|
2273 | raise NotImplementedError() | |||
|
2274 | ||||
|
2275 | def filter(self, condition): | |||
|
2276 | """Returns this smartset filtered by condition as a new smartset. | |||
|
2277 | ||||
|
2278 | `condition` is a callable which takes a revision number and returns a | |||
|
2279 | boolean. | |||
|
2280 | ||||
|
2281 | This is part of the mandatory API for smartset.""" | |||
|
2282 | raise NotImplementedError() | |||
|
2283 | ||||
|
2284 | class baseset(list, abstractsmartset): | |||
2199 | """Basic data structure that represents a revset and contains the basic |
|
2285 | """Basic data structure that represents a revset and contains the basic | |
2200 | operation that it should be able to perform. |
|
2286 | operation that it should be able to perform. | |
2201 |
|
2287 | |||
@@ -2320,7 +2406,7 b' class _orderedsetmixin(object):' | |||||
2320 | return self._last() |
|
2406 | return self._last() | |
2321 | return self._first() |
|
2407 | return self._first() | |
2322 |
|
2408 | |||
2323 |
class lazyset( |
|
2409 | class lazyset(abstractsmartset): | |
2324 | """Duck type for baseset class which iterates lazily over the revisions in |
|
2410 | """Duck type for baseset class which iterates lazily over the revisions in | |
2325 | the subset and contains a function which tests for membership in the |
|
2411 | the subset and contains a function which tests for membership in the | |
2326 | revset |
|
2412 | revset | |
@@ -2754,7 +2840,7 b' def spanset(repo, start=None, end=None):' | |||||
2754 | return _spanset(repo, start, end) |
|
2840 | return _spanset(repo, start, end) | |
2755 |
|
2841 | |||
2756 |
|
2842 | |||
2757 | class _spanset(_orderedsetmixin): |
|
2843 | class _spanset(_orderedsetmixin, abstractsmartset): | |
2758 | """Duck type for baseset class which represents a range of revisions and |
|
2844 | """Duck type for baseset class which represents a range of revisions and | |
2759 | can work lazily and without having all the range in memory |
|
2845 | can work lazily and without having all the range in memory | |
2760 |
|
2846 |
General Comments 0
You need to be logged in to leave comments.
Login now