qemu-e2k/scripts
Eric Blake 9a5cd424d5 qapi: Visit variants in visit_type_FOO_fields()
We initially created the static visit_type_FOO_fields() helper
function for reuse of code - we have cases where the initial
setup for a visit has different allocation (depending on whether
the fields represent a stand-alone type or are embedded as part
of a larger type), but where the actual field visits are
identical once a pointer is available.

Up until the previous patch, visit_type_FOO_fields() was only
used for structs (no variants), so it was covering every field
for each type where it was emitted.

Meanwhile, the code for visiting unions looks like:

static visit_type_U_fields() {
    visit base;
    visit local_members;
}
visit_type_U() {
    visit_start_struct();
    visit_type_U_fields();
    visit variants;
    visit_end_struct();
}

which splits the fields of the union visit across two functions.
Move the code to visit variants to live inside visit_type_U_fields(),
while making it conditional on having variants so that all other
instances of the helper function remain unchanged.  This is also
a step closer towards unifying struct and union visits, and towards
allowing one union type to be the branch of another flat union.

The resulting diff to the generated code is a bit hard to read,
but it can be verified that it touches only union types, and that
the end result is the following general structure:

static visit_type_U_fields() {
    visit base;
    visit local_members;
    visit variants;
}
visit_type_U() {
    visit_start_struct();
    visit_type_U_fields();
    visit_end_struct();
}

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1455778109-6278-7-git-send-email-eblake@redhat.com>
[gen_visit_struct_fields() parameter variants made mandatory]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2016-02-19 11:08:57 +01:00
..
kvm scripts/kvm/kvm_stat: Fix tracefs access checking 2016-02-09 15:45:26 +01:00
qemu-guest-agent
qemugdb scripts/gdb: Fix a python exception in mtree.py 2015-12-22 16:01:08 +08:00
qmp scripts/qmp: Use Python 2.6 "except E as ..." syntax 2016-02-08 17:29:54 +01:00
tracetool scripts/tracetool: Include qemu/osdep.h in generated .c files 2016-02-16 14:29:27 +00:00
analyse-9p-simpletrace.py
analyze-migration.py
check-qerror.sh
checkpatch.pl checkpatch: Eliminate false positive in case of space before square bracket in a definition 2016-02-15 20:02:09 +01:00
clean-includes scripts: Add new clean-includes script to fix C include directives 2016-01-18 16:33:32 +00:00
cleanup-trace-events.pl
cocci-macro-file.h
coverity-model.c
create_config io: add QIOChannelSocket class 2015-12-18 12:18:31 +00:00
disas-objdump.pl
dump-guest-memory.py scripts/dump-guest-memory.py: Fix module docstring 2016-01-26 15:58:14 +01:00
extract-vsssdk-headers
feature_to_c.sh scripts/feature_to_c.sh: Include qemu/osdep.h rather than config.h 2016-02-16 14:29:27 +00:00
get_maintainer.pl get_maintainer.pl: fall back to git if only lists are found 2016-02-09 17:07:55 +01:00
gtester-cat
hxtool
make_device_config.sh
make-release
ordereddict.py
qapi-commands.py qapi: Clean up includes in generated files 2016-02-16 14:29:27 +00:00
qapi-event.py qapi: Clean up includes in generated files 2016-02-16 14:29:27 +00:00
qapi-introspect.py qapi: Clean up includes in generated files 2016-02-16 14:29:27 +00:00
qapi-types.py qapi: Clean up includes in generated files 2016-02-16 14:29:27 +00:00
qapi-visit.py qapi: Visit variants in visit_type_FOO_fields() 2016-02-19 11:08:57 +01:00
qapi.py qapi: Forbid 'any' inside an alternate 2016-02-19 11:08:56 +01:00
qemu-binfmt-conf.sh
qemu-gdb.py
qtest.py
refresh-pxe-roms.sh
shaderinclude.pl
signrom.py
simpletrace.py
switch-timer-api
texi2pod.pl
tracetool.py Revert "tracetool: use Python 2.4-compatible exception handling syntax" 2016-02-08 17:29:54 +01:00
update-linux-headers.sh
vmstate-static-checker.py static checker: e1000-82540em got aliased to e1000 2016-02-05 19:09:50 +05:30