qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH RFC v4 02.5/32] qapi: Hide internal data members


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH RFC v4 02.5/32] qapi: Hide internal data members of schema objects.
Date: Sat, 5 Sep 2015 07:19:27 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0

On 09/04/2015 05:51 PM, Eric Blake wrote:
> We have a few fields that exist mainly to hold information from
> __init__() until check() (matching the fact that parsing is
> two-pass; the first to find type names, the second to associate
> types together while honoring forward references), or which should
> only be used through accessor methods.  We should not use these
> fields directly in other files after check() has run, so use the
> python convention of naming these fields with leading underscore
> to mark their internal usage, and to check that no one else was
> using them.
> 
> Exception: our crazy handling of simple unions (with a C member
> 'kind' matching the QMP wire 'type') requires peeking through
> the hidden field.  This leaky abstraction will be cleaned up in
> a later patch.
> 
> Signed-off-by: Eric Blake <address@hidden>
> ---
> 
> Technically, I wrote this patch after 32; if you decide to rebase
> it into the series, you'll have to split it among 2, 10, 11, and 30.
> Up to you if you want to squash this in during your spin of v5, or
> if you want me to keep it as a separate patch for inclusion after
> your series.

Oh, and tests/qapi-schema/test-qapi.py is annoying - even when it exits
non-zero, it does NOT cause a failure in 'make check-qapi-schema'.
You'll need to additionally consider squashing this in to 5:

diff --git i/tests/qapi-schema/test-qapi.py w/tests/qapi-schema/test-qapi.py
index 471f8e1..0fc0622 100644
--- i/tests/qapi-schema/test-qapi.py
+++ w/tests/qapi-schema/test-qapi.py
@@ -40,8 +40,9 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
     @staticmethod
     def _print_variants(variants):
         if variants:
-            if variants.tag_name:
-                print '    tag %s' % variants.tag_name
+            # TODO: fix simple unions so we don't have to look at _tag_name
+            if variants._tag_name:
+                print '    tag %s' % variants.tag_member.name
             for v in variants.variants:
                 print '    case %s: %s' % (v.name, v.type.name)


-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]