From nobody Wed Oct 29 20:29:38 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1526029676802877.7531154975469; Fri, 11 May 2018 02:07:56 -0700 (PDT) Received: from localhost ([::1]:37791 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fH41m-0001QZ-5c for importer@patchew.org; Fri, 11 May 2018 05:07:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49364) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fH3zz-0000aP-51 for qemu-devel@nongnu.org; Fri, 11 May 2018 05:06:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fH3zu-0000fG-Si for qemu-devel@nongnu.org; Fri, 11 May 2018 05:05:59 -0400 Received: from mail-he1eur01on0724.outbound.protection.outlook.com ([2a01:111:f400:fe1e::724]:32813 helo=EUR01-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fH3zu-0000WI-HL for qemu-devel@nongnu.org; Fri, 11 May 2018 05:05:54 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by AM6PR08MB3352.eurprd08.prod.outlook.com (2603:10a6:209:48::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Fri, 11 May 2018 09:05:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=PxHxTtBU1O0E41MBBauZaalpYU5cxHQ0FqU2H0DMEOs=; b=MqqnHlDzjp5zGukKtStsPU7g/4NRlzK0KSilcoYmpACd0IKKi3xiylGje8Wt33bTPAyxBK4ifwMUeXJ2OYp1U3PcRO7CuvUwxQM+LL9YNDF6wEmt9DhoMTOEPyuDEU/4MIln6hugbBx+51wGv4ChuW5GJwetnLy3BAtKKa/a2IY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=anton.nefedov@virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Fri, 11 May 2018 12:05:33 +0300 Message-Id: <1526029534-35771-2-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1526029534-35771-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1526029534-35771-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR05CA0150.eurprd05.prod.outlook.com (2603:10a6:7:28::37) To AM6PR08MB3352.eurprd08.prod.outlook.com (2603:10a6:209:48::21) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(2017052603328)(7153060)(7193020); SRVR:AM6PR08MB3352; X-Microsoft-Exchange-Diagnostics: 1; AM6PR08MB3352; 3:KxVCDhzRfK3l/PFqI8HDPfUvn+3C2ZeZHg5RK7of6+1CXBWZXoeo6/+y7PjUSyNjl0SvWe5cLFPi1CRq+rmEnSd4cStmZeJe3ymAQwZgbRJ/JIsYZqXu0olJq0cq2k9izaQbJH9Niwcc7jovM1fDb0inoaOcpTleZ0lHfrkH8VHPO5y8bCLUO+Q/QyRE33eZIM2WIB0PgEqWLUQL4sIoFKRmToqORLKcVft/iF+/SVXL6eAk7133nvCp5pEGh8vz; 25:RYm7/bTgXGNUwwK/tOHEmfyg6RuQXQuc2B5LV5A0vjKrrRojno5ywyNi7obAKphE/3n7sOf6RZmVHUw4M7btNQTQviFmWw5nsidTxC5UY8HmaJf6M0pooP5oj3bnCW/GU1wVwKQN16YLd1Pyj1HdILRwZIanRs8akmR1j6ipC4u+tMCUY3fh2GWCiK61IoM1QmYxmTBS7rsPjtCZPuhLYomHPZ/WPg7c0tVidUEPhjzFiSVHOdg1DGY2FRtYPTc4tdk7lnXcz2guedBpLWmh0ywN41Oe4L0r/nBp8+Dk4bli+qsBhWjloZFkSu2GRUfpLNT8Q1ZYJEas6Z0Kp5Ai9g==; 31:x54608yuyNUVKmka12stEU3dZlRF4I9aREtXuYIfpoH1+td55JUwU8e1pkGEC5od+YewYVYbxk7tqeTFE3cQjaKaxblBing+72qzLQQhIPefY1u37H+TWjlMzyVZ5rSfggAnvLeT8ATN2x4gkbpG3aM1VGp5DbomZu0fyLvR4Vj+UXpFMlZDv7NTqVRMpteyuLItKS/zCIokVbZK3pUPnIwD5BKyfZpzs/r3bW33wUs= X-MS-TrafficTypeDiagnostic: AM6PR08MB3352: X-Microsoft-Exchange-Diagnostics: 1; AM6PR08MB3352; 20:fdsgbnbgDT29Flz2w8+7MRhzoGFX6xofhhIV8FVdIRH3AsKrG8OT5otYOPZeT5HIfSdutQcAWiO+fdaIovGK4JP29uGr9LaqdblrFZjHXaUS8be8b1iuxF1CURmtJjc0HCehkLFDudM0cafZAXjovHDtJxbiVaURa0SfOC6tBw1tG4JB9e26Ed49CcrKHKVkrbk2KPLcC/AEpEy+Z5fK5RYPDW145ArAZ/sPtg9f4bbSFbHvaLO69S7DHzBs7e7p58QAersW+E1Dcr36oRGH3AyfnZRMw3AsEa60eyLVo0Vp6HqSGAc5BfwRYkfYfdiFxV5fKLw8JO6x/iYco65O8lB0iZQtx+k3nOdCsr2qsAJLHl5mbMLVwzDSLU4gRLL2K5wETYWnafATPankb2VChvCuVit0ANGGQ0peGAtJnsCo0l2uQxPtQMxfWsN4CyYwKNWL+cuOr64Au+HEm5Iio/zyfBAwV4in4xLK0KN6+CmHOMDekpqmmc7yZMNmR68I; 4:a85t8n0TDqz8/sz4hRR26gQJmntjwjQMl2G+J+qcBtcfaRpQ+0pWMFwfj0nLAckhgllqR+XY/8l33QorquwBh8Z+2UOtRU4dxArtHa7wKkh0VM6WhmmUTaEQaOPuvWgW0S3HpudQzgbVBvZ0ncPAHngQtsbm1AK9YD1VjmURH+GGR1fedjwp1wc5A3uHuHTIp1SN4HzRtJEELHsI5Abm7RAbjdOouHM71A1bxzAOhVACWhcoXb9AbTPgCWNFwIeSJVx5zzsQ5jWW0rVXB6jZxg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:AM6PR08MB3352; BCL:0; PCL:0; RULEID:; SRVR:AM6PR08MB3352; X-Forefront-PRVS: 06691A4183 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(39850400004)(396003)(376002)(346002)(39380400002)(189003)(199004)(11346002)(446003)(486006)(2616005)(4326008)(476003)(575784001)(6512007)(44832011)(53936002)(2351001)(2361001)(66066001)(86362001)(305945005)(51416003)(107886003)(47776003)(97736004)(956004)(386003)(26005)(6506007)(55236004)(52116002)(76176011)(16526019)(7736002)(50226002)(36756003)(2906002)(3846002)(50466002)(6116002)(6486002)(316002)(8936002)(6916009)(186003)(8676002)(81156014)(106356001)(81166006)(53416004)(16586007)(69596002)(6666003)(48376002)(25786009)(105586002)(478600001)(68736007)(5660300001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM6PR08MB3352; H:xantnef-ws.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM6PR08MB3352; 23:phphAB1ueax/TEd+2na+3WPiSAe07ELBsU16CaKHB?= =?us-ascii?Q?xMo//giGD3z8KfGu4AJGgfVqyrzdul8WR8eJoir9k03vLKm0qJ4qbg/+Tucs?= =?us-ascii?Q?JEi3LUuqmt3E6+/6SWxveOMrruxh+ejU+MEcjO0IMq5+DxBVdKd/Y7gXWXbB?= =?us-ascii?Q?TMW6XY2k85jENm5ddFWDFZsAqanFfwceqjeHGZRhxo1R+/ehjoz3APphhSeI?= =?us-ascii?Q?jiDoTR1y6/OVRlbaCmlJN5eTTmBQ1WLgYDEkykcLxjVn5sGwNPie/sGWmf/Y?= =?us-ascii?Q?U8NhoRJdChG6KWEJxGjZK3ZnXZssutGBJZ3l85423hx2/wEUg+rzg7KzoOS2?= =?us-ascii?Q?1X1ZVF2S7TJznPs7ip/gU4L71GqdV03PNmZ+90Lbdm8wUYR5iaS6RcIAs4vZ?= =?us-ascii?Q?MNQJtZpbQHDPVd90rBHS53ak3oWt83MmMYm9zoEVUh4egL8rQDMSiPViS2jU?= =?us-ascii?Q?cSyu2UE5X37xLMcQUAMLJwii1EZMvV7rSbVbom7LjmkWIc9s6AXOmGA72cxY?= =?us-ascii?Q?l1YS9JHazpt/zSkm6NImGVohnLeYUvCvCKMDTs7bcycyrxj65WxUkwQXRJuq?= =?us-ascii?Q?2u1eVJhlfCOYHY7QDMBQ9yWjvNzjr7doWLmp+hH+S/XMluN5tPRmqnBRW6jg?= =?us-ascii?Q?N/LzT8o8wd7huQBp6xHBo0Ki1FiAcrhsJkjdrS3MF96rUUk/ehr6Nrc8/FtF?= =?us-ascii?Q?ClZdFMI421YfGg/6g2My6gQx4kkE4Y+0Rht5cNtaNnMq+QFcbcJdVMhV587T?= =?us-ascii?Q?7bez4W8eo9tvc98uRYzaEzUa+nrWaCaUPLVGHNF9gye86HFVkQbxWnAXDrMb?= =?us-ascii?Q?k8Odludg0SnnSsQ72brsEmqcuRaxGY2RRxTkLme30nFjPdx7pYqJSBx0w7jY?= =?us-ascii?Q?lxiCNmBgO6ENIV70GWPsJz9iPrjtJcvJRgDo5f19XdmVaC9RoVihjCd84o6a?= =?us-ascii?Q?fVVJNfO/feH5t+rLp1jE0g6c/BTB4ZtpuFW7/5LYIU77uSRNK8z1Ljha1c1i?= =?us-ascii?Q?UvprSxEGtjJMXqaQFjbU2J8X9+jlFzFyUmWaIaxdHIvIFpshbVaJ5TPrK9Gj?= =?us-ascii?Q?DiSgJKa6UdTGdMWg+8pdXO5pybMBnGE5/eYxrWLt8gEbSfFYoo204UhNZ3JN?= =?us-ascii?Q?cyXCiO4H1Vvtd/9pUeDc1ZWDKsFA3yat7bOZCGq2DPH1Al1yUM8oV8389ZCF?= =?us-ascii?Q?8leJEBdBCcMB+SQJcOsx0k/B2EsyG9W99vxg+hKVybmWmUFQwpj5r7eut0Zu?= =?us-ascii?Q?+/SWoT6ox3bXaErWWpUmQQQ5nnkRl630jUSkok+pKl+ExScPy/hR+pqfUFwK?= =?us-ascii?Q?aWEikjGBIrZyPyxouffPVGgsK5u7QiRuroJ7G3vheurHUu85HBkOxgKKCpFm?= =?us-ascii?Q?UxbmQ=3D=3D?= X-Microsoft-Antispam-Message-Info: Izw4+7/gDuvr+R5FjIn1RzrbLWiLlcW4MdwVh5OWVuALAe2vTSw247medx/ugi4as13qodM8T8EKX0unYBAFJqxC7Y9rqZRAEJLkf/1T/zb3oP3deRrOLp6LsaBblWp0uYd2xNB2bGQmBtDadq/yQAoTFa8fgJrMUAQA5G0tePTtaBRmN9yL6srofXLaFpc8 X-Microsoft-Exchange-Diagnostics: 1; AM6PR08MB3352; 6:W9n74SQbz/86ITQT4VFnLdTBNIYn/GkZrZqqF2oIFalsddq86eF5O3XCM5prjMTwAR9v+0exz3pRb+/spMV2EDp4AjsVEbgrK1N7UUWQa+QV7skGdkF7Q4GX8KdQDinqeLpD63g/YY4AZUnBcyk/EyODkWKlSWlry2+mkw6kjSSq16VBlzjnwYG0pr0HqV5ARg2Ss9hmCvpjxrI/3dYPkm/Wgp0Xprb55XyVdhQVg93Z3am1ncgh0CtRzC7K2jQOzFxFIgeEOV6K413uBDVlalAD562wu4u9FZqaIMiJNembUMXuT3KPbudAIeuNcepFcmsgop6rQ+9i1u9VWwWGmD+mhu89bV74uIsCIyjH3eWJviK7ZmfeBGU1TsLm3ejCPX6RU5tyjJHi+7TbZVXxRdhkdZZ3Q5RjEP6WGCadFag5W4NyDEFCl05sJGgN+W07prc6MXVR2398+WG95wDL7Q==; 5:l2EHUHnkPj5ab7kk9Lqu+5mcqFyadbM1UJHw0NiQE9YBA9qAbgTytMAS59WpeMn38SUhWwPV3VQy/kMhfVKVM6amBzTBTdOl/comDG9pfY/zJkrsg/Bulr3LvmxPGGmAZjyGR1LlymBZskE9lhnDPpTOrA8Xca/J5R67tVib90s=; 24:ZsitMUKPO6k/Ka8SWHZ45TqV9xQupYY98dULPgfgYHmb5AVSEVDhuFB0w2snV5cnVmEkkm/NglKby+1aCxqirb7HiPYsQVEV+qxWmi2PRJE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM6PR08MB3352; 7:iAbLHbjffJT834fZdz6oBdCvbA7cTM1R2tpKhQjM/1IguQms/8VVEAP5qWUwGcnTjYd+j8i0Em3IKeWSicphqN+4l8VuzuN2kQ3JeGmjlyEa0XFFtwYdCNw7p7yAIBvRfRfHMJ2ESMAFYBCjDErqCWVjfv7BNEGFpFg6xG8Huu2gGmt+clp0X/rohZT1wlN15kay3SYihmkou53VFTCNoPZmsHY82bvPNsUwc9knZvYqVS6nJWP7EXaTdOyqzwLp; 20:wBIhiV1PPPtqWEvT+HEpu4fouMsjAPgPZ8HPd7Ok4nluijyEdgqernO0aa0I7EtMn31nth9aHQO0rqEyP7JNPQBPmFkwpzQ+aGDtWFnewWWwrSckpLtRtV7QsCNUzS3mQpHsJXzCiYOSXfMrsDGKZuHZ94eq9okQ6qFHX478wCU= X-MS-Office365-Filtering-Correlation-Id: 632d8f7b-b12f-453f-5985-08d5b71e6560 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2018 09:05:51.6289 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 632d8f7b-b12f-453f-5985-08d5b71e6560 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3352 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe1e::724 Subject: [Qemu-devel] [PATCH 1/2] qapi: allow flat unions with empty branches X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , armbru@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The patch makes possible to avoid introducing dummy empty types for the flat union branches that have no data. Signed-off-by: Anton Nefedov --- scripts/qapi/common.py | 18 ++++++++++++------ scripts/qapi/doc.py | 2 +- scripts/qapi/types.py | 2 +- scripts/qapi/visit.py | 12 +++++++----- tests/qapi-schema/test-qapi.py | 2 +- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py index a032cec..ec5cf28 100644 --- a/scripts/qapi/common.py +++ b/scripts/qapi/common.py @@ -721,6 +721,7 @@ def check_union(expr, info): name =3D expr['union'] base =3D expr.get('base') discriminator =3D expr.get('discriminator') + partial =3D expr.get('data-partial', False) members =3D expr['data'] =20 # Two types of unions, determined by discriminator. @@ -783,7 +784,7 @@ def check_union(expr, info): % (key, enum_define['enum'])) =20 # If discriminator is user-defined, ensure all values are covered - if enum_define: + if enum_define and not partial: for value in enum_define['data']: if value not in members.keys(): raise QAPISemError(info, "Union '%s' data missing '%s' bra= nch" @@ -909,7 +910,7 @@ def check_exprs(exprs): elif 'union' in expr: meta =3D 'union' check_keys(expr_elem, 'union', ['data'], - ['base', 'discriminator']) + ['base', 'discriminator', 'data-partial']) union_types[expr[meta]] =3D expr elif 'alternate' in expr: meta =3D 'alternate' @@ -1035,7 +1036,7 @@ class QAPISchemaVisitor(object): def visit_array_type(self, name, info, element_type): pass =20 - def visit_object_type(self, name, info, base, members, variants): + def visit_object_type(self, name, info, base, members, variants, parti= al): pass =20 def visit_object_type_flat(self, name, info, members, variants): @@ -1192,7 +1193,8 @@ class QAPISchemaArrayType(QAPISchemaType): =20 =20 class QAPISchemaObjectType(QAPISchemaType): - def __init__(self, name, info, doc, base, local_members, variants): + def __init__(self, name, info, doc, base, local_members, variants, + partial =3D False): # struct has local_members, optional base, and no variants # flat union has base, variants, and no local_members # simple union has local_members, variants, and no base @@ -1209,6 +1211,7 @@ class QAPISchemaObjectType(QAPISchemaType): self.local_members =3D local_members self.variants =3D variants self.members =3D None + self.partial =3D partial =20 def check(self, schema): if self.members is False: # check for cycles @@ -1269,7 +1272,8 @@ class QAPISchemaObjectType(QAPISchemaType): =20 def visit(self, visitor): visitor.visit_object_type(self.name, self.info, - self.base, self.local_members, self.vari= ants) + self.base, self.local_members, self.vari= ants, + self.partial) visitor.visit_object_type_flat(self.name, self.info, self.members, self.variants) =20 @@ -1636,6 +1640,7 @@ class QAPISchema(object): name =3D expr['union'] data =3D expr['data'] base =3D expr.get('base') + partial =3D expr.get('data-partial', False) tag_name =3D expr.get('discriminator') tag_member =3D None if isinstance(base, dict): @@ -1656,7 +1661,8 @@ class QAPISchema(object): QAPISchemaObjectType(name, info, doc, base, members, QAPISchemaObjectTypeVariants(tag_name, tag_member, - variants))) + variants), + partial)) =20 def _def_alternate_type(self, expr, info, doc): name =3D expr['alternate'] diff --git a/scripts/qapi/doc.py b/scripts/qapi/doc.py index 9b312b2..40dffc4 100644 --- a/scripts/qapi/doc.py +++ b/scripts/qapi/doc.py @@ -211,7 +211,7 @@ class QAPISchemaGenDocVisitor(qapi.common.QAPISchemaVis= itor): body=3Dtexi_entity(doc, 'Values', member_func=3Dtexi_enum_va= lue))) =20 - def visit_object_type(self, name, info, base, members, variants): + def visit_object_type(self, name, info, base, members, variants, parti= al): doc =3D self.cur_doc if base and base.is_implicit(): base =3D None diff --git a/scripts/qapi/types.py b/scripts/qapi/types.py index 64d9c0f..e805509 100644 --- a/scripts/qapi/types.py +++ b/scripts/qapi/types.py @@ -215,7 +215,7 @@ class QAPISchemaGenTypeVisitor(QAPISchemaModularCVisito= r): self._genh.add(gen_array(name, element_type)) self._gen_type_cleanup(name) =20 - def visit_object_type(self, name, info, base, members, variants): + def visit_object_type(self, name, info, base, members, variants, parti= al): # Nothing to do for the special empty builtin if name =3D=3D 'q_empty': return diff --git a/scripts/qapi/visit.py b/scripts/qapi/visit.py index 5d72d89..3ee64bb 100644 --- a/scripts/qapi/visit.py +++ b/scripts/qapi/visit.py @@ -34,7 +34,7 @@ void visit_type_%(c_name)s_members(Visitor *v, %(c_name)s= *obj, Error **errp); c_name=3Dc_name(name)) =20 =20 -def gen_visit_object_members(name, base, members, variants): +def gen_visit_object_members(name, base, members, variants, partial): ret =3D mcgen(''' =20 void visit_type_%(c_name)s_members(Visitor *v, %(c_name)s *obj, Error **er= rp) @@ -93,9 +93,10 @@ void visit_type_%(c_name)s_members(Visitor *v, %(c_name)= s *obj, Error **errp) =20 ret +=3D mcgen(''' default: - abort(); + %(action)s } -''') +''', + action=3D"break;" if partial else "abort();") =20 # 'goto out' produced for base, for each member, and if variants were # present @@ -309,12 +310,13 @@ class QAPISchemaGenVisitVisitor(QAPISchemaModularCVis= itor): self._genh.add(gen_visit_decl(name)) self._genc.add(gen_visit_list(name, element_type)) =20 - def visit_object_type(self, name, info, base, members, variants): + def visit_object_type(self, name, info, base, members, variants, parti= al): # Nothing to do for the special empty builtin if name =3D=3D 'q_empty': return self._genh.add(gen_visit_members_decl(name)) - self._genc.add(gen_visit_object_members(name, base, members, varia= nts)) + self._genc.add(gen_visit_object_members(name, base, members, varia= nts, + partial)) # TODO Worth changing the visitor signature, so we could # directly use rather than repeat type.is_implicit()? if not name.startswith('q_'): diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py index c1a144b..95cd575 100644 --- a/tests/qapi-schema/test-qapi.py +++ b/tests/qapi-schema/test-qapi.py @@ -28,7 +28,7 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor): if prefix: print(' prefix %s' % prefix) =20 - def visit_object_type(self, name, info, base, members, variants): + def visit_object_type(self, name, info, base, members, variants, parti= al): print('object %s' % name) if base: print(' base %s' % base.name) --=20 2.7.4 From nobody Wed Oct 29 20:29:38 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1526029676788430.26806618593525; Fri, 11 May 2018 02:07:56 -0700 (PDT) Received: from localhost ([::1]:37790 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fH41l-0001QJ-Hl for importer@patchew.org; Fri, 11 May 2018 05:07:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49368) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fH3zz-0000aQ-DY for qemu-devel@nongnu.org; Fri, 11 May 2018 05:06:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fH3zv-0000fa-FR for qemu-devel@nongnu.org; Fri, 11 May 2018 05:05:59 -0400 Received: from mail-he1eur01on0724.outbound.protection.outlook.com ([2a01:111:f400:fe1e::724]:32813 helo=EUR01-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fH3zv-0000WI-4j for qemu-devel@nongnu.org; Fri, 11 May 2018 05:05:55 -0400 Received: from xantnef-ws.sw.ru (195.214.232.6) by AM6PR08MB3352.eurprd08.prod.outlook.com (2603:10a6:209:48::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Fri, 11 May 2018 09:05:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8PBnmx4qEv7qWo8NbFtDsd9mCSoDnWkhh+P/Au0/bus=; b=NMfvz3RbIWSHCikjoLW02kcfKmMemOvdz/WtZs50V/Yz0t0F3eXe/ibz69+WahXEb3U1sZ/LCfojfkLs74m8y4Z/IxOFN4/zOtGBII18/uDmmMRzH+Q9I97V/Ddn6U8ltxqP/8Iuca2EJqUkN0QgNSGactfyTEgS1GbraEtxG00= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=anton.nefedov@virtuozzo.com; From: Anton Nefedov To: qemu-devel@nongnu.org Date: Fri, 11 May 2018 12:05:34 +0300 Message-Id: <1526029534-35771-3-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1526029534-35771-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1526029534-35771-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR05CA0150.eurprd05.prod.outlook.com (2603:10a6:7:28::37) To AM6PR08MB3352.eurprd08.prod.outlook.com (2603:10a6:209:48::21) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(2017052603328)(7153060)(7193020); SRVR:AM6PR08MB3352; X-Microsoft-Exchange-Diagnostics: 1; AM6PR08MB3352; 3:Eoeumxpz3JR+VJXJlkwJkVL1aECQOpqtOjZiGZV5IdJMVKGvy8ihY49E3qtu/dmELymB6z5KhrC/5GM4Qm4p8xxxsCOEhwq6SLd0CbIg79kh1BhY3vvtwQhyHXVJbDhaceZQDF7a5jUKmNK0RkGbxmDWlyJySgmjNDsSnMDCpSpteiM8a7IJZ9OwFFgqpt2VCXbqOb7cEEDUov9lhAU1x+7pDCKmRzpilVpvnm/V3z+EMBiOjXrHnvByfOag3mGV; 25:zFxnNjkxdV7TeXt67odJ+1df2nhwq1EFKIEh7e0iQDrv7+s9synvAbgtGyP4WliQ8M1YOnk1Y+hWCOHKsoCVLpHOSQeeeaIZl3kFin1CQ9MzXvVjEh4g7k5NHkPBUHE+kzmzSPhNgytpq7KyrE/xBpRLduVzk3D1DhTGREjdeNCeuC7DTAfyuJHiRBE+fFZzAAmE68ksXyc+8tRikrjCC9DERfvShYBt3DRg9feH3cdEfGlT/kNbimNZK1ksohODwLFZayZIzwLleAB+asVKsJV+ThDzUTog3COczFf+q51cG806tyo3WCDEclAz4/WEviJaGzAv7901vwhDyJqjFg==; 31:NQq8hmoC/baPZi2dy1oKUqaRdhST7ul1cilB4EqMR5UeCdAixVV2Bm2xtHOTxPtKh/CEwmY3j9mA4rVkqqfG1TFRkQl1uwInO29AJXft05GaCnABkXQcKvo7OfC0YpfYXpROKptUysCY4Sp4Dhdk/ctQcLdHmwMdZVbQl6uwqHX30Luz1Ia0qJ2UskmNwWqKHay1lNeaRlgEtBkEc17dDZZWuX+9KGHC0YZad2iUjOs= X-MS-TrafficTypeDiagnostic: AM6PR08MB3352: X-Microsoft-Exchange-Diagnostics: 1; AM6PR08MB3352; 20:JLGZ+HqDZtn5uEzlQj7wS/u8GBBcC4vRaLeent+PhUNYCqI+q4jxjkLFv3CFYHfl8w8ar/gUCGIUYy8vHd5H7FOBJkWPOk57+h9F4d5KdlfmVL+tLtiLSzGL8hBFuPKlFteNXUhUgqO1mXKCWB7NLmneCpyWEpx0rJFeqvOAq6n3ITZaVPKlNKqXfGdgmlehUbGVsY8YThTpKXrzByklBF27lHDzkYmbMC9N6/XmtFDDHTS4YUcwy6Lh/J0WynSorETCCHi4qHjMf/USuyyFrc53d/59vrtbZGJtgheIUXnlaDspnvbv4lWe7ARPToalLfOBtejZ90lh96bdfjRSOwzrhe9d/pCL2gJvMg4IUtALpXXWPnUdG+Fe5CThODyFwrzGIK82SLD2LQyZJfqPzM4PejLgOIqIbIxiGDYZLC0xwhGNv3uBS6YJMY+HZjPzpJYmT6pJHT9XFOUBjEnVe6eWYWuHRKV9oKaAGp21L4qRdAXl/gEkOKxlUEb7aQTc; 4:vtQo46bcLvlHpGITKen06IQc+ftOQQCOOk843jykuJdE2tnZt5r+3dUcsY1q0IEOzwA+03UdVp18SXlMYTjr36FDh7w1eBnC0FIwe/FZ8IVTrkgcBHgxLTwygX6IHT3bweiIzvB/5esGT+17B4GMk+t+KKM06Q0dSd2e5fEsf+3jrir5wuh8hB/7q3tolbvdzrcuMGvkfa+bQDAUiMllFiFcN9oR8v06PbTGsNAW8G9W051S6b37Sl9ZidLgqbKxlmTZDaE3/ojtvbQnwVGB6g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:AM6PR08MB3352; BCL:0; PCL:0; RULEID:; SRVR:AM6PR08MB3352; X-Forefront-PRVS: 06691A4183 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(39850400004)(396003)(376002)(346002)(39380400002)(189003)(199004)(11346002)(446003)(486006)(2616005)(4326008)(476003)(575784001)(6512007)(44832011)(53936002)(2351001)(2361001)(66066001)(86362001)(305945005)(51416003)(107886003)(47776003)(97736004)(956004)(386003)(26005)(6506007)(55236004)(52116002)(76176011)(16526019)(7736002)(50226002)(36756003)(2906002)(3846002)(50466002)(6116002)(6486002)(316002)(8936002)(6916009)(186003)(8676002)(81156014)(106356001)(81166006)(53416004)(16586007)(69596002)(6666003)(48376002)(25786009)(105586002)(478600001)(68736007)(5660300001)(357404004); DIR:OUT; SFP:1102; SCL:1; SRVR:AM6PR08MB3352; H:xantnef-ws.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM6PR08MB3352; 23:1eOeNou+EKbgd1EvwayJ21XYo93ttbJpsxtiMqEk2?= =?us-ascii?Q?f1dkk72raKOnKGcGczduYI3TrVGc3xrnsx58hWVMrEfK+EchdepNTOQApN95?= =?us-ascii?Q?XEMT1OzdCU11lOjceTWwmITNzjsuKS6kvROadk1DCNzZWoXqmaOsCDuAJcxU?= =?us-ascii?Q?n+B0aBfd8fryL7t08TzfbcZkgsFyLWpEDPNkpZmcHu7oyfdTyyL7dGDA91ER?= =?us-ascii?Q?M0ZuLlqBibopL0Kwh+bhcD6TjWUcckBId5fCTs4qMXXDUMJ/GclcLwfXugdc?= =?us-ascii?Q?CPYLyFJ1Wu6fr6sDOU4wGHdgfa3WtJnH5LbQaJyaP1WHW1Ev/vvUuRUNjqmy?= =?us-ascii?Q?e9n7+2EzbiT0wDuHFgtLlUwyaZNdAtvxEoeqOyfxnw4i38AB0VCHj3799vJB?= =?us-ascii?Q?/9seWavH3sGEJPc9ZGfN5U9UJmqqpHW33wqVk4btPHP4QE/+2ZDzBxc6FGMd?= =?us-ascii?Q?egTOgCo4JHxhScUddkmiKq9izcmepS5oVt45yOxvyAu52wQBgvpJX12ogDVq?= =?us-ascii?Q?W88hA0WmRaYtProq7E7LYedxhZTEQlVgbcAmN2MpsgPdPJDfGkuTqrUaBPV3?= =?us-ascii?Q?m+rBcJ0+SEjFYYdF+BHDayZWybjZti4sAq1pzWtnwr59MCsZrAUYZ1H9u1or?= =?us-ascii?Q?HMZIfB8T9GDcZP7XtmGgt7HMfS/4n9Lp3foM8TQkTv1p/bvlzaZK/mnszy6I?= =?us-ascii?Q?0tNOtGnNow4p4Du/UMFyBzY8SbjG3axNiDWW1VbWGi5pn41wIGW2xEfuWplG?= =?us-ascii?Q?GJMjGneRxBij7dvJhy3Be/yDwcsNrd4qw4irEzdH608DO89Ygw5RKwyR55vH?= =?us-ascii?Q?VAu4soqXCJzfFla6Oa7fyJZ3S4XsbftIflk67RX0okB/xVZz2Sg9a3i4FDFu?= =?us-ascii?Q?e1Rg5Z8kl5UUAnkntPj/zAoV7Fhp0Q7bNxd/m7osTGdu3X/y03uS+f8Xn4NS?= =?us-ascii?Q?/3FLBvcczLWoasSifxku0jwujHgG61LhpkFU7hQjB/RfLsr6jeMJKpdFEyaw?= =?us-ascii?Q?ENMP1qd4MZZqBBnaeWu1b6d5xigOl9+N51uMBSXbXYKL+EeUKI2pnBBnHRr1?= =?us-ascii?Q?V6i5hoLI2SLnmbmcmCX4wpKU5CAY86JEqqXBU3qC9XfQd/0Y9Hg8CyRF39Xy?= =?us-ascii?Q?dDZTHF5ba97pTQalhqYG60PxK3/2Swl9MgOQhjInWiu39Ppl8ebW5in3rdbs?= =?us-ascii?Q?tm60veSvVBBxBffOWozh1xyVO1T2UqAalkcHr55w1sP/CvfK7QcKjGdlLC0a?= =?us-ascii?Q?o7YeQvT9kvGIwWV/4AF1HS8X74ZbtRy4p8c15+qNZXpXJrNZKB/Cb6HqlQqC?= =?us-ascii?Q?tbVsTaJts6Dunf1ZI20B2+Jo9ruo3aCQGI4VMOEFuPp0xb8zdqdMkaKOwDWj?= =?us-ascii?Q?t6M/UPJA/exUvahSFW/eQSFhnE=3D?= X-Microsoft-Antispam-Message-Info: qBUoqJSqrDk2R93vz11Q+DcscezU7cp7I2eeT+9Wx1PZ2oBobCKxaiuHOvVzMmbHQGdjd7lqR2nanjdww1hhoDUaYEEqxM07CRayDFiYcQHq/gmkmL9AkvwIGWVezwyMbfNzAnlRJNXZXeZwMbDQfgUiXJ49E5bIhCAzXYbywZTdqiu7t8OA3RuRDldHqXts X-Microsoft-Exchange-Diagnostics: 1; AM6PR08MB3352; 6:qAfPIwKJpjWlL4oxzAD3nEBxG2wRcfMcW0G3RnmZK1lyy1chMsLAjbvaQttmnWJFrW/xhCjnTHdaiNVOh7uSobIcwTpmu8Aa7rDq9GJz7y/o9DZ8Mmm5GlVVN1P1T3vKXsxFoFN/HmIfoc+2uxT2i12as1INxXIBa5udLTzdnc3gh16F0p2zFqNSBbELW5OMsbi+LSHkIIbM6mh0rLQ+qSARymcl9bH+Xwpb0iKTeXIMcQAyLVjpyr976SzC6aCZ22oxy1eiB6oRil/GCtKM68SWRQusAku42uidXgjSIip30WGTVk1S1iIJCUjq1947z8N6+eE+nBj9XMVCXV7qxBKt5pXzOMsZHDuukCBNW+752yJnB7bkOaBaNSLjX4xXBiymWRpCdoHt82n+Z2TJhCm5mp32igchBTm58D0/40KfeB6mgC9U+VNIzh9XOx0dMLohykN5uHEP6OmEJtn3Eg==; 5:CwlR1zrMB2vSJrlnCEcrGsw9PvKvKrfe+1yhnwWEg5FDeaq80Tx4217KZzKm29fTlD7D+/zkk5XUITr1n+QT/MjcNa981aQQBbYIkTdSO5YLO9wkQE7ggnEeM+ljWZpNm5ryEvfLNdQLiJF7ef4p5CWH+1FDHqaIv2ZkICrCASU=; 24:xuBXrTetsPUAwhR4+EXdnflYvvsxxDRUReiEJnqliOovdquJs37tyD6G5tQ8YTX/53kbODSh+T+d5PHzdx/0PUurUt2eWQC/6BmEBlOTNKo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM6PR08MB3352; 7:WrbhcdjUgCIqpWoAnWRZwTRksMeVqvG2u/XuBFuc5z0x6OnQyBwVj6kRgcfDUb8/XcWLS1kvXzRiglaUyEfTTWiz9/vpLZB5rGEKNkwNBUOkIgDLvKgpPNinUAe2rmbWG0HMICod/G+7rkJxmQV2DeD3r8Oy8cXRRwnmcgp2q4MWYe3m0O67WaiuxZ3wcVcXfWHXEeWZgjnL0PMVSjE8MMgZEB2sHjsIF8VkeQPFuwWB7ZkLZjgCMhhdURB7Up2c; 20:OkEATvVuzatRCKhEAZ1zYuk3OhWuxaBvtA+3ZrPJ6MLF0nYVVwCRBA0TvMoF01kb7fN/DQzbzJ3nld0cFUJ/YYts8qyQkMU3INPBuqaMaU/ntdD9j1lWBQZyrRpBBIvQGvZ71y1z9YawjHqNprzcSiIyRi8EERgUa58vTtWHzGg= X-MS-Office365-Filtering-Correlation-Id: 49a80e48-eb41-4cf1-daff-08d5b71e6623 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2018 09:05:52.9102 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 49a80e48-eb41-4cf1-daff-08d5b71e6623 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3352 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe1e::724 Subject: [Qemu-devel] [PATCH 2/2] qapi: avoid empty CpuInfoOther type X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Anton Nefedov , armbru@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" the patch provides an example of a previously introduced data-partial qapi union tag Signed-off-by: Anton Nefedov --- qapi/misc.json | 48 ++++-------------------------------------------- cpus.c | 2 -- 2 files changed, 4 insertions(+), 46 deletions(-) diff --git a/qapi/misc.json b/qapi/misc.json index f5988cc..2059852 100644 --- a/qapi/misc.json +++ b/qapi/misc.json @@ -387,14 +387,14 @@ 'qom_path': 'str', 'thread_id': 'int', '*props': 'CpuInstanceProperties', 'arch': 'CpuInfoArch' }, 'discriminator': 'arch', + 'data-partial': true, 'data': { 'x86': 'CpuInfoX86', 'sparc': 'CpuInfoSPARC', 'ppc': 'CpuInfoPPC', 'mips': 'CpuInfoMIPS', 'tricore': 'CpuInfoTricore', 's390': 'CpuInfoS390', - 'riscv': 'CpuInfoRISCV', - 'other': 'CpuInfoOther' } } + 'riscv': 'CpuInfoRISCV' } } =20 ## # @CpuInfoX86: @@ -465,16 +465,6 @@ { 'struct': 'CpuInfoRISCV', 'data': { 'pc': 'int' } } =20 ## -# @CpuInfoOther: -# -# No additional information is available about the virtual CPU -# -# Since: 2.6 -# -## -{ 'struct': 'CpuInfoOther', 'data': { } } - -## # @CpuS390State: # # An enumeration of cpu states that can be assumed by a virtual @@ -575,38 +565,8 @@ 'arch' : 'CpuInfoArch', 'target' : 'SysEmuTarget' }, 'discriminator' : 'target', - 'data' : { 'aarch64' : 'CpuInfoOther', - 'alpha' : 'CpuInfoOther', - 'arm' : 'CpuInfoOther', - 'cris' : 'CpuInfoOther', - 'hppa' : 'CpuInfoOther', - 'i386' : 'CpuInfoOther', - 'lm32' : 'CpuInfoOther', - 'm68k' : 'CpuInfoOther', - 'microblaze' : 'CpuInfoOther', - 'microblazeel' : 'CpuInfoOther', - 'mips' : 'CpuInfoOther', - 'mips64' : 'CpuInfoOther', - 'mips64el' : 'CpuInfoOther', - 'mipsel' : 'CpuInfoOther', - 'moxie' : 'CpuInfoOther', - 'nios2' : 'CpuInfoOther', - 'or1k' : 'CpuInfoOther', - 'ppc' : 'CpuInfoOther', - 'ppc64' : 'CpuInfoOther', - 'ppcemb' : 'CpuInfoOther', - 'riscv32' : 'CpuInfoOther', - 'riscv64' : 'CpuInfoOther', - 's390x' : 'CpuInfoS390', - 'sh4' : 'CpuInfoOther', - 'sh4eb' : 'CpuInfoOther', - 'sparc' : 'CpuInfoOther', - 'sparc64' : 'CpuInfoOther', - 'tricore' : 'CpuInfoOther', - 'unicore32' : 'CpuInfoOther', - 'x86_64' : 'CpuInfoOther', - 'xtensa' : 'CpuInfoOther', - 'xtensaeb' : 'CpuInfoOther' } } + 'data-partial' : true, + 'data' : { 's390x' : 'CpuInfoS390' } } =20 ## # @query-cpus-fast: diff --git a/cpus.c b/cpus.c index 5bcd3ec..bd0de44 100644 --- a/cpus.c +++ b/cpus.c @@ -2273,8 +2273,6 @@ CpuInfoFastList *qmp_query_cpus_fast(Error **errp) info->value->target =3D target; if (target =3D=3D SYS_EMU_TARGET_S390X) { cpustate_to_cpuinfo_s390(&info->value->u.s390x, cpu); - } else { - /* do nothing for @CpuInfoOther */ } =20 if (!cur_item) { --=20 2.7.4