[{"id":1819643,"web_url":"http://patchwork.ozlabs.org/comment/1819643/","msgid":"<87o9n51rgr.fsf@dusky.pond.sub.org>","list_archive_url":null,"date":"2017-12-11T10:36:36","subject":"Re: [Qemu-devel] [PATCH v3 26/50] qapi: add 'if' on union variants","submitter":{"id":2645,"url":"http://patchwork.ozlabs.org/api/people/2645/","name":"Markus Armbruster","email":"armbru@redhat.com"},"content":"Marc-André Lureau <marcandre.lureau@redhat.com> writes:\n\n> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>\n> ---\n>  scripts/qapi.py                         | 15 ++++++++++-----\n>  tests/qapi-schema/qapi-schema-test.json |  7 ++++++-\n>  tests/qapi-schema/qapi-schema-test.out  |  8 ++++++++\n>  tests/qapi-schema/test-qapi.py          |  5 ++++-\n>  4 files changed, 28 insertions(+), 7 deletions(-)\n>\n> diff --git a/scripts/qapi.py b/scripts/qapi.py\n> index 15711f96fa..2f14edfa1f 100644\n> --- a/scripts/qapi.py\n> +++ b/scripts/qapi.py\n> @@ -1412,8 +1412,8 @@ class QAPISchemaObjectTypeVariants(object):\n>  class QAPISchemaObjectTypeVariant(QAPISchemaObjectTypeMember):\n>      role = 'branch'\n>  \n> -    def __init__(self, name, typ):\n> -        QAPISchemaObjectTypeMember.__init__(self, name, typ, False)\n> +    def __init__(self, name, typ, ifcond=None):\n> +        QAPISchemaObjectTypeMember.__init__(self, name, typ, False, ifcond)\n>  \n>  \n>  class QAPISchemaAlternateType(QAPISchemaType):\n> @@ -1674,13 +1674,18 @@ class QAPISchema(object):\n>          return QAPISchemaObjectTypeVariant(case, typ)\n>  \n>      def _make_simple_variant(self, case, typ, info):\n> +        ifcond = None\n> +        if isinstance(typ, dict):\n> +            check_unknown_keys(info, typ, {'type', 'if'})\n> +            ifcond = typ.get('if')\n> +            typ = typ['type']\n>          if isinstance(typ, list):\n>              assert len(typ) == 1\n>              typ = self._make_array_type(typ[0], info)\n>          typ = self._make_implicit_object_type(\n>              typ, info, None, self.lookup_type(typ).ifcond,\n>              'wrapper', [self._make_member('data', typ, info)])\n> -        return QAPISchemaObjectTypeVariant(case, typ)\n> +        return QAPISchemaObjectTypeVariant(case, typ, ifcond)\n>  \n>      def _def_union_type(self, expr, info, doc):\n>          name = expr['union']\n> @@ -1700,8 +1705,8 @@ class QAPISchema(object):\n>          else:\n>              variants = [self._make_simple_variant(key, value, info)\n>                          for (key, value) in data.iteritems()]\n> -            typ = self._make_implicit_enum_type(name, info, ifcond,\n> -                                                [v.name for v in variants])\n> +            values = [{'name': v.name, 'if': v.ifcond} for v in variants]\n> +            typ = self._make_implicit_enum_type(name, info, ifcond, values)\n>              tag_member = QAPISchemaObjectTypeMember('type', typ, False)\n>              members = [tag_member]\n>          self._def_entity(\n> diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json\n> index 5cfccabb3d..895e80a978 100644\n> --- a/tests/qapi-schema/qapi-schema-test.json\n> +++ b/tests/qapi-schema/qapi-schema-test.json\n> @@ -200,9 +200,14 @@\n>    [ 'foo', { 'name' : 'bar', 'if': 'defined(TEST_IF_ENUM_BAR)' } ],\n>    'if': 'defined(TEST_IF_ENUM)' }\n>  \n> -{ 'union': 'TestIfUnion', 'data': { 'foo': 'TestStruct' },\n> +{ 'union': 'TestIfUnion', 'data':\n> +  { 'foo': 'TestStruct',\n> +    'union_bar': { 'type': 'str', 'if': 'defined(TEST_IF_UNION_BAR)'} },\n>    'if': 'defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)' }\n>  \n> +{ 'command': 'TestIfUnionCmd', 'data': { 'union_cmd_arg': 'TestIfUnion' },\n> +  'if': 'defined(TEST_IF_UNION)' }\n> +\n>  { 'alternate': 'TestIfAlternate', 'data': { 'foo': 'int', 'bar': 'TestStruct' },\n>    'if': 'defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT)' }\n>  \n> diff --git a/tests/qapi-schema/qapi-schema-test.out b/tests/qapi-schema/qapi-schema-test.out\n> index 6df4e49c69..ee009c5626 100644\n> --- a/tests/qapi-schema/qapi-schema-test.out\n> +++ b/tests/qapi-schema/qapi-schema-test.out\n> @@ -87,9 +87,14 @@ object TestIfUnion\n>      member type: TestIfUnionKind optional=False\n>      tag type\n>      case foo: q_obj_TestStruct-wrapper\n> +    case union_bar: q_obj_str-wrapper if=defined(TEST_IF_UNION_BAR)\n\nPATCH 22, but I only spotted it here.  We say \"if=COND\" in some places,\n...\n\n>      if defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)\n> +command TestIfUnionCmd q_obj_TestIfUnionCmd-arg -> None\n> +   gen=True success_response=True boxed=False\n> +    if defined(TEST_IF_UNION)\n\n... and \"if COND\" in other places.  I guess the '=' is there to match\nexisting flag printing like optional=BOOL.\n\nI'd prefer less decorated output, i.e. instead of\n\n    enum TestIfEnum\n        member foo:\n        member bar: if=defined(TEST_IF_ENUM_BAR)\n        if defined(TEST_IF_ENUM)\n\nsomething like\n\nenum TestIfEnum\n    member foo\n    member bar\n        if defined(TEST_IF_ENUM_BAR)\n    if defined(TEST_IF_ENUM)\n\nCould touch that up on commit.\n\n>  enum TestIfUnionKind\n>      member foo:\n> +    member union_bar: if=defined(TEST_IF_UNION_BAR)\n>      if defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)\n>  object TestStruct\n>      member integer: int optional=False\n> @@ -235,6 +240,9 @@ object q_obj_TestIfEvent-arg\n>      member foo: TestIfStruct optional=False\n>      member bar: TestIfEnum optional=False if=defined(TEST_IF_EVT_BAR)\n>      if defined(TEST_IF_EVT) && defined(TEST_IF_STRUCT)\n> +object q_obj_TestIfUnionCmd-arg\n> +    member union_cmd_arg: TestIfUnion optional=False\n> +    if defined(TEST_IF_UNION)\n>  object q_obj_TestStruct-wrapper\n>      member data: TestStruct optional=False\n>  object q_obj_UserDefFlatUnion2-base\n> diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py\n> index a86c3b5ee1..87a8efff78 100644\n> --- a/tests/qapi-schema/test-qapi.py\n> +++ b/tests/qapi-schema/test-qapi.py\n> @@ -65,7 +65,10 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):\n>          if variants:\n>              print '    tag %s' % variants.tag_member.name\n>              for v in variants.variants:\n> -                print '    case %s: %s' % (v.name, v.type.name)\n> +                print '    case %s: %s' % (v.name, v.type.name),\n> +                if v.ifcond:\n> +                    print 'if=%s' % v.ifcond,\n> +                print\n>  \n>      @staticmethod\n>      def _print_if(ifcond):","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3ywKCH6VLFz9s7F\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 11 Dec 2017 21:37:13 +1100 (AEDT)","from localhost ([::1]:52123 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1eOLSO-0005pQ-3C\n\tfor incoming@patchwork.ozlabs.org; Mon, 11 Dec 2017 05:37:08 -0500","from eggs.gnu.org ([2001:4830:134:3::10]:41665)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <armbru@redhat.com>) id 1eOLS2-0005pA-25\n\tfor qemu-devel@nongnu.org; Mon, 11 Dec 2017 05:36:47 -0500","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <armbru@redhat.com>) id 1eOLRy-0004Hh-SI\n\tfor qemu-devel@nongnu.org; Mon, 11 Dec 2017 05:36:46 -0500","from mx1.redhat.com ([209.132.183.28]:45018)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <armbru@redhat.com>) id 1eOLRy-0004Fz-Jp\n\tfor qemu-devel@nongnu.org; Mon, 11 Dec 2017 05:36:42 -0500","from smtp.corp.redhat.com\n\t(int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id D385F8553F;\n\tMon, 11 Dec 2017 10:36:40 +0000 (UTC)","from blackfin.pond.sub.org (ovpn-116-74.ams2.redhat.com\n\t[10.36.116.74])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 85AA12D21F;\n\tMon, 11 Dec 2017 10:36:37 +0000 (UTC)","by blackfin.pond.sub.org (Postfix, from userid 1000)\n\tid 15F801138658; Mon, 11 Dec 2017 11:36:36 +0100 (CET)"],"From":"Markus Armbruster <armbru@redhat.com>","To":"=?utf-8?q?Marc-Andr=C3=A9?= Lureau <marcandre.lureau@redhat.com>","References":"<20170911110623.24981-1-marcandre.lureau@redhat.com>\n\t<20170911110623.24981-27-marcandre.lureau@redhat.com>","Date":"Mon, 11 Dec 2017 11:36:36 +0100","In-Reply-To":"<20170911110623.24981-27-marcandre.lureau@redhat.com> (\n\t=?utf-8?b?Ik1hcmMtQW5kcsOp?= Lureau\"'s message of \"Mon,\n\t11 Sep 2017 \t13:05:59 +0200\")","Message-ID":"<87o9n51rgr.fsf@dusky.pond.sub.org>","User-Agent":"Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.15","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.28]);\n\tMon, 11 Dec 2017 10:36:40 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCH v3 26/50] qapi: add 'if' on union variants","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"qemu-devel@nongnu.org, Michael Roth <mdroth@linux.vnet.ibm.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1837342,"web_url":"http://patchwork.ozlabs.org/comment/1837342/","msgid":"<CAJ+F1CLfSa6d=d1iWk6ABuMMnQKwyiJkpO62ZbZU4t_V0DoNUg@mail.gmail.com>","list_archive_url":null,"date":"2018-01-11T21:32:01","subject":"Re: [Qemu-devel] [PATCH v3 26/50] qapi: add 'if' on union variants","submitter":{"id":6442,"url":"http://patchwork.ozlabs.org/api/people/6442/","name":"Marc-André Lureau","email":"marcandre.lureau@gmail.com"},"content":"Hi\n\nOn Mon, Dec 11, 2017 at 11:36 AM, Markus Armbruster <armbru@redhat.com> wrote:\n> Marc-André Lureau <marcandre.lureau@redhat.com> writes:\n>\n>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>\n>> ---\n>>  scripts/qapi.py                         | 15 ++++++++++-----\n>>  tests/qapi-schema/qapi-schema-test.json |  7 ++++++-\n>>  tests/qapi-schema/qapi-schema-test.out  |  8 ++++++++\n>>  tests/qapi-schema/test-qapi.py          |  5 ++++-\n>>  4 files changed, 28 insertions(+), 7 deletions(-)\n>>\n>> diff --git a/scripts/qapi.py b/scripts/qapi.py\n>> index 15711f96fa..2f14edfa1f 100644\n>> --- a/scripts/qapi.py\n>> +++ b/scripts/qapi.py\n>> @@ -1412,8 +1412,8 @@ class QAPISchemaObjectTypeVariants(object):\n>>  class QAPISchemaObjectTypeVariant(QAPISchemaObjectTypeMember):\n>>      role = 'branch'\n>>\n>> -    def __init__(self, name, typ):\n>> -        QAPISchemaObjectTypeMember.__init__(self, name, typ, False)\n>> +    def __init__(self, name, typ, ifcond=None):\n>> +        QAPISchemaObjectTypeMember.__init__(self, name, typ, False, ifcond)\n>>\n>>\n>>  class QAPISchemaAlternateType(QAPISchemaType):\n>> @@ -1674,13 +1674,18 @@ class QAPISchema(object):\n>>          return QAPISchemaObjectTypeVariant(case, typ)\n>>\n>>      def _make_simple_variant(self, case, typ, info):\n>> +        ifcond = None\n>> +        if isinstance(typ, dict):\n>> +            check_unknown_keys(info, typ, {'type', 'if'})\n>> +            ifcond = typ.get('if')\n>> +            typ = typ['type']\n>>          if isinstance(typ, list):\n>>              assert len(typ) == 1\n>>              typ = self._make_array_type(typ[0], info)\n>>          typ = self._make_implicit_object_type(\n>>              typ, info, None, self.lookup_type(typ).ifcond,\n>>              'wrapper', [self._make_member('data', typ, info)])\n>> -        return QAPISchemaObjectTypeVariant(case, typ)\n>> +        return QAPISchemaObjectTypeVariant(case, typ, ifcond)\n>>\n>>      def _def_union_type(self, expr, info, doc):\n>>          name = expr['union']\n>> @@ -1700,8 +1705,8 @@ class QAPISchema(object):\n>>          else:\n>>              variants = [self._make_simple_variant(key, value, info)\n>>                          for (key, value) in data.iteritems()]\n>> -            typ = self._make_implicit_enum_type(name, info, ifcond,\n>> -                                                [v.name for v in variants])\n>> +            values = [{'name': v.name, 'if': v.ifcond} for v in variants]\n>> +            typ = self._make_implicit_enum_type(name, info, ifcond, values)\n>>              tag_member = QAPISchemaObjectTypeMember('type', typ, False)\n>>              members = [tag_member]\n>>          self._def_entity(\n>> diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json\n>> index 5cfccabb3d..895e80a978 100644\n>> --- a/tests/qapi-schema/qapi-schema-test.json\n>> +++ b/tests/qapi-schema/qapi-schema-test.json\n>> @@ -200,9 +200,14 @@\n>>    [ 'foo', { 'name' : 'bar', 'if': 'defined(TEST_IF_ENUM_BAR)' } ],\n>>    'if': 'defined(TEST_IF_ENUM)' }\n>>\n>> -{ 'union': 'TestIfUnion', 'data': { 'foo': 'TestStruct' },\n>> +{ 'union': 'TestIfUnion', 'data':\n>> +  { 'foo': 'TestStruct',\n>> +    'union_bar': { 'type': 'str', 'if': 'defined(TEST_IF_UNION_BAR)'} },\n>>    'if': 'defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)' }\n>>\n>> +{ 'command': 'TestIfUnionCmd', 'data': { 'union_cmd_arg': 'TestIfUnion' },\n>> +  'if': 'defined(TEST_IF_UNION)' }\n>> +\n>>  { 'alternate': 'TestIfAlternate', 'data': { 'foo': 'int', 'bar': 'TestStruct' },\n>>    'if': 'defined(TEST_IF_ALT) && defined(TEST_IF_STRUCT)' }\n>>\n>> diff --git a/tests/qapi-schema/qapi-schema-test.out b/tests/qapi-schema/qapi-schema-test.out\n>> index 6df4e49c69..ee009c5626 100644\n>> --- a/tests/qapi-schema/qapi-schema-test.out\n>> +++ b/tests/qapi-schema/qapi-schema-test.out\n>> @@ -87,9 +87,14 @@ object TestIfUnion\n>>      member type: TestIfUnionKind optional=False\n>>      tag type\n>>      case foo: q_obj_TestStruct-wrapper\n>> +    case union_bar: q_obj_str-wrapper if=defined(TEST_IF_UNION_BAR)\n>\n> PATCH 22, but I only spotted it here.  We say \"if=COND\" in some places,\n> ...\n>\n>>      if defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)\n>> +command TestIfUnionCmd q_obj_TestIfUnionCmd-arg -> None\n>> +   gen=True success_response=True boxed=False\n>> +    if defined(TEST_IF_UNION)\n>\n> ... and \"if COND\" in other places.  I guess the '=' is there to match\n> existing flag printing like optional=BOOL.\n>\n> I'd prefer less decorated output, i.e. instead of\n>\n>     enum TestIfEnum\n>         member foo:\n>         member bar: if=defined(TEST_IF_ENUM_BAR)\n>         if defined(TEST_IF_ENUM)\n>\n> something like\n>\n> enum TestIfEnum\n>     member foo\n>     member bar\n>         if defined(TEST_IF_ENUM_BAR)\n>     if defined(TEST_IF_ENUM)\n>\n> Could touch that up on commit.\n>\n\nok, changed\n\n>>  enum TestIfUnionKind\n>>      member foo:\n>> +    member union_bar: if=defined(TEST_IF_UNION_BAR)\n>>      if defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)\n>>  object TestStruct\n>>      member integer: int optional=False\n>> @@ -235,6 +240,9 @@ object q_obj_TestIfEvent-arg\n>>      member foo: TestIfStruct optional=False\n>>      member bar: TestIfEnum optional=False if=defined(TEST_IF_EVT_BAR)\n>>      if defined(TEST_IF_EVT) && defined(TEST_IF_STRUCT)\n>> +object q_obj_TestIfUnionCmd-arg\n>> +    member union_cmd_arg: TestIfUnion optional=False\n>> +    if defined(TEST_IF_UNION)\n>>  object q_obj_TestStruct-wrapper\n>>      member data: TestStruct optional=False\n>>  object q_obj_UserDefFlatUnion2-base\n>> diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py\n>> index a86c3b5ee1..87a8efff78 100644\n>> --- a/tests/qapi-schema/test-qapi.py\n>> +++ b/tests/qapi-schema/test-qapi.py\n>> @@ -65,7 +65,10 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):\n>>          if variants:\n>>              print '    tag %s' % variants.tag_member.name\n>>              for v in variants.variants:\n>> -                print '    case %s: %s' % (v.name, v.type.name)\n>> +                print '    case %s: %s' % (v.name, v.type.name),\n>> +                if v.ifcond:\n>> +                    print 'if=%s' % v.ifcond,\n>> +                print\n>>\n>>      @staticmethod\n>>      def _print_if(ifcond):\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"bSLmYvZ4\"; dkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3zHfSy0LHTz9sNr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 12 Jan 2018 08:41:06 +1100 (AEDT)","from localhost ([::1]:44838 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1eZkau-0002V9-3x\n\tfor incoming@patchwork.ozlabs.org; Thu, 11 Jan 2018 16:41:04 -0500","from eggs.gnu.org ([2001:4830:134:3::10]:48645)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <marcandre.lureau@gmail.com>) id 1eZkSC-0003OK-9I\n\tfor qemu-devel@nongnu.org; Thu, 11 Jan 2018 16:32:05 -0500","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <marcandre.lureau@gmail.com>) id 1eZkSB-0007jL-5Q\n\tfor qemu-devel@nongnu.org; Thu, 11 Jan 2018 16:32:04 -0500","from mail-wr0-x235.google.com ([2a00:1450:400c:c0c::235]:45212)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <marcandre.lureau@gmail.com>)\n\tid 1eZkSA-0007io-RW\n\tfor qemu-devel@nongnu.org; Thu, 11 Jan 2018 16:32:03 -0500","by mail-wr0-x235.google.com with SMTP id 16so3537370wry.12\n\tfor <qemu-devel@nongnu.org>; Thu, 11 Jan 2018 13:32:02 -0800 (PST)","by 10.223.199.143 with HTTP; Thu, 11 Jan 2018 13:32:01 -0800 (PST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc:content-transfer-encoding;\n\tbh=4ctxwTgVCTtBC3Y+Q/lp8m5oImqzQBCa4rk4oFwwrLg=;\n\tb=bSLmYvZ4iBtpoMd+3DAoyLOD6AL/p6C6DkGWq5jIDDwDTLSWWUcRq2qFnAOUAweVid\n\t3faM7Y6qg9P0t56Nz71RnvKx5+1G0UbtJaXJMNZjaiWUOpo4c/zQitEtrEzuKIop+7tM\n\tSo7nhhC8+J1uTaroXaXi3M8h/gaOLy63+qgEMqknuH19NMrWsOgItnHKe4UNfoQQIq6J\n\tHrdTPQvQRYpLewB2theUuY/KujpkvM1M2qLuWBdkVYNzBbBPbbELWcaTeQhqUqYMj0VL\n\tf2yzCQcfbgJnV2z1p2Xn6/GzoCp7pgZHBAt2zdAo21eOb8/jwnWUXUDYO4HB8TvozSQy\n\tae0g==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc:content-transfer-encoding;\n\tbh=4ctxwTgVCTtBC3Y+Q/lp8m5oImqzQBCa4rk4oFwwrLg=;\n\tb=qOgTIjFvRrjUG46XHqXx/TTtW/oVyE+SXA+YykdYvPAuYv79mg3QpiFshMcQth23HI\n\tGtrbA4j2Q99xK2vxJZPPx7qUK9n/1coVCfrnlj7N2iTJi2Y4rauXnHKKa0xOHNZ54/Ap\n\tZip8oRcc593ojonYU2nW9fmrd7awNMIm8DEw3z1hMUXVpmFuKfs7iOzzNzeH3MbmlHAt\n\tRyypGkJaeflv0selURqU2s6iNaIollvpfplIkPVNw9EOqGpStZjiVn3BI9pCVVnkAGGN\n\tgoKR1I+ZxJrQ9Inw1Ob8ttQz56zXSiDW3bu1t+e4EuU4wh85G1K3IWGCN4GpX2S/clWu\n\t1jpg==","X-Gm-Message-State":"AKGB3mKxav8CaIPuCAWWPXq2Nzq9fNGNIUU8PDZ9RMAanzkIhkgz8pkw\n\tmbZbTTRrrkC46HOL+0N4wL5jdh5JJDgj+ZAea0g=","X-Google-Smtp-Source":"ACJfBoujaCCA2vXIPzLqrOWFAQVp59QFf1oSh0/kaTAArXrO3yeFNHB3P98grzY02BSYCRsqSWn/vli4VgGpWQ2cFEY=","X-Received":"by 10.223.155.131 with SMTP id d3mr20607936wrc.134.1515706321783;\n\tThu, 11 Jan 2018 13:32:01 -0800 (PST)","MIME-Version":"1.0","In-Reply-To":"<87o9n51rgr.fsf@dusky.pond.sub.org>","References":"<20170911110623.24981-1-marcandre.lureau@redhat.com>\n\t<20170911110623.24981-27-marcandre.lureau@redhat.com>\n\t<87o9n51rgr.fsf@dusky.pond.sub.org>","From":"=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>","Date":"Thu, 11 Jan 2018 22:32:01 +0100","Message-ID":"<CAJ+F1CLfSa6d=d1iWk6ABuMMnQKwyiJkpO62ZbZU4t_V0DoNUg@mail.gmail.com>","To":"Markus Armbruster <armbru@redhat.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-detected-operating-system":"by eggs.gnu.org: Genre and OS details not\n\trecognized.","X-Received-From":"2a00:1450:400c:c0c::235","Subject":"Re: [Qemu-devel] [PATCH v3 26/50] qapi: add 'if' on union variants","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"QEMU <qemu-devel@nongnu.org>, Michael Roth <mdroth@linux.vnet.ibm.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]