-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 <time.h>
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; };
argument LONG dod get { ARG = self->dod; } set { self->dod = ARG; };
- init(person)
+ init(self)
{
- person->name = g_strdup("Nobody");
- person->dob = 0;
- person->dod = 0;
+ self->name = g_strdup("Nobody");
+ self->dob = 0;
+ self->dod = 0;
/* initially we have no rounds in the shotgun */
- person->_priv->rounds_in_shotgun = 0;
+ self->_priv->rounds_in_shotgun = 0;
}
/* when the person gets born, sends out a signal, the caller
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);
+ }
+
+ public GtkObject *
+ new(void)
+ {
+ return (GtkObject *)GET_NEW;
}
}