| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>glib-genmarshal</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> |
| <link rel="home" href="index.html" title="GObject Reference Manual"> |
| <link rel="up" href="rn02.html" title="Tools Reference"> |
| <link rel="prev" href="glib-mkenums.html" title="glib-mkenums"> |
| <link rel="next" href="gobject-query.html" title="gobject-query"> |
| <meta name="generator" content="GTK-Doc V1.14 (XML mode)"> |
| <link rel="stylesheet" href="style.css" type="text/css"> |
| </head> |
| <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"> |
| <td><a accesskey="p" href="glib-mkenums.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> |
| <td><a accesskey="u" href="rn02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> |
| <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> |
| <th width="100%" align="center">GObject Reference Manual</th> |
| <td><a accesskey="n" href="gobject-query.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> |
| </tr></table> |
| <div class="refentry" title="glib-genmarshal"> |
| <a name="glib-genmarshal"></a><div class="titlepage"></div> |
| <div class="refnamediv"><table width="100%"><tr> |
| <td valign="top"> |
| <h2><span class="refentrytitle">glib-genmarshal</span></h2> |
| <p>glib-genmarshal — C code marshaller generation utility for GLib closures</p> |
| </td> |
| <td valign="top" align="right"></td> |
| </tr></table></div> |
| <div class="refsynopsisdiv" title="Synopsis"> |
| <h2>Synopsis</h2> |
| <div class="cmdsynopsis"><p><code class="command">glib-genmarshal</code> [options...] [files...]</p></div> |
| </div> |
| <div class="refsect1" title="Description"> |
| <a name="id573826"></a><h2>Description</h2> |
| <p><span class="command"><strong>glib-genmarshal</strong></span> 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. |
| </p> |
| </div> |
| <div class="refsect1" title="Invocation"> |
| <a name="id546330"></a><h2>Invocation</h2> |
| <p><span class="command"><strong>glib-genmarshal</strong></span> 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. |
| </p> |
| <div class="refsect2" title="Options"> |
| <a name="id567111"></a><h3>Options</h3> |
| <div class="variablelist"><table border="0"> |
| <col align="left" valign="top"> |
| <tbody> |
| <tr> |
| <td><p><span class="term"><code class="option">--header</code></span></p></td> |
| <td><p> |
| Generate header file contents of the marshallers. |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><code class="option">--body</code></span></p></td> |
| <td><p> |
| Generate C code file contents of the marshallers. |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><code class="option">--prefix=string</code>, <code class="option">--prefix string</code></span></p></td> |
| <td><p> |
| Specify marshaller prefix. The default prefix is <code class="literal">`g_cclosure_marshal'</code>. |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><code class="option">--skip-source</code></span></p></td> |
| <td><p> |
| Skip source location remarks in generated comments. |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><code class="option">--nostdinc</code></span></p></td> |
| <td><p> |
| Do not use the standard marshallers of the GObject library, and skip |
| <code class="filename">gmarshal.h</code> include directive in generated header files. |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><code class="option">--g-fatal-warnings</code></span></p></td> |
| <td><p> |
| Make warnings fatal, that is, exit immediately once a warning occurs. |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><code class="option">-h</code>, <code class="option">--help</code></span></p></td> |
| <td><p> |
| Print brief help and exit. |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><code class="option">-v</code>, <code class="option">--version</code></span></p></td> |
| <td><p> |
| Print version and exit. |
| </p></td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <hr> |
| <div class="refsect2" title="Marshaller list format"> |
| <a name="id593504"></a><h3>Marshaller list format</h3> |
| <p> |
| The marshaller lists are processed line by line, a line can contain a |
| comment in the form of |
| </p> |
| <pre class="programlisting"> |
| # this is a comment |
| </pre> |
| <p> |
| or a marshaller specification of the form |
| </p> |
| <pre class="programlisting"> |
| <em class="replaceable"><code>RTYPE</code></em>:<em class="replaceable"><code>PTYPE</code></em> |
| <em class="replaceable"><code>RTYPE</code></em>:<em class="replaceable"><code>PTYPE</code></em>,<em class="replaceable"><code>PTYPE</code></em> |
| <em class="replaceable"><code>RTYPE</code></em>:<em class="replaceable"><code>PTYPE</code></em>,<em class="replaceable"><code>PTYPE</code></em>,<em class="replaceable"><code>PTYPE</code></em> |
| </pre> |
| <p> |
| (up to 16 <em class="replaceable"><code>PTYPE</code></em>s may be present). |
| </p> |
| <p> |
| The <em class="replaceable"><code>RTYPE</code></em> part specifies the callback's return |
| type and the <em class="replaceable"><code>PTYPE</code></em>s right to the colon specify |
| the callback's parameter list, except for the first and the last arguments |
| which are always pointers. |
| </p> |
| </div> |
| <hr> |
| <div class="refsect2" title="Parameter types"> |
| <a name="id579954"></a><h3>Parameter types</h3> |
| <p> |
| Currently, the following types are supported: |
| </p> |
| <div class="variablelist"><table border="0"> |
| <col align="left" valign="top"> |
| <tbody> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>VOID</code></em></span></p></td> |
| <td><p> |
| indicates no return type, or no extra parameters. |
| If <em class="replaceable"><code>VOID</code></em> is used as the parameter list, no |
| additional parameters may be present. |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>BOOLEAN</code></em></span></p></td> |
| <td><p> |
| for boolean types (gboolean) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>CHAR</code></em></span></p></td> |
| <td><p> |
| for signed char types (gchar) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>UCHAR</code></em></span></p></td> |
| <td><p> |
| for unsigned char types (guchar) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>INT</code></em></span></p></td> |
| <td><p> |
| for signed integer types (gint) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>UINT</code></em></span></p></td> |
| <td><p> |
| for unsigned integer types (guint) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>LONG</code></em></span></p></td> |
| <td><p> |
| for signed long integer types (glong) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>ULONG</code></em></span></p></td> |
| <td><p> |
| for unsigned long integer types (gulong) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>INT64</code></em></span></p></td> |
| <td><p> |
| for signed 64bit integer types (gint64) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>UINT64</code></em></span></p></td> |
| <td><p> |
| for unsigned 64bit integer types (guint64) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>ENUM</code></em></span></p></td> |
| <td><p> |
| for enumeration types (gint) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>FLAGS</code></em></span></p></td> |
| <td><p> |
| for flag enumeration types (guint) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>FLOAT</code></em></span></p></td> |
| <td><p> |
| for single-precision float types (gfloat) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>DOUBLE</code></em></span></p></td> |
| <td><p> |
| for double-precision float types (gdouble) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>STRING</code></em></span></p></td> |
| <td><p> |
| for string types (gchar*) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>BOXED</code></em></span></p></td> |
| <td><p> |
| for boxed (anonymous but reference counted) types (GBoxed*) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>PARAM</code></em></span></p></td> |
| <td><p> |
| for GParamSpec or derived types (GParamSpec*) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>POINTER</code></em></span></p></td> |
| <td><p> |
| for anonymous pointer types (gpointer) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>OBJECT</code></em></span></p></td> |
| <td><p> |
| for GObject or derived types (GObject*) |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>NONE</code></em></span></p></td> |
| <td><p> |
| deprecated alias for <em class="replaceable"><code>VOID</code></em> |
| </p></td> |
| </tr> |
| <tr> |
| <td><p><span class="term"><em class="replaceable"><code>BOOL</code></em></span></p></td> |
| <td><p> |
| deprecated alias for <em class="replaceable"><code>BOOLEAN</code></em> |
| </p></td> |
| </tr> |
| </tbody> |
| </table></div> |
| <p> |
| </p> |
| </div> |
| </div> |
| <div class="refsect1" title="Example"> |
| <a name="id547101"></a><h2>Example</h2> |
| <p> |
| To generate marshallers for the following callback functions: |
| </p> |
| <pre class="programlisting"> |
| void foo (gpointer data1, |
| gpointer data2); |
| void bar (gpointer data1, |
| gint param1, |
| gpointer data2); |
| gfloat baz (gpointer data1, |
| gboolean param1, |
| guchar param2, |
| gpointer data2); |
| </pre> |
| <p> |
| The marshaller list has to look like this: |
| </p> |
| <pre class="programlisting"> |
| VOID:VOID |
| VOID:INT |
| FLOAT:BOOLEAN,UCHAR |
| </pre> |
| <p> |
| The generated marshallers have the arguments encoded in their function name. |
| For this particular list, they are |
| </p> |
| <pre class="programlisting"> |
| g_cclosure_marshal_VOID__VOID(), |
| g_cclosure_marshal_VOID__INT(), |
| g_cclosure_marshal_FLOAT__BOOLEAN_UCHAR(). |
| </pre> |
| <p> |
| They can be used directly for GClosures or be passed in as the |
| GSignalCMarshaller c_marshaller; argument upon creation of signals: |
| </p> |
| <pre class="programlisting"> |
| 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); |
| </pre> |
| </div> |
| <div class="refsect1" title="See also"> |
| <a name="id597480"></a><h2>See also</h2> |
| <p> |
| <span class="command"><strong>glib-mkenums</strong></span>(1) |
| </p> |
| </div> |
| <div class="refsect1" title="Bugs"> |
| <a name="id565014"></a><h2>Bugs</h2> |
| <p> |
| None known yet. |
| </p> |
| </div> |
| <div class="refsect1" title="Author"> |
| <a name="id545829"></a><h2>Author</h2> |
| <p><span class="command"><strong>glib-genmarshal</strong></span> has been written by Tim Janik |
| <code class="email"><<a class="email" href="mailto:timj@gtk.org">timj@gtk.org</a>></code>. |
| </p> |
| <p> |
| This manual page was provided by Tim Janik <code class="email"><<a class="email" href="mailto:timj@gtk.org">timj@gtk.org</a>></code>. |
| </p> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr> |
| Generated by GTK-Doc V1.14</div> |
| </body> |
| </html> |