mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-27 22:46:15 +01:00
197 lines
4.5 KiB
Groff
197 lines
4.5 KiB
Groff
|
.TH GLIB-GENMARSHAL 1 "18 Oct 2000"
|
||
|
.SH NAME
|
||
|
glib-genmarshal \- C code marshaller generation utility for GLib closures
|
||
|
.SH SYNOPSIS
|
||
|
|
||
|
\fBglib-genmarshal\fP [\fIoptions\fP] [\fIfiles...\fP]
|
||
|
|
||
|
.SH DESCRIPTION
|
||
|
\fBglib-genmarshal\fP 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.
|
||
|
|
||
|
.SH INVOCATION
|
||
|
|
||
|
\fBglib-genmarshal\fP 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 Options
|
||
|
.TP
|
||
|
\fI--header
|
||
|
Generate header file contents of the marshallers.
|
||
|
.TP
|
||
|
\fI--body
|
||
|
Generate C code file contents of the marshallers.
|
||
|
.TP
|
||
|
\fI--prefix=string, --prefix string
|
||
|
Specify marshaller prefix. The default prefix is `\fIg_cclosure_marshal\fP'.
|
||
|
.TP
|
||
|
\fI--skip-source
|
||
|
Skip source location remarks in generated comments.
|
||
|
.TP
|
||
|
\fI--g-fatal-warnings
|
||
|
Make warnings fatal, that is, exit immediately once a warning occours.
|
||
|
.TP
|
||
|
\fI-h, --help\fP
|
||
|
Print brief help and exit.
|
||
|
.TP
|
||
|
\fI-v, --version\fP
|
||
|
Print version and exit.
|
||
|
.PP
|
||
|
|
||
|
.SS Marshaller list format
|
||
|
.PP
|
||
|
The marshaller lists are processed line by line, a line can contain a
|
||
|
comment in the form of
|
||
|
.RS
|
||
|
.PP
|
||
|
# this is a comment
|
||
|
.PP
|
||
|
.RE
|
||
|
or a marshaller specification of the form
|
||
|
.RS
|
||
|
.PP
|
||
|
\fIRTYPE\fP:\fBPTYPE\fP
|
||
|
.PP
|
||
|
\fIRTYPE\fP:\fBPTYPE\fP,\fBPTYPE\fP
|
||
|
.PP
|
||
|
\fIRTYPE\fP:\fBPTYPE\fP,\fBPTYPE\fP,\fBPTYPE\fP
|
||
|
.PP
|
||
|
# up to 16 \fBPTYPE\fPs may be present
|
||
|
.PP
|
||
|
.RE
|
||
|
The \fIRTYPE\fP part specifies the callback's return type and
|
||
|
the \fBPTYPE\fPs right to the colon specify the callback's
|
||
|
parameter list, except for the first and the last arguments which
|
||
|
are always pointers.
|
||
|
.PP
|
||
|
|
||
|
.SS Parameter types
|
||
|
Currently, the following types are supported:
|
||
|
.TP 12
|
||
|
\fIVOID
|
||
|
indicates no return type, or no extra parameters. if \fIVOID\fP is used as
|
||
|
the parameter list, no additional parameters may be present.
|
||
|
.TP 12
|
||
|
\fIBOOLEAN
|
||
|
for boolean types (gboolean)
|
||
|
.TP 12
|
||
|
\fICHAR
|
||
|
for signed char types (gchar)
|
||
|
.TP 12
|
||
|
\fIUCHAR
|
||
|
for unsigned char types (guchar)
|
||
|
.TP 12
|
||
|
\fIINT
|
||
|
for signed integer types (gint)
|
||
|
.TP 12
|
||
|
\fIUINT
|
||
|
for unsigned integer types (guint)
|
||
|
.TP 12
|
||
|
\fILONG
|
||
|
for signed long integer types (glong)
|
||
|
.TP 12
|
||
|
\fIULONG
|
||
|
for unsigned long integer types (gulong)
|
||
|
.TP 12
|
||
|
\fIENUM
|
||
|
for enumeration types (gint)
|
||
|
.TP 12
|
||
|
\fIFLAGS
|
||
|
for flag enumeration types (guint)
|
||
|
.TP 12
|
||
|
\fIFLOAT
|
||
|
for single-precision float types (gfloat)
|
||
|
.TP 12
|
||
|
\fIDOUBLE
|
||
|
for double-precision float types (gdouble)
|
||
|
.TP 12
|
||
|
\fISTRING
|
||
|
for string types (gchar*)
|
||
|
.TP 12
|
||
|
\fIBOXED
|
||
|
for boxed (anonymous but reference counted) types (GBoxed*)
|
||
|
.TP 12
|
||
|
\fIPOINTER
|
||
|
for anonymous pointer types (gpointer)
|
||
|
.TP 12
|
||
|
\fIOBJECT
|
||
|
for GObject or derived types (GObject*)
|
||
|
.TP 12
|
||
|
\fINONE
|
||
|
deprecated alias for \fIVOID\fP
|
||
|
.TP 12
|
||
|
\fIBOOL
|
||
|
deprecated alias for \fIBOOLEAN\fP
|
||
|
|
||
|
.SH EXAMPLE
|
||
|
To generate marshallers for the following callback functions:
|
||
|
.PP
|
||
|
.RS
|
||
|
.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
|
||
|
.RE
|
||
|
.PP
|
||
|
The marshaller list has to look like this:
|
||
|
.PP
|
||
|
.RS
|
||
|
.nf
|
||
|
VOID:VOID
|
||
|
VOID:INT
|
||
|
FLOAT:BOOLEAN,UCHAR
|
||
|
.fi
|
||
|
.RE
|
||
|
.PP
|
||
|
The generated marshallers have the arguments encoded
|
||
|
in their function name. For this particular list, they
|
||
|
are
|
||
|
g_cclosure_marshal_VOID__VOID(),
|
||
|
g_cclosure_marshal_VOID__INT(),
|
||
|
g_cclosure_marshal_FLOAT__BOOLEAN_UCHAR().
|
||
|
.PP
|
||
|
They can be used directly for GClosures or be passed in as
|
||
|
the GSignalCMarshaller c_marshaller; argument upon creation
|
||
|
of signals:
|
||
|
.PP
|
||
|
.nf
|
||
|
GClosure *cc_foo, *cc_bar, *cc_baz;
|
||
|
|
||
|
cc_foo = g_cclosure_new (NULL, foo, NULL);
|
||
|
g_closure_set_marshal (cc_foo, g_cclosure_marshal_VOID__VOID);
|
||
|
cc_bar = g_cclosure_new (NULL, bar, NULL);
|
||
|
g_closure_set_marshal (cc_bar, g_cclosure_marshal_VOID__INT);
|
||
|
cc_baz = g_cclosure_new (NULL, baz, NULL);
|
||
|
g_closure_set_marshal (cc_baz, g_cclosure_marshal_FLOAT__BOOLEAN_UCHAR);
|
||
|
.fi
|
||
|
.PP
|
||
|
|
||
|
|
||
|
.SH SEE ALSO
|
||
|
\fB
|
||
|
glib-config(1)
|
||
|
\fP
|
||
|
|
||
|
.SH BUGS
|
||
|
None known yet.
|
||
|
|
||
|
.SH AUTHOR
|
||
|
.B glib-genmarshal
|
||
|
has been written by Tim Janik <timj@gtk.org>.
|
||
|
.PP
|
||
|
This manual page was provided by Tim Janik <timj@gtk.org>.
|