From: Marc-André Lureau <marcandre.lur...@redhat.com> Introduce IfNot predicate class, for 'not' condition expressions.
Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Tested-by: John Snow <js...@redhat.com> --- scripts/qapi/common.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py index 4e5c3ebaae..8a23c1d4ef 100644 --- a/scripts/qapi/common.py +++ b/scripts/qapi/common.py @@ -239,6 +239,28 @@ def __eq__(self, other: object) -> bool: return self.option == other.option +class IfNot(IfPredicate): + def __init__(self, pred: IfPredicate): + self.pred = pred + + def cgen(self) -> str: + return "!" + self.pred.cgen() + + def docgen(self) -> str: + return "not " + self.pred.docgen() + + def __bool__(self) -> bool: + return bool(self.pred) + + def __repr__(self) -> str: + return f"IfNot({self.pred!r})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, type(self)): + return False + return self.pred == other.pred + + class IfPredicateList(IfPredicate): C_SEP = "" DOC_SEP = "" -- 2.29.0