From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49718) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WC4jq-0007Yy-MC for qemu-devel@nongnu.org; Sat, 08 Feb 2014 05:02:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WC4ji-0004G1-9o for qemu-devel@nongnu.org; Sat, 08 Feb 2014 05:02:18 -0500 Received: from mail-ea0-x22f.google.com ([2a00:1450:4013:c01::22f]:33979) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WC4ji-0004Fm-3S for qemu-devel@nongnu.org; Sat, 08 Feb 2014 05:02:10 -0500 Received: by mail-ea0-f175.google.com with SMTP id z10so2006859ead.34 for ; Sat, 08 Feb 2014 02:02:09 -0800 (PST) Received: from yakj.usersys.redhat.com.cz (auth47-172.fi.muni.cz. [147.251.47.172]) by mx.google.com with ESMTPSA id k41sm27156087een.19.2014.02.08.02.02.06 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 08 Feb 2014 02:02:07 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Sat, 8 Feb 2014 11:01:44 +0100 Message-Id: <1391853717-3837-2-git-send-email-pbonzini@redhat.com> In-Reply-To: <1391853717-3837-1-git-send-email-pbonzini@redhat.com> References: <1391853717-3837-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 01/14] qapi: add size parser to StringInputVisitor List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Signed-off-by: Paolo Bonzini --- qapi/string-input-visitor.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/qapi/string-input-visitor.c b/qapi/string-input-visitor.c index 8f1bc41..793548a 100644 --- a/qapi/string-input-visitor.c +++ b/qapi/string-input-visitor.c @@ -14,6 +14,7 @@ #include "qapi/string-input-visitor.h" #include "qapi/visitor-impl.h" #include "qapi/qmp/qerror.h" +#include "qemu/option.h" struct StringInputVisitor { @@ -41,6 +42,28 @@ static void parse_type_int(Visitor *v, int64_t *obj, const char *name, *obj = val; } +static void parse_type_size(Visitor *v, uint64_t *obj, const char *name, + Error **errp) +{ + StringInputVisitor *siv = DO_UPCAST(StringInputVisitor, visitor, v); + Error *err = NULL; + uint64_t val; + + if (siv->string) { + parse_option_size(name, siv->string, &val, &err); + } else { + error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null", + "size"); + return; + } + if (err) { + error_propagate(errp, err); + return; + } + + *obj = val; +} + static void parse_type_bool(Visitor *v, bool *obj, const char *name, Error **errp) { @@ -128,6 +151,7 @@ StringInputVisitor *string_input_visitor_new(const char *str) v->visitor.type_enum = input_type_enum; v->visitor.type_int = parse_type_int; + v->visitor.type_size = parse_type_size; v->visitor.type_bool = parse_type_bool; v->visitor.type_str = parse_type_str; v->visitor.type_number = parse_type_number; -- 1.8.5.3