Am 20.02.2013 19:04, schrieb David Woodhouse: > On Wed, 2013-02-20 at 18:42 +0100, Andreas Färber wrote: >> >> PCII440FXState *d = I440FX_PCI_WHATEVER_CAST_MACRO_NAME(dev); > > Yeah, that's the easy bit. The bit that I'm vaguely confused by would be > something like > > #define I440FX_PCI_WHATEVER_CAST_MACRO_NAME(obj) \ > OBJECT_CHECK(PCII440FXState, (obj), "i440FX") > > Where that "i440FX" should probably be turned into a macro of its own?
Yes, a #define TYPE_SOMETHING_THAT_MAKES_SENSE "i440FX" a line above and then use .name = TYPE_..., in the TypeInfo as well. With proper names in both places obviously. :) > And then all the *existing* uses of DO_UPCAST should be fixed to use it > too? Such as in i440fx_write_config() ? Outside the scope of this patch. But if you're feeling like contributing, then generally there will be uses to review and convert, yes. Every rule has its exceptions like hot paths such as timers, interrupts and read/write, which usually just do MyType *s = opaque;, but instance_init, initfn, (un)realize and reset are clear candidates. Cheers, Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
