qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v5 35/46] qapi-visit: Remove redundant functions


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH v5 35/46] qapi-visit: Remove redundant functions for flat union base
Date: Wed, 23 Sep 2015 14:55:43 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

On 09/21/2015 03:57 PM, Eric Blake wrote:
> The code for visiting the base class of a child struct created
> visit_type_Base_fields(); the code for visiting the base class
> of a flat union created visit_type_Union_fields(). If the same
> type is shared between a struct and a union, the two functions
> differed only by whether they visited the discriminator used by
> the union. But if the base class always visits all its fields,
> then we don't need to revisit the discriminator specially for
> a union.  By consistently visiting the base class fields under
> the name of the base class, we can eliminate some redundant
> code.
> 
> Now that gen_visit_struct_fields() can potentially collect more
> than one function into 'ret', a regular expression searching for
> whether a label was used may hit a false positive within the
> body of the first function.  But using a regex was overkill,
> since we can easily determine when we jumped to a label.
> 

>      visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, "%(name)s", &err);
> -    if (err) {
> -        goto out_obj;
> -    }
> -    switch ((*obj)->%(c_name)s) {
>  ''',
> -                 c_type=variants.tag_member.type.c_name(),
> -                 c_name=c_name(tag_key), name=tag_key)
> +                     c_type=variants.tag_member.type.c_name(),
> +                     c_name=c_name(tag_key), name=tag_key)
> +    ret += mcgen('''
> +        if (err) {
> +            goto out_obj;
> +        }
> +        switch ((*obj)->%(c_name)s) {

Rebase snafu - I botched the generated indentation within this mcgen()
by 4 spaces. Shouldn't affect a technical review, and I will fix it up
for v6.

-- 
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]