All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>
Subject: [PATCH v3 16/19] qom: Make PropertyInfo.set_default_value optional
Date: Mon, 23 Nov 2020 14:48:15 -0500	[thread overview]
Message-ID: <20201123194818.2773508-17-ehabkost@redhat.com> (raw)
In-Reply-To: <20201123194818.2773508-1-ehabkost@redhat.com>

If .set_default_value is not set, call
object_property_set_default().  This will let us delete most of
the .set_default_value functions later.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
This is a new patch in v3 of this series.

In v2 of the series, equivalent functionality was implemented by
"qom: Use qlit to represent property defaults".
---
 include/qom/field-property.h |  3 +++
 qom/field-property.c         | 12 ++++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/include/qom/field-property.h b/include/qom/field-property.h
index 951cec2fb0..00b83ee9ba 100644
--- a/include/qom/field-property.h
+++ b/include/qom/field-property.h
@@ -53,6 +53,9 @@ struct PropertyInfo {
      * @set_default_value: Callback for initializing the default value
      *
      * @defval is a weak reference.
+     *
+     * Optional.  If not set and Property.defval is not QTYPE_NONE,
+     * object_property_set_default() will be called.
      */
     void (*set_default_value)(ObjectProperty *op, const Property *prop,
                               const QObject *defval);
diff --git a/qom/field-property.c b/qom/field-property.c
index 593ffb53e9..d21ff98862 100644
--- a/qom/field-property.c
+++ b/qom/field-property.c
@@ -72,8 +72,16 @@ static void field_prop_set_default_value(ObjectProperty *op,
     }
 
     defval = qobject_from_qlit(&prop->defval);
-    assert(prop->info->set_default_value);
-    prop->info->set_default_value(op, prop, defval);
+    if (prop->info->set_default_value) {
+        /* .set_default_value() gets a weak reference */
+        prop->info->set_default_value(op, prop, defval);
+    } else {
+        /*
+         * object_property_set_default() takes ownership,
+         * so qobject_ref() is needed.
+         */
+        object_property_set_default(op, qobject_ref(defval));
+    }
     qobject_unref(defval);
 }
 
-- 
2.28.0



  parent reply	other threads:[~2020-11-23 20:19 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-23 19:47 [PATCH v3 00/19] qom: Use qlit to represent property defaults Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 01/19] qnum: Make qnum_get_double() get const pointer Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 02/19] qnum: Make num_x/num_y variables at qnum_is_equal() const Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 03/19] qnum: QNumValue type for QNum value literals Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 04/19] qnum: qnum_value_is_equal() function Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 05/19] qlit: Use qnum_value_is_equal() when comparing QNums Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 06/19] qlit: Rename QLIT_QNUM to QLIT_QNUM_INT Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 07/19] qlit: Use QNumValue to represent QNums Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 08/19] qlit: Move qlit_equal_qobject() reference values to array Eduardo Habkost
2020-11-24  9:51   ` Markus Armbruster
2020-11-24 14:47     ` Eduardo Habkost
2020-11-24 15:17       ` Markus Armbruster
2020-11-23 19:48 ` [PATCH v3 09/19] qlit: Add more test literals to qlit_equal_qobject() test case Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 10/19] qlit: Support all types of QNums Eduardo Habkost
2020-11-24  9:55   ` Markus Armbruster
2020-11-24 10:56     ` Paolo Bonzini
2020-11-24 12:22       ` Markus Armbruster
2020-11-24 15:03         ` Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 11/19] qom: field_prop_set_default_value() helper Eduardo Habkost
2020-11-24  9:58   ` Markus Armbruster
2020-11-24 14:44     ` Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 12/19] qom: Replace defval value in Property with QLitObject Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 13/19] qom: Fix documentation of UUID property type Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 14/19] qom: Don't ignore defval on UUID property Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 15/19] qom: Make object_property_set_default() public Eduardo Habkost
2020-11-23 19:48 ` Eduardo Habkost [this message]
2020-11-23 19:48 ` [PATCH v3 17/19] qom: Delete field_prop_set_default_value_*int() Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 18/19] qom: Delete set_default_uuid() Eduardo Habkost
2020-11-23 19:48 ` [PATCH v3 19/19] qom: Delete set_default_value_bool() Eduardo Habkost

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201123194818.2773508-17-ehabkost@redhat.com \
    --to=ehabkost@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.