Philippe Mathieu-Daudé <phi...@linaro.org> writes: > On 8/9/23 16:36, Kevin Wolf wrote: >> Instead of exposing the ugly hack of how we represent arrays in qdev (a >> static "foo-len" property and after it is set, dynamically created >> "foo[i]" properties) to boards, add an interface that allows setting the >> whole array at once. >> Once all internal users of devices with array properties have been >> converted to use this function, we can change the implementation to move >> away from this hack. >> Signed-off-by: Kevin Wolf <kw...@redhat.com> >> --- >> include/hw/qdev-properties.h | 3 +++ >> hw/core/qdev-properties.c | 21 +++++++++++++++++++++ >> 2 files changed, 24 insertions(+) > > >> +void qdev_prop_set_array(DeviceState *dev, const char *name, QList *values) >> +{ >> + const QListEntry *entry; >> + g_autofree char *prop_len = g_strdup_printf("len-%s", name); >> + uint32_t i = 0; > > "unsigned"? Anyway,
Yes, or even plain int. It all gets replaced in the last patch, though. > Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org> > >> + >> + object_property_set_int(OBJECT(dev), prop_len, qlist_size(values), >> + &error_abort); >> + >> + QLIST_FOREACH_ENTRY(values, entry) { >> + g_autofree char *prop_idx = g_strdup_printf("%s[%u]", name, i); >> + object_property_set_qobject(OBJECT(dev), prop_idx, entry->value, >> + &error_abort); >> + i++; >> + } >> + >> + qobject_unref(values); >> +}