<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.darenet.org/skins/common/feed.css?12"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>ircu api - api - Revision history</title>
		<link>http://wiki.darenet.org/index.php?title=ircu_api_-_api&amp;action=history</link>
		<description>Revision history for this page on the wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.15.1</generator>
		<lastBuildDate>Wed, 20 May 2026 06:11:14 GMT</lastBuildDate>
		<item>
			<title>Secretagent at 03:58, 25 April 2008</title>
			<link>http://wiki.darenet.org/index.php?title=ircu_api_-_api&amp;diff=2266&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 03:58, 25 April 2008&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 105:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 105:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/changelog&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/changelog&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:IRCu API]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:IRCu &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;API|&lt;/ins&gt;API]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-05-20 06:10:54 --&gt;

&lt;!-- diff cache key wiki:diff:version:1.11a:oldid:2265:newid:2266 --&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 25 Apr 2008 03:58:05 GMT</pubDate>			<dc:creator>Secretagent</dc:creator>			<comments>http://wiki.darenet.org/Talk:ircu_api_-_api</comments>		</item>
		<item>
			<title>Secretagent:&amp;#32;New page: &lt;pre&gt;This directory is intended for documents describing programming interfaces within ircu, including such things as modebuf's and the features interface.  Please write these documents as...</title>
			<link>http://wiki.darenet.org/index.php?title=ircu_api_-_api&amp;diff=2265&amp;oldid=prev</link>
			<description>&lt;p&gt;New page: &amp;lt;pre&amp;gt;This directory is intended for documents describing programming interfaces within ircu, including such things as modebuf&amp;#39;s and the features interface.  Please write these documents as...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;This directory is intended for documents describing programming&lt;br /&gt;
interfaces within ircu, including such things as modebuf's and the&lt;br /&gt;
features interface.  Please write these documents as plain text; if we&lt;br /&gt;
want HTML, we can write a script to convert the text versions into&lt;br /&gt;
HTML versions.  Toward that end, I respectfully suggest everyone&lt;br /&gt;
conform to a common format, which I will describe here:&lt;br /&gt;
&lt;br /&gt;
Every .txt file should begin with a couple of paragraphs giving an&lt;br /&gt;
overview of the API, its purpose, and how to use it.  Paragraphs&lt;br /&gt;
should be separated by blank lines, as shown here.  Paragraphs that do&lt;br /&gt;
not end in some form of punctuation, such as a period, will be treated&lt;br /&gt;
as section headings.  The introduction ends when the first API element&lt;br /&gt;
appears.  API element documentation is introduced with &amp;quot;&amp;lt;&amp;quot; followed by&lt;br /&gt;
the element type--&amp;quot;struct&amp;quot;, &amp;quot;typedef&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;macro&amp;quot;, or (heaven&lt;br /&gt;
forbid) &amp;quot;global&amp;quot;, followed by &amp;quot;&amp;gt;&amp;quot;, all on a line by itself.  The next&lt;br /&gt;
line should contain a declaration of the element as it would appear in&lt;br /&gt;
a header file; this may spread across multiple lines and contain&lt;br /&gt;
comments and blank lines.  The declaration ends for most elements when&lt;br /&gt;
a &amp;quot;;&amp;quot; is encountered; for macros, the declaration ends on the last&lt;br /&gt;
line not ending in &amp;quot;\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The documentation for the API element should immediately follow the&lt;br /&gt;
declaration of that element, and should be separated from it by a&lt;br /&gt;
single blank line.  This documentation should explain the purpose of&lt;br /&gt;
the element and describe what each of its fields mean.  The&lt;br /&gt;
documentation ends when the corresponding &amp;quot;&amp;lt;/&amp;quot; tag is reached, just as&lt;br /&gt;
in HTML or XML.  (I don't intend for the files to be either HTML or&lt;br /&gt;
XML, I just want them to be easy to parse so they could be turned into&lt;br /&gt;
either, as occasion warrants.)  An example follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;struct&amp;gt;&lt;br /&gt;
struct FooBar;	/* a sample structure with no definition */&lt;br /&gt;
&lt;br /&gt;
The comment, since it's on the same line as the &amp;quot;;&amp;quot;, is associated&lt;br /&gt;
with the declaration for struct FooBar.&lt;br /&gt;
&amp;lt;/struct&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;struct&amp;gt;&lt;br /&gt;
struct FooBar {&lt;br /&gt;
  long     fb_magic;	/* a magic number */&lt;br /&gt;
  char    *fb_string;	/* a string of some sort */&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
The sequence &amp;quot;};&amp;quot; ends the struct declaration.&lt;br /&gt;
&amp;lt;/struct&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;typedef&amp;gt;&lt;br /&gt;
typedef FooBar_t;	/* a simple typedef */&lt;br /&gt;
&lt;br /&gt;
This element shows how to hide the inner workings of typedefs.&lt;br /&gt;
&amp;lt;/typedef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;typedef&amp;gt;&lt;br /&gt;
typedef struct FooBar FooBar_t;	/* a more complex typedef */&lt;br /&gt;
&lt;br /&gt;
Here we show the full typedef declaration.&lt;br /&gt;
&amp;lt;/typedef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;global&amp;gt;&lt;br /&gt;
extern int fooBarFreeList;	/* global variables should be avoided */&lt;br /&gt;
&lt;br /&gt;
You should avoid global variables, but if you must have one for alloc&lt;br /&gt;
counts or whatever, here's how to specify documentation for them.&lt;br /&gt;
&amp;lt;/global&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;macro&amp;gt;&lt;br /&gt;
#define HAVE_FOOBAR		/* We have FOOBAR, whatever it may be */&lt;br /&gt;
&lt;br /&gt;
This could be used for boolean macros (macros used in #ifdef's, for&lt;br /&gt;
instance) or for simple value macros where you're hiding the values.&lt;br /&gt;
Since there are so many variations on macros, I'll only show one other&lt;br /&gt;
variation below:&lt;br /&gt;
&amp;lt;/macro&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;macro&amp;gt;&lt;br /&gt;
#define FooBarVerify(foobar)	((foobar) &amp;amp;&amp;amp; \&lt;br /&gt;
				 (foobar)-&amp;gt;fb_magic == FOOBAR_STRUCT_MAGIC)&lt;br /&gt;
&lt;br /&gt;
This macro takes arguments.  Again, we could leave out the actual&lt;br /&gt;
definition, or even treat the macro as a function rather than a&lt;br /&gt;
macro.  This also shows how to do multi-line macros.&lt;br /&gt;
&amp;lt;/macro&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;function&amp;gt;&lt;br /&gt;
void *foobar(struct FooBar *blah, int flag);&lt;br /&gt;
&lt;br /&gt;
Since function definitions never appear in header files anyway, we&lt;br /&gt;
don't have to worry about hiding information.  You should leave off&lt;br /&gt;
&amp;quot;extern&amp;quot; in the function declaration, and please include names for the&lt;br /&gt;
variables, so you can refer to them in the function documentation.&lt;br /&gt;
&amp;lt;/function&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The API document may then end in some summary information, if you&lt;br /&gt;
wish, or a ChangeLog of some form, such as follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;authors&amp;gt;&lt;br /&gt;
Kev &amp;lt;klmitch@mit.edu&amp;gt;&lt;br /&gt;
&amp;lt;/authors&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;changelog&amp;gt;&lt;br /&gt;
[2000-12-18 Kev] Initial definition of how API documents should look.&lt;br /&gt;
Further entries in the changelog should *precede* this one and should&lt;br /&gt;
be separated from it by a blank line.  Also specify your name, as&lt;br /&gt;
listed in the &amp;quot;&amp;lt;authors&amp;gt;&amp;quot; section, so we know who to blame ;)&lt;br /&gt;
&amp;lt;/changelog&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:IRCu API]]&lt;/div&gt;</description>
			<pubDate>Fri, 25 Apr 2008 03:57:28 GMT</pubDate>			<dc:creator>Secretagent</dc:creator>			<comments>http://wiki.darenet.org/Talk:ircu_api_-_api</comments>		</item>
	</channel>
</rss>