Commit ea66c6d8 authored by Kevin Wolf's avatar Kevin Wolf
Browse files

qapi.py: Maintain a list of union types



Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
parent e8316d7e
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ def parse_schema(fp):
        if expr_eval.has_key('enum'):
            add_enum(expr_eval['enum'])
        elif expr_eval.has_key('union'):
            add_union(expr_eval)
            add_enum('%sKind' % expr_eval['union'])
        elif expr_eval.has_key('type'):
            add_struct(expr_eval)
@@ -188,6 +189,7 @@ def type_name(name):

enum_types = []
struct_types = []
union_types = []

def add_struct(definition):
    global struct_types
@@ -200,6 +202,17 @@ def find_struct(name):
            return struct
    return None

def add_union(definition):
    global union_types
    union_types.append(definition)

def find_union(name):
    global union_types
    for union in union_types:
        if union['union'] == name:
            return union
    return None

def add_enum(name):
    global enum_types
    enum_types.append(name)