| '\" t |
| .\" Title: glib-genmarshal |
| .\" Author: Tim Janik |
| .\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/> |
| .\" Date: 07/20/2016 |
| .\" Manual: User Commands |
| .\" Source: GObject |
| .\" Language: English |
| .\" |
| .TH "GLIB\-GENMARSHAL" "1" "" "GObject" "User Commands" |
| .\" ----------------------------------------------------------------- |
| .\" * Define some portability stuff |
| .\" ----------------------------------------------------------------- |
| .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| .\" http://bugs.debian.org/507673 |
| .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html |
| .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| .ie \n(.g .ds Aq \(aq |
| .el .ds Aq ' |
| .\" ----------------------------------------------------------------- |
| .\" * set default formatting |
| .\" ----------------------------------------------------------------- |
| .\" disable hyphenation |
| .nh |
| .\" disable justification (adjust text to left margin only) |
| .ad l |
| .\" ----------------------------------------------------------------- |
| .\" * MAIN CONTENT STARTS HERE * |
| .\" ----------------------------------------------------------------- |
| .SH "NAME" |
| glib-genmarshal \- C code marshaller generation utility for GLib closures |
| .SH "SYNOPSIS" |
| .HP \w'\fBglib\-genmarshal\fR\ 'u |
| \fBglib\-genmarshal\fR [OPTION...] [FILE...] |
| .SH "DESCRIPTION" |
| .PP |
| \fBglib\-genmarshal\fR |
| is a small utility that generates C code marshallers for callback functions of the GClosure mechanism in the GObject sublibrary of GLib\&. The marshaller functions have a standard signature, they get passed in the invoking closure, an array of value structures holding the callback function parameters and a value structure for the return value of the callback\&. The marshaller is then responsible to call the respective C code function of the closure with all the parameters on the stack and to collect its return value\&. |
| .PP |
| \fBglib\-genmarshal\fR |
| takes a list of marshallers to generate as input\&. The marshaller list is either read from standard input or from files passed as additional arguments on the command line\&. |
| .SS "Marshaller list format" |
| .PP |
| The marshaller lists are processed line by line, a line can contain a comment in the form of |
| .sp .if n \{\ .RS 4 .\} .nf # this is a comment .fi .if n \{\ .RE .\} |
| or a marshaller specification of the form |
| .sp |
| .if n \{\ |
| .RS 4 |
| .\} |
| .nf |
| \fIRTYPE\fR:\fIPTYPE\fR |
| \fIRTYPE\fR:\fIPTYPE\fR,\fIPTYPE\fR |
| \fIRTYPE\fR:\fIPTYPE\fR,\fIPTYPE\fR,\fIPTYPE\fR |
| .fi |
| .if n \{\ |
| .RE |
| .\} |
| .sp |
| (up to 16 |
| \fIPTYPE\fRs may be present)\&. |
| .PP |
| The |
| \fIRTYPE\fR |
| part specifies the callback\*(Aqs return type and the |
| \fIPTYPE\fRs right to the colon specify the callback\*(Aqs parameter list, except for the first and the last arguments which are always pointers\&. |
| .SS "Parameter types" |
| .PP |
| Currently, the following types are supported: |
| .PP |
| \fIVOID\fR |
| .RS 4 |
| indicates no return type, or no extra parameters\&. If |
| \fIVOID\fR |
| is used as the parameter list, no additional parameters may be present\&. |
| .RE |
| .PP |
| \fIBOOLEAN\fR |
| .RS 4 |
| for boolean types (gboolean) |
| .RE |
| .PP |
| \fICHAR\fR |
| .RS 4 |
| for signed char types (gchar) |
| .RE |
| .PP |
| \fIUCHAR\fR |
| .RS 4 |
| for unsigned char types (guchar) |
| .RE |
| .PP |
| \fIINT\fR |
| .RS 4 |
| for signed integer types (gint) |
| .RE |
| .PP |
| \fIUINT\fR |
| .RS 4 |
| for unsigned integer types (guint) |
| .RE |
| .PP |
| \fILONG\fR |
| .RS 4 |
| for signed long integer types (glong) |
| .RE |
| .PP |
| \fIULONG\fR |
| .RS 4 |
| for unsigned long integer types (gulong) |
| .RE |
| .PP |
| \fIINT64\fR |
| .RS 4 |
| for signed 64bit integer types (gint64) |
| .RE |
| .PP |
| \fIUINT64\fR |
| .RS 4 |
| for unsigned 64bit integer types (guint64) |
| .RE |
| .PP |
| \fIENUM\fR |
| .RS 4 |
| for enumeration types (gint) |
| .RE |
| .PP |
| \fIFLAGS\fR |
| .RS 4 |
| for flag enumeration types (guint) |
| .RE |
| .PP |
| \fIFLOAT\fR |
| .RS 4 |
| for single\-precision float types (gfloat) |
| .RE |
| .PP |
| \fIDOUBLE\fR |
| .RS 4 |
| for double\-precision float types (gdouble) |
| .RE |
| .PP |
| \fISTRING\fR |
| .RS 4 |
| for string types (gchar*) |
| .RE |
| .PP |
| \fIBOXED\fR |
| .RS 4 |
| for boxed (anonymous but reference counted) types (GBoxed*) |
| .RE |
| .PP |
| \fIPARAM\fR |
| .RS 4 |
| for GParamSpec or derived types (GParamSpec*) |
| .RE |
| .PP |
| \fIPOINTER\fR |
| .RS 4 |
| for anonymous pointer types (gpointer) |
| .RE |
| .PP |
| \fIOBJECT\fR |
| .RS 4 |
| for GObject or derived types (GObject*) |
| .RE |
| .PP |
| \fIVARIANT\fR |
| .RS 4 |
| for GVariant types (GVariant*) |
| .RE |
| .PP |
| \fINONE\fR |
| .RS 4 |
| deprecated alias for |
| \fIVOID\fR |
| .RE |
| .PP |
| \fIBOOL\fR |
| .RS 4 |
| deprecated alias for |
| \fIBOOLEAN\fR |
| .RE |
| .SH "OPTIONS" |
| .PP |
| \fB\-\-header\fR |
| .RS 4 |
| Generate header file contents of the marshallers\&. |
| .RE |
| .PP |
| \fB\-\-body\fR |
| .RS 4 |
| Generate C code file contents of the marshallers\&. |
| .RE |
| .PP |
| \fB\-\-prefix=\fR\fB\fIPREFIX\fR\fR |
| .RS 4 |
| Specify marshaller prefix\&. The default prefix is |
| `g_cclosure_marshal\*(Aq\&. |
| .RE |
| .PP |
| \fB\-\-skip\-source\fR |
| .RS 4 |
| Skip source location remarks in generated comments\&. |
| .RE |
| .PP |
| \fB\-\-stdinc\fR |
| .RS 4 |
| Use the standard marshallers of the GObject library, and include |
| gmarshal\&.h |
| in generated header files\&. |
| .RE |
| .PP |
| \fB\-\-nostdinc\fR |
| .RS 4 |
| Do not use the standard marshallers of the GObject library, and skip |
| gmarshal\&.h |
| include directive in generated header files\&. |
| .RE |
| .PP |
| \fB\-\-internal\fR |
| .RS 4 |
| Mark generated functions as internal, using G_GNUC_INTERNAL\&. |
| .RE |
| .PP |
| \fB\-\-valist\-marshallers\fR |
| .RS 4 |
| Generate valist marshallers, for use with g_signal_set_va_marshaller()\&. |
| .RE |
| .PP |
| \fB\-v\fR, \fB\-\-version\fR |
| .RS 4 |
| Print version information\&. |
| .RE |
| .PP |
| \fB\-\-g\-fatal\-warnings\fR |
| .RS 4 |
| Make warnings fatal, that is, exit immediately once a warning occurs\&. |
| .RE |
| .PP |
| \fB\-h\fR, \fB\-\-help\fR |
| .RS 4 |
| Print brief help and exit\&. |
| .RE |
| .PP |
| \fB\-v\fR, \fB\-\-version\fR |
| .RS 4 |
| Print version and exit\&. |
| .RE |
| .SH "EXAMPLE" |
| .PP |
| To generate marshallers for the following callback functions: |
| .sp |
| .if n \{\ |
| .RS 4 |
| .\} |
| .nf |
| void foo (gpointer data1, |
| gpointer data2); |
| void bar (gpointer data1, |
| gint param1, |
| gpointer data2); |
| gfloat baz (gpointer data1, |
| gboolean param1, |
| guchar param2, |
| gpointer data2); |
| .fi |
| .if n \{\ |
| .RE |
| .\} |
| .PP |
| The |
| marshaller\&.list |
| file has to look like this: |
| .sp |
| .if n \{\ |
| .RS 4 |
| .\} |
| .nf |
| VOID:VOID |
| VOID:INT |
| FLOAT:BOOLEAN,UCHAR |
| .fi |
| .if n \{\ |
| .RE |
| .\} |
| .PP |
| and you call glib\-genmarshal like this: |
| .sp |
| .if n \{\ |
| .RS 4 |
| .\} |
| .nf |
| glib\-genmarshal \-\-header marshaller\&.list > marshaller\&.h |
| glib\-genmarshal \-\-body marshaller\&.list > marshaller\&.c |
| .fi |
| .if n \{\ |
| .RE |
| .\} |
| .PP |
| The generated marshallers have the arguments encoded in their function name\&. For this particular list, they are |
| .sp |
| .if n \{\ |
| .RS 4 |
| .\} |
| .nf |
| g_cclosure_user_marshal_VOID__VOID(), |
| g_cclosure_user_marshal_VOID__INT(), |
| g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR()\&. |
| .fi |
| .if n \{\ |
| .RE |
| .\} |
| .PP |
| They can be used directly for GClosures or be passed in as the GSignalCMarshaller c_marshaller; argument upon creation of signals: |
| .sp |
| .if n \{\ |
| .RS 4 |
| .\} |
| .nf |
| GClosure *cc_foo, *cc_bar, *cc_baz; |
| |
| cc_foo = g_cclosure_new (NULL, foo, NULL); |
| g_closure_set_marshal (cc_foo, g_cclosure_user_marshal_VOID__VOID); |
| cc_bar = g_cclosure_new (NULL, bar, NULL); |
| g_closure_set_marshal (cc_bar, g_cclosure_user_marshal_VOID__INT); |
| cc_baz = g_cclosure_new (NULL, baz, NULL); |
| g_closure_set_marshal (cc_baz, g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR); |
| .fi |
| .if n \{\ |
| .RE |
| .\} |
| .SH "SEE ALSO" |
| .PP |
| \fBglib-mkenums\fR(1) |