Commit 5f8edcbc3c for qemu.org
commit 5f8edcbc3ca0371b1ed0b38f7191ca91ef3cf7e4
Author: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Date: Fri Jul 17 14:51:42 2026 +0100
qom/object.c: introduce OBJECT_PROPERTY_SCALAR_SETTER(type) macro
This macro can be used to generate the boilerplate property_set_type_ptr()
QOM set function for the specified scalar type. Replace the existing scaler set
functions with the new macro.
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20260717135254.508701-3-mark.caveayland@nutanix.com>
diff --git a/qom/object.c b/qom/object.c
index 34aef7ca9f..8a1f80f613 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -2671,62 +2671,34 @@ static char *object_get_type(Object *obj, Error **errp)
visit_type_##type(v, name, &value, errp); \
}
+
+#define OBJECT_PROPERTY_SCALAR_SETTER(type) \
+ static void property_set_##type##_ptr(Object *obj, Visitor *v, \
+ const char *name, \
+ void *opaque, Error **errp) \
+ { \
+ type##_t *field = opaque; \
+ type##_t value; \
+ \
+ if (!visit_type_##type(v, name, &value, errp)) { \
+ return; \
+ } \
+ \
+ *field = value; \
+ }
+
OBJECT_PROPERTY_SCALAR_GETTER(uint8)
+OBJECT_PROPERTY_SCALAR_SETTER(uint8)
OBJECT_PROPERTY_SCALAR_GETTER(uint16)
+OBJECT_PROPERTY_SCALAR_SETTER(uint16)
OBJECT_PROPERTY_SCALAR_GETTER(uint32)
+OBJECT_PROPERTY_SCALAR_SETTER(uint32)
OBJECT_PROPERTY_SCALAR_GETTER(uint64)
+OBJECT_PROPERTY_SCALAR_SETTER(uint64)
-static void property_set_uint8_ptr(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
-{
- uint8_t *field = opaque;
- uint8_t value;
-
- if (!visit_type_uint8(v, name, &value, errp)) {
- return;
- }
-
- *field = value;
-}
-
-static void property_set_uint16_ptr(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
-{
- uint16_t *field = opaque;
- uint16_t value;
-
- if (!visit_type_uint16(v, name, &value, errp)) {
- return;
- }
-
- *field = value;
-}
-
-static void property_set_uint32_ptr(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
-{
- uint32_t *field = opaque;
- uint32_t value;
-
- if (!visit_type_uint32(v, name, &value, errp)) {
- return;
- }
-
- *field = value;
-}
-
-static void property_set_uint64_ptr(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
-{
- uint64_t *field = opaque;
- uint64_t value;
-
- if (!visit_type_uint64(v, name, &value, errp)) {
- return;
- }
+#undef OBJECT_PROPERTY_SCALAR_GETTER
+#undef OBJECT_PROPERTY_SCALAR_SETTER
- *field = value;
-}
ObjectProperty *
object_property_add_uint8_ptr(Object *obj, const char *name,