Writing Shared Libraries, first draft

Scott James Remnant scott at netsplit.com
Mon Nov 8 14:42:16 EET 2004


On Mon, 2004-11-08 at 13:35 +0100, Sven Neumann wrote:

> Scott James Remnant <scott at netsplit.com> writes:
> 
> > No, the right thing to do is to make sure your API doesn't rely on the
> > size of the structure.
> 
> This isn't always possible since it effectively keeps you from
> "deriving" from this structure. It is for example not an option for an
> instance struct based on GObject unless you want that class to be
> final (in the Java sense).
> 
From rom gtkaction.h:

typedef struct _GtkAction      GtkAction;
typedef struct _GtkActionPrivate GtkActionPrivate;

struct _GtkAction
{
  GObject object;

  /*< private >*/

  GtkActionPrivate *private_data;
};


The private content of the struct is never elaborated, and is simply
available through a pointer.  You can still derive from GtkAction
because the size of *that* struct is known, and the gtk_action code can
still obtain its private data through pointer.


Note that this trick doesn't work the class structs, so they are padded
with function pointers ... because we *know* we're only ever going to
expand those using other function pointers.

Scott
-- 
Have you ever, ever felt like this?
Had strange things happen?  Are you going round the twist?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.freedesktop.org/archives/xdg/attachments/20041108/c3ef2051/attachment.pgp 


More information about the xdg mailing list