requires 0.93.0 /* this file requires 0.93.0 as it uses some of the new features to reduce * typing and generally make it easier to read I think. Of course they're * optional to use so use the my-person.gob as an example of not using them. * These include data member initialization, automatic destructor calling * and automatic argument<->data member linking */ %{ #include #include "my-person2.h" #include "my-person2-private.h" %} class My:Person2 from Gtk:Object { /* the name of the person */ public char *name = {g_strdup("Nobody")} destroywith g_free; argument POINTER name stringlink; /* date of birth as a time_t */ public long dob = 0; argument LONG dob link; /* date of death as a time_t */ public long dod = 0; argument LONG dod link; /* number of rounds in our shotgun */ private int rounds_in_shotgun = 0; /* when the person gets born, sends out a signal, the caller of the signal should provide the date of birth */ signal last NONE (LONG) void birth(self, long dob) { self->dob = dob; } /* when the person dies, sends out a signal, the caller of the signal should provide the date of death */ signal last NONE (LONG) void death(self, long dod) { self->dod = dod; } public void load_shotgun(self) { /* add a round to our shotgun */ self->_priv->rounds_in_shotgun++; } public void shoot_oneself_in_the_head(self) { if(self->_priv->rounds_in_shotgun==0) { g_warning("No rounds in the shotgun!"); return; } /* one round was fired */ self->_priv->rounds_in_shotgun--; /* death is imminent if we shoot oneself in the head */ death(self, (long)time(NULL)); } public GtkObject * new(void) { return (GtkObject *)GET_NEW; } }