Re: [PATCH v2 06/10] qom: Add object_property_add_bool_ptr()
Mark Cave-Ayland <[email protected]> Thu, 11 Jun 2026 13:59:19 +0100
| Newsgroups | org.nongnu.qemu-rust,org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 09/06/2026 18:25, Peter Xu wrote: > Add a helper to set qom property via a bool pointer. > > Signed-off-by: Peter Xu <[email protected]> > --- > include/qom/object-property-ptr.h | 15 ++++++++++++ > qom/object-property-ptr.c | 39 +++++++++++++++++++++++++++++++ > 2 files changed, 54 insertions(+) > > diff --git a/include/qom/object-property-ptr.h b/include/qom/object-property-ptr.h > index 6066c377fb..9cd8600094 100644 > --- a/include/qom/object-property-ptr.h > +++ b/include/qom/object-property-ptr.h > @@ -16,6 +16,21 @@ typedef enum { > OBJ_PROP_FLAG_READWRITE = (OBJ_PROP_FLAG_READ | OBJ_PROP_FLAG_WRITE), > } ObjectPropertyFlags; > > +/** > + * object_property_add_bool_ptr: > + * @obj: the object to add a property to > + * @name: the name of the property > + * @v: pointer to value > + * @flags: bitwise-or'd ObjectPropertyFlags > + * > + * Add a property of type 'bool' to the object. > + * > + * Returns: The newly added property on success, or %NULL on failure. > + */ > +ObjectProperty * > +object_property_add_bool_ptr(Object *obj, const char *name, const bool *v, > + ObjectPropertyFlags flags); > + > /** > * object_property_add_uint8_ptr: > * @obj: the object to add a property to > diff --git a/qom/object-property-ptr.c b/qom/object-property-ptr.c > index 02c01ed7f0..49f223da7b 100644 > --- a/qom/object-property-ptr.c > +++ b/qom/object-property-ptr.c > @@ -7,6 +7,26 @@ > #include "qom/object.h" > #include "qapi/visitor.h" > > +static void property_get_bool_ptr(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + bool value = *(bool *)opaque; > + visit_type_bool(v, name, &value, errp); > +} > + > +static void property_set_bool_ptr(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + bool *field = opaque; > + bool value; > + > + if (!visit_type_bool(v, name, &value, errp)) { > + return; > + } > + > + *field = value; > +} > + > static void property_get_uint8_ptr(Object *obj, Visitor *v, const char *name, > void *opaque, Error **errp) > { > @@ -87,6 +107,25 @@ static void property_set_uint64_ptr(Object *obj, Visitor *v, const char *name, > *field = value; > } > > +ObjectProperty * > +object_property_add_bool_ptr(Object *obj, const char *name, > + const bool *v, ObjectPropertyFlags flags) > +{ > + ObjectPropertyAccessor *getter = NULL; > + ObjectPropertyAccessor *setter = NULL; > + > + if ((flags & OBJ_PROP_FLAG_READ) == OBJ_PROP_FLAG_READ) { > + getter = property_get_bool_ptr; > + } > + > + if ((flags & OBJ_PROP_FLAG_WRITE) == OBJ_PROP_FLAG_WRITE) { > + setter = property_set_bool_ptr; > + } > + > + return object_property_add(obj, name, "bool", > + getter, setter, NULL, (void *)v); > +} > + > ObjectProperty * > object_property_add_uint8_ptr(Object *obj, const char *name, > const uint8_t *v, Reviewed-by: Mark Cave-Ayland <[email protected]> ATB, Mark.