machine: DEFINE_MACHINE() macro
The macro will allow easy registration of a TYPE_MACHINE subclass, using only the machine name and a MachineClass initialization function as parameter. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
97c6671cf1
commit
ed0b6de343
@ -159,4 +159,21 @@ struct MachineState {
|
||||
AccelState *accelerator;
|
||||
};
|
||||
|
||||
#define DEFINE_MACHINE(namestr, machine_initfn) \
|
||||
static void machine_initfn##_class_init(ObjectClass *oc, void *data) \
|
||||
{ \
|
||||
MachineClass *mc = MACHINE_CLASS(oc); \
|
||||
machine_initfn(mc); \
|
||||
} \
|
||||
static const TypeInfo machine_initfn##_typeinfo = { \
|
||||
.name = MACHINE_TYPE_NAME(namestr), \
|
||||
.parent = TYPE_MACHINE, \
|
||||
.class_init = machine_initfn##_class_init, \
|
||||
}; \
|
||||
static void machine_initfn##_register_types(void) \
|
||||
{ \
|
||||
type_register_static(&machine_initfn##_typeinfo); \
|
||||
} \
|
||||
machine_init(machine_initfn##_register_types)
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user