glib/gobject/glib-genmarshal.1
Tim Janik e773d7dba6 fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000  Tim Janik  <timj@gtk.org>

	* gboxed.c: fixed dealing with collection/lcopy of NULL values.

	* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
	convenience macro.

	* Makefile.am: cleanups, marshaller generation rules.

	* gmarshal.[hc]: new files with GRuntime standard marshallers.

	* glib-genmarshal.c: fix log domain, support gruntime standard
	marshallers, suport G_TYPE_PARAM, come with extern "C" and
	#include gmarshal.h.

	* glib-genmarshal.1: reflect glib-genmarshal.c updates.

	* gobject.[hc]: implement object constructor. rework parameter
	changed notification queueing, we support queue freezes now and
	don't dispatch from an idle handler anymore.
	parameter->property rename hassle.
	implemented ::properties_changed and ::notify::* signals for
	property change notification (the later supports property names
	as details). added signal connection and named data properties.
	(g_signal_connect_object): new function to setup while_alive
	connections.
	(g_object_class_install_property): sink properties now, since they
	are initially floating.
	(g_object_steal_data):
	(g_object_set_data_full):
	(g_object_set_data):
	(g_object_get_data): set/get data by using g_datalist_*() functions
	directly.
	(g_object_queue_param_changed): nuked.
	(g_object_freeze_notify): start queueing of property changes (freeze/
	thaw calls stack).
	(g_object_notify): announce changes of a certain property directly.
	(g_object_thaw_notify): process queue of property changes, therefore
	emitting GObject::notify::detail with detail being the changed
	properties names.
	(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
	G_WARN_INVALID_PARAM_ID().

	* gparam.[hc]: param specs are now initially floating and need to be
	sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
	added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
	required by GObjectClass.constructor().

	* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
	GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
	and G_TYPE_CCALLBACK respectively.

	* gsignal.[hc]: cleanups.
	(signal_id_lookup): after walking the anchestry, try interfaces as well.
	(g_signal_new): new function to create signals from varargs type list.
	(g_signal_connect_closure): closure connection variant that works from
	signal name+detail.
	(g_signal_connect_data): c handler connection variant that works from
	signal name+detail.
	(g_signal_emit_valist): emit signal for an instance with paraneters
	collected from a va_list.
	(g_signal_emit): emit signal, taking parameters from varargs list.
	(g_signal_emit_by_name): same as g_signal_emit, working from
	signal name+detail.
	(signal_emit_R): return whether return_value needs to be altered.

	* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
	the points that need to reflect the upcoming rename.
	melt g_type_conforms_to() functionality into g_type_is_a(), as that
	is what we really want (liskov substitution principle).
	assorted changes to other files due to conforms_to->is_a.

	* gvalue.[hc]: implemented g_value_set_instance() that sets a value
	from an instantiatable type via the value_table's collect_value()
	function (based on an idea from James Henstridge <james@daa.com.au>).
	cleanups/fixes.

	* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
2000-12-12 07:32:00 +00:00

203 lines
4.7 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--nostdinc
Do not use the standard GRuntime marshallers, and skip gmarshal.h include
directive in generated header files.
.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
\fIPARAM
for GParamSpec or derived types (GParamSpec*)
\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>.