# see glib-genmarshal(1) for a detailed description of the file format,
# possible parameter types are:
# VOID indicates no return type, or no extra
# parameters. if VOID is used as the parameter
# list, no additional parameters may be present.
# BOOLEAN for boolean types (gboolean)
# CHAR for signed char types (gchar)
# UCHAR for unsigned char types (guchar)
# INT for signed integer types (gint)
# UINT for unsigned integer types (guint)
# LONG for signed long integer types (glong)
# ULONG for unsigned long integer types (gulong)
# ENUM for enumeration types (gint)
# FLAGS for flag enumeration types (guint)
# FLOAT for single-precision float types (gfloat)
# DOUBLE for double-precision float types (gdouble)
# STRING for string types (gchar*)
# BOXED for boxed (anonymous but reference counted) types (GBoxed*)
# POINTER for anonymous pointer types (gpointer)
# NONE deprecated alias for VOID
# BOOL deprecated alias for BOOLEAN
#
# One discrepancy from Gtk+ is that for signals that may pass NULL for an object
# reference, the Haskell signal should be passed a 'Maybe GObject'.
# We therefore have two variants that are marshalled as a maybe type:
#
# OBJECT for GObject or derived types (GObject*)
# MOBJECT for GObject or derived types (GObject*) that may be NULL
# Furthermore, some objects needs to be destroyed synchronously from the main loop of
# Gtk rather than during GC. These objects need to be marshalled using TOBJECT (for thread-safe
# object). It doesn't hurt to use TOBJECT for an object that doesn't need it, except for the
# some performance. As a rule of thumb, use TOBJECT for all libraries that build on package
# 'gtk' and use OBJECT for all packages that only need packages 'glib', 'pango', 'cairo',
# 'gio'. Again both variants exist. Note that the same names will be generated for OBJECT and
# TOBJECT, so you have to remove the OBJECT handler if you need both.
#
# TOBJECT for GObject or derived types (GObject*)
# MTOBJECT for GObject or derived types (GObject*) that may be NULL
# If you add a new signal type, please check that it actually works!
# If it is a Boxed type check that the reference counting is right.
NONE:NONE
NONE:STRING,STRING,STRING,ENUM
NONE:OBJECT,OBJECT,ENUM
NONE:ENUM
NONE:OBJECT
NONE:MOBJECT,MOBJECT,ENUM