X-Git-Url: http://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/b17287deb56775a49030d738d8c8c0e9cd15f9fe..3b10bbd3a88d6e16146414d91d06bb2f36347bfc:/examples/my-person.gob diff --git a/examples/my-person.gob b/examples/my-person.gob index f09b151..06a0aaa 100644 --- a/examples/my-person.gob +++ b/examples/my-person.gob @@ -1,4 +1,8 @@ -require 0.92.1 +requires 0.92.1 + +/* This will work with an older version (0.92.1 specifically), if you want + * to see a version with automatic argument<->datamember linking, automatic + * initialization and destruction, look at my-person2.gob */ %{ #include @@ -15,17 +19,13 @@ class My:Person from Gtk:Object { argument POINTER (type char *) name get { - if(self->name) - ARG = g_strdup(self->name); - else - ARG = NULL; + /* note that strdup handles NULL correctly */ + ARG = g_strdup(self->name); } set { + /* note that strdup handles NULL correctly */ g_free(self->name); - if(ARG) - self->name = g_strdup(ARG); - else - self->name = NULL; + self->name = g_strdup(ARG); }; argument LONG dob get { ARG = self->dob; } set { self->dob = ARG; }; @@ -80,6 +80,15 @@ class My:Person from Gtk:Object { self->_priv->rounds_in_shotgun--; /* death is imminent if we shoot oneself in the head */ - death(self,(long)time(NULL)); + death(self, (long)time(NULL)); + } + + /* override the destroy signal where we destroy data we need to free */ + override (Gtk:Object) + void + destroy (Gtk:Object *self (check null type)) + { + g_free(MY_PERSON(self)->name); + PARENT_HANDLER(self); } }