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 */
/* this should go into the private header as well*/
%}
+%afterdecls{
+ /* between the declarations and the method implementations */
+%}
+
+
%{
#include <stdio.h>
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 */
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;
private char a_property;
property CHAR a_property
- (nick = _("Nick"),
+ (
+ name="a-property",
+ nick = _("Nick"),
blurb = _("Blurb"),
minimum = 'a',
maximum = 'Z',
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;
public int wagawaga_should_be_after_this_in_the_header;
init(object) {
- object->i=0;
+ object->i=0;
+ }
+ class_init(klass) {
+ /*IN CLASS INIT */
}
- class_init(klass);
/**
* new:
*
* Returns: new object
**/
- signal last STRING (POINTER, INT)
+ signal last STRING "bleh-signal" (POINTER, INT)
char * bleh(self, G:Object * wid (check null type),
int h (check > 0)) {
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;
}
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;
}
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)
}
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)
{
{
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 */
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 */
}
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;