You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by bo...@apache.org on 2009/06/15 02:01:47 UTC

svn commit: r784636 [39/47] - in /apr/site/trunk/docs/docs: apr-util/trunk/ apr/trunk/

Added: apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___m_d4.html
URL: http://svn.apache.org/viewvc/apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___m_d4.html?rev=784636&view=auto
==============================================================================
--- apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___m_d4.html (added)
+++ apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___m_d4.html Mon Jun 15 00:01:38 2009
@@ -0,0 +1,721 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Apache Portable Runtime: MD4 Library</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li><a href="examples.html"><span>Examples</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>MD4 Library<br>
+<small>
+[<a class="el" href="group___a_p_r___util.html">APR Utility Functions</a>]</small>
+</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structapr__md4__ctx__t.html">apr_md4_ctx_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___m_d4.html#g84489272090a11902d831c288c81c20f">APR_MD4_DIGESTSIZE</a>&nbsp;&nbsp;&nbsp;16</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="structapr__md4__ctx__t.html">apr_md4_ctx_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___m_d4.html#g273e0d8ad064dba908e46bde074af0d8">apr_md4_ctx_t</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___m_d4.html#ga63483c91453cbeabf584102fba6d0e1">APU_DECLARE</a> (<a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>) apr_md4_init(<a class="el" href="structapr__md4__ctx__t.html">apr_md4_ctx_t</a> *context)</td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ged437fe94bba952b62c87a7e00e337e9"></a><!-- doxytag: member="APR_Util_MD4::xlate" ref="ged437fe94bba952b62c87a7e00e337e9" args="" -->
+<a class="el" href="group___a_p_r___x_l_a_t_e.html#g069dabbadc30e3a4157c38104a250e77">apr_xlate_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>xlate</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf801cc3fb2a90cf95d512d76fb498c3f"></a><!-- doxytag: member="APR_Util_MD4::input" ref="gf801cc3fb2a90cf95d512d76fb498c3f" args="" -->
+const unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>input</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g81003063f7c6b562141235dc37ade97e"></a><!-- doxytag: member="APR_Util_MD4::inputLen" ref="g81003063f7c6b562141235dc37ade97e" args="" -->
+const unsigned char apr_size_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>inputLen</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="geac02e33573dc2faee64ed16e402da2d"></a><!-- doxytag: member="APR_Util_MD4::context" ref="geac02e33573dc2faee64ed16e402da2d" args="" -->
+<a class="el" href="structapr__md4__ctx__t.html">apr_md4_ctx_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>context</b></td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="g84489272090a11902d831c288c81c20f"></a><!-- doxytag: member="apr_md4.h::APR_MD4_DIGESTSIZE" ref="g84489272090a11902d831c288c81c20f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_MD4_DIGESTSIZE&nbsp;&nbsp;&nbsp;16          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The digestsize for MD4 
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="g273e0d8ad064dba908e46bde074af0d8"></a><!-- doxytag: member="apr_md4.h::apr_md4_ctx_t" ref="g273e0d8ad064dba908e46bde074af0d8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="structapr__md4__ctx__t.html">apr_md4_ctx_t</a> <a class="el" href="structapr__md4__ctx__t.html">apr_md4_ctx_t</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="structapr__md4__ctx__t.html">apr_md4_ctx_t</a> </dd></dl>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga63483c91453cbeabf584102fba6d0e1"></a><!-- doxytag: member="apr_md4.h::APU_DECLARE" ref="ga63483c91453cbeabf584102fba6d0e1" args="(apr_status_t) apr_md4_init(apr_md4_ctx_t *context)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">APU_DECLARE           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+MD4 Initialize. Begins an MD4 operation, writing a new context. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>The MD4 context to initialize.</td></tr>
+  </table>
+</dl>
+MDr4 translation setup. Provides the APR translation handle to be used for translating the content before calculating the digest. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>The MD4 content to set the translation for. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>xlate</em>&nbsp;</td><td>The translation handle to use for this MD4 context</td></tr>
+  </table>
+</dl>
+MD4 block update operation. Continue an MD4 message-digest operation, processing another message block, and updating the context. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>The MD4 content to update. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>input</em>&nbsp;</td><td>next message block to update </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inputLen</em>&nbsp;</td><td>The length of the next message block</td></tr>
+  </table>
+</dl>
+MD4 finalization. Ends an MD4 message-digest operation, writing the message digest and zeroing the context <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>digest</em>&nbsp;</td><td>The final MD4 digest </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>context</em>&nbsp;</td><td>The MD4 content we are finalizing.</td></tr>
+  </table>
+</dl>
+MD4 digest computation <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>digest</em>&nbsp;</td><td>The MD4 digest </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>input</em>&nbsp;</td><td>message block to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inputLen</em>&nbsp;</td><td>The length of the message block</td></tr>
+  </table>
+</dl>
+Open a dbm file by file name and type of DBM <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The newly opened database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The type of the DBM (not all may be available at run time) <pre>
+  db   for Berkeley DB files
+  gdbm for GDBM files
+  ndbm for NDBM files
+  sdbm for SDBM files (always available)
+  default for the default DBM type
+  </pre> </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The dbm file name to open </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The flag value <pre>
+           APR_DBM_READONLY   open for read-only access
+           APR_DBM_READWRITE  open for read-write access
+           APR_DBM_RWCREATE   open for r/w, create if needed
+           APR_DBM_RWTRUNC    open for r/w, truncate if already there
+ </pre> </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>perm</em>&nbsp;</td><td>Permissions to apply to if created </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cntxt</em>&nbsp;</td><td>The pool to use when creating the dbm </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The dbm name may not be a true file name, as many dbm packages append suffixes for seperate data and index files. </dd></dl>
+<dl compact><dt><b><a class="el" href="bug.html#_bug000001">Bug:</a></b></dt><dd>In apr-util 0.9 and 1.x, the type arg was case insensitive. This was highly inefficient, and as of 2.x the dbm name must be provided in the correct case (lower case for all bundled providers) </dd></dl>
+<p>
+Open a dbm file by file name <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The newly opened database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The dbm file name to open </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The flag value <pre>
+           APR_DBM_READONLY   open for read-only access
+           APR_DBM_READWRITE  open for read-write access
+           APR_DBM_RWCREATE   open for r/w, create if needed
+           APR_DBM_RWTRUNC    open for r/w, truncate if already there
+ </pre> </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>perm</em>&nbsp;</td><td>Permissions to apply to if created </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cntxt</em>&nbsp;</td><td>The pool to use when creating the dbm </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The dbm name may not be a true file name, as many dbm packages append suffixes for seperate data and index files.</dd></dl>
+Fetch a dbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum to find this record </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pvalue</em>&nbsp;</td><td>The value datum retrieved for this record</td></tr>
+  </table>
+</dl>
+Store a dbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum to store this record by </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>The value datum to store in this record</td></tr>
+  </table>
+</dl>
+Delete a dbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum of the record to delete </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>It is not an error to delete a non-existent record.</dd></dl>
+Search for a key within the dbm <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The datum describing a key to test</td></tr>
+  </table>
+</dl>
+Retrieve the first record key from a dbm <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pkey</em>&nbsp;</td><td>The key datum of the first record</td></tr>
+  </table>
+</dl>
+Retrieve the next record key from a dbm <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pkey</em>&nbsp;</td><td>The key datum of the next record</td></tr>
+  </table>
+</dl>
+If the specified file/path were passed to apr_dbm_open(), return the actual file/path names which would be (created and) used. At most, two files may be used; used2 may be NULL if only one file is used. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>The pool for allocating used1 and used2. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The type of DBM you require info on </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd>apr_dbm_open_ex </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>pathname</em>&nbsp;</td><td>The path name to generate used-names from. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>used1</em>&nbsp;</td><td>The first pathname used by the apr_dbm implementation. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>used2</em>&nbsp;</td><td>The second pathname used by apr_dbm. If only one file is used by the specific implementation, this will be set to NULL. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>An error if the specified type is invalid. </dd></dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The dbm file(s) don't need to exist. This function only manipulates the pathnames.</dd></dl>
+Adds a server to a client object <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>The memcache client object to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ms</em>&nbsp;</td><td>Server to add </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Adding servers is not thread safe, and should be done once at startup. </dd></dl>
+<dl class="warning" compact><dt><b>Warning:</b></dt><dd>Changing servers after startup may cause keys to go to different servers.</dd></dl>
+Enables a Server for use again <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>The memcache client object to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ms</em>&nbsp;</td><td>Server to Activate</td></tr>
+  </table>
+</dl>
+Disable a Server <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>The memcache client object to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ms</em>&nbsp;</td><td>Server to Disable</td></tr>
+  </table>
+</dl>
+Creates a new Server Object <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>Pool to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>host</em>&nbsp;</td><td>hostname of the server </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>port of the server </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>min</em>&nbsp;</td><td>minimum number of client sockets to open </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>smax</em>&nbsp;</td><td>soft maximum number of client connections to open </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>max</em>&nbsp;</td><td>hard maximum number of client connections </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ttl</em>&nbsp;</td><td>time to live in seconds of a client connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ns</em>&nbsp;</td><td>location of the new server object </td></tr>
+  </table>
+</dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd>apr_reslist_create </dd></dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>min, smax, and max are only used when APR_HAS_THREADS</dd></dl>
+Creates a new memcached client object <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>Pool to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>max_servers</em>&nbsp;</td><td>maximum number of servers </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Not currently used </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>location of the new memcache client object</td></tr>
+  </table>
+</dl>
+Gets a value from the server, allocating the value out of p <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>client to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>Pool to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>null terminated string containing the key </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>baton</em>&nbsp;</td><td>location of the allocated value </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of data at baton </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>any flags set by the client for this key </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd></dd></dl>
+Sets a value by key on the server <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>client to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>null terminated string containing the key </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>baton</em>&nbsp;</td><td>data to store on the server </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of data at baton </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>time in seconds for the data to live on the server </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>any flags set by the client for this key</td></tr>
+  </table>
+</dl>
+Adds value by key on the server <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>client to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>null terminated string containing the key </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>baton</em>&nbsp;</td><td>data to store on the server </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of data at baton </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>time for the data to live on the server </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>any flags set by the client for this key </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the key was added, APR_EEXIST if the key already exists on the server.</dd></dl>
+Replaces value by key on the server <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>client to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>null terminated string containing the key </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>baton</em>&nbsp;</td><td>data to store on the server </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of data at baton </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>time for the data to live on the server </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>any flags set by the client for this key </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the key was added, APR_EEXIST if the key did not exist on the server.</dd></dl>
+Deletes a key from a server <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>client to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>null terminated string containing the key </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>time for the delete to stop other clients from adding</td></tr>
+  </table>
+</dl>
+Increments a value <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>client to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>null terminated string containing the key </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>number to increment by </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nv</em>&nbsp;</td><td>new value after incrmenting</td></tr>
+  </table>
+</dl>
+Decrements a value <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>mc</em>&nbsp;</td><td>client to use </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>null terminated string containing the key </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>number to decrement by </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nv</em>&nbsp;</td><td>new value after decrementing</td></tr>
+  </table>
+</dl>
+Query a server's version <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ms</em>&nbsp;</td><td>server to query </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>Pool to allocate answer from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>baton</em>&nbsp;</td><td>location to store server version string </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of the server version string</td></tr>
+  </table>
+</dl>
+Query a server for statistics <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ms</em>&nbsp;</td><td>server to query </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>Pool to allocate answer from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>stats</em>&nbsp;</td><td>location of the new statistics structure</td></tr>
+  </table>
+</dl>
+create a FIFO queue <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>queue</em>&nbsp;</td><td>The new queue </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>queue_capacity</em>&nbsp;</td><td>maximum size of the queue </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>pool to allocate queue from</td></tr>
+  </table>
+</dl>
+push/add an object to the queue, blocking if the queue is already full<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>queue</em>&nbsp;</td><td>the queue </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_EINTR the blocking was interrupted (try again) <p>
+APR_EOF the queue has been terminated <p>
+APR_SUCCESS on a successful push</dd></dl>
+pop/get an object from the queue, blocking if the queue is already empty<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>queue</em>&nbsp;</td><td>the queue </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_EINTR the blocking was interrupted (try again) <p>
+APR_EOF if the queue has been terminated <p>
+APR_SUCCESS on a successful pop</dd></dl>
+push/add an object to the queue, returning immediately if the queue is full<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>queue</em>&nbsp;</td><td>the queue </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_EINTR the blocking operation was interrupted (try again) <p>
+APR_EAGAIN the queue is full <p>
+APR_EOF the queue has been terminated <p>
+APR_SUCCESS on a successful push</dd></dl>
+pop/get an object to the queue, returning immediately if the queue is empty<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>queue</em>&nbsp;</td><td>the queue </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the data </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_EINTR the blocking operation was interrupted (try again) <p>
+APR_EAGAIN the queue is empty <p>
+APR_EOF the queue has been terminated <p>
+APR_SUCCESS on a successful push</dd></dl>
+interrupt all the threads blocking on this queue.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>queue</em>&nbsp;</td><td>the queue</td></tr>
+  </table>
+</dl>
+terminate the queue, sending an interrupt to all the blocking threads<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>queue</em>&nbsp;</td><td>the queue</td></tr>
+  </table>
+</dl>
+Create a new resource list with the following parameters: <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>reslist</em>&nbsp;</td><td>An address where the pointer to the new resource list will be stored. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>min</em>&nbsp;</td><td>Allowed minimum number of available resources. Zero creates new resources only when needed. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>smax</em>&nbsp;</td><td>Resources will be destroyed to meet this maximum restriction as they expire. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>hmax</em>&nbsp;</td><td>Absolute maximum limit on the number of total resources. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ttl</em>&nbsp;</td><td>If non-zero, sets the maximum amount of time a resource may be available while exceeding the soft limit. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>con</em>&nbsp;</td><td>Constructor routine that is called to create a new resource. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>de</em>&nbsp;</td><td>Destructor routine that is called to destroy an expired resource. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>Passed to constructor and deconstructor </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>The pool from which to create this resource list. Also the same pool that is passed to the constructor and destructor routines. </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>If APR has been compiled without thread support, hmax will be automatically set to 1 and values of min and smax will be forced to 1 for any non-zero value.</dd></dl>
+Destroy the given resource list and all resources controlled by this list. FIXME: Should this block until all resources become available, or maybe just destroy all the free ones, or maybe destroy them even though they might be in use by something else? Currently it will abort if there are resources that haven't been released, so there is an assumption that all resources have been released to the list before calling this function. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>reslist</em>&nbsp;</td><td>The reslist to destroy</td></tr>
+  </table>
+</dl>
+Retrieve a resource from the list, creating a new one if necessary. If we have met our maximum number of resources, we will block until one becomes available.<p>
+Return a resource back to the list of available resources.<p>
+Invalidate a resource in the pool - e.g. a database connection that returns a "lost connection" error and can't be restored. Use this instead of apr_reslist_release if the resource is bad.<p>
+Perform routine maintenance on the resource list. This call may instantiate new resources or expire old resources. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>reslist</em>&nbsp;</td><td>The resource list.</td></tr>
+  </table>
+</dl>
+Initialize a relocatable memory block to be managed by the apr_rmm API. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>rmm</em>&nbsp;</td><td>The relocatable memory block </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>lock</em>&nbsp;</td><td>An <a class="el" href="structapr__anylock__t.html">apr_anylock_t</a> of the appropriate type of lock, or NULL if no locking is required. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>membuf</em>&nbsp;</td><td>The block of relocatable memory to be managed </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>memsize</em>&nbsp;</td><td>The size of relocatable memory block to be managed </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cont</em>&nbsp;</td><td>The pool to use for local storage and management </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Both </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>membuf</em>&nbsp;</td><td>and </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>memsize</em>&nbsp;</td><td>must be aligned (for instance using APR_ALIGN_DEFAULT).</td></tr>
+  </table>
+</dl>
+Destroy a managed memory block. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>rmm</em>&nbsp;</td><td>The relocatable memory block to destroy</td></tr>
+  </table>
+</dl>
+Attach to a relocatable memory block already managed by the apr_rmm API. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>rmm</em>&nbsp;</td><td>The relocatable memory block </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>lock</em>&nbsp;</td><td>An <a class="el" href="structapr__anylock__t.html">apr_anylock_t</a> of the appropriate type of lock </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>membuf</em>&nbsp;</td><td>The block of relocatable memory already under management </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cont</em>&nbsp;</td><td>The pool to use for local storage and management</td></tr>
+  </table>
+</dl>
+Detach from the managed block of memory. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>rmm</em>&nbsp;</td><td>The relocatable memory block to detach from</td></tr>
+  </table>
+</dl>
+Free allocation returned by apr_rmm_malloc or apr_rmm_calloc. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>rmm</em>&nbsp;</td><td>The relocatable memory block </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>entity</em>&nbsp;</td><td>The memory allocation to free</td></tr>
+  </table>
+</dl>
+Open an sdbm database by file name <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The newly opened database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The sdbm file to open </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The flag values (APR_READ and APR_BINARY flags are implicit) <pre>
+           APR_WRITE          open for read-write access
+           APR_CREATE         create the sdbm if it does not exist
+           APR_TRUNCATE       empty the contents of the sdbm
+           APR_EXCL           fail for APR_CREATE if the file exists
+           APR_DELONCLOSE     delete the sdbm when closed
+           APR_SHARELOCK      support locking across process/machines
+ </pre> </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>perms</em>&nbsp;</td><td>Permissions to apply to if created </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>The pool to use when creating the sdbm </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The sdbm name is not a true file name, as sdbm appends suffixes for seperate data and index files.</dd></dl>
+Close an sdbm file previously opened by apr_sdbm_open <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database to close</td></tr>
+  </table>
+</dl>
+Lock an sdbm database for concurency of multiple operations <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database to lock </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The lock type <pre>
+           APR_FLOCK_SHARED
+           APR_FLOCK_EXCLUSIVE
+ </pre> </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Calls to apr_sdbm_lock may be nested. All apr_sdbm functions perform implicit locking. Since an APR_FLOCK_SHARED lock cannot be portably promoted to an APR_FLOCK_EXCLUSIVE lock, apr_sdbm_store and apr_sdbm_delete calls will fail if an APR_FLOCK_SHARED lock is held. The apr_sdbm_lock call requires the database to be opened with the APR_SHARELOCK mode value.</dd></dl>
+Release an sdbm lock previously aquired by apr_sdbm_lock <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database to unlock</td></tr>
+  </table>
+</dl>
+Fetch an sdbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>The value datum retrieved for this record </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum to find this record</td></tr>
+  </table>
+</dl>
+Store an sdbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum to store this record by </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>The value datum to store in this record </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>opt</em>&nbsp;</td><td>The method used to store the record <pre>
+           APR_SDBM_INSERT     return an error if the record exists
+           APR_SDBM_REPLACE    overwrite any existing record for key
+ </pre></td></tr>
+  </table>
+</dl>
+Delete an sdbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum of the record to delete </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>It is not an error to delete a non-existent record.</dd></dl>
+Retrieve the first record key from a dbm <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum of the first record </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The keys returned are not ordered. To traverse the list of keys for an sdbm opened with APR_SHARELOCK, the caller must use apr_sdbm_lock prior to retrieving the first record, and hold the lock until after the last call to apr_sdbm_nextkey.</dd></dl>
+Retrieve the next record key from an sdbm <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum of the next record</td></tr>
+  </table>
+</dl>
+Returns true if the sdbm database opened for read-only access <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>db</em>&nbsp;</td><td>The database to test</td></tr>
+  </table>
+</dl>
+Create a thread pool <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>me</em>&nbsp;</td><td>The pointer in which to return the newly created apr_thread_pool object, or NULL if thread pool creation fails. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>init_threads</em>&nbsp;</td><td>The number of threads to be created initially, this number will also be used as the initial value for the maximum number of idle threads. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>max_threads</em>&nbsp;</td><td>The maximum number of threads that can be created </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>The pool to use </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the thread pool was created successfully. Otherwise, the error code.</dd></dl>
+Destroy the thread pool and stop all the threads <dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if all threads are stopped.</dd></dl>
+Schedule a task to the bottom of the tasks of same priority. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>me</em>&nbsp;</td><td>The thread pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>The task function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>param</em>&nbsp;</td><td>The parameter for the task function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>priority</em>&nbsp;</td><td>The priority of the task. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>owner</em>&nbsp;</td><td>Owner of this task. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the task had been scheduled successfully</dd></dl>
+Schedule a task to be run after a delay <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>me</em>&nbsp;</td><td>The thread pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>The task function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>param</em>&nbsp;</td><td>The parameter for the task function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>Time in microseconds </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>owner</em>&nbsp;</td><td>Owner of this task. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the task had been scheduled successfully</dd></dl>
+Schedule a task to the top of the tasks of same priority. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>me</em>&nbsp;</td><td>The thread pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>The task function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>param</em>&nbsp;</td><td>The parameter for the task function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>priority</em>&nbsp;</td><td>The priority of the task. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>owner</em>&nbsp;</td><td>Owner of this task. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the task had been scheduled successfully</dd></dl>
+Cancel tasks submitted by the owner. If there is any task from the owner that is currently running, the function will spin until the task finished. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>me</em>&nbsp;</td><td>The thread pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>owner</em>&nbsp;</td><td>Owner of the task </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the task has been cancelled successfully </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The task function should not be calling cancel, otherwise the function may get stuck forever. The function assert if it detect such a case.</dd></dl>
+Get owner of the task currently been executed by the thread. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>thd</em>&nbsp;</td><td>The thread is executing a task </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>owner</em>&nbsp;</td><td>Pointer to receive owner of the task. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS if the owner is retrieved successfully</dd></dl>
+Parse a given URI, fill in all supplied fields of a <a class="el" href="structapr__uri__t.html">apr_uri_t</a> structure. This eliminates the necessity of extracting host, port, path, query info repeatedly in the modules. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>The pool to allocate out of </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>uri</em>&nbsp;</td><td>The uri to parse </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>uptr</em>&nbsp;</td><td>The <a class="el" href="structapr__uri__t.html">apr_uri_t</a> to fill out </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success or error code</dd></dl>
+Special case for CONNECT parsing: it comes with the hostinfo part only <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>The pool to allocate out of </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>hostinfo</em>&nbsp;</td><td>The hostinfo string to parse </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>uptr</em>&nbsp;</td><td>The <a class="el" href="structapr__uri__t.html">apr_uri_t</a> to fill out </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success or error code</dd></dl>
+Parse a standard-format string into a UUID <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>uuid</em>&nbsp;</td><td>The resulting UUID </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>uuid_str</em>&nbsp;</td><td>The formatted UUID</td></tr>
+  </table>
+</dl>
+Set up for converting text from one charset to another. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>convset</em>&nbsp;</td><td>The handle to be filled in by this function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>topage</em>&nbsp;</td><td>The name of the target charset </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>frompage</em>&nbsp;</td><td>The name of the source charset </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>The pool to use </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Specify APR_DEFAULT_CHARSET for one of the charset names to indicate the charset of the source code at compile time. This is useful if there are literal strings in the source code which must be translated according to the charset of the source code. APR_DEFAULT_CHARSET is not useful if the source code of the caller was not encoded in the same charset as APR at compile time.<p>
+Specify APR_LOCALE_CHARSET for one of the charset names to indicate the charset of the current locale.<p>
+Return APR_EINVAL if unable to procure a convset, or APR_ENOTIMPL if charset transcoding is not available in this instance of apr-util at all (i.e., APR_HAS_XLATE is undefined).</dd></dl>
+Find out whether or not the specified conversion is single-byte-only. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>convset</em>&nbsp;</td><td>The handle allocated by apr_xlate_open, specifying the parameters of conversion </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>onoff</em>&nbsp;</td><td>Output: whether or not the conversion is single-byte-only </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Return APR_ENOTIMPL if charset transcoding is not available in this instance of apr-util (i.e., APR_HAS_XLATE is undefined).</dd></dl>
+Convert a buffer of text from one codepage to another. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>convset</em>&nbsp;</td><td>The handle allocated by apr_xlate_open, specifying the parameters of conversion </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inbuf</em>&nbsp;</td><td>The address of the source buffer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inbytes_left</em>&nbsp;</td><td>Input: the amount of input data to be translated Output: the amount of input data not yet translated </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>outbuf</em>&nbsp;</td><td>The address of the destination buffer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>outbytes_left</em>&nbsp;</td><td>Input: the size of the output buffer Output: the amount of the output buffer not yet used </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Returns APR_ENOTIMPL if charset transcoding is not available in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). Returns APR_INCOMPLETE if the input buffer ends in an incomplete multi-byte character.</dd></dl>
+To correctly terminate the output buffer for some multi-byte character set encodings, a final call must be made to this function after the complete input string has been converted, passing the inbuf and inbytes_left parameters as NULL. (Note that this mode only works from version 1.1.0 onwards)<p>
+Convert a single-byte character from one charset to another. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>convset</em>&nbsp;</td><td>The handle allocated by apr_xlate_open, specifying the parameters of conversion </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>inchar</em>&nbsp;</td><td>The single-byte character to convert. </td></tr>
+  </table>
+</dl>
+<dl class="warning" compact><dt><b>Warning:</b></dt><dd>This only works when converting between single-byte character sets. -1 will be returned if the conversion can't be performed.</dd></dl>
+Close a codepage translation handle. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>convset</em>&nbsp;</td><td>The codepage translation handle to close </td></tr>
+  </table>
+</dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Return APR_ENOTIMPL if charset transcoding is not available in this instance of apr-util (i.e., APR_HAS_XLATE is undefined).</dd></dl>
+Parse a File, producing a xml_doc <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>The pool for allocating the parse results. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>parser</em>&nbsp;</td><td>A pointer to *parser (needed so calling function can get errors), will be set to NULL on successfull completion. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ppdoc</em>&nbsp;</td><td>A pointer to *apr_xml_doc (which has the parsed results in it) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>xmlfd</em>&nbsp;</td><td>A file to read from. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>buffer_length</em>&nbsp;</td><td>Buffer length which would be suitable </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Any errors found during parsing.</dd></dl>
+Feed input into the parser <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>parser</em>&nbsp;</td><td>The XML parser for parsing this data. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The data to parse. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>The length of the data. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Any errors found during parsing. </dd></dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Use apr_xml_parser_geterror() to get more error information.</dd></dl>
+Terminate the parsing and return the result <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>parser</em>&nbsp;</td><td>The XML parser for parsing this data. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pdoc</em>&nbsp;</td><td>The resulting parse information. May be NULL to simply terminate the parsing without fetching the info. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Any errors found during the final stage of parsing. </dd></dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Use apr_xml_parser_geterror() to get more error information.</dd></dl>
+return the URI's (existing) index, or insert it and return a new index <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>uri_array</em>&nbsp;</td><td>array to insert into </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>uri</em>&nbsp;</td><td>The uri to insert </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>int The uri's index </dd></dl>
+
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Mon Jun 15 09:45:30 2009 for Apache Portable Runtime by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>

Added: apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___o_p_t___h_o_o_k.html
URL: http://svn.apache.org/viewvc/apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___o_p_t___h_o_o_k.html?rev=784636&view=auto
==============================================================================
--- apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___o_p_t___h_o_o_k.html (added)
+++ apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___o_p_t___h_o_o_k.html Mon Jun 15 00:01:38 2009
@@ -0,0 +1,206 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Apache Portable Runtime: Optional Hook Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li><a href="examples.html"><span>Examples</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Optional Hook Functions<br>
+<small>
+[<a class="el" href="group___a_p_r___util___hook.html">Hook Functions</a>]</small>
+</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___o_p_t___h_o_o_k.html#g808d07f9a3e5df6517ba027972c79e4f">APR_OPTIONAL_HOOK</a>(ns, name, pfn, aszPre, aszSucc, nOrder)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___o_p_t___h_o_o_k.html#g3e6fa7b8e9ce140b26d8f6ce34e6ae82">APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL</a>(ns, link, ret, name, args_decl, args_use, ok, decline)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___o_p_t___h_o_o_k.html#g78dda4e83248b25285c108c10aec42cf">APU_DECLARE</a> (void) apr_optional_hook_add(const char *szName</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g45886ac66d60f10a5813c3c563b099e2"></a><!-- doxytag: member="APR_Util_OPT_HOOK::APU_DECLARE" ref="g45886ac66d60f10a5813c3c563b099e2" args="(apr_array_header_t *) apr_optional_hook_get(const char *szName)" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><b>APU_DECLARE</b> (<a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *) apr_optional_hook_get(const char *szName)</td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd7ecd3fb98267ca38ec5d3aae64f5a5e"></a><!-- doxytag: member="APR_Util_OPT_HOOK::pfn" ref="gd7ecd3fb98267ca38ec5d3aae64f5a5e" args=")(void)" -->
+void(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>pfn</b> )(void)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0da8c2baf670c35974bfca92245ccf4e"></a><!-- doxytag: member="APR_Util_OPT_HOOK::aszPre" ref="g0da8c2baf670c35974bfca92245ccf4e" args=")" -->
+void(*) const char *const&nbsp;</td><td class="memItemRight" valign="bottom"><b>aszPre</b> )</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf1b6e79b7107e741f52619f60fd3c503"></a><!-- doxytag: member="APR_Util_OPT_HOOK::aszSucc" ref="gf1b6e79b7107e741f52619f60fd3c503" args=")" -->
+void(*) const char *const <br class="typebreak">
+const char *const&nbsp;</td><td class="memItemRight" valign="bottom"><b>aszSucc</b> )</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2eee3f5f98db10a0d7a4cd56987bc7f7"></a><!-- doxytag: member="APR_Util_OPT_HOOK::nOrder" ref="g2eee3f5f98db10a0d7a4cd56987bc7f7" args=")" -->
+void(*) const char *const <br class="typebreak">
+const char *const in&nbsp;</td><td class="memItemRight" valign="bottom"><b>nOrder</b> )</td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="g3e6fa7b8e9ce140b26d8f6ce34e6ae82"></a><!-- doxytag: member="apr_optional_hooks.h::APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL" ref="g3e6fa7b8e9ce140b26d8f6ce34e6ae82" args="(ns, link, ret, name, args_decl, args_use, ok, decline)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL          </td>
+          <td>(</td>
+          <td class="paramtype">ns,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">link,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ret,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">name,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">args_decl,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">args_use,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ok,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">decline&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+<b>Value:</b><div class="fragment"><pre class="fragment">link##_DECLARE(ret) ns<span class="preprocessor">##_run_##name args_decl \</span>
+<span class="preprocessor">    { \</span>
+<span class="preprocessor">    ns##_LINK_##name##_t *pHook; \</span>
+<span class="preprocessor">    int n; \</span>
+<span class="preprocessor">    ret rv; \</span>
+<span class="preprocessor">    apr_array_header_t *pHookArray=apr_optional_hook_get(#name); \</span>
+<span class="preprocessor">\</span>
+<span class="preprocessor">    if(!pHookArray) \</span>
+<span class="preprocessor">        return ok; \</span>
+<span class="preprocessor">\</span>
+<span class="preprocessor">    pHook=(ns##_LINK_##name##_t *)pHookArray-&gt;elts; \</span>
+<span class="preprocessor">    for(n=0 ; n &lt; pHookArray-&gt;nelts ; ++n) \</span>
+<span class="preprocessor">        { \</span>
+<span class="preprocessor">        rv=(pHook[n].pFunc)args_use; \</span>
+<span class="preprocessor">\</span>
+<span class="preprocessor">        if(rv != ok &amp;&amp; rv != decline) \</span>
+<span class="preprocessor">            return rv; \</span>
+<span class="preprocessor">        } \</span>
+<span class="preprocessor">    return ok; \</span>
+<span class="preprocessor">    }</span>
+</pre></div>Implement an optional hook that runs until one of the functions returns something other than OK or DECLINE.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ns</em>&nbsp;</td><td>The namespace prefix of the hook functions </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>link</em>&nbsp;</td><td>The linkage declaration prefix of the hook </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ret</em>&nbsp;</td><td>The type of the return value of the hook </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ret</em>&nbsp;</td><td>The type of the return value of the hook </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of the hook </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>args_decl</em>&nbsp;</td><td>The declaration of the arguments for the hook </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>args_use</em>&nbsp;</td><td>The names for the arguments for the hook </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ok</em>&nbsp;</td><td>Success value </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>decline</em>&nbsp;</td><td>Decline value </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g808d07f9a3e5df6517ba027972c79e4f"></a><!-- doxytag: member="apr_optional_hooks.h::APR_OPTIONAL_HOOK" ref="g808d07f9a3e5df6517ba027972c79e4f" args="(ns, name, pfn, aszPre, aszSucc, nOrder)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_OPTIONAL_HOOK          </td>
+          <td>(</td>
+          <td class="paramtype">ns,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">name,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">pfn,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">aszPre,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">aszSucc,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">nOrder&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
+  ns##_HOOK_##name##_t *apu__hook = pfn; \
+  apr_optional_hook_add(#name,(<span class="keywordtype">void</span> (*)(<span class="keywordtype">void</span>))apu__hook,aszPre, aszSucc, nOrder); \
+} <span class="keywordflow">while</span> (0)
+</pre></div>Hook to an optional hook.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ns</em>&nbsp;</td><td>The namespace prefix of the hook functions </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of the hook </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pfn</em>&nbsp;</td><td>A pointer to a function that will be called </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>aszPre</em>&nbsp;</td><td>a NULL-terminated array of strings that name modules whose hooks should precede this one </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>aszSucc</em>&nbsp;</td><td>a NULL-terminated array of strings that name modules whose hooks should succeed this one </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nOrder</em>&nbsp;</td><td>an integer determining order before honouring aszPre and aszSucc (for example HOOK_MIDDLE) </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g78dda4e83248b25285c108c10aec42cf"></a><!-- doxytag: member="apr_optional_hooks.h::APU_DECLARE" ref="g78dda4e83248b25285c108c10aec42cf" args="(void) apr_optional_hook_add(const char *szName" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">APU_DECLARE           </td>
+          <td>(</td>
+          <td class="paramtype">void&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Function to implemnt the APR_OPTIONAL_HOOK Macro 
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Mon Jun 15 09:45:30 2009 for Apache Portable Runtime by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>

Added: apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___opt.html
URL: http://svn.apache.org/viewvc/apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___opt.html?rev=784636&view=auto
==============================================================================
--- apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___opt.html (added)
+++ apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___opt.html Mon Jun 15 00:01:38 2009
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>Apache Portable Runtime: Optional Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.8 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li><a href="examples.html"><span>Examples</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Optional Functions<br>
+<small>
+[<a class="el" href="group___a_p_r___util.html">APR Utility Functions</a>]</small>
+</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___opt.html#g987fcf75505450f1b4ff9d7b3a7ff5d3">APR_OPTIONAL_FN_TYPE</a>(name)&nbsp;&nbsp;&nbsp;apr_OFN_##name##_t</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___opt.html#gf3ff372e28978d4ce0be7517ca2fddbd">APR_DECLARE_OPTIONAL_FN</a>(ret, name, args)&nbsp;&nbsp;&nbsp;typedef ret (APR_OPTIONAL_FN_TYPE(name)) args</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___opt.html#gb611deabd6e78b5f666071e8cbdcc736">APR_REGISTER_OPTIONAL_FN</a>(name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___opt.html#g35f2df25ca06248d2fdd3e7463446418">APR_RETRIEVE_OPTIONAL_FN</a>(name)&nbsp;&nbsp;&nbsp;(APR_OPTIONAL_FN_TYPE(name) *)apr_dynamic_fn_retrieve(#name)</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___opt.html#g35e08c2dbf593e3dc5a2cb0fdc8cd637">apr_opt_fn_t</a> )(void)</td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8455bf03588491b03eabffec63a270b5"></a><!-- doxytag: member="APR_Util_Opt::APU_DECLARE_NONSTD" ref="g8455bf03588491b03eabffec63a270b5" args="(void) apr_dynamic_fn_register(const char *szName" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><b>APU_DECLARE_NONSTD</b> (void) apr_dynamic_fn_register(const char *szName</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g77b4d143df9f27cac699f8c5644c6f7d"></a><!-- doxytag: member="APR_Util_Opt::APU_DECLARE" ref="g77b4d143df9f27cac699f8c5644c6f7d" args="(apr_opt_fn_t *) apr_dynamic_fn_retrieve(const char *szName)" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><b>APU_DECLARE</b> (<a class="el" href="group___a_p_r___util___opt.html#g35e08c2dbf593e3dc5a2cb0fdc8cd637">apr_opt_fn_t</a> *) apr_dynamic_fn_retrieve(const char *szName)</td></tr>
+
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="geb58c2c559f0a385ac570471c8d43298"></a><!-- doxytag: member="APR_Util_Opt::pfn" ref="geb58c2c559f0a385ac570471c8d43298" args="" -->
+<a class="el" href="group___a_p_r___util___opt.html#g35e08c2dbf593e3dc5a2cb0fdc8cd637">apr_opt_fn_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>pfn</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Typesafe registration and retrieval of functions that may not be present (i.e. functions exported by optional modules) <hr><h2>Define Documentation</h2>
+<a class="anchor" name="gf3ff372e28978d4ce0be7517ca2fddbd"></a><!-- doxytag: member="apr_optional.h::APR_DECLARE_OPTIONAL_FN" ref="gf3ff372e28978d4ce0be7517ca2fddbd" args="(ret, name, args)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_DECLARE_OPTIONAL_FN          </td>
+          <td>(</td>
+          <td class="paramtype">ret,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">name,         <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">args&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;typedef ret (APR_OPTIONAL_FN_TYPE(name)) args</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Declare an optional function. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ret</em>&nbsp;</td><td>The return type of the function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of the function </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>The function arguments (including brackets) </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g987fcf75505450f1b4ff9d7b3a7ff5d3"></a><!-- doxytag: member="apr_optional.h::APR_OPTIONAL_FN_TYPE" ref="g987fcf75505450f1b4ff9d7b3a7ff5d3" args="(name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_OPTIONAL_FN_TYPE          </td>
+          <td>(</td>
+          <td class="paramtype">name&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;apr_OFN_##name##_t</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+The type of an optional function. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of the function </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb611deabd6e78b5f666071e8cbdcc736"></a><!-- doxytag: member="apr_optional.h::APR_REGISTER_OPTIONAL_FN" ref="gb611deabd6e78b5f666071e8cbdcc736" args="(name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_REGISTER_OPTIONAL_FN          </td>
+          <td>(</td>
+          <td class="paramtype">name&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
+  <a class="code" href="group___a_p_r___util___opt.html#g987fcf75505450f1b4ff9d7b3a7ff5d3">APR_OPTIONAL_FN_TYPE</a>(name) *apu__opt = name; \
+  apr_dynamic_fn_register(#name,(<a class="code" href="group___a_p_r___util___opt.html#g35e08c2dbf593e3dc5a2cb0fdc8cd637">apr_opt_fn_t</a> *)apu__opt); \
+} <span class="keywordflow">while</span> (0)
+</pre></div>Register an optional function. This can be later retrieved, type-safely, by name. Like all global functions, the name must be unique. Note that, confusingly but correctly, the function itself can be static! <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of the function </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g35f2df25ca06248d2fdd3e7463446418"></a><!-- doxytag: member="apr_optional.h::APR_RETRIEVE_OPTIONAL_FN" ref="g35f2df25ca06248d2fdd3e7463446418" args="(name)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_RETRIEVE_OPTIONAL_FN          </td>
+          <td>(</td>
+          <td class="paramtype">name&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td>&nbsp;&nbsp;&nbsp;(APR_OPTIONAL_FN_TYPE(name) *)apr_dynamic_fn_retrieve(#name)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Retrieve an optional function. Returns NULL if the function is not present. <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The name of the function </td></tr>
+  </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="g35e08c2dbf593e3dc5a2cb0fdc8cd637"></a><!-- doxytag: member="apr_optional.h::apr_opt_fn_t" ref="g35e08c2dbf593e3dc5a2cb0fdc8cd637" args=")(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void( <a class="el" href="group___a_p_r___util___opt.html#g35e08c2dbf593e3dc5a2cb0fdc8cd637">apr_opt_fn_t</a>)(void)          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+XXX: This doesn't belong here, then! Private function! DO NOT USE! 
+</div>
+</div><p>
+</div>
+<hr size="1"><address style="text-align: right;"><small>Generated on Mon Jun 15 09:45:30 2009 for Apache Portable Runtime by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
+</body>
+</html>