[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 17/49] qapi: change enum visitor to take QAPI
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v3 17/49] qapi: change enum visitor to take QAPISchemaMember |
Date: |
Fri, 22 Jun 2018 14:24:13 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
Marc-André Lureau <address@hidden> writes:
> 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 <address@hidden>
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
> scripts/qapi/common.py | 12 ++++++------
> scripts/qapi/events.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/common.py b/scripts/qapi/common.py
> index ea5cdfe3be..4d19146064 100644
> --- a/scripts/qapi/common.py
> +++ b/scripts/qapi/common.py
> @@ -1198,7 +1198,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):
> @@ -2007,11 +2007,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('''
> },
> @@ -2024,7 +2024,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('''
>
This hunk gave me pause...
> @@ -2036,7 +2036,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/events.py b/scripts/qapi/events.py
> index dae03e3d88..233c27a6c8 100644
> --- a/scripts/qapi/events.py
> +++ b/scripts/qapi/events.py
> @@ -188,7 +188,7 @@ class
> QAPISchemaGenEventVisitor(QAPISchemaModularCVisitor):
> 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._enum_name))
> - self._event_names.append(name)
> + self._event_names.append(QAPISchemaMember(name))
>
>
... and this one as well, until I realized that you're *also* changing
gen_enum_lookup() and gen_enum(). And then I realized that I missed
something about the previous patch. Going to explain it there.
Anyway, let's mention the change to gen_enum_lookup() and gen_enum() in
the commit message.
> def gen_events(schema, output_dir, prefix):
> diff --git a/scripts/qapi/introspect.py b/scripts/qapi/introspect.py
> index 66f7fd00a9..d62fca84de 100644
> --- a/scripts/qapi/introspect.py
> +++ b/scripts/qapi/introspect.py
> @@ -164,7 +164,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 f4b8feb9bc..3623deae62 100644
> --- a/tests/qapi-schema/test-qapi.py
> +++ b/tests/qapi-schema/test-qapi.py
> @@ -24,7 +24,7 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
> print('include %s' % name)
>
> 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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH v3 17/49] qapi: change enum visitor to take QAPISchemaMember,
Markus Armbruster <=