From patchwork Wed May 7 23:14:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierrick Bouvier X-Patchwork-Id: 888126 Delivered-To: patch@linaro.org Received: by 2002:a5d:4683:0:b0:38f:210b:807b with SMTP id u3csp625163wrq; Wed, 7 May 2025 16:17:17 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVSp7s0ByT3N0+yhLCeMlIdcDLHPmd33YMzQwDk0HBEMbcWNrkrDNL/Lrno9+/mWrB6LMEAaw==@linaro.org X-Google-Smtp-Source: AGHT+IGM3ebrG8E/XV4CVZ6dlvNjfTzzfHrP1/JOSBVVLsRUJDuhk1Ju6i3s0hFuwMm0vPN58upA X-Received: by 2002:a05:620a:472c:b0:7c9:2537:be51 with SMTP id af79cd13be357-7caf738a136mr730549185a.24.1746659837280; Wed, 07 May 2025 16:17:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1746659837; cv=none; d=google.com; s=arc-20240605; b=N3xXodXbC9F7qYvBCqvpCLbY1zlq9XKiUMr3WbbkDMgVGe7nPd4pY0sV5/97P2+3Pe XWKRERC0hcQVDLOH9WddCrhtpfD4Wfn0dMRMYq0CeQ16BKjPLK4KTzA2Hz8hCiKIKRpz jkKdffgTmM1iCowd6zdo40T6eoYRSauKogGhFshx1x0IGlEFpUUdGZ9aNuUQHXYXHA4Z DRqUoDPR16E0onk4/hIVu2DEvtkpDsAnRjHn3Xeq5BsF8uHAKeX34kHJTDA9M+cwWPhS AIj1nzRWJkpEDrGAcl2QU03Wj1PqX7czDZlU/dTYb8QoXzj1OXrcUwAnopWMgWwZmS6D cEKw== 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=VhiIRKHyUZ235NNHNWt0hyw55Q2IbZusuEz+nlETwVY=; fh=C3ex6Ep0JlVVkO8k9Lw7rcozgcHcGXw85BZvhIOfcrk=; b=GS6fyntsoPzkzXeyrZPvL+sEUm08lMdqnvsTUnVgSfA18FhifxjomJjGMHJ5t8N/CQ 7anOf5Vnp2Q8oFGFHLu0xIAKb9uISS2ft4N34yawoyJMtkh8bGWXTou4a0pgnq/SjPhW T3LkgBBr9z6Rm8CcJzNWIMJI8QFvU1okanfQ/LC/IDgcJPpX8L7ve6wEk8veBKVufTtK KVNNHe3xdt39t7rmdEjtJgKdQXePQMXPrqNjkr878x7+POxZbUsdqmmDhAqPzrXKc14S FlAPmpPTcYilxsmhhm2SZeFetaO+j0dQyu5kQ+I4TpRKk+0QqRUDKWEaKJshXBL8yUkA nCoA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ibhAnEEx; 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-7caf75b1005si303969785a.417.2025.05.07.16.17.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 07 May 2025 16:17:17 -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=ibhAnEEx; 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 1uCnye-0000fD-O2; Wed, 07 May 2025 19:15:00 -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 1uCnyb-0000dZ-SY for qemu-devel@nongnu.org; Wed, 07 May 2025 19:14:57 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uCnyZ-00079d-Mp for qemu-devel@nongnu.org; Wed, 07 May 2025 19:14:57 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-22fa28c761dso623645ad.2 for ; Wed, 07 May 2025 16:14:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746659694; x=1747264494; 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=VhiIRKHyUZ235NNHNWt0hyw55Q2IbZusuEz+nlETwVY=; b=ibhAnEExR+slNbfTHAu2MEO4MhH1ZGVJok4kpnYuh+/56dsWq6YbLSkEH7Kh9swdCn uzNqj5w4YiXFwJISHw+ivXOj3dNlV9kdG+4+PYfxsCUsaGYGhHESKydi7YwELD3HJv7V UZzFXk0sCzrFuekzi5E2bEQ7WKouCaJfrDD+RbkzadKJc/4R6fwQ54kJOxqwXkZg97a3 MPrviia1WymUziV1DjoaWYAy2btVxN0oTOQA7gDhZeM26EGanwU6MJMnP1i+5YU9HqUg a9ovw5YLpXO+bQEF4fNwPUZx6ACVZmkRWTXKpaGjywzk1o6jbgn1trMvbn+DwjfqDz5o dZhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746659694; x=1747264494; 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=VhiIRKHyUZ235NNHNWt0hyw55Q2IbZusuEz+nlETwVY=; b=jm4zZhcGFBolFGZcemfk7F/rZPd/anzzkNc7N71gDwDdlu4LalGwCPPR1UHetjd0nv QtAB5HxOShQRJmutfj+dXokhy9tlaE2GbVpJRPRLepeXAdKSGj0J3OcrfgZbPDuGl5yQ TpecA6DgzGx+0jnzrqpcTaUPxREjQ+mYvszEvgTKKFguI5uiP/7PjMdRQGsa8T022Rb8 DGrrRIDf5DM5EVUTctz8D7JlH3wBlC3HgyF9mM41v2rJNDAJVnzFRsL4jasZCnj+Fg+g GUIIYgE9mKfijLL1ITbRJX2XCxCrJb9cDGEIGaRVHmZITDTUZJ7zIixdFZaNZXqY9XTB 6nmw== X-Gm-Message-State: AOJu0YwwkCGhXA6KCKas3bsvf2j2hLnPFLgCLEB6hrYVEjtZOU0OWYXu JCzZjPwEdGKm8LBoMU1ENm5L5hggL0/N/2tKSOFqvrTmZqB/soEjfov5b3BFEH+ZPq2mSc2i4Mf lp9Dj1g== X-Gm-Gg: ASbGncs3B7fh8//6+zGT6GLEkmyS8SMeVJ81jysaDx0ct/UOAAUI3sRV3tkuZGxuavN VKi/Jgx18XYHQP8u80ijk0wKNN3KzsUsagmGCEAv/Xj1bf2WcZ1huTlEzUj0Qxe4Lltkh0eUYMT EjN7vHE747rZvFDPnpykKoJjV6sOVGG1DaYf3c/UMmMUbOJm4QiH4JG7O+gcqqdizVMFgpqnHMO 5cTgJKvQnLBtJI4j89fllh41RfOCNlz9rBZgIQys+8dpYKkvViEV9iTNo2LkJh5NGCQVCyyEbvF JT/Tw7Fg2jT2WtxLU0ZBToQ0gk5GuB6pjzi9x8+6 X-Received: by 2002:a17:902:fc4e:b0:22f:a48f:7a99 with SMTP id d9443c01a7336-22fa48f7dd7mr1053085ad.26.1746659694154; Wed, 07 May 2025 16:14:54 -0700 (PDT) Received: from pc.. ([38.41.223.211]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22e421a7dafsm40103205ad.69.2025.05.07.16.14.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 May 2025 16:14:53 -0700 (PDT) From: Pierrick Bouvier To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , alex.bennee@linaro.org, stefanha@redhat.com, peter.maydell@linaro.org, Markus Armbruster , richard.henderson@linaro.org, pbonzini@redhat.com, jsnow@redhat.com, philmd@linaro.org, berrange@redhat.com, thuth@redhat.com, Michael Roth Subject: [PATCH 03/13] qobject/qlit: allow to hide dict or list entries Date: Wed, 7 May 2025 16:14:33 -0700 Message-ID: <20250507231442.879619-4-pierrick.bouvier@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250507231442.879619-1-pierrick.bouvier@linaro.org> References: <20250507231442.879619-1-pierrick.bouvier@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=pierrick.bouvier@linaro.org; helo=mail-pl1-x62d.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 We add a new .hidden field to qlit entries, which gets ignored when creating the associated QObject. By default .hidden is 0, so it means the entry is visible. This way, only potentially hidden elements need to be assigned. Signed-off-by: Pierrick Bouvier --- include/qobject/qlit.h | 12 ++++++++++++ qobject/qlit.c | 10 ++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/include/qobject/qlit.h b/include/qobject/qlit.h index c0676d5daf2..3b66c22013c 100644 --- a/include/qobject/qlit.h +++ b/include/qobject/qlit.h @@ -28,25 +28,37 @@ struct QLitObject { QLitDictEntry *qdict; QLitObject *qlist; } value; + bool hidden; }; struct QLitDictEntry { const char *key; QLitObject value; + bool hidden; }; #define QLIT_QNULL \ { .type = QTYPE_QNULL } #define QLIT_QBOOL(val) \ { .type = QTYPE_QBOOL, .value.qbool = (val) } +#define QLIT_QBOOL_HIDDEN(val, cond) \ + { .type = QTYPE_QBOOL, .value.qbool = (val), .hidden = (cond) } #define QLIT_QNUM(val) \ { .type = QTYPE_QNUM, .value.qnum = (val) } +#define QLIT_QNUM_HIDDEN(val, cond) \ + { .type = QTYPE_QNUM, .value.qnum = (val), .hidden = (cond) } #define QLIT_QSTR(val) \ { .type = QTYPE_QSTRING, .value.qstr = (val) } +#define QLIT_QSTR_HIDDEN(val, cond) \ + { .type = QTYPE_QSTRING, .value.qstr = (val), .hidden = (cond) } #define QLIT_QDICT(val) \ { .type = QTYPE_QDICT, .value.qdict = (val) } +#define QLIT_QDICT_HIDDEN(val, cond) \ + { .type = QTYPE_QDICT, .value.qdict = (val), .hidden = (cond) } #define QLIT_QLIST(val) \ { .type = QTYPE_QLIST, .value.qlist = (val) } +#define QLIT_QLIST_HIDDEN(val, cond) \ + { .type = QTYPE_QLIST, .value.qlist = (val), .hidden = (cond) } bool qlit_equal_qobject(const QLitObject *lhs, const QObject *rhs); diff --git a/qobject/qlit.c b/qobject/qlit.c index a44f47eaa57..7b372c5ebaa 100644 --- a/qobject/qlit.c +++ b/qobject/qlit.c @@ -90,6 +90,8 @@ bool qlit_equal_qobject(const QLitObject *lhs, const QObject *rhs) QObject *qobject_from_qlit(const QLitObject *qlit) { + g_assert(!qlit->hidden); + switch (qlit->type) { case QTYPE_QNULL: return QOBJECT(qnull()); @@ -102,7 +104,9 @@ QObject *qobject_from_qlit(const QLitObject *qlit) QLitDictEntry *e; for (e = qlit->value.qdict; e->key; e++) { - qdict_put_obj(qdict, e->key, qobject_from_qlit(&e->value)); + if (!e->hidden) { + qdict_put_obj(qdict, e->key, qobject_from_qlit(&e->value)); + } } return QOBJECT(qdict); } @@ -111,7 +115,9 @@ QObject *qobject_from_qlit(const QLitObject *qlit) QLitObject *e; for (e = qlit->value.qlist; e->type != QTYPE_NONE; e++) { - qlist_append_obj(qlist, qobject_from_qlit(e)); + if (!e->hidden) { + qlist_append_obj(qlist, qobject_from_qlit(e)); + } } return QOBJECT(qlist); }