[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.
- Re: [Qemu-devel] [PATCH v9 05/37] vl: Improve use of qapi visitor, (continued)
[Qemu-devel] [PATCH v9 03/37] qapi: Drop dead dealloc visitor variable, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 01/37] qobject: Document more shortcomings in our number handling, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 13/37] qom: Use typedef for Visitor, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 02/37] qapi: Avoid use of misnamed DO_UPCAST(), Eric Blake, 2016/01/19
- Re: [Qemu-devel] [PATCH v9 02/37] qapi: Avoid use of misnamed DO_UPCAST(),
Markus Armbruster <=
[Qemu-devel] [PATCH v9 12/37] qapi: Don't cast Enum* to int*, Eric Blake, 2016/01/19
[Qemu-devel] [PATCH v9 10/37] qapi: Make all visitors supply uint64 callbacks, Eric Blake, 2016/01/19