[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 14/34] qapi/introspect: Rename *qlit* to reduce confusion
From: |
Marc-André Lureau |
Subject: |
Re: [PATCH v3 14/34] qapi/introspect: Rename *qlit* to reduce confusion |
Date: |
Mon, 16 Mar 2020 17:54:09 +0100 |
On Sun, Mar 15, 2020 at 4:19 PM Markus Armbruster <address@hidden> wrote:
>
> We generate the value of qmp_schema_qlit from an expression tree. The
> function doing that is named to_qlit(), and its inputs are accumulated
> in QAPISchemaGenIntrospectVisitor._qlits. We call both its input and
> its output "qlit". This is confusing.
>
> Use "tree" for input, and "qlit" only for output: rename to_qlit() to
> _tree_to_qlit(), ._qlits to ._trees, ._gen_qlit() to ._gen_tree().
>
> Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
> ---
> scripts/qapi/introspect.py | 35 ++++++++++++++++++-----------------
> 1 file changed, 18 insertions(+), 17 deletions(-)
>
> diff --git a/scripts/qapi/introspect.py b/scripts/qapi/introspect.py
> index b54910510d..e4fc9d90f1 100644
> --- a/scripts/qapi/introspect.py
> +++ b/scripts/qapi/introspect.py
> @@ -16,7 +16,7 @@ from qapi.schema import (QAPISchemaArrayType,
> QAPISchemaBuiltinType,
> QAPISchemaType)
>
>
> -def to_qlit(obj, level=0, suppress_first_indent=False):
> +def _tree_to_qlit(obj, level=0, suppress_first_indent=False):
>
> def indent(level):
> return level * 4 * ' '
> @@ -30,7 +30,7 @@ def to_qlit(obj, level=0, suppress_first_indent=False):
> ret += indent(level) + '/* %s */\n' % comment
> if ifcond:
> ret += gen_if(ifcond)
> - ret += to_qlit(ifobj, level)
> + ret += _tree_to_qlit(ifobj, level)
> if ifcond:
> ret += '\n' + gen_endif(ifcond)
> return ret
> @@ -43,7 +43,7 @@ def to_qlit(obj, level=0, suppress_first_indent=False):
> elif isinstance(obj, str):
> ret += 'QLIT_QSTR(' + to_c_string(obj) + ')'
> elif isinstance(obj, list):
> - elts = [to_qlit(elt, level + 1).strip('\n')
> + elts = [_tree_to_qlit(elt, level + 1).strip('\n')
> for elt in obj]
> elts.append(indent(level + 1) + "{}")
> ret += 'QLIT_QLIST(((QLitObject[]) {\n'
> @@ -53,7 +53,8 @@ def to_qlit(obj, level=0, suppress_first_indent=False):
> elts = []
> for key, value in sorted(obj.items()):
> elts.append(indent(level + 1) + '{ %s, %s }' %
> - (to_c_string(key), to_qlit(value, level + 1, True)))
> + (to_c_string(key),
> + _tree_to_qlit(value, level + 1, True)))
> elts.append(indent(level + 1) + '{}')
> ret += 'QLIT_QDICT(((QLitDictEntry[]) {\n'
> ret += ',\n'.join(elts) + '\n'
> @@ -79,7 +80,7 @@ class
> QAPISchemaGenIntrospectVisitor(QAPISchemaMonolithicCVisitor):
> ' * QAPI/QMP schema introspection', __doc__)
> self._unmask = unmask
> self._schema = None
> - self._qlits = []
> + self._trees = []
> self._used_types = []
> self._name_map = {}
> self._genc.add(mcgen('''
> @@ -108,9 +109,9 @@ extern const QLitObject %(c_name)s;
> const QLitObject %(c_name)s = %(c_string)s;
> ''',
> c_name=c_name(name),
> - c_string=to_qlit(self._qlits)))
> + c_string=_tree_to_qlit(self._trees)))
> self._schema = None
> - self._qlits = []
> + self._trees = []
> self._used_types = []
> self._name_map = {}
>
> @@ -144,7 +145,7 @@ const QLitObject %(c_name)s = %(c_string)s;
> return '[' + self._use_type(typ.element_type) + ']'
> return self._name(typ.name)
>
> - def _gen_qlit(self, name, mtype, obj, ifcond, features):
> + def _gen_tree(self, name, mtype, obj, ifcond, features):
> extra = {}
> if mtype not in ('command', 'event', 'builtin', 'array'):
> if not self._unmask:
> @@ -159,9 +160,9 @@ const QLitObject %(c_name)s = %(c_string)s;
> if ifcond:
> extra['if'] = ifcond
> if extra:
> - self._qlits.append((obj, extra))
> + self._trees.append((obj, extra))
> else:
> - self._qlits.append(obj)
> + self._trees.append(obj)
>
> def _gen_member(self, member):
> ret = {'name': member.name, 'type': self._use_type(member.type)}
> @@ -180,17 +181,17 @@ const QLitObject %(c_name)s = %(c_string)s;
> {'if': variant.ifcond})
>
> def visit_builtin_type(self, name, info, json_type):
> - self._gen_qlit(name, 'builtin', {'json-type': json_type}, [], None)
> + self._gen_tree(name, 'builtin', {'json-type': json_type}, [], None)
>
> def visit_enum_type(self, name, info, ifcond, features, members, prefix):
> - self._gen_qlit(name, 'enum',
> + self._gen_tree(name, 'enum',
> {'values':
> [(m.name, {'if': m.ifcond}) for m in members]},
> ifcond, features)
>
> def visit_array_type(self, name, info, ifcond, element_type):
> element = self._use_type(element_type)
> - self._gen_qlit('[' + element + ']', 'array', {'element-type':
> element},
> + self._gen_tree('[' + element + ']', 'array', {'element-type':
> element},
> ifcond, None)
>
> def visit_object_type_flat(self, name, info, ifcond, features,
> @@ -200,10 +201,10 @@ const QLitObject %(c_name)s = %(c_string)s;
> obj.update(self._gen_variants(variants.tag_member.name,
> variants.variants))
>
> - self._gen_qlit(name, 'object', obj, ifcond, features)
> + self._gen_tree(name, 'object', obj, ifcond, features)
>
> def visit_alternate_type(self, name, info, ifcond, features, variants):
> - self._gen_qlit(name, 'alternate',
> + self._gen_tree(name, 'alternate',
> {'members': [
> ({'type': self._use_type(m.type)}, {'if':
> m.ifcond})
> for m in variants.variants]},
> @@ -218,11 +219,11 @@ const QLitObject %(c_name)s = %(c_string)s;
> 'ret-type': self._use_type(ret_type)}
> if allow_oob:
> obj['allow-oob'] = allow_oob
> - self._gen_qlit(name, 'command', obj, ifcond, features)
> + self._gen_tree(name, 'command', obj, ifcond, features)
>
> def visit_event(self, name, info, ifcond, features, arg_type, boxed):
> arg_type = arg_type or self._schema.the_empty_object_type
> - self._gen_qlit(name, 'event', {'arg-type': self._use_type(arg_type)},
> + self._gen_tree(name, 'event', {'arg-type': self._use_type(arg_type)},
> ifcond, features)
>
>
> --
> 2.21.1
>
>
--
Marc-André Lureau
- [PATCH v3 26/34] qapi: Mark deprecated QMP parts with feature 'deprecated', (continued)
- [PATCH v3 26/34] qapi: Mark deprecated QMP parts with feature 'deprecated', Markus Armbruster, 2020/03/15
- [PATCH v3 29/34] qapi: Implement deprecated-output=hide for QMP events, Markus Armbruster, 2020/03/15
- [PATCH v3 34/34] qapi: New -compat deprecated-input=crash, Markus Armbruster, 2020/03/15
- [PATCH v3 18/34] qapi/schema: Rename QAPISchemaObjectType{Variant, Variants}, Markus Armbruster, 2020/03/15
- [PATCH v3 31/34] qapi: Implement deprecated-output=hide for QMP introspection, Markus Armbruster, 2020/03/15
- [PATCH v3 27/34] qemu-options: New -compat to set policy for deprecated interfaces, Markus Armbruster, 2020/03/15
- [PATCH v3 15/34] qapi/introspect: Factor out _make_tree(), Markus Armbruster, 2020/03/15
- [PATCH v3 14/34] qapi/introspect: Rename *qlit* to reduce confusion, Markus Armbruster, 2020/03/15
- Re: [PATCH v3 14/34] qapi/introspect: Rename *qlit* to reduce confusion,
Marc-André Lureau <=
- [PATCH v3 20/34] qapi: Add feature flags to struct members, Markus Armbruster, 2020/03/15