Commit e1b88aee authored by Mathieu Bridon's avatar Mathieu Bridon Committed by Dylan Baker

python: Fix rich comparisons

Python 3 doesn't call objects __cmp__() methods any more to compare
them. Instead, it requires implementing the rich comparison methods
explicitly: __eq__(), __ne(), __lt__(), __le__(), __gt__() and __ge__().

Fortunately Python 2 also supports those.

This commit only implements the comparison methods which are actually
used by the build scripts.
Signed-off-by: Mathieu Bridon's avatarMathieu Bridon <bochecha@daitauha.fr>
Reviewed-by: Dylan Baker's avatarDylan Baker <dylan@pnwbakers.com>
parent 9b6746b7
......@@ -147,14 +147,15 @@ class VkVersion:
patch = self.patch if self.patch is not None else 0
return (self.major << 22) | (self.minor << 12) | patch
def __cmp__(self, other):
def __gt__(self, other):
# If only one of them has a patch version, "ignore" it by making
# other's patch version match self.
if (self.patch is None) != (other.patch is None):
other = copy.copy(other)
other.patch = self.patch
return self.__int_ver().__cmp__(other.__int_ver())
return self.__int_ver() > other.__int_ver()
MAX_API_VERSION = VkVersion(MAX_API_VERSION)
......
......@@ -160,14 +160,15 @@ class VkVersion:
patch = self.patch if self.patch is not None else 0
return (self.major << 22) | (self.minor << 12) | patch
def __cmp__(self, other):
def __gt__(self, other):
# If only one of them has a patch version, "ignore" it by making
# other's patch version match self.
if (self.patch is None) != (other.patch is None):
other = copy.copy(other)
other.patch = self.patch
return self.__int_ver().__cmp__(other.__int_ver())
return self.__int_ver() > other.__int_ver()
MAX_API_VERSION = VkVersion('0.0.0')
......
......@@ -121,19 +121,18 @@ class ABIEntry(object):
def __str__(self):
return self.c_prototype()
def __cmp__(self, other):
def __lt__(self, other):
# compare slot, alias, and then name
res = cmp(self.slot, other.slot)
if not res:
if self.slot == other.slot:
if not self.alias:
res = -1
return True
elif not other.alias:
res = 1
return False
if not res:
res = cmp(self.name, other.name)
return self.name < other.name
return self.slot < other.slot
return res
def abi_parse_xml(xml):
"""Parse a GLAPI XML file for ABI entries."""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment