mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
qapi: add 'if' to union members
Add 'if' key to union members: { 'union': 'TestIfUnion', 'data': 'mem': { 'type': 'str', 'if': 'COND'} } The generated code remains unconditional for now. Later patches generate the conditionals. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20181213123724.4866-16-marcandre.lureau@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
ccadd6bcba
commit
a2724280fb
5 changed files with 17 additions and 9 deletions
|
@ -210,7 +210,9 @@
|
|||
[ 'foo', { 'name' : 'bar', 'if': 'defined(TEST_IF_ENUM_BAR)' } ],
|
||||
'if': 'defined(TEST_IF_ENUM)' }
|
||||
|
||||
{ 'union': 'TestIfUnion', 'data': { 'foo': 'TestStruct' },
|
||||
{ 'union': 'TestIfUnion', 'data':
|
||||
{ 'foo': 'TestStruct',
|
||||
'union_bar': { 'type': 'str', 'if': 'defined(TEST_IF_UNION_BAR)'} },
|
||||
'if': 'defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)' }
|
||||
|
||||
{ 'command': 'TestIfUnionCmd', 'data': { 'union_cmd_arg': 'TestIfUnion' },
|
||||
|
|
|
@ -280,11 +280,15 @@ object q_obj_TestStruct-wrapper
|
|||
member data: TestStruct optional=False
|
||||
enum TestIfUnionKind
|
||||
member foo
|
||||
member union_bar
|
||||
if ['defined(TEST_IF_UNION_BAR)']
|
||||
if ['defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)']
|
||||
object TestIfUnion
|
||||
member type: TestIfUnionKind optional=False
|
||||
tag type
|
||||
case foo: q_obj_TestStruct-wrapper
|
||||
case union_bar: q_obj_str-wrapper
|
||||
if ['defined(TEST_IF_UNION_BAR)']
|
||||
if ['defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)']
|
||||
object q_obj_TestIfUnionCmd-arg
|
||||
member union_cmd_arg: TestIfUnion optional=False
|
||||
|
|
|
@ -68,6 +68,7 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
|
|||
print(' tag %s' % variants.tag_member.name)
|
||||
for v in variants.variants:
|
||||
print(' case %s: %s' % (v.name, v.type.name))
|
||||
QAPISchemaTestVisitor._print_if(v.ifcond, indent=8)
|
||||
|
||||
@staticmethod
|
||||
def _print_if(ifcond, indent=4):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue