On Tue, 11 Dec 2018 18:30:32 +0400 Marc-André Lureau <marcandre.lur...@gmail.com> wrote:
> Hi > > On Tue, Dec 11, 2018 at 6:24 PM Eduardo Habkost <ehabk...@redhat.com> wrote: > > > > I have specific questions about the approach we are using to > > eliminate the macros. > > > > My main goal when asking this to be moved to a separate patch is > > to not make this discussion block the register_global_properties() & > > device_post_init() changes (which look good to me). > > > > > > On Tue, Dec 04, 2018 at 06:20:12PM +0400, Marc-André Lureau wrote: > > [...] > > > -#define VIRT_COMPAT_3_0 \ > > > +static GlobalProperty virt_compat_3_0[] = { > > > HW_COMPAT_3_0 > > > +}; > > > > What about moving the array inside virt_machine_3_0_options()? > > Sure > > > > > > > > > static void virt_3_0_instance_init(Object *obj) > > > { > > > @@ -1883,12 +1884,14 @@ static void virt_3_0_instance_init(Object *obj) > > > static void virt_machine_3_0_options(MachineClass *mc) > > > { > > > virt_machine_3_1_options(mc); > > > - SET_MACHINE_COMPAT(mc, VIRT_COMPAT_3_0); > > > + compat_props_add(mc->compat_props, > > > + virt_compat_3_0, G_N_ELEMENTS(virt_compat_3_0)); > > > } > > > DEFINE_VIRT_MACHINE(3, 0) > > > > This is nice, because it's basically the same amount of > > boilerplate code, but I would find a NULL-terminated array much > > easier to use than having to use G_N_ELEMENTS(). > > But easier to get wrong too. I prefer the explicit N arguments. (it > also gives some flexibility, since you can point to inner pointer + > size, although we don't care at this point) +1 to explicit array size, it also allows to drop terminating NULL entry in compat declarations [...]