From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:45933) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFuZC-0006M4-Os for qemu-devel@nongnu.org; Wed, 13 Mar 2013 18:54:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UFuZA-0000I3-NF for qemu-devel@nongnu.org; Wed, 13 Mar 2013 18:54:38 -0400 Received: from e39.co.us.ibm.com ([32.97.110.160]:41078) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFuZA-0000Hw-GK for qemu-devel@nongnu.org; Wed, 13 Mar 2013 18:54:36 -0400 Received: from /spool/local by e39.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 13 Mar 2013 16:54:35 -0600 Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by d01dlp03.pok.ibm.com (Postfix) with ESMTP id 53CF5C9001A for ; Wed, 13 Mar 2013 18:54:30 -0400 (EDT) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r2DMsUUK298418 for ; Wed, 13 Mar 2013 18:54:30 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r2DMsTVE003733 for ; Wed, 13 Mar 2013 19:54:29 -0300 Message-ID: <514103A5.9070803@linux.vnet.ibm.com> Date: Wed, 13 Mar 2013 18:54:29 -0400 From: Stefan Berger MIME-Version: 1.0 References: <1363200988-17865-1-git-send-email-jschopp@linux.vnet.ibm.com> <1363200988-17865-3-git-send-email-jschopp@linux.vnet.ibm.com> In-Reply-To: <1363200988-17865-3-git-send-email-jschopp@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/9] qapi_c_arrays.diff List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Joel Schopp , Michael Roth Cc: Paolo Bonzini , qemu-devel@nongnu.org, Michael Tsirkin On 03/13/2013 02:56 PM, Joel Schopp wrote: > Forward ported Mike's previously sent patch > (see http://lists.gnu.org/archive/html/qemu-devel/2012-10/msg05782.html ) in my > series since it implements a qapi array interface the ASN.1 BER visitor needs. > > Generally these will be serialized into lists, but the > representation can be of any form so long as it can > be deserialized into a single-dimension C array. > > Cc: Michael Tsirkin > Cc: Paolo Bonzini > Signed-off-by: Michael Roth > Signed-off-by: Joel Schopp > --- > include/qapi/visitor-impl.h | 4 ++++ > include/qapi/visitor.h | 4 ++++ > qapi/qapi-visit-core.c | 25 +++++++++++++++++++++++++ > 3 files changed, 33 insertions(+) > > +++ b/include/qapi/visitor.h > @@ -51,5 +51,9 @@ void visit_type_size(Visitor *v, uint64_t *obj, const char *name, Error **errp); > void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp); > void visit_type_str(Visitor *v, char **obj, const char *name, Error **errp); > void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp); > +void visit_start_carray(Visitor *v, void **obj, const char *name, > + size_t elem_count, size_t elem_size, Error **errp); > +void visit_next_carray(Visitor *v, Error **errp); > +void visit_end_carray(Visitor *v, Error **errp); > > #endif > diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c > index 401ee6e..d9982f8 100644 > --- a/qapi/qapi-visit-core.c > +++ b/qapi/qapi-visit-core.c > @@ -313,3 +313,28 @@ void input_type_enum(Visitor *v, int *obj, const char *strings[], > g_free(enum_str); > *obj = value; > } > + > +void visit_start_carray(Visitor *v, void **obj, const char *name, > + size_t elem_count, size_t elem_size, Error **errp) > +{ > + g_assert(v->start_carray); > + if (!error_is_set(errp)) { > + v->start_carray(v, obj, name, elem_count, elem_size, errp); > + } So this is a c-like array with a given number of elements and each element having to have the same size? As long as all use cases for QEMU can live with this, I guess it's fine, though an array of sized buffers, each with different size, may be more 'general'. How many other callers are there so that we can talk about disparities between visitors as mentioned in the comment in 5/9? At least we would have immediate callers for the sized buffer interface. http://lists.gnu.org/archive/html/qemu-devel/2013-03/msg02254.html Regards, Stefan