These will be required for the upcoming conversions of object properties to class properties.
Signed-off-by: Mark Cave-Ayland <[email protected]> --- qom/object.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/qom/object.c b/qom/object.c index 0ac201de4c..204871cb53 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1411,6 +1411,33 @@ object_class_property_add(ObjectClass *klass, void *opaque) { ObjectProperty *prop; + size_t name_len = strlen(name); + + if (name_len >= 3 && !memcmp(name + name_len - 3, "[*]", 4)) { + int i; + ObjectProperty *ret = NULL; + char *name_no_array = g_strdup(name); + + name_no_array[name_len - 3] = '\0'; + for (i = 0; i < INT16_MAX; ++i) { + char *full_name = g_strdup_printf("%s[%d]", name_no_array, i); + + if (object_class_property_find(klass, full_name)) { + g_free(full_name); + continue; + } + + ret = object_class_property_add(klass, full_name, type, get, set, + release, opaque); + g_free(full_name); + if (ret) { + break; + } + } + g_free(name_no_array); + assert(ret); + return ret; + } assert(!object_class_property_find(klass, name)); -- 2.43.0
