Exemplo n.º 1
0
def gen_enum(name, members, prefix=None):
    # append automatically generated _MAX value
    enum_members = members + [QAPISchemaEnumMember('_MAX', None)]

    ret = mcgen('''

typedef enum %(c_name)s {
''',
                c_name=c_name(name))

    for m in enum_members:
        ret += gen_if(m.ifcond)
        ret += mcgen('''
    %(c_enum)s,
''',
                     c_enum=c_enum_const(name, m.name, prefix))
        ret += gen_endif(m.ifcond)

    ret += mcgen('''
} %(c_name)s;
''',
                 c_name=c_name(name))

    ret += mcgen('''

#define %(c_name)s_str(val) \\
    qapi_enum_lookup(&%(c_name)s_lookup, (val))

extern const QEnumLookup %(c_name)s_lookup;
''',
                 c_name=c_name(name))
    return ret
Exemplo n.º 2
0
 def visit_event(self, name, info, ifcond, arg_type, boxed):
     with ifcontext(ifcond, self._genh, self._genc):
         self._genh.add(gen_event_send_decl(name, arg_type, boxed))
         self._genc.add(gen_event_send(name, arg_type, boxed,
                                       self._event_enum_name,
                                       self._event_emit_name))
     # Note: we generate the enum member regardless of @ifcond, to
     # keep the enumeration usable in target-independent code.
     self._event_enum_members.append(QAPISchemaEnumMember(name, None))
Exemplo n.º 3
0
 def visit_event(self, name, info, ifcond, features, arg_type, boxed):
     with ifcontext(ifcond, self._genh, self._genc):
         self._genh.add(gen_event_dispatch_decl(name, arg_type, boxed))
         self._genc.add(gen_event_dispatch(name, arg_type, boxed,
                                       self._event_enum_name,
                                       self._event_dispatch_name))
         self._event_registry.append((ifcond, c_enum_const(self._event_enum_name, name), 'qapi_event_dispatch_%s' % name, build_handler_name(name)))
     # Note: we generate the enum member regardless of @ifcond, to
     # keep the enumeration usable in target-independent code.
     self._event_enum_members.append(QAPISchemaEnumMember(name, None))