> > On Fri, Oct 23, 2015 at 10:29:04AM -0400, Frediano Ziglio wrote: > > It would be much better to define a public structure like > > > > struct CursorChannel { > > CommonChannel common; > > }; > > > > and a private one (in cursor-channel.c) like > > > > struct CursorChannel { > > CommonChannel common; > > ... any field needed ... > > } > > > > and define the macro as > > > > #define RED_CHANNEL(Channel) (&(Channel)->common.base) > > This kind of macros does not work as soon as you introduce another level > of inheritance: > > struct SpecializedCursorChannel { > CursorChannel parent; > /* more stuff */ > }; > > You cannot use your RED_CHANNEL macro to get a RedChannel from a > SpecializedCursorChannel instance. > > Christophe > Yes, this does not prevent the macro to convert an integer array to a RedChannel without warnings. How was implemented before prevented it. Another was would be adding conversion functions like cursor_channel_get_common_channel. Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel