Commit 7d9586f9 authored by Eric Blake's avatar Eric Blake Committed by Markus Armbruster
Browse files

qapi-types: Simplify gen_struct_field[s]



Simplify gen_struct_fields() back to a single iteration over a
list of fields (like it was prior to commit f87ab7f9), by moving
the generated comments to gen_object().  Then, inline
gen_struct_field() into its only caller.

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <1447836791-369-4-git-send-email-eblake@redhat.com>
Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
parent 570cd8d1
Loading
Loading
Loading
Loading
+15 −25
Original line number Diff line number Diff line
@@ -36,48 +36,38 @@ struct %(c_name)s {
                 c_name=c_name(name), c_type=element_type.c_type())


def gen_struct_field(member):
def gen_struct_fields(members):
    ret = ''

    if member.optional:
    for memb in members:
        if memb.optional:
            ret += mcgen('''
    bool has_%(c_name)s;
''',
                     c_name=c_name(member.name))
                         c_name=c_name(memb.name))
        ret += mcgen('''
    %(c_type)s %(c_name)s;
''',
                 c_type=member.type.c_type(), c_name=c_name(member.name))
                     c_type=memb.type.c_type(), c_name=c_name(memb.name))
    return ret


def gen_struct_fields(local_members, base):
    ret = ''
def gen_object(name, base, members, variants):
    ret = mcgen('''

struct %(c_name)s {
''',
                c_name=c_name(name))

    if base:
        ret += mcgen('''
    /* Members inherited from %(c_name)s: */
''',
                     c_name=base.c_name())
        for memb in base.members:
            ret += gen_struct_field(memb)
        ret += gen_struct_fields(base.members)
        ret += mcgen('''
    /* Own members: */
''')

    for memb in local_members:
        ret += gen_struct_field(memb)
    return ret


def gen_object(name, base, members, variants):
    ret = mcgen('''

struct %(c_name)s {
''',
                c_name=c_name(name))

    ret += gen_struct_fields(members, base)
    ret += gen_struct_fields(members)

    if variants:
        ret += gen_variants(variants)