On Tue, Aug 25, 2026 at 6:56 PM Mark Cave-Ayland
<[email protected]> wrote:
>
> On 18/08/2026 12:10, Marc-André Lureau wrote:
>
> > Signed-off-by: Marc-André Lureau <[email protected]>
> > ---
> >   include/qom/object.h | 36 ++++++++++++++++++++++++++++++++++++
> >   qom/object.c         | 32 ++++++++++++++++++++++++++++++++
> >   2 files changed, 68 insertions(+)
> >
> > diff --git a/include/qom/object.h b/include/qom/object.h
> > index 271d736956da..9684db935d23 100644
> > --- a/include/qom/object.h
> > +++ b/include/qom/object.h
> > @@ -1990,6 +1990,42 @@ ObjectProperty 
> > *object_class_property_add_enum(ObjectClass *klass,
> >                                       int (*get)(Object *, Error **),
> >                                       void (*set)(Object *, int, Error **));
> >
> > +/**
> > + * object_property_add_qapi:
> > + * @obj: the object to add a property to
> > + * @name: the name of the property
> > + * @qapi_type: QAPI type info descriptor
> > + * @get: The getter to be called to read a property.  If this is NULL, then
> > + *   the property cannot be read.
> > + * @set: the setter to be called to write a property.  If this is NULL,
> > + *   then the property cannot be written.
> > + * @release: called when the property is removed from the object.  This is
> > + *   meant to allow a property to free its opaque upon object
> > + *   destruction.  This may be NULL.
> > + * @opaque: an opaque pointer to pass to the callbacks for the property
> > + *
> > + * Add a property with a QAPI type association. The property type name
> > + * is derived from @qapi_type->name.
> > + *
> > + * Returns: The newly added property on success, or %NULL on failure.
> > + */
> > +ObjectProperty *
> > +object_property_add_qapi(Object *obj, const char *name,
> > +                         const QAPITypeInfo *qapi_type,
> > +                         ObjectPropertyAccessor *get,
> > +                         ObjectPropertyAccessor *set,
> > +                         ObjectPropertyRelease *release,
> > +                         void *opaque);
>
> Don't forget to duplicate the same doc comments for
> object_class_property_add_qapi() below, otherwise
> object_class_property_add_qapi() doesn't get included in our
> auto-generated documentation (see commit 478542dd83 ("qom/object.h: add
> missing documentation for object_class_* property functions").

ok


>
> > +ObjectProperty *
> > +object_class_property_add_qapi(ObjectClass *klass,
> > +                               const char *name,
> > +                               const QAPITypeInfo *qapi_type,
> > +                               ObjectPropertyAccessor *get,
> > +                               ObjectPropertyAccessor *set,
> > +                               ObjectPropertyRelease *release,
> > +                               void *opaque);
> > +
> >   /**
> >    * object_property_add_tm:
> >    * @obj: the object to add a property to
> > diff --git a/qom/object.c b/qom/object.c
> > index 93d44a9444ca..1bfb6b933339 100644
> > --- a/qom/object.c
> > +++ b/qom/object.c
> > @@ -2595,6 +2595,38 @@ object_class_property_add_enum(ObjectClass *klass, 
> > const char *name,
> >                                        prop);
> >   }
> >
> > +ObjectProperty *
> > +object_property_add_qapi(Object *obj, const char *name,
> > +                         const QAPITypeInfo *qapi_type,
> > +                         ObjectPropertyAccessor *get,
> > +                         ObjectPropertyAccessor *set,
> > +                         ObjectPropertyRelease *release,
> > +                         void *opaque)
> > +{
> > +    ObjectProperty *prop;
> > +
> > +    prop = object_property_add(obj, name, qapi_type->name,
> > +                               get, set, release, opaque);
> > +    prop->qapi_type = qapi_type;
> > +    return prop;
> > +}
> > +
> > +ObjectProperty *
> > +object_class_property_add_qapi(ObjectClass *klass, const char *name,
> > +                               const QAPITypeInfo *qapi_type,
> > +                               ObjectPropertyAccessor *get,
> > +                               ObjectPropertyAccessor *set,
> > +                               ObjectPropertyRelease *release,
> > +                               void *opaque)
> > +{
> > +    ObjectProperty *prop;
> > +
> > +    prop = object_class_property_add(klass, name, qapi_type->name,
> > +                                     get, set, release, opaque);
> > +    prop->qapi_type = qapi_type;
> > +    return prop;
> > +}
> > +
> >   typedef struct TMProperty {
> >       void (*get)(Object *, struct tm *, Error **);
> >   } TMProperty;
> >
>
>
> ATB,
>
> Mark.
>


Reply via email to