OSDN Git Service

qapi-visit: Expose visit_type_FOO_members()
authorEric Blake <eblake@redhat.com>
Thu, 3 Mar 2016 16:16:45 +0000 (09:16 -0700)
committerMarkus Armbruster <armbru@redhat.com>
Sat, 5 Mar 2016 09:41:13 +0000 (10:41 +0100)
commit4d91e9115cc6700113e772b19d1f39bbcf345977
tree52474888aa32ccebdafe2d6c380f4f0f52309553
parentc81200b01422783cd29796ef4ccc275d05f9ce67
qapi-visit: Expose visit_type_FOO_members()

Dan Berrange reported a case where he needs to work with a
QCryptoBlockOptions union type using the OptsVisitor, but only
visit one of the branches of that type (the discriminator is not
visited directly, but learned externally).  When things were
boxed, it was easy: just visit the variant directly, which took
care of both allocating the variant and visiting its members, then
store that pointer in the union type.  But now that things are
unboxed, we need a way to visit the members without allocation,
done by exposing visit_type_FOO_members() to the user.

Before the patch, we had quite a bit of code associated with
object_members_seen to make sure that a declaration of the helper
was in scope before any use of the function.  But now that the
helper is public and declared in the header, the .c file no
longer needs to worry about topological sorting (the helper is
always in scope), which leads to some nice cleanups.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1457021813-10704-4-git-send-email-eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
scripts/qapi-visit.py