Message ID | 20200813222625.243136-32-ehabkost@redhat.com |
---|---|
State | New |
Headers | show |
Series | qom: Automated conversion of type checking boilerplate | expand |
On Thu, Aug 13, 2020 at 06:26:15PM -0400, Eduardo Habkost wrote: > 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. > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > --- > include/qom/object.h | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Regards, Daniel
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:
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. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- include/qom/object.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)