Provide a TYPE_INFO macro that can be used to register a TypeInfo
struct declaratively. This will allow QOM type registration to
be 100% declarative.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Changes v1 -> v2: none
---
include/qom/object.h | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/include/qom/object.h b/include/qom/object.h
index 1d6a520d35..81bea3b4ed 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -655,6 +655,14 @@ struct Object
struct InstanceType##Class { ParentClassType parent_class; };
+#define TYPE_INFO(type_info_var) \
+ static void \
+ register_type_info_##type_info_var(void) \
+ { \
+ type_register_static(&type_info_var); \
+ } \
+ type_init(register_type_info_##type_info_var);
+
/**
* OBJECT_DEFINE_TYPE_EXTENDED:
* @ModuleObjName: the object name with initial caps
@@ -700,12 +708,7 @@ struct Object
.interfaces = (InterfaceInfo[]) { __VA_ARGS__ } , \
}; \
\
- static void \
- module_obj_name##_register_types(void) \
- { \
- type_register_static(&module_obj_name##_info); \
- } \
- type_init(module_obj_name##_register_types);
+ TYPE_INFO(module_obj_name##_info)
/**
* OBJECT_DEFINE_TYPE:
--
2.26.2