qapi: introduce QAPISchemaIfCond.cgen()

Instead of building prepocessor conditions from a list of string, use
the result generated from QAPISchemaIfCond.cgen() and hide the
implementation details.

Note: this patch introduces a minor regression, generating a redundant
pair of parenthesis. This is mostly fixed in a later patch in this
series ("qapi: replace if condition list with dict [..]")

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20210804083105.97531-5-marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Commit message tweaked]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
Marc-André Lureau 2021-08-04 12:30:59 +04:00 committed by Markus Armbruster
parent 33aa3267ba
commit 6cc2e4817f
6 changed files with 46 additions and 34 deletions

View file

@ -19,7 +19,7 @@ import os
import re
from typing import Optional
from .common import POINTER_SUFFIX, c_name
from .common import POINTER_SUFFIX, c_name, cgen_ifcond
from .error import QAPIError, QAPISemError, QAPISourceError
from .expr import check_exprs
from .parser import QAPISchemaParser
@ -29,6 +29,9 @@ class QAPISchemaIfCond:
def __init__(self, ifcond=None):
self.ifcond = ifcond or []
def cgen(self):
return cgen_ifcond(self.ifcond)
def is_present(self):
return bool(self.ifcond)