From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40557) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zgla2-00082X-79 for qemu-devel@nongnu.org; Mon, 28 Sep 2015 23:27:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZglZy-0004mA-Vz for qemu-devel@nongnu.org; Mon, 28 Sep 2015 23:27:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48832) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZglZy-0004m6-P2 for qemu-devel@nongnu.org; Mon, 28 Sep 2015 23:27:46 -0400 From: Eric Blake Date: Mon, 28 Sep 2015 21:27:26 -0600 Message-Id: <1443497249-15361-14-git-send-email-eblake@redhat.com> In-Reply-To: <1443497249-15361-1-git-send-email-eblake@redhat.com> References: <1443497249-15361-1-git-send-email-eblake@redhat.com> Subject: [Qemu-devel] [PATCH v6 13/16] qapi: Consistent generated code: prefer common indentation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Michael Roth , marcandre.lureau@redhat.com, armbru@redhat.com, ehabkost@redhat.com We had some pointless differences in the generated code for visit, command marshalling, and events; unifying them makes it easier for future patches to consolidate to common helper functions. This is patch 4/4, focusing on adjusting gen_visit_union() to use the same indentation as other functions, namely, by jumping early to the error label if the object was not set rather than placing the rest of the body inside an if for when it is set. No change in semantics to the generated code. Signed-off-by: Eric Blake --- v6: split 9/46 into four patches, update docs where they are affected, rebase with 7/46 placed later in series Signed-off-by: Eric Blake --- scripts/qapi-visit.py | 53 ++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py index a5d7be1..3b1e7b0 100644 --- a/scripts/qapi-visit.py +++ b/scripts/qapi-visit.py @@ -264,16 +264,18 @@ void visit_type_%(c_name)s(Visitor *v, %(c_name)s **obj, const char *name, Error if (err) { goto out; } - if (*obj) { + if (!*obj) { + goto out_obj; + } ''', c_name=c_name(name), name=name) if base: ret += mcgen(''' - visit_type_%(c_name)s_fields(v, obj, &err); - if (err) { - goto out_obj; - } + visit_type_%(c_name)s_fields(v, obj, &err); + if (err) { + goto out_obj; + } ''', c_name=c_name(name)) @@ -282,14 +284,14 @@ void visit_type_%(c_name)s(Visitor *v, %(c_name)s **obj, const char *name, Error # we pointlessly use a different key for simple unions tag_key = 'type' ret += mcgen(''' - visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, "%(name)s", &err); - if (err) { - goto out_obj; - } - if (!visit_start_union(v, !!(*obj)->data, &err) || err) { - goto out_obj; - } - switch ((*obj)->%(c_name)s) { + visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, "%(name)s", &err); + if (err) { + goto out_obj; + } + if (!visit_start_union(v, !!(*obj)->data, &err) || err) { + goto out_obj; + } + switch ((*obj)->%(c_name)s) { ''', c_type=variants.tag_member.type.c_name(), # TODO ugly special case for simple union @@ -302,37 +304,36 @@ void visit_type_%(c_name)s(Visitor *v, %(c_name)s **obj, const char *name, Error # TODO ugly special case for simple union simple_union_type = var.simple_union_type() ret += mcgen(''' - case %(case)s: + case %(case)s: ''', case=c_enum_const(variants.tag_member.type.name, var.name)) if simple_union_type: ret += mcgen(''' - visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, "data", &err); + visit_type_%(c_type)s(v, &(*obj)->%(c_name)s, "data", &err); ''', c_type=simple_union_type.c_name(), c_name=c_name(var.name)) else: ret += mcgen(''' - visit_type_implicit_%(c_type)s(v, &(*obj)->%(c_name)s, &err); + visit_type_implicit_%(c_type)s(v, &(*obj)->%(c_name)s, &err); ''', c_type=var.type.c_name(), c_name=c_name(var.name)) ret += mcgen(''' - break; + break; ''') ret += mcgen(''' - default: - abort(); - } - out_obj: - error_propagate(errp, err); - err = NULL; - visit_end_union(v, !!(*obj)->data, &err); - error_propagate(errp, err); - err = NULL; + default: + abort(); } + out_obj: + error_propagate(errp, err); + err = NULL; + visit_end_union(v, !!(*obj)->data, &err); + error_propagate(errp, err); + err = NULL; visit_end_struct(v, &err); out: error_propagate(errp, err); -- 2.4.3