mirror of https://github.com/xemu-project/xemu.git
qom: simplify qmp_device_list_properties()
All qdev properties are object properties, no need for make_device_property_info() helper. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20200110153039.1379601-24-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
f902cb2966
commit
c1f472ea65
|
@ -121,48 +121,6 @@ ObjectTypeInfoList *qmp_qom_list_types(bool has_implements,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return a DevicePropertyInfo for a qdev property.
|
|
||||||
*
|
|
||||||
* If a qdev property with the given name does not exist, use the given default
|
|
||||||
* type. If the qdev property info should not be shown, return NULL.
|
|
||||||
*
|
|
||||||
* The caller must free the return value.
|
|
||||||
*/
|
|
||||||
static ObjectPropertyInfo *make_device_property_info(ObjectClass *klass,
|
|
||||||
const char *name,
|
|
||||||
const char *default_type,
|
|
||||||
const char *description)
|
|
||||||
{
|
|
||||||
ObjectPropertyInfo *info;
|
|
||||||
Property *prop;
|
|
||||||
|
|
||||||
do {
|
|
||||||
for (prop = DEVICE_CLASS(klass)->props_; prop && prop->name; prop++) {
|
|
||||||
if (strcmp(name, prop->name) != 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
info = g_malloc0(sizeof(*info));
|
|
||||||
info->name = g_strdup(prop->name);
|
|
||||||
info->type = default_type ? g_strdup(default_type)
|
|
||||||
: g_strdup(prop->info->name);
|
|
||||||
info->has_description = !!prop->info->description;
|
|
||||||
info->description = g_strdup(prop->info->description);
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
klass = object_class_get_parent(klass);
|
|
||||||
} while (klass != object_class_by_name(TYPE_DEVICE));
|
|
||||||
|
|
||||||
/* Not a qdev property, use the default type */
|
|
||||||
info = g_malloc0(sizeof(*info));
|
|
||||||
info->name = g_strdup(name);
|
|
||||||
info->type = g_strdup(default_type);
|
|
||||||
info->has_description = !!description;
|
|
||||||
info->description = g_strdup(description);
|
|
||||||
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
|
|
||||||
ObjectPropertyInfoList *qmp_device_list_properties(const char *typename,
|
ObjectPropertyInfoList *qmp_device_list_properties(const char *typename,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
|
@ -214,11 +172,11 @@ ObjectPropertyInfoList *qmp_device_list_properties(const char *typename,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
info = make_device_property_info(klass, prop->name, prop->type,
|
info = g_new0(ObjectPropertyInfo, 1);
|
||||||
prop->description);
|
info->name = g_strdup(prop->name);
|
||||||
if (!info) {
|
info->type = g_strdup(prop->type);
|
||||||
continue;
|
info->has_description = !!prop->description;
|
||||||
}
|
info->description = g_strdup(prop->description);
|
||||||
|
|
||||||
entry = g_malloc0(sizeof(*entry));
|
entry = g_malloc0(sizeof(*entry));
|
||||||
entry->value = info;
|
entry->value = info;
|
||||||
|
|
Loading…
Reference in New Issue