From: Marc-André Lureau <[email protected]> Replace .type string with .qapi_type pointer on all core PropertyInfo definitions in qdev-properties.c. Remove .enum_table from enum definitions, since the lookup is now accessed through .qapi_type->lookup via the qdev_propinfo_enum_lookup() fallback helper.
Note that qdev_prop_usize now reports "uint32" or "uint64" depending on the host. If usize is worth preserving, it should be added as a QAPI builtin type. Or perhaps we should simply use "size" everywhere (u64)? It's also strange to use type "size" for both u32 (prop_size32) and u64 (prop_size). Link property are actually strings. The "full type name" is set when the property is added, as "link<TYPE>". Array property will be refactored in a subsequent patch. Signed-off-by: Marc-André Lureau <[email protected]> Signed-off-by: Markus Armbruster <[email protected]> --- hw/core/qdev-properties.c | 42 +++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index ee50fbb9f5..abdb380cb9 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -12,6 +12,8 @@ #include "qdev-prop-internal.h" #include "qom/compat-properties.h" #include "qom/qom-qobject.h" +#include "qapi/qapi-builtin-type-infos.h" +#include "qapi/qapi-type-infos-common.h" void qdev_prop_set_after_realize(DeviceState *dev, const char *name, Error **errp) @@ -181,7 +183,7 @@ static void set_default_value_bool(ObjectProperty *op, const Property *prop) } const PropertyInfo qdev_prop_bit = { - .type = "bool", + .qapi_type = &bool_type_info, .description = "on/off", .get = prop_get_bit, .set = prop_set_bit, @@ -231,7 +233,7 @@ static void prop_set_bit64(Object *obj, Visitor *v, const char *name, } const PropertyInfo qdev_prop_bit64 = { - .type = "bool", + .qapi_type = &bool_type_info, .description = "on/off", .get = prop_get_bit64, .set = prop_set_bit64, @@ -293,9 +295,8 @@ static void prop_set_on_off_auto_bit64(Object *obj, Visitor *v, } const PropertyInfo qdev_prop_on_off_auto_bit64 = { - .type = "OnOffAuto", + .qapi_type = &OnOffAuto_type_info, .description = "on/off/auto", - .enum_table = &OnOffAuto_lookup, .get = prop_get_on_off_auto_bit64, .set = prop_set_on_off_auto_bit64, .set_default_value = qdev_propinfo_set_default_value_enum, @@ -322,7 +323,7 @@ static void set_bool(Object *obj, Visitor *v, const char *name, void *opaque, } const PropertyInfo qdev_prop_bool = { - .type = "bool", + .qapi_type = &bool_type_info, .description = "on/off", .get = get_bool, .set = set_bool, @@ -362,7 +363,7 @@ void qdev_propinfo_set_default_value_uint(ObjectProperty *op, } const PropertyInfo qdev_prop_uint8 = { - .type = "uint8", + .qapi_type = &uint8_type_info, .get = get_uint8, .set = set_uint8, .set_default_value = qdev_propinfo_set_default_value_uint, @@ -389,7 +390,7 @@ static void set_uint16(Object *obj, Visitor *v, const char *name, } const PropertyInfo qdev_prop_uint16 = { - .type = "uint16", + .qapi_type = &uint16_type_info, .get = get_uint16, .set = set_uint16, .set_default_value = qdev_propinfo_set_default_value_uint, @@ -434,14 +435,14 @@ static void set_int32(Object *obj, Visitor *v, const char *name, void *opaque, } const PropertyInfo qdev_prop_uint32 = { - .type = "uint32", + .qapi_type = &uint32_type_info, .get = get_uint32, .set = set_uint32, .set_default_value = qdev_propinfo_set_default_value_uint, }; const PropertyInfo qdev_prop_int32 = { - .type = "int32", + .qapi_type = &int32_type_info, .get = qdev_propinfo_get_int32, .set = set_int32, .set_default_value = qdev_propinfo_set_default_value_int, @@ -486,14 +487,14 @@ static void set_int64(Object *obj, Visitor *v, const char *name, } const PropertyInfo qdev_prop_uint64 = { - .type = "uint64", + .qapi_type = &uint64_type_info, .get = get_uint64, .set = set_uint64, .set_default_value = qdev_propinfo_set_default_value_uint, }; const PropertyInfo qdev_prop_int64 = { - .type = "int64", + .qapi_type = &int64_type_info, .get = get_int64, .set = set_int64, .set_default_value = qdev_propinfo_set_default_value_int, @@ -515,7 +516,7 @@ static void set_uint64_checkmask(Object *obj, Visitor *v, const char *name, } const PropertyInfo qdev_prop_uint64_checkmask = { - .type = "uint64", + .qapi_type = &uint64_type_info, .get = get_uint64, .set = set_uint64_checkmask, }; @@ -551,7 +552,11 @@ static void set_usize(Object *obj, Visitor *v, const char *name, void *opaque, } const PropertyInfo qdev_prop_usize = { - .type = "usize", +#if HOST_LONG_BITS == 32 + .qapi_type = &uint32_type_info, +#else + .qapi_type = &uint64_type_info, +#endif .get = get_usize, .set = set_usize, .set_default_value = qdev_propinfo_set_default_value_uint, @@ -595,7 +600,7 @@ static void set_string(Object *obj, Visitor *v, const char *name, } const PropertyInfo qdev_prop_string = { - .type = "str", + .qapi_type = &str_type_info, .release = release_string, .get = get_string, .set = set_string, @@ -604,9 +609,8 @@ const PropertyInfo qdev_prop_string = { /* --- on/off/auto --- */ const PropertyInfo qdev_prop_on_off_auto = { - .type = "OnOffAuto", + .qapi_type = &OnOffAuto_type_info, .description = "on/off/auto", - .enum_table = &OnOffAuto_lookup, .get = qdev_propinfo_get_enum, .set = qdev_propinfo_set_enum, .set_default_value = qdev_propinfo_set_default_value_enum, @@ -647,7 +651,7 @@ static void set_size32(Object *obj, Visitor *v, const char *name, void *opaque, } const PropertyInfo qdev_prop_size32 = { - .type = "size", + .qapi_type = &size_type_info, .get = qdev_propinfo_get_size32, .set = set_size32, .set_default_value = qdev_propinfo_set_default_value_uint, @@ -1060,7 +1064,7 @@ static void set_size(Object *obj, Visitor *v, const char *name, void *opaque, } const PropertyInfo qdev_prop_size = { - .type = "size", + .qapi_type = &size_type_info, .get = get_size, .set = set_size, .set_default_value = qdev_propinfo_set_default_value_uint, @@ -1142,7 +1146,7 @@ static void set_link(Object *obj, Visitor *v, const char *name, void *opaque, } const PropertyInfo qdev_prop_link = { - .type = "link", + .qapi_type = &str_type_info, .create = create_link_property, /* * Since we have a create method, the get and set are used -- 2.55.0
