This macro can be used to generate the boilerplate property_get_type_ptr() QOM get function for the specified scalar type. Replace the existing scaler get functions with the new macro.
Signed-off-by: Mark Cave-Ayland <[email protected]> Reviewed-by: Daniel P. Berrangé <[email protected]> --- qom/object.c | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/qom/object.c b/qom/object.c index f79b2cf361..34aef7ca9f 100644 --- a/qom/object.c +++ b/qom/object.c @@ -2661,12 +2661,20 @@ static char *object_get_type(Object *obj, Error **errp) return g_strdup(object_get_typename(obj)); } -static void property_get_uint8_ptr(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint8_t value = *(uint8_t *)opaque; - visit_type_uint8(v, name, &value, errp); -} + +#define OBJECT_PROPERTY_SCALAR_GETTER(type) \ + static void property_get_##type##_ptr(Object *obj, Visitor *v, \ + const char *name, \ + void *opaque, Error **errp) \ + { \ + type##_t value = *(type##_t *)opaque; \ + visit_type_##type(v, name, &value, errp); \ + } + +OBJECT_PROPERTY_SCALAR_GETTER(uint8) +OBJECT_PROPERTY_SCALAR_GETTER(uint16) +OBJECT_PROPERTY_SCALAR_GETTER(uint32) +OBJECT_PROPERTY_SCALAR_GETTER(uint64) static void property_set_uint8_ptr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) @@ -2681,13 +2689,6 @@ static void property_set_uint8_ptr(Object *obj, Visitor *v, const char *name, *field = value; } -static void property_get_uint16_ptr(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint16_t value = *(uint16_t *)opaque; - visit_type_uint16(v, name, &value, errp); -} - static void property_set_uint16_ptr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { @@ -2701,13 +2702,6 @@ static void property_set_uint16_ptr(Object *obj, Visitor *v, const char *name, *field = value; } -static void property_get_uint32_ptr(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint32_t value = *(uint32_t *)opaque; - visit_type_uint32(v, name, &value, errp); -} - static void property_set_uint32_ptr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { @@ -2721,13 +2715,6 @@ static void property_set_uint32_ptr(Object *obj, Visitor *v, const char *name, *field = value; } -static void property_get_uint64_ptr(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - uint64_t value = *(uint64_t *)opaque; - visit_type_uint64(v, name, &value, errp); -} - static void property_set_uint64_ptr(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { -- 2.43.0
