]> git.draconx.ca Git - gob-dx.git/blobdiff - src/test.gob
Release 2.0.18
[gob-dx.git] / src / test.gob
index 8146a72538f234665c65ea4bdb5712add599876c..25e2e8f66c8afea96d36177a5544e246ca4d395a 100644 (file)
@@ -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 <stdio.h>
@@ -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;