From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52933) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yn584-0001qN-SG for qemu-devel@nongnu.org; Tue, 28 Apr 2015 09:00:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yn57z-0004kN-80 for qemu-devel@nongnu.org; Tue, 28 Apr 2015 09:00:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45157) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yn57y-0004jw-MG for qemu-devel@nongnu.org; Tue, 28 Apr 2015 09:00:43 -0400 From: Markus Armbruster References: <1428206887-7921-1-git-send-email-eblake@redhat.com> <1428206887-7921-33-git-send-email-eblake@redhat.com> Date: Tue, 28 Apr 2015 15:00:39 +0200 In-Reply-To: <1428206887-7921-33-git-send-email-eblake@redhat.com> (Eric Blake's message of "Sat, 4 Apr 2015 22:08:03 -0600") Message-ID: <87wq0wpfuw.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH v6 32/36] qapi: Drop tests for inline nested structs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: kwolf@redhat.com, berto@igalia.co, qemu-devel@nongnu.org Eric Blake 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 > Reviewed-by: Markus Armbruster [...] > 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 R-by stands all the same.