mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-27 21:40:49 +00:00
qapi-types/visit.py: Pass whole expr dict for structs
Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
52c8d629ca
commit
14d36307ff
@ -71,7 +71,7 @@ def generate_struct_fields(members):
|
||||
c_name=c_var(argname))
|
||||
if structured:
|
||||
push_indent()
|
||||
ret += generate_struct("", argname, argentry)
|
||||
ret += generate_struct({ "field": argname, "data": argentry})
|
||||
pop_indent()
|
||||
else:
|
||||
ret += mcgen('''
|
||||
@ -81,7 +81,12 @@ def generate_struct_fields(members):
|
||||
|
||||
return ret
|
||||
|
||||
def generate_struct(structname, fieldname, members):
|
||||
def generate_struct(expr):
|
||||
|
||||
structname = expr.get('type', "")
|
||||
fieldname = expr.get('field', "")
|
||||
members = expr['data']
|
||||
|
||||
ret = mcgen('''
|
||||
struct %(name)s
|
||||
{
|
||||
@ -417,7 +422,7 @@ if do_builtins:
|
||||
for expr in exprs:
|
||||
ret = "\n"
|
||||
if expr.has_key('type'):
|
||||
ret += generate_struct(expr['type'], "", expr['data']) + "\n"
|
||||
ret += generate_struct(expr) + "\n"
|
||||
ret += generate_type_cleanup_decl(expr['type'] + "List")
|
||||
fdef.write(generate_type_cleanup(expr['type'] + "List") + "\n")
|
||||
ret += generate_type_cleanup_decl(expr['type'])
|
||||
|
@ -120,7 +120,11 @@ if (!err) {
|
||||
''')
|
||||
return ret
|
||||
|
||||
def generate_visit_struct(name, members):
|
||||
def generate_visit_struct(expr):
|
||||
|
||||
name = expr['type']
|
||||
members = expr['data']
|
||||
|
||||
ret = generate_visit_struct_fields(name, "", "", members)
|
||||
|
||||
ret += mcgen('''
|
||||
@ -472,7 +476,7 @@ if do_builtins:
|
||||
|
||||
for expr in exprs:
|
||||
if expr.has_key('type'):
|
||||
ret = generate_visit_struct(expr['type'], expr['data'])
|
||||
ret = generate_visit_struct(expr)
|
||||
ret += generate_visit_list(expr['type'], expr['data'])
|
||||
fdef.write(ret)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user