From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43225) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vdtfd-0002wN-E3 for qemu-devel@nongnu.org; Tue, 05 Nov 2013 22:20:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VdtfV-0005xP-2E for qemu-devel@nongnu.org; Tue, 05 Nov 2013 22:20:41 -0500 Received: from e23smtp07.au.ibm.com ([202.81.31.140]:58650) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VdtfU-0005xC-6J for qemu-devel@nongnu.org; Tue, 05 Nov 2013 22:20:32 -0500 Received: from /spool/local by e23smtp07.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 6 Nov 2013 13:20:09 +1000 Received: from d23relay05.au.ibm.com (d23relay05.au.ibm.com [9.190.235.152]) by d23dlp03.au.ibm.com (Postfix) with ESMTP id 2E5173578054 for ; Wed, 6 Nov 2013 14:20:08 +1100 (EST) Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay05.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id rA632SgN58720468 for ; Wed, 6 Nov 2013 14:02:29 +1100 Received: from d23av04.au.ibm.com (localhost [127.0.0.1]) by d23av04.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id rA63K7ng032327 for ; Wed, 6 Nov 2013 14:20:07 +1100 Message-ID: <5279B568.5070906@linux.vnet.ibm.com> Date: Wed, 06 Nov 2013 11:20:08 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1383611860-9053-1-git-send-email-xiawenc@linux.vnet.ibm.com> <1383611860-9053-8-git-send-email-xiawenc@linux.vnet.ibm.com> <5278F56E.70104@redhat.com> In-Reply-To: <5278F56E.70104@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH RFC 07/10] qapi script: support direct inheritance for struct List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake , qemu-devel@nongnu.org Cc: kwolf@redhat.com, pbonzini@redhat.com, armbru@redhat.com, lcapitulino@redhat.com 于 2013/11/5 21:41, Eric Blake 写道: > On 11/04/2013 05:37 PM, Wenchao Xia wrote: >> Now it is possible to inherit another struct inside data directly, >> which saves trouble to define trivial structure. >> >> Signed-off-by: Wenchao Xia >> --- >> docs/qapi-code-gen.txt | 21 +++++++++++++++++++++ >> scripts/qapi-visit.py | 14 ++++++++++---- >> 2 files changed, 31 insertions(+), 4 deletions(-) >> >> diff --git a/docs/qapi-code-gen.txt b/docs/qapi-code-gen.txt >> index 0728f36..3e42ff4 100644 >> --- a/docs/qapi-code-gen.txt >> +++ b/docs/qapi-code-gen.txt >> @@ -70,6 +70,27 @@ both fields like this: >> { "file": "/some/place/my-image", >> "backing": "/some/place/my-backing-file" } >> >> +It is possible to directly inherit other struct by keyword '_base': >> + >> + { 'type': 'NetworkConnectionInfo', 'data': { 'host': 'str', 'service': 'str' } } >> + { 'type': 'VncConnectionInfo', >> + 'data': { >> + 'server': { >> + '_base': 'NetworkConnectionInfo', > > Interesting idea for shorthand. However, I would suggest that you pick > a different character than '_', since '_' is valid in names. That is, > we already have special handling of leading '*' to mark a field as > optional, so I suggest something like '^' to mark a base class. By > using a non-name character, it becomes more obvious that the leading > character has a special meaning to the qapi generator. > > I'm also not convinced yet that we want this shorthand; in particular, > I'm worried whether it will make the introspection patches harder to write. > I am not sure about this approach either, so put RFC tag on it. The purpose is allow not to define structures that would be only used once. What instrospection patch do you mean? Python instrospection mechnism? You mean there is a python utility which recognize only keyword "base" now?