[Dynamite] ANSI C question

Guy Slater guy@ebi.ac.uk
Thu, 23 Mar 2000 21:35:02 +0000 (GMT)


On Thu, 23 Mar 2000, Ian Holmes wrote:

> On Thu, 23 Mar 2000, Guy Slater wrote:
> 
> > > > Do either of you know if this is strict ANSI, i.e. can we be sure that the
> > > > first two fields of _GArray (data & len) are mapped to the same memory
> > > > locations as data and len in _GRealArray in all C compilers?
> > > 
> > > This is strict ANSI interestingly. (read the back of K&R about struct
> > > layout).
> > 
> > Given that:
> > 
> >     o The first member must always have offset zero
> >     o Other members have increasing offset
> >     o Structure padding is implementation defined
> > 
> > It still isn't clear to me (from K&R) whether the padding
> > has to be *consistent* throughout the implemenataion.
> 
> hmmmm
> 
> > 
> > Anyway, I doubt the glib people wouldn't have used it if
> > it wasn't safe - they seem to have gone to a lot of effort
> > to ensure portability. 
> 
> maybe we want to be even more portable than GLib though...
>
> > > > If so it makes life a lot easier...
> > 
> > Saves much messing with offsetof() or somesuch ..
> 
> We *could* do inheritance this way as Ewan says GTK does.
> 
> We would have to decide fairly soon whether we wanted to do inheritance
> this way or by the "derived interface has a pointer to base interface"
> model that was in the code I posted the other day.
> 
> The GTK model is:
> 
> 	* slightly more efficient
> 	* much less safe
> 
> I can't help feeling that we are seriously retreading ground here. Oh
> well.

If we're going to use glib, we can't be more portable that it is anyway.
I vote for doing the inheritance the gtk way.  Using the pointers to base
interfaces model will be more fiddly.

Guy.
--