[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 24/26] qom: introduce object_property_help()
From: |
Marc-André Lureau |
Subject: |
[PATCH 24/26] qom: introduce object_property_help() |
Date: |
Fri, 10 Jan 2020 19:30:37 +0400 |
Let's factor out the code to format a help string for a property. We
are going to reuse it in qdev next, which will bring some consistency.
Signed-off-by: Marc-André Lureau <address@hidden>
---
include/qom/object.h | 13 +++++++++++++
qom/object_interfaces.c | 39 +++++++++++++++++++++++----------------
2 files changed, 36 insertions(+), 16 deletions(-)
diff --git a/include/qom/object.h b/include/qom/object.h
index 933e5c6cb9..a28e37a648 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -1854,6 +1854,19 @@ Object *container_get(Object *root, const char *path);
*/
size_t object_type_get_instance_size(const char *typename);
+/**
+ * object_property_help:
+ * @name: the name of the property
+ * @type: the type of the property
+ * @defval: the default value
+ * @description: description of the property
+ *
+ * Returns: a user-friendly formatted string describing the property
+ * for help purposes.
+ */
+char *object_property_help(const char *name, const char *type,
+ const char *defval, const char *description);
+
G_DEFINE_AUTOPTR_CLEANUP_FUNC(Object, object_unref)
#endif
diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
index edb4cc4a3d..b7157d6ab0 100644
--- a/qom/object_interfaces.c
+++ b/qom/object_interfaces.c
@@ -158,6 +158,25 @@ int user_creatable_add_opts_foreach(void *opaque, QemuOpts
*opts, Error **errp)
return 0;
}
+char *object_property_help(const char *name, const char *type,
+ const char *defval, const char *description)
+{
+ GString *str = g_string_new(NULL);
+
+ g_string_append_printf(str, " %s=<%s>", name, type);
+ if (defval) {
+ g_string_append_printf(str, " (default: %s)", defval);
+ }
+ if (description) {
+ if (str->len < 24) {
+ g_string_append_printf(str, "%*s", 24 - (int)str->len, "");
+ }
+ g_string_append_printf(str, " - %s", description);
+ }
+
+ return g_string_free(str, false);
+}
+
bool user_creatable_print_help(const char *type, QemuOpts *opts)
{
ObjectClass *klass;
@@ -184,27 +203,15 @@ bool user_creatable_print_help(const char *type, QemuOpts
*opts)
object_class_property_iter_init(&iter, klass);
while ((prop = object_property_iter_next(&iter))) {
- GString *str;
- char *defval;
+ g_autofree char *defval = object_property_get_default(prop);
if (!prop->set) {
continue;
}
- str = g_string_new(NULL);
- g_string_append_printf(str, " %s=<%s>", prop->name, prop->type);
- defval = object_property_get_default(prop);
- if (defval) {
- g_string_append_printf(str, " (default: %s)", defval);
- g_free(defval);
- }
- if (prop->description) {
- if (str->len < 24) {
- g_string_append_printf(str, "%*s", 24 - (int)str->len, "");
- }
- g_string_append_printf(str, " - %s", prop->description);
- }
- g_ptr_array_add(array, g_string_free(str, false));
+ g_ptr_array_add(array,
+ object_property_help(prop->name, prop->type,
+ defval, prop->description));
}
g_ptr_array_sort(array, (GCompareFunc)qemu_pstrcmp0);
if (array->len > 0) {
--
2.25.0.rc1.20.g2443f3f80d.dirty
- [PATCH 17/26] object: release all props, (continued)
- [PATCH 17/26] object: release all props, Marc-André Lureau, 2020/01/10
- [PATCH 18/26] object: return self in object_ref(), Marc-André Lureau, 2020/01/10
- [PATCH 20/26] qdev: move instance properties to class properties, Marc-André Lureau, 2020/01/10
- [PATCH 21/26] qdev: register properties as class properties, Marc-André Lureau, 2020/01/10
- [PATCH 19/26] qdev: set properties with device_class_set_props(), Marc-André Lureau, 2020/01/10
- [PATCH 22/26] vl: print default value in object help, Marc-André Lureau, 2020/01/10
- [PATCH 23/26] qom: simplify qmp_device_list_properties(), Marc-André Lureau, 2020/01/10
- [PATCH 24/26] qom: introduce object_property_help(),
Marc-André Lureau <=
- [PATCH 25/26] qapi/qmp: add ObjectPropertyInfo.default-value, Marc-André Lureau, 2020/01/10
- [PATCH 26/26] qdev: use object_property_help(), Marc-André Lureau, 2020/01/10
- Re: [PATCH 00/26] Various qom & qdev enhancements, Marc-André Lureau, 2020/01/10