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


Reply via email to