From patchwork Thu Mar 20 15:47:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 874980 Delivered-To: patch@linaro.org Received: by 2002:a5d:5f4c:0:b0:38f:210b:807b with SMTP id cm12csp398823wrb; Thu, 20 Mar 2025 08:48:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW9AvSvva5WYj25u+nG26vGUhekWxZi7Ks9fESRsk4xafOR/Fsip9dHdRYZl7W6NOySiDKjgw==@linaro.org X-Google-Smtp-Source: AGHT+IGQilKTLOsrs3pp+mKfKPaM1eLeU/5cR0AkDTLKlFPQArZ2G+Zi+VPxSdp0kYcRebJ1M45g X-Received: by 2002:a05:6102:512a:b0:4bb:e14a:9451 with SMTP id ada2fe7eead31-4c4ec81b632mr7156414137.20.1742485737403; Thu, 20 Mar 2025 08:48:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1742485737; cv=none; d=google.com; s=arc-20240605; b=W+HziGj935oKNPNxPc8G/asArYWWi5Y2qLkAXL6/YtSp+ifWLkQiT1zmfGRyF0aowT 8XwqG6wg5fILTwG9NjRA0+G+uW9wWTH+ql7OaWMrg0Cjce2Y2hO/fblbmpCnxsQRZIFK JndSRkPIPmMu6eGqB5JcrQ2hxaX90e45MUHEEXf53ewEDTP87mh/5x1XpH5UMlgK10FD Ak+uRBOHo6Y6UEP3sv65LRqL6O1owB+npdUDXG7wZEFtopnNI9EwssUjDBBEq0+ZjmBQ IrZaQ7rR+VpoBtdZXSCipvz34+wUbRUZx3PWlQCmizoLI5yD6Ck7gK1mKxaFHxuOlb/a 28wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=hiZgm8pqiIPSqZSnhTLPdWvEW87iUNjwb11DtO5aXf4=; fh=qbC6fvdFrljuilVi+/v5x47AoPH9/ehlwoBVXcbRqbk=; b=Xuj+LJwi27rO0ka370o4t5TL3eUFXnfm7pYrhYB4v8wuHS+E4ztsEgwF743YpEvSsO S11DSqsur8bOfwxEAgHDbOOoLworCDPcMUW5VgvF8OmDl0Ool9zV+tRqKFL3fLP1NHjT AU2c+b1iewxjO2o9QkgYE6GM8cMgqZkFvL+o4gSSnY5cgEgNiU12pFxdPNS/4mVAiH2w TmWmP2e8k7pTRT8VEOeFQwo032HCwGbsbgSQcG4DpS9LscK3L0ThDrbEfBIeVsp/P9IZ kgHs4PZYG1uQByLm5tvR+1Q0WcNlzvA14ETIrdUcOw2kfoPaBc9/dK3RL6oDZ7uqIdWc n5+Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BjWjj6QV; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id ada2fe7eead31-4c50bcf1d15si61715137.101.2025.03.20.08.48.57 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 20 Mar 2025 08:48:57 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BjWjj6QV; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tvI7r-0003rX-Cz; Thu, 20 Mar 2025 11:48:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tvI7I-0003Qm-Jd for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:33 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tvI7G-0007nZ-SR for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:32 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3913fdd003bso567891f8f.1 for ; Thu, 20 Mar 2025 08:47:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742485649; x=1743090449; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hiZgm8pqiIPSqZSnhTLPdWvEW87iUNjwb11DtO5aXf4=; b=BjWjj6QVdYsWWyPqNTkP34NN0hE6wyq+pBBUglXXe9wbyfga+J87e8WUcvILQDVfgp 8k7PmY4r2IwtKd0uLp24JV/NTX0ZibwqO+mXqQrr+ttj+LxjLC3iGYiOZwFtNI+H2b2a j4NJhZoMgQGVm11o+A/zhtF8xNj5S4UrqIBi34X3XqHkNMLRtvC8TZcKiFidI2WP1jqU 0EMZ9gSCOF1ShBMC1m5a53DzjrnCBAFOynSx/q6m/ylIcwp2i0y64sEyIhMq6fK2pYk9 bmW3916rbkptR6fAiGQqhXdBZ1y0R8xO8Re7SHidyg7n221skOfZ37BKkZOwUYxyV0lf 2mZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742485649; x=1743090449; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hiZgm8pqiIPSqZSnhTLPdWvEW87iUNjwb11DtO5aXf4=; b=tt6fyXGFT5CBKm623HcR0UUO3yeh+a6B2Bt9Q6h489WT/MdPz+x7OWJ863FQ2atpDV WBNp46DBnZD9NGK3gADCSyvEUCqY8nkCfdVUPFr+/4mqQf5qmozgW98C/MTn0PrRgSSt IgnYpqwYFVEVb84soWKRulrlljYEUjFOh8if68PmuuqTPNYLhZCIoUDSEcrm3MLALeYc fm02TOXktYEKe7uxGJ5cc/No/CJxSoKUeH3rpcxMVRRgsOOvF+BIEdmXhWnVPcQf1e+V cHIPF6MakbSQFaKGY3ntGPanDZIjqCTkP8cKojQuve987dFq2+c4D01M3Ru8s79+xAzQ 0fhw== X-Gm-Message-State: AOJu0Yxusqso36oFdUzzt/1MTw3xIfUemoHm6Z/JwW/Ea+TAwLi0g1tn SXYvKClEf2bgzXsBUNArnnDt8vQcxBiv1nwwwGzy494IO+yiwgStIXH4CDrtSPCanuKDjzC02+4 Q X-Gm-Gg: ASbGncvzeqz+PyGOLaPRQj0tpG0FDSCHUf8F/K9CqJSa24/UEQsyRnT142iIKsEs8mC BdKieXARztrLjlMSaNiPXK2XCcRrRA14zYwU2OuxE68viYYXQXB6/JebQELLRc4S+aiGIH7auMR 8cWNmyjGeLIC0jy4R6QnmKccmyaMQw26hMjLVW+HDHh527LQp36Jcyd1+yCRQdDVbyquCFI93fg +eMJZScAlDLyZ+d95HJhWsaVICU0HpBABRv3Hinb4As2VxHOiU8+gh6BVRiraSHufFZ7hpYtgo9 JQZuxVHiWKCnY+5qQcgMQilj3fRMaGEJB7KqwmVnmVgg7lUmiDm0BiYUniudbHWtpuOQMNMIZ7S jpm2KjhXxmrUJNu0yAAroYPU9ME+iscHjrAk= X-Received: by 2002:a05:6000:178b:b0:390:f9e0:f0d0 with SMTP id ffacd0b85a97d-3997f8f751bmr13487f8f.6.1742485648791; Thu, 20 Mar 2025 08:47:28 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-395cb318acfsm24566973f8f.70.2025.03.20.08.47.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Mar 2025 08:47:28 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , Eduardo Habkost , Paolo Bonzini , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Pierrick Bouvier , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= Subject: [PATCH-for-10.1 1/6] qom: Factor object_class_dynamic_cast_ambiguous() out Date: Thu, 20 Mar 2025 16:47:17 +0100 Message-ID: <20250320154722.27349-2-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250320154722.27349-1-philmd@linaro.org> References: <20250320154722.27349-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42c; envelope-from=philmd@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org In order to allow matching ambiguous types in the next commit, factor object_class_dynamic_cast_ambiguous() out of object_class_dynamic_cast(). Signed-off-by: Philippe Mathieu-Daudé --- qom/object.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/qom/object.c b/qom/object.c index 01618d06bd8..1620a87ef44 100644 --- a/qom/object.c +++ b/qom/object.c @@ -940,8 +940,9 @@ out: return obj; } -ObjectClass *object_class_dynamic_cast(ObjectClass *class, - const char *typename) +static ObjectClass *object_class_dynamic_cast_ambiguous(ObjectClass *class, + const char *typename, + bool *ambiguous) { ObjectClass *ret = NULL; TypeImpl *target_type; @@ -977,6 +978,9 @@ ObjectClass *object_class_dynamic_cast(ObjectClass *class, } } + if (ambiguous) { + *ambiguous = found > 0; + } /* The match was ambiguous, don't allow a cast */ if (found > 1) { ret = NULL; @@ -988,6 +992,12 @@ ObjectClass *object_class_dynamic_cast(ObjectClass *class, return ret; } +ObjectClass *object_class_dynamic_cast(ObjectClass *class, + const char *typename) +{ + return object_class_dynamic_cast_ambiguous(class, typename, NULL); +} + ObjectClass *object_class_dynamic_cast_assert(ObjectClass *class, const char *typename, const char *file, int line, From patchwork Thu Mar 20 15:47:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 874978 Delivered-To: patch@linaro.org Received: by 2002:a5d:5f4c:0:b0:38f:210b:807b with SMTP id cm12csp398623wrb; Thu, 20 Mar 2025 08:48:28 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXAg1dX2QhVgIjP9zXwccdA893lBSDTsRq3NeZEOXfU8+egGLoeM5+26lICQTF7V7EJ6iRl7g==@linaro.org X-Google-Smtp-Source: AGHT+IF2EOakJIpVPrY0L2R9jihg6YsnauVQ4e06rDglZ9eA/H5G9F605n+TdDC/SfWLPXRJ5w7h X-Received: by 2002:a05:622a:4d0d:b0:476:fd69:6736 with SMTP id d75a77b69052e-477082bf156mr110452861cf.3.1742485708709; Thu, 20 Mar 2025 08:48:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1742485708; cv=none; d=google.com; s=arc-20240605; b=LRLUq427QtxuUW4XBhl1GaHg1AbNe7qIdVZqyu3YFqmhssT+uHKOQd1CsIYTftO5uZ cHTaZDfSuFN2Q9fIobVaB/2hMuBH/L1szA0Yw5JKN46n7LODjY3X0XL1E+hC4nBWw/nk WjAuRrN1AR5GOth11rvQQkQjjp3uupLgQW2KDY6WHzr8CgUtNSniWBBEf1Z3riQT8RUE YoCLRj9jkIp6BtbrM8oiiYR6jyNrtgpEkJv+4Z6OHv9wyEWGb3UOOxncBECngzKNk7p7 XaXquYFVL4H9dIY/nZTWL5dNJBua1OrEoyW9zBjra7ztvN8mbDjQpEcAFCTyqd65hKRE TG5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=GC9BJXwZMB68nDcfXgqs95N9vIk0tB0Sm7nNBQ7VN3g=; fh=qbC6fvdFrljuilVi+/v5x47AoPH9/ehlwoBVXcbRqbk=; b=PXaLoP+Cq/WFbJOBIYcMVpA2ZXWnocenisMzCVp0msyuoCeqEMMjASL3cN48cdYe3a xhCYLFUIbx0RmjAowzyG0NtXGkLR15DyJGAhuQOyH4j0u1fgE/vve2jKwyTddC97KZBx jbcTNj5kx0bAB9WV67gje7w/Mk2npYaFqxgNfkTOqrjXtHP79zkGitXN3MbNpVIawmOG bdYTDasz/UNaB3bLjrFf08BxfuIZ8rFtbeQ1yy4KIoBfGiikDWYOyYGJlQjesnxAzXIU mL3kM8w/PFro3ccI8JGU65J2PxCF6L4Mb7XXWdqSxkrmJZziRnRzic92FdFzAWRX42jZ btZg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yKpkJ1Eo; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4771d17ee3csi949271cf.171.2025.03.20.08.48.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 20 Mar 2025 08:48:28 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yKpkJ1Eo; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tvI7w-00041z-7p; Thu, 20 Mar 2025 11:48:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tvI7P-0003Tn-8W for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:49 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tvI7N-0007oG-J3 for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:38 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-399744f74e9so643143f8f.1 for ; Thu, 20 Mar 2025 08:47:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742485653; x=1743090453; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GC9BJXwZMB68nDcfXgqs95N9vIk0tB0Sm7nNBQ7VN3g=; b=yKpkJ1Eo8LuQmzL6FJedANYlBo6nHsu8C7Hfubf1qpFm7vdYiLKIdCBj+yiev2bmzK xkWo9cWBpjcQ8YS8PAFJ9ducxqOCZPo+OO+m7nRHyYVLp3QlapiGRokTSm/7KHbgJnEs 7Jph4ioiv8xIz/2VfalEWDkORymU/GV0rf3qPNlJlt83EJaOiNd7R7Jgc05NdZkkslXE VGTBEMjNst64mGN71ffGBxjJ11o0ztYRlX756IX/abHQ48rBd0OIE1F0I4xSgDn4KzEm 3naY98FmGlipSrO1woSpIdKUsaPUCePhmRYYbKmscnWW2twNPwVma8P+spsd8T/U4FsA tcMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742485653; x=1743090453; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GC9BJXwZMB68nDcfXgqs95N9vIk0tB0Sm7nNBQ7VN3g=; b=KzRK2amgE2KvPCS8NRgzrzZbuJxZ1cNWtAXmgHJUvOPA/JMV49xeeZFUSMrK20s4mQ iDtjcyZatNYZYgO0HE84cP06olRAros3dHDcfk+e89jFw4zz+j1gchwS4hhya6wx/xhv Qd9OFxMJQ7twwxs6fJpdJ1LaIm5oIjQclPjeEKyDOTDh6CiKg1uyH9d7PE2PLHmaaOim UKQRE/ZZYqDUHOUYRy3h4nWBJzxj8JRCtdr5KtlMwGwtoJ+QYBLRO86WQDELo+pict0S HXIuWOYIg+3g/ipoeAE8CcC/sgdRRrxk8GoKT1sNebgBfxNXPOHztZ6qouHW/0MQvZ+s g0mw== X-Gm-Message-State: AOJu0YxK5WvJLEB6yTekLlu1s0ZAqnabBXGkhaZapywFgikIp4KU9BuA j0E6bm0StxCnEFfdveKCqtJyIxaQbTwzf/6BuPvDa434lZkV6Hvt+cQ2z/gMDLKD1SITM7cj7yH N X-Gm-Gg: ASbGnctnh5WB2UbFysvx8R6swGJYPi7APTBDJImeVisCpdu76oWPVo+XklA+gZas8O4 KRROStJ9zVGP1Xs54ZqXjRPwO7bNfLfjC55TRg/7xN/VdYfSSAoAKRJfYrPoRVvgipLGfem++ZY H4L72q1W2HKDdvhWF9vADNoP6S9g1dm9HcV3L0nUjMuNfNxVEWgos+JmAuOWESB6rwQgYsbFeWY w11Q/dG6tpN2cXXbztqryOTQwJ/jUCx7jIWYKyqFeC8we8eoXv1Hb/dq9UcVy7ICHHnYduzoavk uxZbx34L295knzUctP4GnTCbIFA+C4ANyiqVfTvHNpQ4Wl7S62D7aVGt7KZFEaLtqI6bmYGPzZk BvTwg+IXhpqMPV1OXV86r+nhj X-Received: by 2002:a5d:598f:0:b0:390:fb37:1ca with SMTP id ffacd0b85a97d-39973b04a9amr8653898f8f.53.1742485653445; Thu, 20 Mar 2025 08:47:33 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-395cb40fa30sm24349899f8f.68.2025.03.20.08.47.32 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Mar 2025 08:47:33 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , Eduardo Habkost , Paolo Bonzini , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Pierrick Bouvier , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= Subject: [PATCH-for-10.1 2/6] qom: Add object_class_implements_type() Date: Thu, 20 Mar 2025 16:47:18 +0100 Message-ID: <20250320154722.27349-3-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250320154722.27349-1-philmd@linaro.org> References: <20250320154722.27349-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::436; envelope-from=philmd@linaro.org; helo=mail-wr1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Add the object_class_implements_type() method to check whether a class implement a type, which can be ambiguous for interfaces. Signed-off-by: Philippe Mathieu-Daudé --- include/qom/object.h | 10 ++++++++++ qom/object.c | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/qom/object.h b/include/qom/object.h index 9192265db76..fd74d4be89f 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -995,6 +995,16 @@ const char *object_class_get_name(ObjectClass *klass); */ bool object_class_is_abstract(ObjectClass *klass); +/** + * object_class_implements_type: + * @klass: The class to check the implementation for. + * @typename: The QOM typename of the implementation to check to. + * + * Returns: %true if @klass implements %typename, %false otherwise. + */ +bool object_class_implements_type(ObjectClass *class, + const char *typename); + /** * object_class_by_name: * @typename: The QOM typename to obtain the class for. diff --git a/qom/object.c b/qom/object.c index 1620a87ef44..b9948937935 100644 --- a/qom/object.c +++ b/qom/object.c @@ -992,6 +992,17 @@ static ObjectClass *object_class_dynamic_cast_ambiguous(ObjectClass *class, return ret; } +bool object_class_implements_type(ObjectClass *class, + const char *typename) +{ + ObjectClass *k; + bool ambiguous = false; + + k = object_class_dynamic_cast_ambiguous(class, typename, &ambiguous); + + return k || ambiguous; +} + ObjectClass *object_class_dynamic_cast(ObjectClass *class, const char *typename) { From patchwork Thu Mar 20 15:47:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 874977 Delivered-To: patch@linaro.org Received: by 2002:a5d:5f4c:0:b0:38f:210b:807b with SMTP id cm12csp398593wrb; Thu, 20 Mar 2025 08:48:25 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWtbhcyl/xXZ/tkgc7WvOub82xdRODsmFan5ZVfumtYWbFco2x3i08o9f0btBBop31jBzh1mQ==@linaro.org X-Google-Smtp-Source: AGHT+IHvYSbED9Nj2+a9jvadUKbUh4d+zkYa83oIg3bmvaFLuZaJgXSJSXrlSueJ9SYPwToRYwYs X-Received: by 2002:a05:6214:1c0b:b0:6ea:d393:962b with SMTP id 6a1803df08f44-6eb352ce972mr53353386d6.22.1742485705641; Thu, 20 Mar 2025 08:48:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1742485705; cv=none; d=google.com; s=arc-20240605; b=KItG5f01W8qrM5X2pIu3ZvMBYo1MsX3XbblSmQs210Q5BOBxODfUHNoQKYS2dV9E6V nCuQEkqTTSu91aYpLwaMHkRa3o5PY4FXKdFP+6ns5jXyxnNd3qJBjrnk/ntkYfc+oBID NSUGsafzU8065hUQeO+DW3yZ+5vRWsi9w0r6aJTVpmpJ5jPQPWjr5kyoFBouoZDQtwCc zTa2x+zxbq1KxAziGmXa3RQvXmt+9uSUmryF6lW4VWW+OnN04VF1wOM/Ae4i9bCdNFoT dmV5HHAdLU72464AkUfIarEh0lbSUnXlCDJ4l4uT1D5P1nf18FAmT8PfQPg50dZtPtXV X6qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=/gSf0S4ib6Vee8Me5sVEAde29VMbctL8yWatlMbaa/I=; fh=qbC6fvdFrljuilVi+/v5x47AoPH9/ehlwoBVXcbRqbk=; b=bgUqJQYhICiKDCTu62SWNCazlsxirvtRAa570J0Ol9vtJj5x7UpbbLeAdbfXj3F0xp LmlpAmKreZkfvb3Np0iVYZ7Z6YjhRhjakp2TgisnCMEFNIIX0oauxj1XH4BdYNdAGplL S5OWPgrw/oGvRsZ41QKk5y8Dm9SV3pUW5riLKDJ9ci+ZzjFBAzk2rcAxBM0HnfMm9NAx KA3CenaqEiKYLWaYdiXo1hS8YtUe6ED6Xb6f1fFho2DRoapgauwtlfoF1z7dkp/sk82y 5NaAPnHupfuKzIZTwJKsh9zO58QghHqZV4q4TRg4hZFfNz4TiAiPSRn6BGg8y3OJOLee b1sQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Clty6woc; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 6a1803df08f44-6eb3eff330dsi193186d6.197.2025.03.20.08.48.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 20 Mar 2025 08:48:25 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Clty6woc; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tvI7w-000439-Ry; Thu, 20 Mar 2025 11:48:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tvI7S-0003X1-Ht for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:53 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tvI7Q-0007op-CS for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:42 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-399749152b4so440773f8f.3 for ; Thu, 20 Mar 2025 08:47:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742485658; x=1743090458; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/gSf0S4ib6Vee8Me5sVEAde29VMbctL8yWatlMbaa/I=; b=Clty6wocDireKBZhtOaco9YY0nNFae1NN60XgQ6gOmnd3a4VgS77X0ThBRxBFKDhdw 0kAYlQlxDGeTHHDiKE12eDTkso895f+dwK7oOCw9e9udy3efRyJ0tekz7bygQtqku331 Q2qZkmvhQiVBPYMqVGpREPc7s6ah1DIQPubNck7laPioFaUxt1cMAMkxZ25jsvs8QJJ6 lALcIIprRXqm7N1aLpdOdKlH6z0JMpVetgsa3JB8UCv6I1qit35TJe1LG5mwXZm19P9d RSBQtz4m9WXSRqSBnADhHOoYu/jsLeqO6V5/HONgB2WtDTBAtVkAh8R0X3wM1blQqMOH hSjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742485658; x=1743090458; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/gSf0S4ib6Vee8Me5sVEAde29VMbctL8yWatlMbaa/I=; b=JpMUnjxlYAIE2Yt+u36ljRL8BNEeGMhGFaEGNvYX4gEKewn33nUZK87zfJoZqM91Bi r+Y0zQZvR9PAf7qwG31qXgNuAQ6qvz/bIhKw3H7FK7J7gvTHtupZGeZ2Hsc+w+4Ag+N0 oMjmT/2bd2UDq+fJKIeEa6QuuXVn0wJZ80xLWtqeENRoPo6/hEm80dQCFiUCCly7g6MM Jifx57qLuZ7+aa1C6PVqgsiYYOeOuuDHHRmWnBIw4c4ABsno0ONaJkl8ZQKjbiWBOcWw f3C7zKraMvplPa/IPrzaXt/J/uwrFs+To1plzo7cZ3Tp8txxtNF32wZGr+NgkUDav76z nQFw== X-Gm-Message-State: AOJu0YzpTTO0EVQUXp+EK5CXukXx4AvUINurH5rXSsy1tfIX9SWPQFFJ GSMEEqBYbweitzT86sGUihSzYogtjACqocPDnTO0l7Eo1e0swbXcve/wTqxZRHnZN7HpSWP9Avx v X-Gm-Gg: ASbGncv0HR82vgsc5iKSCfqt+OnYxiSbnjLP4tJqFff5diwTuwHV8+rodC3xVAONdtK NrU7z/4jXhH8kyJGmp6hhJThEWRoy79/wiQnBQfM6GtjoljcDPxmH1z6DngM2Xq3e3JlFzX/j86 3Orb5q3BakbE6fTuyjrivT2PwnoVERI4TQXb27JMzigw/srCXVXkWCR5GDGwl1nWXACvwM1CCX5 olapqvBF7rAhKxUzi30Dl4Y4WTl7Ea2b2AatPKv/BDhh4YWSwouduqzgr1nUcpeVTs2D/9l4PnH yDiVGWmd4BU8nUxhv41RktagVUK5tY/hSatT0GFO041ILf4mzM2sFqe5pGg2vwVdekOV+MvJ02N ocv3OENmIKmTFsExmMBGur/Kj X-Received: by 2002:a5d:64af:0:b0:394:d0c3:da5e with SMTP id ffacd0b85a97d-39973b313demr7289619f8f.47.1742485658084; Thu, 20 Mar 2025 08:47:38 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-395c8e43244sm24726286f8f.60.2025.03.20.08.47.37 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Mar 2025 08:47:37 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , Eduardo Habkost , Paolo Bonzini , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Pierrick Bouvier , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= Subject: [PATCH-for-10.1 3/6] qom: Test object_class_implements_type() Date: Thu, 20 Mar 2025 16:47:19 +0100 Message-ID: <20250320154722.27349-4-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250320154722.27349-1-philmd@linaro.org> References: <20250320154722.27349-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=philmd@linaro.org; helo=mail-wr1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Test TYPE_INDIRECT_IMPL (indirectly) implements TYPE_TEST_IF (via TYPE_TEST_IF2A or TYPE_TEST_IF2B interface). Signed-off-by: Philippe Mathieu-Daudé --- tests/unit/check-qom-interface.c | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/unit/check-qom-interface.c b/tests/unit/check-qom-interface.c index c99be97ed8b..c43a63e8b3c 100644 --- a/tests/unit/check-qom-interface.c +++ b/tests/unit/check-qom-interface.c @@ -36,6 +36,19 @@ static const TypeInfo test_if_info = { .class_size = sizeof(TestIfClass), }; +#define TYPE_TEST_IF2A "test-interface-level2a" +#define TYPE_TEST_IF2B "test-interface-level2b" + +static const TypeInfo test_if2a_info = { + .name = TYPE_TEST_IF2A, + .parent = TYPE_TEST_IF, +}; + +static const TypeInfo test_if2b_info = { + .name = TYPE_TEST_IF2B, + .parent = TYPE_TEST_IF, +}; + #define PATTERN 0xFAFBFCFD static void test_class_init(ObjectClass *oc, void *data) @@ -58,6 +71,18 @@ static const TypeInfo direct_impl_info = { } }; +#define TYPE_INDIRECT_IMPL "indirect-impl" + +static const TypeInfo indirect_impl_info = { + .name = TYPE_INDIRECT_IMPL, + .parent = TYPE_DIRECT_IMPL, + .interfaces = (InterfaceInfo[]) { + { TYPE_TEST_IF2A }, + { TYPE_TEST_IF2B }, + { } + } +}; + #define TYPE_INTERMEDIATE_IMPL "intermediate-impl" static const TypeInfo intermediate_impl_info = { @@ -86,18 +111,33 @@ static void interface_intermediate_test(void) test_interface_impl(TYPE_INTERMEDIATE_IMPL); } +static void interface_ambiguous_test(void) +{ + Object *obj = object_new(TYPE_INDIRECT_IMPL); + ObjectClass *klass = object_get_class(obj); + + g_assert(object_class_implements_type(klass, TYPE_TEST_IF2A)); + g_assert(object_class_implements_type(klass, TYPE_TEST_IF2B)); + g_assert(object_class_implements_type(klass, TYPE_TEST_IF)); + object_unref(obj); +} + int main(int argc, char **argv) { g_test_init(&argc, &argv, NULL); module_call_init(MODULE_INIT_QOM); type_register_static(&test_if_info); + type_register_static(&test_if2a_info); + type_register_static(&test_if2b_info); type_register_static(&direct_impl_info); + type_register_static(&indirect_impl_info); type_register_static(&intermediate_impl_info); g_test_add_func("/qom/interface/direct_impl", interface_direct_test); g_test_add_func("/qom/interface/intermediate_impl", interface_intermediate_test); + g_test_add_func("/qom/interface/ambiguous_impl", interface_ambiguous_test); return g_test_run(); } From patchwork Thu Mar 20 15:47:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 874979 Delivered-To: patch@linaro.org Received: by 2002:a5d:5f4c:0:b0:38f:210b:807b with SMTP id cm12csp398751wrb; Thu, 20 Mar 2025 08:48:45 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXqjwPiWlC8fUdC64zuDqxSY75WquZLjWFvA7tNHr84+t0NFceSiHYJ2XkSbqJfsFu/JjIXNA==@linaro.org X-Google-Smtp-Source: AGHT+IGux3c5XU0pJM0DAAc34reJOcUa1CxydFV0hBwHxF2Z9H+QymjMbVc3rQaxxwVxMw8nmC+Q X-Received: by 2002:a05:6102:304c:b0:4c3:6979:2ef with SMTP id ada2fe7eead31-4c4fce520c5mr3466396137.21.1742485724973; Thu, 20 Mar 2025 08:48:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1742485724; cv=none; d=google.com; s=arc-20240605; b=IuGV7rdGO8m0y65U9r76Hox7KzXLGhMRQALPkFaPMdqlEUiR68VYpG47IBar5zX6Ox DdXVGryKjc5XGnMUhrWHyP+yZP8kBk7TlxyS/szrsA/J1xKZRfpeXWIXlXK6KFv1FTPG kOjLiDJpTFiy6DJ6j8FydZiyhr13I4mblnIhEa2zBDpZHrmmEYjX/vF6stM1fRVbHqiF +AR3myfD+iBjUwY8R/XSIBH4xjkhBoCkERFwBUJDiU977aW36DSAKA9tJLPK50zBfNHV tc0Oqxd6IYpLajJLGuOrKnyh9lF0iUrAGVgxak7FrQxY+6z/avleAPU4kJ/M80sn1TzY crOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=l5mdBkm56vK4L97ihZ1b8SZhbwJ9wIfLMxsKgv4QD5g=; fh=qbC6fvdFrljuilVi+/v5x47AoPH9/ehlwoBVXcbRqbk=; b=kAF32xxuoy67VlvaXmYUJK7iMrV/OCE7vsWjhgaFINhDfqryzOAXK2ZtYquyAU31ce 7aBL9IEgYmGxdnPTNDSdd6T+dzGrnaIzwdkGBX0c/wWMY6WfyI5vgoLKwe7RIlP1Ax6F /+3yCJmNzSBHvoW3a15rqcEU+JPhGv9WXrWRF7h8GgWQH+Tu29Fbo3GcA7+zFZi2bekT KA4bbnUfXMbjXTggkeHRO1inDNkwZDBJODTxupy1Yi30XeHquTdp9KWo4OxlV2eERGjh fvgXuyfbXXU8vOsXj1Di+Swn4oR/zz03LOempxjKXAPKn1NUXQCiJYGacQiuQv0QOWEt 7eYw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gmw1NUQ8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id ada2fe7eead31-4c50c02c9ebsi56378137.483.2025.03.20.08.48.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 20 Mar 2025 08:48:44 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gmw1NUQ8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tvI7s-0003wE-Tn; Thu, 20 Mar 2025 11:48:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tvI7a-0003aa-Sw for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:48:03 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tvI7X-0007pi-UU for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:50 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-43ce71582e9so7100535e9.1 for ; Thu, 20 Mar 2025 08:47:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742485663; x=1743090463; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=l5mdBkm56vK4L97ihZ1b8SZhbwJ9wIfLMxsKgv4QD5g=; b=gmw1NUQ82F2chX0U24J9bPhV27T29dXHEjEbc3Lvh5InLBnrT1TWxHaDo87Z1yyYel ZlTH3V3Vs33i5HrmuR+BML0gJzzFT9Ko5fGs6CeKwq1jIE38AR8nq3FpDcRWjLFrHphE VqSJ7CNZ3VsQrJgjonzP1ki5nbiJcZJKh0VND5t1xG6Hxo7c1+oXlpymex/oX9bILYNT pjzuwTuoY/qngP+k2xYEAjaR5DbJRFvHkiesFxlzxu6n/ZTUM1DIDtoHn5FswQ4cbATX I30E2wvBVFx0kiKd0xvGHuuGA/7p4vdFMsAlX/UNrlKRHUxCqVOZNf73JfqvdDwG12jR PLRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742485663; x=1743090463; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l5mdBkm56vK4L97ihZ1b8SZhbwJ9wIfLMxsKgv4QD5g=; b=iCyeX1VYEoGN4RZoquHkz163+GVRkD3llurg7ZimlOekrle2nzcLf0KpF226OHUoJh fzC38dxXX2b5zaKOW6oWevVVGXR5XRS2+aZsJupTLSIeiTbOqP8w79YLHoki8LV/lVpf C4wn4DJUFaeHa7T1J4DrNvC5ifntjjmasusfEYdRUKT0Z/H7SModX7sMQaO7SCbfCXMd N6liG6Ir4MBLaE+VIvbsYUU3wg5yvSlaAUZS/WSqw35tVYoxLyT5N8PAZzJQUQVun8O4 SVZ0hZ5QJmh8xDmbYghzfje0/7TTDzNmIZ1p1bCDhaXJaE7P2/WyW0fsRdFyILWZ4ONe 1dtA== X-Gm-Message-State: AOJu0YwqjzZJg2dhmRGetV+n4GraOZEPzMoyoKTXU8Ar8R5gKmo5QflJ 0tS5/zchKjI/h2bkt98ZKErEdrGRRj3QDA8WN0gH1lPgOIJCCM9MVclNkod+0KilncLmvqFX0/i u X-Gm-Gg: ASbGncvc+9D3d3aKgnTB1WmLzZCjqnVg6OzMrdbhWB+YqdXZCbsyGD9ilbRkTMk+4u6 LJFsYu3MrXU0OZE2E9doq6UWudj76VApYuDg+EMSfTpioXCRdgJ7DFdSA6L6PPkjadxdJPszlwe XIcyyBkNFAfgz0ym7Kza21o018uTShsb4z64Mj9203SFT9TJpD0WLZx0YuOlW5AAaQcnIGwxOh9 0ywv1DeL7rYX0beuJr3jZe496aEkPuUNVW4W9LSVj6rbveuFeXm6V6pONWsaJBmWSw6ypchtgj9 grZXcojnWRhOSf1nPGt6CZv8j+FWZ97mh9yzZM5CGyyxYZywz3F4+Mddblz2emAA4hnMyB4M7c4 1oXsAG8hrmof2AKJtktoeXNao X-Received: by 2002:a05:600c:3490:b0:43c:f70a:2af0 with SMTP id 5b1f17b1804b1-43d495462femr38111865e9.16.1742485662711; Thu, 20 Mar 2025 08:47:42 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d43f556a4sm52583585e9.22.2025.03.20.08.47.41 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Mar 2025 08:47:42 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , Eduardo Habkost , Paolo Bonzini , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Pierrick Bouvier , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= Subject: [PATCH-for-10.1 4/6] qom: Prefer object_class_implements_type() to check type implementation Date: Thu, 20 Mar 2025 16:47:20 +0100 Message-ID: <20250320154722.27349-5-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250320154722.27349-1-philmd@linaro.org> References: <20250320154722.27349-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=philmd@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org When we only want to check a type is implemented and are not interested by the returned class, prefer object_class_implements_type() over object_class_dynamic_cast(). Signed-off-by: Philippe Mathieu-Daudé --- chardev/char.c | 2 +- hw/arm/xlnx-versal-virt.c | 2 +- hw/core/cpu-common.c | 2 +- hw/core/machine.c | 4 ++-- hw/i386/xen/xen_platform.c | 2 +- hw/pci/pci.c | 6 +++--- qom/object.c | 2 +- qom/object_interfaces.c | 2 +- qom/qom-qmp-cmds.c | 4 ++-- system/qdev-monitor.c | 4 ++-- system/tpm.c | 2 +- target/alpha/cpu.c | 2 +- target/rx/cpu.c | 2 +- 13 files changed, 18 insertions(+), 18 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 5a9e9762adc..b7125e3aebe 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -528,7 +528,7 @@ static const ChardevClass *char_get_class(const char *driver, Error **errp) oc = module_object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_CHARDEV)) { + if (!object_class_implements_type(oc, TYPE_CHARDEV)) { error_setg(errp, "'%s' is not a valid char driver name", driver); return NULL; } diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 0c6f0359e3d..9313780a4c2 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -760,7 +760,7 @@ static void versal_virt_init(MachineState *machine) flash_klass = object_class_by_name(s->ospi_model); if (!flash_klass || object_class_is_abstract(flash_klass) || - !object_class_dynamic_cast(flash_klass, TYPE_M25P80)) { + !object_class_implements_type(flash_klass, TYPE_M25P80)) { error_report("'%s' is either abstract or" " not a subtype of m25p80", s->ospi_model); exit(1); diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 9064dd24f82..89c2dd53599 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -144,7 +144,7 @@ ObjectClass *cpu_class_by_name(const char *typename, const char *cpu_model) assert(cc->class_by_name); assert(cpu_model); oc = cc->class_by_name(cpu_model); - if (object_class_dynamic_cast(oc, typename) && + if (object_class_implements_type(oc, typename) && !object_class_is_abstract(oc)) { return oc; } diff --git a/hw/core/machine.c b/hw/core/machine.c index f52a4f2273b..712d07e1593 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -735,7 +735,7 @@ bool device_type_is_dynamic_sysbus(MachineClass *mc, const char *type) for (wl = mc->allowed_dynamic_sysbus_devices; !allowed && wl; wl = wl->next) { - allowed |= !!object_class_dynamic_cast(klass, wl->value); + allowed |= object_class_implements_type(klass, wl->value); } return allowed; @@ -1553,7 +1553,7 @@ static bool is_cpu_type_supported(const MachineState *machine, Error **errp) if (mc->valid_cpu_types) { assert(mc->valid_cpu_types[0] != NULL); for (i = 0; mc->valid_cpu_types[i]; i++) { - if (object_class_dynamic_cast(oc, mc->valid_cpu_types[i])) { + if (object_class_implements_type(oc, mc->valid_cpu_types[i])) { break; } } diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c index dd648a2ee94..761357657f1 100644 --- a/hw/i386/xen/xen_platform.c +++ b/hw/i386/xen/xen_platform.c @@ -144,7 +144,7 @@ static void del_nic_peer(NICState *nic, void *opaque) ObjectClass *klass = module_object_class_by_name(nc->model); /* Only delete peers of PCI NICs that we're about to delete */ - if (!klass || !object_class_dynamic_cast(klass, TYPE_PCI_DEVICE)) { + if (!klass || !object_class_implements_type(klass, TYPE_PCI_DEVICE)) { return; } diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 2844ec55560..ff2373b9876 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2244,12 +2244,12 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp) /* initialize cap_present for pci_is_express() and pci_config_size(), * Note that hybrid PCIs are not set automatically and need to manage * QEMU_PCI_CAP_EXPRESS manually */ - if (object_class_dynamic_cast(klass, INTERFACE_PCIE_DEVICE) && - !object_class_dynamic_cast(klass, INTERFACE_CONVENTIONAL_PCI_DEVICE)) { + if (object_class_implements_type(klass, INTERFACE_PCIE_DEVICE) && + !object_class_implements_type(klass, INTERFACE_CONVENTIONAL_PCI_DEVICE)) { pci_dev->cap_present |= QEMU_PCI_CAP_EXPRESS; } - if (object_class_dynamic_cast(klass, INTERFACE_CXL_DEVICE)) { + if (object_class_implements_type(klass, INTERFACE_CXL_DEVICE)) { pci_dev->cap_present |= QEMU_PCIE_CAP_CXL; } diff --git a/qom/object.c b/qom/object.c index b9948937935..536308c0553 100644 --- a/qom/object.c +++ b/qom/object.c @@ -894,7 +894,7 @@ bool object_set_propv(Object *obj, Object *object_dynamic_cast(Object *obj, const char *typename) { - if (obj && object_class_dynamic_cast(object_get_class(obj), typename)) { + if (obj && object_class_implements_type(object_get_class(obj), typename)) { return obj; } diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c index 1ffea1a7288..333c5f94e19 100644 --- a/qom/object_interfaces.c +++ b/qom/object_interfaces.c @@ -98,7 +98,7 @@ Object *user_creatable_add_type(const char *type, const char *id, return NULL; } - if (!object_class_dynamic_cast(klass, TYPE_USER_CREATABLE)) { + if (!object_class_implements_type(klass, TYPE_USER_CREATABLE)) { error_setg(errp, "object type '%s' isn't supported by object-add", type); return NULL; diff --git a/qom/qom-qmp-cmds.c b/qom/qom-qmp-cmds.c index e8665476182..1a1f0e1dfd6 100644 --- a/qom/qom-qmp-cmds.c +++ b/qom/qom-qmp-cmds.c @@ -134,7 +134,7 @@ ObjectPropertyInfoList *qmp_device_list_properties(const char *typename, return NULL; } - if (!object_class_dynamic_cast(klass, TYPE_DEVICE) + if (!object_class_implements_type(klass, TYPE_DEVICE) || object_class_is_abstract(klass)) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "typename", "a non-abstract device type"); @@ -193,7 +193,7 @@ ObjectPropertyInfoList *qmp_qom_list_properties(const char *typename, return NULL; } - if (!object_class_dynamic_cast(klass, TYPE_OBJECT)) { + if (!object_class_implements_type(klass, TYPE_OBJECT)) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "typename", "a QOM type"); return NULL; diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index 5588ed2047d..7e4cfe0f0e5 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -246,7 +246,7 @@ static DeviceClass *qdev_get_device_class(const char **driver, Error **errp) } } - if (!object_class_dynamic_cast(oc, TYPE_DEVICE)) { + if (!object_class_implements_type(oc, TYPE_DEVICE)) { if (*driver != original_name) { error_setg(errp, "'%s' (alias '%s') is not a valid device model" " name", original_name, *driver); @@ -269,7 +269,7 @@ static DeviceClass *qdev_get_device_class(const char **driver, Error **errp) return NULL; } - if (object_class_dynamic_cast(oc, TYPE_SYS_BUS_DEVICE)) { + if (object_class_implements_type(oc, TYPE_SYS_BUS_DEVICE)) { /* sysbus devices need to be allowed by the machine */ MachineClass *mc = MACHINE_CLASS(object_get_class(qdev_get_machine())); if (!device_type_is_dynamic_sysbus(mc, *driver)) { diff --git a/system/tpm.c b/system/tpm.c index 8df0f6e72b3..eeb1bd0e27c 100644 --- a/system/tpm.c +++ b/system/tpm.c @@ -34,7 +34,7 @@ tpm_be_find_by_type(enum TpmType type) oc = object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_TPM_BACKEND)) { + if (!object_class_implements_type(oc, TYPE_TPM_BACKEND)) { return NULL; } diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c index 584c2aa76bd..f9ba199e794 100644 --- a/target/alpha/cpu.c +++ b/target/alpha/cpu.c @@ -136,7 +136,7 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model) int i; oc = object_class_by_name(cpu_model); - if (oc != NULL && object_class_dynamic_cast(oc, TYPE_ALPHA_CPU) != NULL) { + if (oc != NULL && object_class_implements_type(oc, TYPE_ALPHA_CPU)) { return oc; } diff --git a/target/rx/cpu.c b/target/rx/cpu.c index 0ba0d55ab5b..2cc4e1df7aa 100644 --- a/target/rx/cpu.c +++ b/target/rx/cpu.c @@ -119,7 +119,7 @@ static ObjectClass *rx_cpu_class_by_name(const char *cpu_model) char *typename; oc = object_class_by_name(cpu_model); - if (oc != NULL && object_class_dynamic_cast(oc, TYPE_RX_CPU) != NULL) { + if (oc != NULL && object_class_implements_type(oc, TYPE_RX_CPU)) { return oc; } typename = g_strdup_printf(RX_CPU_TYPE_NAME("%s"), cpu_model); From patchwork Thu Mar 20 15:47:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 874975 Delivered-To: patch@linaro.org Received: by 2002:a5d:5f4c:0:b0:38f:210b:807b with SMTP id cm12csp398540wrb; Thu, 20 Mar 2025 08:48:19 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUzXZVg7KXozvNLTopCUh9fUxIwhvKjC6QfGl/Jw75jN7grJlLezlOY1EbfBO7bRK1ZhgIMIw==@linaro.org X-Google-Smtp-Source: AGHT+IHN8+sRxpvhbrjUcZFMwFyfhZ5T+uExlFyF8Gz85HVnXo1EWY5X/6oR6f+06xEarPck+Uzx X-Received: by 2002:a05:620a:470e:b0:7c5:48bc:8c77 with SMTP id af79cd13be357-7c5b0c72cf0mr437315185a.12.1742485698708; Thu, 20 Mar 2025 08:48:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1742485698; cv=none; d=google.com; s=arc-20240605; b=i5NyBilIP1V5sE/R/aVIrIoJtdB6Y4X3u7tDB556CQrqphXnxhOvm+DxYzSYrjIr9x 2rGjc7zrNYtNkoaC/t+rAPpoPRxuWkcW/2zVBV+3O8KciQvaaqGuSZtWL4Mc6hv5TNSE m2kSp3+azqb+2dNCjHFAciR8nSdWN565P6tS/43ags8uUX6i+KsqgQByOUIa2kT41G5A FNt1WBXaGDxWB65/bSTDRYTxYUPrv8G0c04BsdFaWsef6nWoQjn6a4qFNL/KKf7N/sbB JDp1xcjELJWpxeykhusHFanT6XZan0NJ/4qoYE8GjDUNVeFeQW7ONODJ2IL6hgz4hDiy f5lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=YQMafUmqG4jCB4tpUPdNT81l0E9rYtmlbZl+WPtco9M=; fh=qbC6fvdFrljuilVi+/v5x47AoPH9/ehlwoBVXcbRqbk=; b=erJKo8B8gIYHqoM05003dZ0beczBEYpw5AO+94ofkVCiDRqT9tPj2YAMgOljQpdW9W VZ5WORE+Oarlr+ueOe1id2XLOHnmRy9Q8BSCTTDimIbhrS5ae3i7za4s5/LMXWpjUIY0 UBOiYmyeYP069S9SJ2DhriwUHM4YTw4zAz97caUrONQBriX64WOCYg/AIZ0LfcLqY3pM pihQvZ1qplaSrTKavXUdclW1PXkw9rCTGYcf5S/ZrU+zkh66CWRlZuakAEFf3k/jq4v/ M63tmJ0hENVxb9iEHTHMnUw/0MDi/nEGiIzrQ78dGzjER5YWu582qgdWHVn4hfcpH/aE HKpA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=CyfBv4Q4; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7c5b92aff65si10868285a.75.2025.03.20.08.48.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 20 Mar 2025 08:48:18 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=CyfBv4Q4; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tvI7s-0003wN-Tq; Thu, 20 Mar 2025 11:48:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tvI7c-0003ad-Dm for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:48:00 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tvI7Z-0007qM-B5 for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:51 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-43cfdc2c8c9so6033655e9.2 for ; Thu, 20 Mar 2025 08:47:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742485667; x=1743090467; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YQMafUmqG4jCB4tpUPdNT81l0E9rYtmlbZl+WPtco9M=; b=CyfBv4Q43ttytkp0Sf7OOkGge1f65BaOASrsihzsjB9dEQazIf7fSW38gDXksKcAXP 06Kp8TMt26gVRiBujM4pm6iIXs/5DG1sZhl0XXc0RlBaC45Yl2lZivpoayroCDKHECHV IFo5u4vqkJ+VYps+W+gxdyPveRpS7iT/+GEIlhcsDHMvaAGQeTh/dNZNshxr2S+JlCR/ X2xZdp2pX68FCBEpmKtN4NVynG/NvFY4aVOjm8d9QZR7FJ2htOyxZnoDRxqNJ7SRfnr8 HwwLABLdjzz4Vn8qFA1fYZCAS3V442l+7joOq96RiY+U5gcxttJ1i6/TxKf+lBqIMT/e tDOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742485667; x=1743090467; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YQMafUmqG4jCB4tpUPdNT81l0E9rYtmlbZl+WPtco9M=; b=PkMn6eV4DkwijWtp9NrMXf+c6fpY5hxXKg7VrsXr5B7wRFfBu4MK9psCtjYs+v/W0O vsCAcIFy4GMD9WN7ydDdWDbt2RwZnkX7VQIG6NlqyxVcCN+gCm2iToRFMbgvcsSprSr0 b/TJUtI4qkwCqqYfgqe9A61r9oCa0aLjpseyNklE5AO8E09/uaN2JL4lQnfI/ZQFmBFL +x/KUK1E0VFkDoFRHf7bEU4p4XluZH6ssy65Ua+y8rRn4mh7EVU0atbXtbed1khP0tv0 OpjCHTTA2MdvnOFyX1nuErJfkzbTkLNyIq1RRKrHQqoot6hG8NMhOt6AC1KuMoaKOtmA fFhg== X-Gm-Message-State: AOJu0YyQdCAIOQQTnA/b3Zl6FCWXZzMs9WoJpai7x4bPDg4QmzxHllT9 507cLUTpe27WOMtT9C8E2uwqEblgBBtibPMcqWSAny9WrNUYHjVrKxeoEWiq8Th+veJ8GBcIHZy j X-Gm-Gg: ASbGncvudIYJRHI4YwGdySk2IPg7JMostmKETOt0LPaUcOgUWNCU/Puq6Ge8B1CMP22 HohPeog4LDaadVPdTKH6GiRz5k+bqZDnTCUmE1C/cvzAWn8BpcHB+Sbk5WEnFxciqAxhLfjVv9K MeyKJuihP7oHBOP/rpHp5uF+F8WoLnQ7wjgKM3iipWb0BX3/T32oattlmyAlPj/cq+BzEleeaUS JYUOQ2S9qNLuMDcbZIFBRg+8FuopmzbxVhpO+C56jZsD/ubR2ecDBtVt2aBc+Z8aaWntbuEv2Hz unzQVsdpZvZVH4AFlt0PvX/VktROOd2vLJmUWxI8Em3gE7KEfZRtYgbCAH3g1gzle2+r5fk/aT0 VXfrAAHiXTqX8bGadFKBs/gMy X-Received: by 2002:a05:600c:4503:b0:43c:fab3:4fad with SMTP id 5b1f17b1804b1-43d437c3354mr79362395e9.16.1742485667346; Thu, 20 Mar 2025 08:47:47 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d43f43ecbsm52028545e9.10.2025.03.20.08.47.46 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Mar 2025 08:47:46 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , Eduardo Habkost , Paolo Bonzini , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Pierrick Bouvier , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= Subject: [PATCH-for-10.1 5/6] qom: Use object_class_implements_type() in object_class_foreach() Date: Thu, 20 Mar 2025 16:47:21 +0100 Message-ID: <20250320154722.27349-6-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250320154722.27349-1-philmd@linaro.org> References: <20250320154722.27349-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=philmd@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org Previously classes indirectly implementing an interface more than once were triggering the ambiguous cast assertion. Since we are not interested in the returned class, but only whether it implements or not, use object_class_implements_type(). Signed-off-by: Philippe Mathieu-Daudé --- qom/object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qom/object.c b/qom/object.c index 536308c0553..6733adcd6b2 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1136,7 +1136,7 @@ static void object_class_foreach_tramp(gpointer key, gpointer value, } if (data->implements_type && - !object_class_dynamic_cast(k, data->implements_type)) { + !object_class_implements_type(k, data->implements_type)) { return; } From patchwork Thu Mar 20 15:47:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 874981 Delivered-To: patch@linaro.org Received: by 2002:a5d:5f4c:0:b0:38f:210b:807b with SMTP id cm12csp399346wrb; Thu, 20 Mar 2025 08:50:00 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWMVBay8KB+v0D1ww3G7xrrC0XxZWxBOOT4YYk71zVS6SQPDD/A6BfmYZ4NEPdawt4qkUt08A==@linaro.org X-Google-Smtp-Source: AGHT+IFMhSSNKB1bsmI7S5/p/prDgG/lbcbt4tXRjp5/HFMSg6lk4Nb8wnpTX6AXETZyx9tLSlCk X-Received: by 2002:a05:6122:d20:b0:51f:405e:866e with SMTP id 71dfb90a1353d-52589160a83mr6024991e0c.1.1742485799875; Thu, 20 Mar 2025 08:49:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1742485799; cv=none; d=google.com; s=arc-20240605; b=HCZ6v6S9OmiBMivu1xFuxHE/PQnx33lllgbOFPi7T0OiQRvPJvGRgAiDeGOEBWEeK7 FzOuRNbJ/ioN1o+hd5jdkP1Apr7PrDPpoEDkvSgK9H8bjBMZMdI6cv9vqdTOFzCkfGcG ukPZ9+lm8MUItLdLIpQjsACzSUDXLIXJWrHK3F7yvASAmsQHr+MSgYhAVSLmgsb5FeuQ C5WlmKS9l+y8OJS54qV2TSovUZ2GL2q0be6vYONidmIm0XMRY+P1eQVh3mdfJReUEJ9M ZV720E5tQCxppBj80DMG3dL2LCguoRVCaFsMP6RlY2PRrhBeQWzlTWQ5SXe/N/Zeb/i/ r1Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=hLsfjeKvzcqQzs8WcSuZ2zumUJNlo4E8yDOEHN/OK9Q=; fh=qbC6fvdFrljuilVi+/v5x47AoPH9/ehlwoBVXcbRqbk=; b=VeLTdH6bNC1fyy3ByP5Lsqdu+/+yx3uJzep87hisUbbz6buVJvXZZB0SygVy1eVS2C 6wvW+uoGEFQqFRC84bp26UJDwekmiN92Q9/w1AYpjXpJf8qgI1fQvsEn0WZgBETcmvfr uFK949UkYB2BF4sHbfibV9gzFIhwOZa+L7Ew9Vqhqg39z2QKCr4ovL2y0iOkqbAbBMl1 5VvaCJAleIpuWzEJ/tbNlRFQ0RtVcfV0mWDrjWASHG6msa4KddUZeSBHLl4Q2LVaqjOh ZYfF5rOQXu+Kn/Hh56VpMpR+F2tWF/m2hzVY47md/wJ+/Jdb0RQq8rWwynQnk3QSzErn bFNg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="E/uXN6ir"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 71dfb90a1353d-525a736a20fsi70301e0c.55.2025.03.20.08.49.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 20 Mar 2025 08:49:59 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="E/uXN6ir"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tvI7u-0003xh-LE; Thu, 20 Mar 2025 11:48:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tvI7i-0003dO-2E for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:48:03 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tvI7f-0007r9-GI for qemu-devel@nongnu.org; Thu, 20 Mar 2025 11:47:57 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-43cfe63c592so10049185e9.2 for ; Thu, 20 Mar 2025 08:47:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742485672; x=1743090472; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hLsfjeKvzcqQzs8WcSuZ2zumUJNlo4E8yDOEHN/OK9Q=; b=E/uXN6ir9G4RAg1InPq+s+WQ1hBhaDE7tKGOZHFRfAhokOWOBZtVFVJQ+GyJOWdoRl 6pAIOjEH+eW4FBsGveM4WVbyuF4/fzlTh0cGCnCyTuD92RLVsK1Z6c7MRKHppIRjuBrN pUBWFdXI6KdxJxqnlBFUxxRAG8ez70oU8AYJkNxSlU9jLfkDo8+aS6NclnSn1509TWL6 LbhiSFW/vBLxw3IJi1hPeRVZAdBH45gj2V4QAG9YdiFhQ6Vg8USxgaR51vF+3YCJ6t/y ++Ecy7gsdpGly8l75w4y3piHOwJL65nmAg5D+ICaECIaJAwLsFfxoKl9QvLKB0c1Qt0R N7+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742485672; x=1743090472; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hLsfjeKvzcqQzs8WcSuZ2zumUJNlo4E8yDOEHN/OK9Q=; b=sdhRCMr7Lym7urq5NPTaZ75HBPQL1K8EhRV3mDkf9sVnABP7ErG37URSp1wnFp0l5w JrRp3x67sJQmqIFR/ehgHe6o7UL2N7uJTypgG5XW0GGBQCl4xJ4tW1Ghd99ESgfh7EXd w0unLDtFU5cpKNrep9DwTcwccI60+jiWZpoeUvDHoAUeGWRa624fbBbvQh28ZKUJBp4H P74yX2AWoCXOJ1SsuvsScKD/Feh9QADzBZu6X6fgIvNj412WoIR7zTKn7HOUr2nq+4TY UvFNG4NrcRueiTXgBkDuOWtZEB5GsgD8xFlunc1ldu91C7Q00YP3sN7xOuGLoYbPrfQe xb4A== X-Gm-Message-State: AOJu0YzIhrxBUt5CeQYLO+hN/4L/EnceRvV9ZwlxXf5ParhcGgBJHSkl luja2TwUQQww7tlPboCwxoscYyozNGoiuF9HVd/bRLKvhGT2F5stmHWjMEdIUnTXSrdhX9cnRU5 W X-Gm-Gg: ASbGnctOfdYSS0rQFQ9EnVlm7mPfeDGc553kqhWlmSyPdBkHDaJuR+G7GefSIOr/EUK VrgXdacBIMm1cz1ozTPloCRV00W6CNZ/tzgI2XyoS+sZU43++EDv9wMnA11RL0SyOh1wdoqfygy 4IjONz66XabFgpvFJJYsjVxlUEDEH4WFBpuivxuspwI8WcAdlDDulFP1UFgY/0Vx14pCV8O1Klp McFjykq1AE+g+ZGGN0fj3phUE72olm5oU+9l/3rD4stgV9b5OCyPZkkohXcb/u6WhPraL5VNkzX re8KK0Sqqeb4z/tJ0ot61RV550VcGZjmc1NZVOKXtlvPBxZhpYIZo2drlrsgtxnOi/R9Ntj+UmF /SpjOZ+DX+1bLADv3NvnuKFpV X-Received: by 2002:a05:600c:1d9f:b0:43c:f81d:f with SMTP id 5b1f17b1804b1-43d49542f51mr34329445e9.8.1742485672035; Thu, 20 Mar 2025 08:47:52 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d3ae04a94sm40779965e9.0.2025.03.20.08.47.51 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 20 Mar 2025 08:47:51 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Markus Armbruster , Eduardo Habkost , Paolo Bonzini , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Pierrick Bouvier , =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= Subject: [RFC PATCH-for-10.1 6/6] qom: Test object_class_get_list() Date: Thu, 20 Mar 2025 16:47:22 +0100 Message-ID: <20250320154722.27349-7-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250320154722.27349-1-philmd@linaro.org> References: <20250320154722.27349-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=philmd@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org RFC FIXME: this doesn't work well :/ In the first iteration the TYPE_TEST_IF is ambiguous (matched 2 times) so OBJECT_CLASS_CHECK() triggers the cast exception. Signed-off-by: Philippe Mathieu-Daudé --- tests/unit/check-qom-interface.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/unit/check-qom-interface.c b/tests/unit/check-qom-interface.c index c43a63e8b3c..8a997220e06 100644 --- a/tests/unit/check-qom-interface.c +++ b/tests/unit/check-qom-interface.c @@ -115,10 +115,26 @@ static void interface_ambiguous_test(void) { Object *obj = object_new(TYPE_INDIRECT_IMPL); ObjectClass *klass = object_get_class(obj); + GSList *list, *el; g_assert(object_class_implements_type(klass, TYPE_TEST_IF2A)); g_assert(object_class_implements_type(klass, TYPE_TEST_IF2B)); g_assert(object_class_implements_type(klass, TYPE_TEST_IF)); + list = object_class_get_list(TYPE_TEST_IF, true); + for (el = list; el; el = el->next) { + TestIfClass *ioc = el->data; + printf("%x %x\n", ioc->test, PATTERN); + //g_assert(ioc->test == PATTERN); + } + g_free(list); + list = object_class_get_list(TYPE_TEST_IF2A, true); + for (el = list; el; el = el->next) { + TestIfClass *dc = OBJECT_CLASS_CHECK(TestIfClass, el->data, + TYPE_TEST_IF2A); + printf("%x %x\n", dc->test, PATTERN); + //g_assert(ioc->test == PATTERN); + } + g_free(list); object_unref(obj); }