From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:36307) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SWmaG-0005yX-Br for qemu-devel@nongnu.org; Tue, 22 May 2012 06:44:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SWmaD-0007AO-TB for qemu-devel@nongnu.org; Tue, 22 May 2012 06:44:55 -0400 Received: from mx1.redhat.com ([209.132.183.28]:14798) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SWmaD-0007A1-LZ for qemu-devel@nongnu.org; Tue, 22 May 2012 06:44:53 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q4MAiqqW025785 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 22 May 2012 06:44:52 -0400 From: Laszlo Ersek Date: Tue, 22 May 2012 12:45:41 +0200 Message-Id: <1337683555-13301-3-git-send-email-lersek@redhat.com> In-Reply-To: <1337683555-13301-1-git-send-email-lersek@redhat.com> References: <1337683555-13301-1-git-send-email-lersek@redhat.com> Subject: [Qemu-devel] [PATCH 02/16] qapi: introduce "size" type List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, lersek@redhat.com Signed-off-by: Laszlo Ersek --- qapi/qapi-visit-core.h | 4 ++++ qapi/qapi-visit-core.c | 7 +++++++ scripts/qapi.py | 2 +- 3 files changed, 12 insertions(+), 1 deletions(-) diff --git a/qapi/qapi-visit-core.h b/qapi/qapi-visit-core.h index e850746..bab2fec 100644 --- a/qapi/qapi-visit-core.h +++ b/qapi/qapi-visit-core.h @@ -39,6 +39,9 @@ struct Visitor const char *kind, const char *name, Error **errp); void (*type_int)(Visitor *v, int64_t *obj, const char *name, Error **errp); + /* visit_type_size() falls back to (*type_int)() if type_size is unset */ + void (*type_size)(Visitor *v, int64_t *obj, const char *name, + Error **errp); void (*type_bool)(Visitor *v, bool *obj, const char *name, Error **errp); void (*type_str)(Visitor *v, char **obj, const char *name, Error **errp); void (*type_number)(Visitor *v, double *obj, const char *name, @@ -69,6 +72,7 @@ void visit_end_optional(Visitor *v, Error **errp); void visit_type_enum(Visitor *v, int *obj, const char *strings[], const char *kind, const char *name, Error **errp); void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp); +void visit_type_size(Visitor *v, int64_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); diff --git a/qapi/qapi-visit-core.c b/qapi/qapi-visit-core.c index df1ed5c..ea31cf5 100644 --- a/qapi/qapi-visit-core.c +++ b/qapi/qapi-visit-core.c @@ -95,6 +95,13 @@ void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp) } } +void visit_type_size(Visitor *v, int64_t *obj, const char *name, Error **errp) +{ + if (!error_is_set(errp)) { + (v->type_size ? v->type_size : v->type_int)(v, obj, name, errp); + } +} + void visit_type_bool(Visitor *v, bool *obj, const char *name, Error **errp) { if (!error_is_set(errp)) { diff --git a/scripts/qapi.py b/scripts/qapi.py index e062336..6aebb0f 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -157,7 +157,7 @@ def is_enum(name): def c_type(name): if name == 'str': return 'char *' - elif name == 'int': + elif name == 'int' or name == 'size': return 'int64_t' elif name == 'bool': return 'bool' -- 1.7.1