1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
.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*)
.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-mkenums(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>.
|