revset: added isascending and isdescending methods to smartset classes

This methods state if the class is sorted in an ascending or descending order

We need this to implement methods based on order on smartset classes in order
to be able to create new objects with a given order.

We cannot just rely on a simple boolean since unordered set are neither
ascending nor descending.
This commit is contained in:
Lucas Moscovicz 2014-03-11 17:09:23 -07:00
parent 8004a27cbf
commit 1e32ffe0b9

View File

@ -2204,6 +2204,12 @@ class baseset(list):
l = [r for r in x if r not in s]
return baseset(list(self) + l)
def isascending(self):
return False
def isdescending(self):
return False
def filter(self, l):
return lazyset(self, l)
@ -2270,6 +2276,12 @@ class lazyset(object):
def set(self):
return set([r for r in self])
def isascending(self):
return False
def isdescending(self):
return False
def filter(self, l):
return lazyset(self, l)
@ -2309,6 +2321,12 @@ class orderedlazyset(lazyset):
self._subset.sort(reverse=reverse)
self._ascending = not reverse
def isascending(self):
return self._ascending
def isdescending(self):
return not self._ascending
def reverse(self):
self._subset.reverse()
self._ascending = not self._ascending
@ -2621,6 +2639,12 @@ class spanset(object):
def set(self):
return self
def isascending(self):
return self._start < self._end
def isdescending(self):
return self._start > self._end
def filter(self, l):
if self._start <= self._end:
return orderedlazyset(self, l)