X-Git-Url: http://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/3379dcdfd0872947d761053c61d773add94d38c2..dd11885aadcfaafae2d6268c381b0aac94cbc149:/examples/my-person2.gob diff --git a/examples/my-person2.gob b/examples/my-person2.gob new file mode 100644 index 0000000..749bfb0 --- /dev/null +++ b/examples/my-person2.gob @@ -0,0 +1,73 @@ +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)); + } +}