X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/b3db2950b11fc5f3abd9ecdae855746e2d19c836..6bec711e14babb0d6388754f41834036f22a3ef1:/src/test.gob diff --git a/src/test.gob b/src/test.gob index 8146a72..25e2e8f 100644 --- a/src/test.gob +++ b/src/test.gob @@ -3,12 +3,21 @@ look in here to see a whole array of different syntax options, but don't expect this to be an easy to read file */ -requires 1.99.0 +requires 2.0.18 + +%ct{ + /* very very top of C file useful for "config.h" sort of like alltop + * but only for C file */ +%} %at{ /* ALL TOP */ %} +%ctop{ + /* Just like ct above */ +%} + %headertop{ /* this should go on the very top of the header */ @@ -23,6 +32,11 @@ requires 1.99.0 /* this should go into the private header as well*/ %} +%afterdecls{ + /* between the declarations and the method implementations */ +%} + + %{ #include @@ -84,7 +98,15 @@ error TEST_OBJECT_ERROR { BAD_THAT } Test:Object:Error; -class Test:Object from G:Object +enum BUBLE { + KEIN = 0, + STANDARD, + STANDARD_RO, + KOMPLETT, + ALT +} Buble:Enum; + +class Test:Object from /*G:Object*/ Gtk:Container (interface Gtk:Tree:Model) /* We can add more interfaces by adding more lines like the above */ /* Note that there must exist a GtkTreeModelIface structure */ @@ -116,6 +138,10 @@ class Test:Object from G:Object unrefwith g_object_unref; argument POINTER testingobj objectlink; + public Test:Object * testingobjllll + unrefwith gtk_widget_destroy; + argument POINTER testingobjllll objectlink; + public Test:Object * testingobjfoo unref { if (VAR) g_object_unref (VAR); }; argument POINTER testingobjfoo objectlink; @@ -196,23 +222,30 @@ class Test:Object from G:Object link); private Some:Flags flags_property; - property ENUM flags_property (nick = "flagsprop", + property FLAGS flags_property (nick = "flagsprop", blurb = "flagsprop", flags_type = Some:Flags, link); - private PackageBoxed *prop; + private PackageBoxed prop; property BOXED prop (nick="prop", blurb="prop", boxed_type=Package:Boxed, link); /* testing old semantics */ - private PackageBoxed *prop2; + private PackageBoxed prop2; property BOXED prop2 (nick="prop2", blurb="prop2", boxed_type=PACKAGE_TYPE_BOXED, link); + private char ov_prop; + property CHAR ov_prop + (export, + override) + set { self->_priv->ov_prop = g_value_get_char (VAL); } + get { g_value_set_char (VAL, self->_priv->ov_prop); }; + private int j; public GObject * h; @@ -222,7 +255,7 @@ class Test:Object from G:Object public int wagawaga_should_be_after_this_in_the_header; init(object) { - object->i=0; + object->i=0; } class_init(klass); @@ -265,10 +298,25 @@ class Test:Object from G:Object return self_blah(self,wid,h) > 0 ? g_strdup ("foo") : g_strdup ("bar"); } + constructor(self) { + /* constructor stuff */ + } + + dispose(self) { + /* dispose stuff */ + } + + finalize(self) { + /* finalize stuff */ + } + private char * test_handler (self, GObject *w, int h, gpointer data) { + data = w = NULL; + h = 0; + return NULL; } @@ -292,6 +340,9 @@ class Test:Object from G:Object test_object_connect_data__bleh (self, self_test_handler, NULL, NULL, 0); self_connect_data__bleh (self, self_test_handler, NULL, NULL, 0); + wid = NULL; + h = 0; + /* testing multiple marshaller support */ return 0; } @@ -326,20 +377,36 @@ class Test:Object from G:Object return NULL; } virtual int beh(self, int h (check > 0)); - /*override(G:Object) void add(Gtk:Container * self (check null type), - Gtk:Widget * wid (check null type)) { + override(Gtk:Container) + void add(Gtk:Container * self (check null type), + Gtk:Widget * wid (check null type)) { PARENT_HANDLER(self,wid); - }*/ + } + + override(G:Object) + void dispatch_properties_changed (G:Object *object, + guint n_pspecs, + GParamSpec **pspecs) + { + object = NULL; + n_pspecs = 0; + pspecs = NULL; + /* EKI! */ + } + public int consttest(self, const gchar *text, ...) { + text = NULL; return 25; } public int consttest2(self, gchar const *text, ...) { + text = NULL; return 25; } public int consttest3(self, G:Object const *wid (check null type)) { + wid = NULL; return 25; } public int consttest4(const self) @@ -367,12 +434,68 @@ class Test:Object from G:Object } public int consttest9(const self, int i, double b) { + b = 0.0; + i = 0; return 25; } public int consttest10(self const, int i, double b) { + b = 0.0; + i = 0; return 25; } + public gchar *funcattrtest(self, const char *format (check null), ...) + attr {G_GNUC_PRINTF (2, 3)} + { + gchar *result; + + va_list ap; + va_start(ap, format); + result = g_strdup_vprintf (format, ap); + va_end(ap); + return result; + } + private gchar *funcattrtest2(self, const char *format, ...) + attr {G_GNUC_SCANF(2,3)} + { + gchar *nonsense = NULL; + format = format; + return nonsense; + } + protected gchar *funcattrtest3(self, const char *format) + attr {G_GNUC_FORMAT (2)} + { + gchar *nonsense = NULL; + format = format; + return nonsense; + } + private char *funcattrtest4(self, const char *format, ...) + attr {G_GNUC_PRINTF(2,3)} + onerror NULL + { + gchar *nonsense = NULL; + format = format; + return nonsense; + } + protected char * funcattrtest5(self, const char *format, ...) + onerror NULL + attr {G_GNUC_PRINTF(2,3)} + { + gchar *nonsense = NULL; + format = format; + return nonsense; + } + public char * funcattrtest6(self, const char *format, ...) + attr {G_GNUC_PRINTF(2,3)} + onerror NULL + { + gchar *nonsense = NULL; + format = format; + return nonsense; + } + // Note that the parser should accept defreturn with function + // attributes as well, but this may not be a good thing since + // it probably doesn't make sense, so we don't test it. signal private first NONE (NONE) void googlegoogle(self) { @@ -412,26 +535,32 @@ class Test:Object from G:Object { puts("TEST3"); self_googlegoogle(self); + if (some_array[0]) return; } private virtual void testprivvirtual2(self, const int some_array[5][8][9]) { /* nothing here */ + if (some_array[0]) return; } public virtual void testpublicvirtual(self, int const some_array[5][8][9]) { /* nothing here */ + if (some_array[0]) return; } protected virtual void testprotectedvirtual(self, int some_array[5][8][9]) { /* nothing here */ + if (some_array[0]) return; } - signal first NONE (POINTER) - void testarrsignal(self, long arr[8]) + signal first NONE (POINTER, ENUM) + void testarrsignal(self, long arr[8], Buble:Enum foo) { /* foo */ + arr[0] = 1; + foo = BUBLE_KEIN; } /* testing empty func */ @@ -481,6 +610,10 @@ class Test:Object from G:Object gulong g, gfloat h, gdouble i, gchar * j, gint k, gpointer o, GObject *p) { + h = i = k = 0; + a = b = c = d = e = f = g = 0; + o = p = (GObject *)NULL; + j = (char *)NULL; /* ugh, testing casting */ } @@ -498,6 +631,15 @@ class Test:Object from G:Object return FALSE; } + /* some more enum testing */ + public BubleEnum buble; + property ENUM buble + (nick = "Buble", + blurb = "Buble", + enum_type = Buble:Enum, + default_value = BUBLE_STANDARD, + link, export); + /* testing types */ public int t1; public long int t2;