python: Add __bool__ helpers in addition to __nonzero__

Python 3 uses __bool__ instead of __nonzero__ when performing a
Boolean comparison.

Change-Id: I85185bbe136ecae67346fa23569e24edd7329222
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15996
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
This commit is contained in:
Andreas Sandberg
2019-01-26 10:51:29 +00:00
parent d07cceb13e
commit 4fa56fe2f8
2 changed files with 11 additions and 3 deletions

View File

@@ -829,9 +829,12 @@ class Bool(ParamValue):
# implement truth value testing for Bool parameters so that these params
# evaluate correctly during the python configuration phase
def __nonzero__(self):
def __bool__(self):
return bool(self.value)
# Python 2.7 uses __nonzero__ instead of __bool__
__nonzero__ = __bool__
def ini_str(self):
if self.value:
return 'true'

View File

@@ -55,8 +55,10 @@ class Variable(str):
return toLong(str(self))
def __float__(self):
return toFloat(str(self))
def __nonzero__(self):
def __bool__(self):
return toBool(str(self))
# Python 2.7 uses __nonzero__ instead of __bool__
__nonzero__ = __bool__
def convert(self, other):
t = type(other)
if t == bool:
@@ -107,9 +109,12 @@ class UndefinedVariable(object):
"""Placeholder class to represent undefined variables. Will
generally cause an exception whenever it is used, but evaluates to
zero for boolean truth testing such as in an if statement"""
def __nonzero__(self):
def __bool__(self):
return False
# Python 2.7 uses __nonzero__ instead of __bool__
__nonzero__ = __bool__
class SmartDict(attrdict):
"""Dictionary class that holds strings, but intelligently converts
those strings to other types depending on their usage"""