From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37346) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIkFW-0007SN-UE for qemu-devel@nongnu.org; Thu, 21 Mar 2013 14:30:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UIkFO-0001jP-LX for qemu-devel@nongnu.org; Thu, 21 Mar 2013 14:30:02 -0400 Received: from e39.co.us.ibm.com ([32.97.110.160]:38596) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UIkFO-0001jG-E0 for qemu-devel@nongnu.org; Thu, 21 Mar 2013 14:29:54 -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 ; Thu, 21 Mar 2013 12:29:53 -0600 Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by d01dlp01.pok.ibm.com (Postfix) with ESMTP id CACF938C8047 for ; Thu, 21 Mar 2013 14:29:50 -0400 (EDT) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay05.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r2LIToba332334 for ; Thu, 21 Mar 2013 14:29:50 -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 r2LITnax009241 for ; Thu, 21 Mar 2013 15:29:50 -0300 From: Stefan Berger Date: Thu, 21 Mar 2013 14:29:26 -0400 Message-Id: <1363890571-15146-5-git-send-email-stefanb@linux.vnet.ibm.com> In-Reply-To: <1363890571-15146-1-git-send-email-stefanb@linux.vnet.ibm.com> References: <1363890571-15146-1-git-send-email-stefanb@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH v4 4/9] QAPI: add type_sized_buffer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: stefanb@linux.vnet.ibm.com, qemu-devel@nongnu.org, anthony@codemonkey.ws Cc: jschopp@linux.vnet.ibm.com, coreyb@linux.vnet.ibm.com, mdroth@linux.vnet.ibm.com, mst@redhat.com Add a sized buffer interface to qapi for serializing and deserializing of u8[], u16[], u32[] and u64[] with proper handling of endianess. Cc: Michael Roth Cc: Michael Tsirkin Signed-off-by: Stefan Berger Signed-off-by: Joel Schopp --- include/qapi/visitor-impl.h | 3 +++ include/qapi/visitor.h | 3 +++ qapi/qapi-visit-core.c | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/include/qapi/visitor-impl.h b/include/qapi/visitor-impl.h index 5159964..be4e5ab 100644 --- a/include/qapi/visitor-impl.h +++ b/include/qapi/visitor-impl.h @@ -34,6 +34,9 @@ struct Visitor void (*type_str)(Visitor *v, char **obj, const char *name, Error **errp); void (*type_number)(Visitor *v, double *obj, const char *name, Error **errp); + void (*type_sized_buffer)(Visitor *v, void **obj, const char *name, + size_t elem_count, size_t elem_size, + Error **errp); /* May be NULL */ void (*start_optional)(Visitor *v, bool *present, const char *name, diff --git a/include/qapi/visitor.h b/include/qapi/visitor.h index 1fef18c..66ba4bf 100644 --- a/include/qapi/visitor.h +++ b/include/qapi/visitor.h @@ -51,5 +51,8 @@ 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_type_sized_buffer(Visitor *v, void **obj, const char *name, + size_t elem_counter, size_t elem_size, + Error **errp); #endif diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index 401ee6e..374c0ff 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -313,3 +313,11 @@ void input_type_enum(Visitor *v, int *obj, const char *strings[], g_free(enum_str); *obj = value; } + +void visit_type_sized_buffer(Visitor *v, void **obj, const char *name, + size_t elem_count, size_t elem_size, Error **errp) +{ + if (!error_is_set(errp)) { + v->type_sized_buffer(v, obj, name, elem_count, elem_size, errp); + } +} -- 1.7.11.7