From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35783) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WKPs6-0007yo-GD for qemu-devel@nongnu.org; Mon, 03 Mar 2014 05:13:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WKPrx-0002gF-TC for qemu-devel@nongnu.org; Mon, 03 Mar 2014 05:13:18 -0500 Received: from mail-qc0-x229.google.com ([2607:f8b0:400d:c01::229]:33771) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WKPrx-0002g9-OX for qemu-devel@nongnu.org; Mon, 03 Mar 2014 05:13:09 -0500 Received: by mail-qc0-f169.google.com with SMTP id i17so559798qcy.28 for ; Mon, 03 Mar 2014 02:13:09 -0800 (PST) Sender: Paolo Bonzini Message-ID: <531455AE.9000803@redhat.com> Date: Mon, 03 Mar 2014 11:13:02 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1393765632-2753-1-git-send-email-marcel.a@redhat.com> <1393765632-2753-8-git-send-email-marcel.a@redhat.com> In-Reply-To: <1393765632-2753-8-git-send-email-marcel.a@redhat.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH RFC V2 7/9] qom: add object_property_is_set List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Marcel Apfelbaum , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, blauwirbel@gmail.com, mdroth@linux.vnet.ibm.com, mst@redhat.com, armbru@redhat.com, mtosatti@redhat.com, agraf@suse.de, ehabkost@redhat.com, lcapitulino@redhat.com, peter.crosthwaite@petalogix.com, quintela@redhat.com, aliguori@amazon.com, imammedo@redhat.com, scottwood@freescale.com, edgar.iglesias@gmail.com, afaerber@suse.de, rth@twiddle.net Il 02/03/2014 14:07, Marcel Apfelbaum ha scritto: > Sometimes is not enough to get property's value, > but it is needed to know if the value was actually set. > > This is especially useful when querying bool properties > and having different defaults on different scenarios. > > Signed-off-by: Marcel Apfelbaum I suggested some replacements for this in the review to patch 8/9. The problem is that tristate properties implemented with object_property_is_set cannot be "round-trip"-ped out and back in of QEMU. Paolo > --- > include/qom/object.h | 11 +++++++++++ > qom/object.c | 12 ++++++++++++ > 2 files changed, 23 insertions(+) > > diff --git a/include/qom/object.h b/include/qom/object.h > index 9c7c361..4a4f026 100644 > --- a/include/qom/object.h > +++ b/include/qom/object.h > @@ -319,6 +319,7 @@ typedef struct ObjectProperty > { > gchar *name; > gchar *type; > + bool is_set; > ObjectPropertyAccessor *get; > ObjectPropertyAccessor *set; > ObjectPropertyRelease *release; > @@ -931,6 +932,16 @@ void object_property_set(Object *obj, struct Visitor *v, const char *name, > Error **errp); > > /** > + * object_property_is_set: > + * @obj: the object > + * @name: the name of the property > + * @errp: returns an error if this function fails > + * > + * Returns: true if object's property is set, false otherwise. > + */ > +bool object_property_is_set(Object *obj, const char *name, > + Error **errp); > +/** > * object_property_parse: > * @obj: the object > * @string: the string that will be used to parse the property value. > diff --git a/qom/object.c b/qom/object.c > index 660859c..5b9d8af 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -817,9 +817,21 @@ void object_property_set(Object *obj, Visitor *v, const char *name, > error_set(errp, QERR_PERMISSION_DENIED); > } else { > prop->set(obj, v, prop->opaque, name, errp); > + prop->is_set = true; > } > } > > +bool object_property_is_set(Object *obj, const char *name, > + Error **errp) > +{ > + ObjectProperty *prop = object_property_find(obj, name, errp); > + if (prop == NULL) { > + return false; > + } > + > + return prop->is_set; > +} > + > void object_property_set_str(Object *obj, const char *value, > const char *name, Error **errp) > { >