qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v9 02/37] qapi: Avoid use of misnamed DO_UPCAST(


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v9 02/37] qapi: Avoid use of misnamed DO_UPCAST()
Date: Wed, 20 Jan 2016 11:04:14 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Eric Blake <address@hidden> writes:

> The macro DO_UPCAST() is incorrectly named: it converts from a
> parent class to a derived class (which is a downcast).  Better,
> and more consistent with some of the other qapi visitors, is
> to use the container_of() macro through a to_FOO() helper.
>
> Our current definition of container_of() is weaker than
> DO_UPCAST(), in that it does not require the derived class to
> have Visitor as its first member, but this does not hurt our
> usage patterns in qapi visitors.
>
> Signed-off-by: Eric Blake <address@hidden>
> Reviewed-by: Marc-André Lureau <address@hidden>
>
> ---
> v9: no change
> v8: no change
> v7: new patch
> ---
>  qapi/opts-visitor.c          | 28 +++++++++++++++++-----------
>  qapi/string-input-visitor.c  | 23 ++++++++++++++---------
>  qapi/string-output-visitor.c | 21 +++++++++++++--------
>  3 files changed, 44 insertions(+), 28 deletions(-)
>
> diff --git a/qapi/opts-visitor.c b/qapi/opts-visitor.c
> index ef5fb8b..dd4094c 100644
> --- a/qapi/opts-visitor.c
> +++ b/qapi/opts-visitor.c
> @@ -89,6 +89,12 @@ struct OptsVisitor
>  };
>
>
> +static OptsVisitor *to_ov(Visitor *v)
> +{
> +    return container_of(v, OptsVisitor, visitor);
> +}
> +
> +

The name to_ov() is rather laconic even for my taste.  Tolerable, since
it's static.

>  static void
>  destroy_list(gpointer list)
>  {
> @@ -121,7 +127,7 @@ static void
>  opts_start_struct(Visitor *v, void **obj, const char *kind,
>                    const char *name, size_t size, Error **errp)
>  {
> -    OptsVisitor *ov = DO_UPCAST(OptsVisitor, visitor, v);
> +    OptsVisitor *ov = to_ov(v);
>      const QemuOpt *opt;
>
>      if (obj) {

Much clearer!

[...]

Patch gets rid of all DO_UPCAST() in qapi/.  PATCH 33 brings one back;
it should use to_ov() instead.



reply via email to

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