This will allow to add and access more properties associated with enum values/members, like the associated 'if' condition. We may want to have a specialized type QAPISchemaEnumMember, for now this will do.
Suggested-by: Markus Armbruster <arm...@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> --- scripts/qapi.py | 12 ++++++------ scripts/qapi-event.py | 2 +- scripts/qapi-introspect.py | 3 ++- tests/qapi-schema/test-qapi.py | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/scripts/qapi.py b/scripts/qapi.py index c7cd98a890..f8c711b81b 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -1166,7 +1166,7 @@ class QAPISchemaEnumType(QAPISchemaType): def visit(self, visitor): visitor.visit_enum_type(self.name, self.info, self.ifcond, - self.member_names(), self.prefix) + self.members, self.prefix) class QAPISchemaArrayType(QAPISchemaType): @@ -1966,11 +1966,11 @@ const QEnumLookup %(c_name)s_lookup = { ''', c_name=c_name(name)) for m in members: - index = c_enum_const(name, m, prefix) + index = c_enum_const(name, m.name, prefix) ret += mcgen(''' - [%(index)s] = "%(value)s", + [%(index)s] = "%(name)s", ''', - index=index, value=m) + index=index, name=m.name) ret += mcgen(''' }, @@ -1983,7 +1983,7 @@ const QEnumLookup %(c_name)s_lookup = { def gen_enum(name, members, prefix=None): # append automatically generated _MAX value - enum_members = members + ['_MAX'] + enum_members = members + [QAPISchemaMember('_MAX')] ret = mcgen(''' @@ -1995,7 +1995,7 @@ typedef enum %(c_name)s { ret += mcgen(''' %(c_enum)s, ''', - c_enum=c_enum_const(name, m, prefix)) + c_enum=c_enum_const(name, m.name, prefix)) ret += mcgen(''' } %(c_name)s; diff --git a/scripts/qapi-event.py b/scripts/qapi-event.py index bef301dfe9..38f4264817 100644 --- a/scripts/qapi-event.py +++ b/scripts/qapi-event.py @@ -168,7 +168,7 @@ class QAPISchemaGenEventVisitor(QAPISchemaVisitor): def visit_event(self, name, info, ifcond, arg_type, boxed): self.decl += gen_event_send_decl(name, arg_type, boxed) self.defn += gen_event_send(name, arg_type, boxed) - self._event_names.append(name) + self._event_names.append(QAPISchemaMember(name)) (input_file, output_dir, do_c, do_h, prefix, dummy) = parse_command_line() diff --git a/scripts/qapi-introspect.py b/scripts/qapi-introspect.py index 9fcb342c91..868d12f504 100644 --- a/scripts/qapi-introspect.py +++ b/scripts/qapi-introspect.py @@ -154,7 +154,8 @@ const QLitObject %(c_name)s = %(c_string)s; self._gen_qlit(name, 'builtin', {'json-type': json_type}, []) def visit_enum_type(self, name, info, ifcond, members, prefix): - self._gen_qlit(name, 'enum', {'values': members}, ifcond) + self._gen_qlit(name, 'enum', + {'values': [m.name for m in members]}, ifcond) def visit_array_type(self, name, info, ifcond, element_type): element = self._use_type(element_type) diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py index 1c4f9e0dac..2ab79230c2 100644 --- a/tests/qapi-schema/test-qapi.py +++ b/tests/qapi-schema/test-qapi.py @@ -18,7 +18,7 @@ import sys class QAPISchemaTestVisitor(QAPISchemaVisitor): def visit_enum_type(self, name, info, ifcond, members, prefix): - print 'enum %s %s' % (name, members) + print 'enum %s %s' % (name, [m.name for m in members]) if prefix: print ' prefix %s' % prefix self._print_if(ifcond) -- 2.16.0.rc1.1.gef27df75a1