From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:43330) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ULBAK-0006A7-4c for qemu-devel@nongnu.org; Thu, 28 Mar 2013 07:38:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ULBAG-0006B9-Mt for qemu-devel@nongnu.org; Thu, 28 Mar 2013 07:38:44 -0400 Received: from e8.ny.us.ibm.com ([32.97.182.138]:59383) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ULBAG-0006Az-Jc for qemu-devel@nongnu.org; Thu, 28 Mar 2013 07:38:40 -0400 Received: from /spool/local by e8.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 28 Mar 2013 07:38:40 -0400 Received: from d01relay06.pok.ibm.com (d01relay06.pok.ibm.com [9.56.227.116]) by d01dlp03.pok.ibm.com (Postfix) with ESMTP id 65BB3C9001A for ; Thu, 28 Mar 2013 07:38:37 -0400 (EDT) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay06.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r2SBcbCS29491274 for ; Thu, 28 Mar 2013 07:38:37 -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 r2SBcawT020965 for ; Thu, 28 Mar 2013 08:38:37 -0300 From: Stefan Berger Date: Thu, 28 Mar 2013 07:38:15 -0400 Message-Id: <1364470699-16223-5-git-send-email-stefanb@linux.vnet.ibm.com> In-Reply-To: <1364470699-16223-1-git-send-email-stefanb@linux.vnet.ibm.com> References: <1364470699-16223-1-git-send-email-stefanb@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH v5 4/8] 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