<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Writing API docs</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="pt03.html" title="Part V. Related Tools">
<link rel="prev" href="tools-refdb.html" title="Debugging reference count problems">
<link rel="next" href="api-index-full.html" title="Index">
<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="tools-refdb.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="pt03.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="api-index-full.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter" title="Writing API docs">
<div class="titlepage"><div><div><h2 class="title">
<a name="tools-gtkdoc"></a>Writing API docs</h2></div></div></div>
<p>The API documentation for most of the GLib, GObject, GTK+ and GNOME
    libraries is built with a combination of complex tools. Typically, the part of 
    the documentation which describes the behavior of each function is extracted
    from the specially-formatted source code comments by a tool named gtk-doc which
    generates DocBook XML and merges this DocBook XML with a set of master XML 
    DocBook files. These XML DocBook files are finally processed with xsltproc
    (a small program part of the libxslt library) to generate the final HTML
    output. Other tools can be used to generate PDF output from the source XML.
    The following code excerpt shows what these comments look like.
    </p>
<pre class="programlisting">
/**
 * gtk_widget_freeze_child_notify:
 * @widget: a #GtkWidget
 * 
 * Stops emission of "child-notify" signals on @widget. The signals are
 * queued until gtk_widget_thaw_child_notify() is called on @widget. 
 *
 * This is the analogue of g_object_freeze_notify() for child properties.
 **/
void
gtk_widget_freeze_child_notify (GtkWidget *widget)
{
...
      </pre>
<p>
    </p>
<p>
    Thorough
    <a class="ulink" href="http://developer.gnome.org/arch/doc/authors.html" target="_top">documentation</a> 
    on how to set up and use gtk-doc in your
    project is provided on the GNOME developer website.
    </p>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.14</div>
</body>
</html>