[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 16/26] qapi: Support downstream alternates
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 16/26] qapi: Support downstream alternates |
Date: |
Fri, 15 May 2015 10:24:42 +0200 |
From: Eric Blake <address@hidden>
Enhance the testsuite to cover downstream alternates, including
whether the branch name or type is downstream. Update the
generator to mangle alternate names in the appropriate places.
Signed-off-by: Eric Blake <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
---
scripts/qapi-types.py | 7 ++++---
scripts/qapi-visit.py | 6 +++---
tests/qapi-schema/qapi-schema-test.json | 2 ++
tests/qapi-schema/qapi-schema-test.out | 6 ++++--
4 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py
index 13e4b53..5665145 100644
--- a/scripts/qapi-types.py
+++ b/scripts/qapi-types.py
@@ -174,16 +174,17 @@ def generate_alternate_qtypes(expr):
ret = mcgen('''
const int %(name)s_qtypes[QTYPE_MAX] = {
''',
- name=name)
+ name=c_name(name))
for key in members:
qtype = find_alternate_member_qtype(members[key])
assert qtype, "Invalid alternate member"
ret += mcgen('''
- [ %(qtype)s ] = %(enum_const)s,
+ [%(qtype)s] = %(enum_const)s,
''',
- qtype = qtype, enum_const = c_enum_const(name + 'Kind', key))
+ qtype = qtype,
+ enum_const = c_enum_const(name + 'Kind', key))
ret += mcgen('''
};
diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index c15305f..e511be3 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -202,11 +202,11 @@ void visit_type_%(name)s(Visitor *m, %(name)s **obj,
const char *name, Error **e
}
switch ((*obj)->kind) {
''',
- name=name)
+ name=c_name(name))
# For alternate, always use the default enum type automatically generated
- # as "'%sKind' % (name)"
- disc_type = '%sKind' % (name)
+ # as name + 'Kind'
+ disc_type = c_name(name) + 'Kind'
for key in members:
assert (members[key] in builtin_types.keys()
diff --git a/tests/qapi-schema/qapi-schema-test.json
b/tests/qapi-schema/qapi-schema-test.json
index ac236e3..d586b56 100644
--- a/tests/qapi-schema/qapi-schema-test.json
+++ b/tests/qapi-schema/qapi-schema-test.json
@@ -120,3 +120,5 @@
{ 'union': '__org.qemu_x-Union2', 'base': '__org.qemu_x-Base',
'discriminator': '__org.qemu_x-member1',
'data': { '__org.qemu_x-value': '__org.qemu_x-Struct2' } }
+{ 'alternate': '__org.qemu_x-Alt',
+ 'data': { '__org.qemu_x-branch': 'str', 'b': '__org.qemu_x-Base' } }
diff --git a/tests/qapi-schema/qapi-schema-test.out
b/tests/qapi-schema/qapi-schema-test.out
index 3fc24e8..2161a90 100644
--- a/tests/qapi-schema/qapi-schema-test.out
+++ b/tests/qapi-schema/qapi-schema-test.out
@@ -28,12 +28,14 @@
OrderedDict([('struct', '__org.qemu_x-Struct'), ('base',
'__org.qemu_x-Base'), ('data', OrderedDict([('__org.qemu_x-member2',
'str')]))]),
OrderedDict([('union', '__org.qemu_x-Union1'), ('data',
OrderedDict([('__org.qemu_x-branch', 'str')]))]),
OrderedDict([('struct', '__org.qemu_x-Struct2'), ('data',
OrderedDict([('array', ['__org.qemu_x-Union1'])]))]),
- OrderedDict([('union', '__org.qemu_x-Union2'), ('base', '__org.qemu_x-Base'),
('discriminator', '__org.qemu_x-member1'), ('data',
OrderedDict([('__org.qemu_x-value', '__org.qemu_x-Struct2')]))])]
+ OrderedDict([('union', '__org.qemu_x-Union2'), ('base', '__org.qemu_x-Base'),
('discriminator', '__org.qemu_x-member1'), ('data',
OrderedDict([('__org.qemu_x-value', '__org.qemu_x-Struct2')]))]),
+ OrderedDict([('alternate', '__org.qemu_x-Alt'), ('data',
OrderedDict([('__org.qemu_x-branch', 'str'), ('b', '__org.qemu_x-Base')]))])]
[{'enum_name': 'EnumOne', 'enum_values': ['value1', 'value2', 'value3']},
{'enum_name': '__org.qemu_x-Enum', 'enum_values': ['__org.qemu_x-value']},
{'enum_name': 'UserDefAlternateKind', 'enum_values': None},
{'enum_name': 'UserDefNativeListUnionKind', 'enum_values': None},
- {'enum_name': '__org.qemu_x-Union1Kind', 'enum_values': None}]
+ {'enum_name': '__org.qemu_x-Union1Kind', 'enum_values': None},
+ {'enum_name': '__org.qemu_x-AltKind', 'enum_values': None}]
[OrderedDict([('struct', 'NestedEnumsOne'), ('data', OrderedDict([('enum1',
'EnumOne'), ('*enum2', 'EnumOne'), ('enum3', 'EnumOne'), ('*enum4',
'EnumOne')]))]),
OrderedDict([('struct', 'UserDefZero'), ('data', OrderedDict([('integer',
'int')]))]),
OrderedDict([('struct', 'UserDefOne'), ('base', 'UserDefZero'), ('data',
OrderedDict([('string', 'str'), ('*enum1', 'EnumOne')]))]),
--
1.9.3
- [Qemu-devel] [PULL 20/26] qapi: qapi-commands.py option --type is unused, drop it, (continued)
- [Qemu-devel] [PULL 20/26] qapi: qapi-commands.py option --type is unused, drop it, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 11/26] qapi: Make c_type() consistently convert qapi names, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 19/26] qapi: qapi-event.py option -b does nothing, drop it, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 04/26] qapi: Rename identical c_fun()/c_var() into c_name(), Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 23/26] qapi: Turn generators' mandatory option -i into an argument, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 24/26] qapi: Factor open_output(), close_output() out of generators, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 13/26] qapi: Support downstream structs, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 22/26] qapi: Fix generators to report command line errors decently, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 15/26] qapi: Support downstream flat unions, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 10/26] qapi: Tidy c_type() logic, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 16/26] qapi: Support downstream alternates,
Markus Armbruster <=
- [Qemu-devel] [PULL 21/26] qapi: Factor parse_command_line() out of the generators, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 17/26] qapi: Support downstream events and commands, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 12/26] qapi: Support downstream enums, Markus Armbruster, 2015/05/15
- [Qemu-devel] [PULL 09/26] qapi: Move camel_to_upper(), c_enum_const() to closely related code, Markus Armbruster, 2015/05/15
- Re: [Qemu-devel] [PULL 00/26] qapi: Fix qapi mangling of downstream names, and more, Peter Maydell, 2015/05/15