qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v6 32/36] qapi: Drop tests for inline nested str


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v6 32/36] qapi: Drop tests for inline nested structs
Date: Tue, 28 Apr 2015 15:00:39 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Eric Blake <address@hidden> writes:

> A future patch will be using a 'name':{dictionary} entry in the
> QAPI schema to specify a default value for an optional argument;
> but existing use of inline nested structs conflicts with that goal.
>
> More precisely, a definition in the QAPI schema associates a name
> with a set of properties:
>
> Example 1: { 'struct': 'Foo', 'data': { MEMBERS... } }
> associates the global name 'Foo' with properties (meta-type struct)
> and MEMBERS...
>
> Example 2: 'mumble': TYPE
> within MEMBERS... above associates 'mumble' with properties (type
> TYPE) and (optional false) within type Foo
>
> The syntax of example 1 is extensible; if we need another property,
> we add another name/value pair to the dictionary (such as
> 'base':TYPE).  The syntax of example 2 is not extensible, because
> the right hand side can only be a type.
>
> We have used name encoding to add a property: "'*mumble': 'int'"
> associates 'mumble' with (type int) and (optional true).  Nice,
> but doesn't scale.  So the solution is to change our existing uses
> to be syntactic sugar to an extensible form:
>
>    NAME: TYPE   --> NAME:  { 'type': TYPE, 'optional': false }
>    *ONAME: TYPE --> ONAME: { 'type': TYPE, 'optional': true }
>
> This patch fixes the testsuite to avoid inline nested types, by
> breaking the nesting into explicit types; it means that the type
> is now boxed instead of unboxed in C code, but makes no difference
> on the wire (and if desired, a later patch could change the
> generator to not do so much boxing in C).  When touching code to
> add new allocations, also convert existing allocations to
> consistently prefer typesafe g_new0 over g_malloc0 when a type
> name is involved.
>
> Signed-off-by: Eric Blake <address@hidden>
> Reviewed-by: Markus Armbruster <address@hidden>
[...]
> diff --git a/tests/test-visitor-serialization.c 
> b/tests/test-visitor-serialization.c
> index 1ccaaa9..52c8d1a 100644
> --- a/tests/test-visitor-serialization.c
> +++ b/tests/test-visitor-serialization.c
> @@ -1,7 +1,7 @@
>  /*
>   * Unit-tests for visitor-based serialization
>   *
> - * Copyright IBM, Corp. 2012
> + * Copyright IBM, Corp. 2012, 2015

More accurate would be:

  - * Copyright IBM, Corp. 2012,2013
  + * Copyright IBM, Corp. 2014, 2015
  + * Copyright (C) 2014, 2015 Red Hat Inc.

>   *
>   * Authors:
>   *  Michael Roth <address@hidden>

R-by stands all the same.



reply via email to

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