mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-24 12:09:58 +00:00
qom: Add description field in ObjectProperty struct
The descriptions can serve as documentation in the code, and they can be used to provide better help. Copy property descriptions when copying alias properties. Cc: Markus Armbruster <armbru@redhat.com> Signed-off-by: Gonglei <arei.gonglei@huawei.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
51b2e8c331
commit
8074264203
@ -338,6 +338,7 @@ typedef struct ObjectProperty
|
|||||||
{
|
{
|
||||||
gchar *name;
|
gchar *name;
|
||||||
gchar *type;
|
gchar *type;
|
||||||
|
gchar *description;
|
||||||
ObjectPropertyAccessor *get;
|
ObjectPropertyAccessor *get;
|
||||||
ObjectPropertyAccessor *set;
|
ObjectPropertyAccessor *set;
|
||||||
ObjectPropertyResolve *resolve;
|
ObjectPropertyResolve *resolve;
|
||||||
@ -1274,6 +1275,19 @@ void object_property_add_alias(Object *obj, const char *name,
|
|||||||
Object *target_obj, const char *target_name,
|
Object *target_obj, const char *target_name,
|
||||||
Error **errp);
|
Error **errp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* object_property_set_description:
|
||||||
|
* @obj: the object owning the property
|
||||||
|
* @name: the name of the property
|
||||||
|
* @description: the description of the property on the object
|
||||||
|
* @errp: if an error occurs, a pointer to an area to store the error
|
||||||
|
*
|
||||||
|
* Set an object property's description.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void object_property_set_description(Object *obj, const char *name,
|
||||||
|
const char *description, Error **errp);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* object_child_foreach:
|
* object_child_foreach:
|
||||||
* @obj: the object whose children will be navigated
|
* @obj: the object whose children will be navigated
|
||||||
|
20
qom/object.c
20
qom/object.c
@ -369,6 +369,7 @@ static void object_property_del_all(Object *obj)
|
|||||||
|
|
||||||
g_free(prop->name);
|
g_free(prop->name);
|
||||||
g_free(prop->type);
|
g_free(prop->type);
|
||||||
|
g_free(prop->description);
|
||||||
g_free(prop);
|
g_free(prop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -803,6 +804,7 @@ void object_property_del(Object *obj, const char *name, Error **errp)
|
|||||||
|
|
||||||
g_free(prop->name);
|
g_free(prop->name);
|
||||||
g_free(prop->type);
|
g_free(prop->type);
|
||||||
|
g_free(prop->description);
|
||||||
g_free(prop);
|
g_free(prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1672,10 +1674,28 @@ void object_property_add_alias(Object *obj, const char *name,
|
|||||||
}
|
}
|
||||||
op->resolve = property_resolve_alias;
|
op->resolve = property_resolve_alias;
|
||||||
|
|
||||||
|
object_property_set_description(obj, name,
|
||||||
|
target_prop->description,
|
||||||
|
&error_abort);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
g_free(prop_type);
|
g_free(prop_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void object_property_set_description(Object *obj, const char *name,
|
||||||
|
const char *description, Error **errp)
|
||||||
|
{
|
||||||
|
ObjectProperty *op;
|
||||||
|
|
||||||
|
op = object_property_find(obj, name, errp);
|
||||||
|
if (!op) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free(op->description);
|
||||||
|
op->description = g_strdup(description);
|
||||||
|
}
|
||||||
|
|
||||||
static void object_instance_init(Object *obj)
|
static void object_instance_init(Object *obj)
|
||||||
{
|
{
|
||||||
object_property_add_str(obj, "type", qdev_get_type, NULL, NULL);
|
object_property_add_str(obj, "type", qdev_get_type, NULL, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user