From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59660) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UwUcR-00020h-10 for qemu-devel@nongnu.org; Tue, 09 Jul 2013 05:54:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UwUcO-0007UC-UR for qemu-devel@nongnu.org; Tue, 09 Jul 2013 05:53:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51560) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UwUcO-0007U5-JN for qemu-devel@nongnu.org; Tue, 09 Jul 2013 05:53:56 -0400 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r699rtvj006258 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 9 Jul 2013 05:53:56 -0400 From: Kevin Wolf Date: Tue, 9 Jul 2013 11:53:29 +0200 Message-Id: <1373363617-4723-4-git-send-email-kwolf@redhat.com> In-Reply-To: <1373363617-4723-1-git-send-email-kwolf@redhat.com> References: <1373363617-4723-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [RFC PATCH 03/11] qapi-visit.py: Split off generate_visit_struct_fields() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, armbru@redhat.com, stefanha@redhat.com, lcapitulino@redhat.com Signed-off-by: Kevin Wolf --- scripts/qapi-visit.py | 62 ++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py index 6cac05a..a337d80 100644 --- a/scripts/qapi-visit.py +++ b/scripts/qapi-visit.py @@ -17,34 +17,9 @@ import os import getopt import errno -def generate_visit_struct_body(field_prefix, name, members): - ret = mcgen(''' -if (!error_is_set(errp)) { -''') - push_indent() - - if len(field_prefix): - field_prefix = field_prefix + "." - ret += mcgen(''' -Error **errp = &err; /* from outer scope */ -Error *err = NULL; -visit_start_struct(m, NULL, "", "%(name)s", 0, &err); -''', - name=name) - else: - ret += mcgen(''' -Error *err = NULL; -visit_start_struct(m, (void **)obj, "%(name)s", name, sizeof(%(name)s), &err); -''', - name=name) +def generate_visit_struct_fields(field_prefix, members): + ret = '' - ret += mcgen(''' -if (!err) { - if (!obj || *obj) { -''') - - push_indent() - push_indent() for argname, argentry, optional, structured in parse_args(members): if optional: ret += mcgen(''' @@ -72,9 +47,40 @@ visit_type_%(type)s(m, obj ? &(*obj)->%(c_prefix)s%(c_name)s : NULL, "%(name)s", visit_end_optional(m, &err); ''') - pop_indent() + return ret + + +def generate_visit_struct_body(field_prefix, name, members): + ret = mcgen(''' +if (!error_is_set(errp)) { +''') + push_indent() + + if len(field_prefix): + field_prefix = field_prefix + "." + ret += mcgen(''' +Error **errp = &err; /* from outer scope */ +Error *err = NULL; +visit_start_struct(m, NULL, "", "%(name)s", 0, &err); +''', + name=name) + else: + ret += mcgen(''' +Error *err = NULL; +visit_start_struct(m, (void **)obj, "%(name)s", name, sizeof(%(name)s), &err); +''', + name=name) + ret += mcgen(''' +if (!err) { + if (!obj || *obj) { +''') + push_indent() + push_indent() + ret += generate_visit_struct_fields(field_prefix, members) + pop_indent() + ret += mcgen(''' error_propagate(errp, err); err = NULL; } -- 1.8.1.4