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 [35/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___d_b_d.html
URL: http://svn.apache.org/viewvc/apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___d_b_d.html?rev=784636&view=auto
==============================================================================
--- apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___d_b_d.html (added)
+++ apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___d_b_d.html Mon Jun 15 00:01:38 2009
@@ -0,0 +1,1322 @@
+<!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: DBD routines</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>DBD routines<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___d_b_d.html#gff6a26fb3b384bcb3a9172676c53590b">APR_DBD_TRANSACTION_COMMIT</a>&nbsp;&nbsp;&nbsp;0x00</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___d_b_d.html#g60a8749e5172b692fd2e356b48ec922b">APR_DBD_TRANSACTION_ROLLBACK</a>&nbsp;&nbsp;&nbsp;0x01</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___d_b_d.html#gd9dc523b0a3b8dea5b8c9b7b0c281ea2">APR_DBD_TRANSACTION_IGNORE_ERRORS</a>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g91778287e3cd1b8ef8719ca2655e2bc8"></a><!-- doxytag: member="APR_Util_DBD::apr_dbd_driver_t" ref="g91778287e3cd1b8ef8719ca2655e2bc8" args="" -->
+typedef struct apr_dbd_driver_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>apr_dbd_driver_t</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4738c1f6340184987fc7806522c18ab8"></a><!-- doxytag: member="APR_Util_DBD::apr_dbd_t" ref="g4738c1f6340184987fc7806522c18ab8" args="" -->
+typedef struct apr_dbd_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>apr_dbd_t</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g92eb10d7ec8fdb3a39a7d6fdfffdf8fb"></a><!-- doxytag: member="APR_Util_DBD::apr_dbd_transaction_t" ref="g92eb10d7ec8fdb3a39a7d6fdfffdf8fb" args="" -->
+typedef struct <br class="typebreak">
+apr_dbd_transaction_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>apr_dbd_transaction_t</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6765891011818912e1b52fef773bfce6"></a><!-- doxytag: member="APR_Util_DBD::apr_dbd_results_t" ref="g6765891011818912e1b52fef773bfce6" args="" -->
+typedef struct apr_dbd_results_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>apr_dbd_results_t</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb890e4650a1de51725142318825103a5"></a><!-- doxytag: member="APR_Util_DBD::apr_dbd_row_t" ref="gb890e4650a1de51725142318825103a5" args="" -->
+typedef struct apr_dbd_row_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>apr_dbd_row_t</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1f1179c6480a2ee0134f2cb881106cd3"></a><!-- doxytag: member="APR_Util_DBD::apr_dbd_prepared_t" ref="g1f1179c6480a2ee0134f2cb881106cd3" args="" -->
+typedef struct apr_dbd_prepared_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>apr_dbd_prepared_t</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g19608fa5d518a5121bee23daacc5c230">apr_dbd_type_e</a> { <br>
+&nbsp;&nbsp;<b>APR_DBD_TYPE_NONE</b>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230cc06ee0f3fe0c65b9f8265053550e4ee">APR_DBD_TYPE_TINY</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230aa4f167bb26fa3e85b0d61f34713ebb6">APR_DBD_TYPE_UTINY</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c2300c38d32785a3cbddbe4ba692fdde16ee">APR_DBD_TYPE_SHORT</a>, 
+<br>
+&nbsp;&nbsp;<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230f3518efb67af10100b92578b5c867c9c">APR_DBD_TYPE_USHORT</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c2304df919bac6f5b56257bfe63ed3e5968c">APR_DBD_TYPE_INT</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c23058b37a24a35ddf144a9132a9837ed3d3">APR_DBD_TYPE_UINT</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230dd86aa288504ec2d4194f35a3a8ac55a">APR_DBD_TYPE_LONG</a>, 
+<br>
+&nbsp;&nbsp;<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c2304186d52d5ce586cd7559a0ae8737cbb7">APR_DBD_TYPE_ULONG</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c2308821461a3390bd0a001e714d2180ae6c">APR_DBD_TYPE_LONGLONG</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230d1907d3eb1235acfa8a971fce43711c5">APR_DBD_TYPE_ULONGLONG</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c23014281587071981d4e6b25de5bb747e98">APR_DBD_TYPE_FLOAT</a>, 
+<br>
+&nbsp;&nbsp;<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c23077c20702c7c6566369d3ccc894eb9cd8">APR_DBD_TYPE_DOUBLE</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c2304c9490a29ed882c46fa738e7cddede44">APR_DBD_TYPE_STRING</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230e06c20e9edcd46964dc26bb43134e0e6">APR_DBD_TYPE_TEXT</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c2302ad65674a89072f4582e97d0a4fad61d">APR_DBD_TYPE_TIME</a>, 
+<br>
+&nbsp;&nbsp;<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230b96a2b4b2b1fb94a7faeb01065d77835">APR_DBD_TYPE_DATE</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c23077bb0dd82ed396f7056ba2aaddd44265">APR_DBD_TYPE_DATETIME</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c2305cffb0a0cc618ab3d0c187ca176d61ad">APR_DBD_TYPE_TIMESTAMP</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230e4db1948f1f1ef7651c5f01c12d1e56a">APR_DBD_TYPE_ZTIMESTAMP</a>, 
+<br>
+&nbsp;&nbsp;<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c23060d6a6ab49b20a306443b7a9ad8c6f11">APR_DBD_TYPE_BLOB</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230df428a7365d71eacdf24a89c202c1f72">APR_DBD_TYPE_CLOB</a>, 
+<a class="el" href="group___a_p_r___util___d_b_d.html#gg19608fa5d518a5121bee23daacc5c230706a286af4fe4a9b97ee68adc11cd6cc">APR_DBD_TYPE_NULL</a>
+<br>
+ }</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___d_b_d.html#g5ac60f67f1f9131b053e3828397752de">APU_DECLARE</a> (<a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>) apr_dbd_init(<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool)</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___d_b_d.html#g26e40c606585283e84a7ae6179591889">APU_DECLARE</a> (const char *) apr_dbd_name(const apr_dbd_driver_t *driver)</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___d_b_d.html#g58996e2d6cea54891bbe055f6b5e9d58">APU_DECLARE</a> (void *) apr_dbd_native_handle(const apr_dbd_driver_t *driver</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___d_b_d.html#gc62a2cd2b097528975dfe8b1902dfa32">APU_DECLARE_NONSTD</a> (int) apr_dbd_pvquery(const apr_dbd_driver_t *driver</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="gfcd1706c9144e6d6eee6127661ae3be2"></a><!-- doxytag: member="APR_Util_DBD::name" ref="gfcd1706c9144e6d6eee6127661ae3be2" args="" -->
+const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g13380de2c65258ceb1b4a477f536d0ce"></a><!-- doxytag: member="APR_Util_DBD::driver" ref="g13380de2c65258ceb1b4a477f536d0ce" args="" -->
+const char const <br class="typebreak">
+apr_dbd_driver_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>driver</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9069a943190f0778947265895c478883"></a><!-- doxytag: member="APR_Util_DBD::pool" ref="g9069a943190f0778947265895c478883" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>pool</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9a8bda9fdcb1d8f1784e4eef621a0ae2"></a><!-- doxytag: member="APR_Util_DBD::params" ref="g9a8bda9fdcb1d8f1784e4eef621a0ae2" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>params</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g68ba22c11aa974c2d027851747c98822"></a><!-- doxytag: member="APR_Util_DBD::handle" ref="g68ba22c11aa974c2d027851747c98822" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> const char apr_dbd_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>handle</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1c7a35441d749e860588bd9c9b2092d5"></a><!-- doxytag: member="APR_Util_DBD::error" ref="g1c7a35441d749e860588bd9c9b2092d5" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> const char <br class="typebreak">
+apr_dbd_t const char **&nbsp;</td><td class="memItemRight" valign="bottom"><b>error</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g135dae7b88ae03090c5a7f638f980f24"></a><!-- doxytag: member="APR_Util_DBD::trans" ref="g135dae7b88ae03090c5a7f638f980f24" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t <br class="typebreak">
+apr_dbd_transaction_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>trans</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g719919dff9b073c668fd47f22f420774"></a><!-- doxytag: member="APR_Util_DBD::mode" ref="g719919dff9b073c668fd47f22f420774" args="" -->
+apr_dbd_transaction_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>mode</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb2b92eb3b022a090ef84c159253fb635"></a><!-- doxytag: member="APR_Util_DBD::nrows" ref="gb2b92eb3b022a090ef84c159253fb635" args="" -->
+apr_dbd_t int *&nbsp;</td><td class="memItemRight" valign="bottom"><b>nrows</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4e2545dd013163aa26d4aa994db42fb6"></a><!-- doxytag: member="APR_Util_DBD::statement" ref="g4e2545dd013163aa26d4aa994db42fb6" args="" -->
+apr_dbd_t int const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>statement</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3bb17d78322a086f98b82abd8bb9a8cd"></a><!-- doxytag: member="APR_Util_DBD::res" ref="g3bb17d78322a086f98b82abd8bb9a8cd" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t <br class="typebreak">
+apr_dbd_results_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>res</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc93942ec5efab7a3d75b75e70c8c7a94"></a><!-- doxytag: member="APR_Util_DBD::random" ref="gc93942ec5efab7a3d75b75e70c8c7a94" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t <br class="typebreak">
+apr_dbd_results_t const char <br class="typebreak">
+int&nbsp;</td><td class="memItemRight" valign="bottom"><b>random</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g98834f9ea71a411bba8858886c6454ed"></a><!-- doxytag: member="APR_Util_DBD::row" ref="g98834f9ea71a411bba8858886c6454ed" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_results_t <br class="typebreak">
+apr_dbd_row_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>row</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g75c9df9c4ef67392d3f04dd674382bce"></a><!-- doxytag: member="APR_Util_DBD::rownum" ref="g75c9df9c4ef67392d3f04dd674382bce" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_results_t <br class="typebreak">
+apr_dbd_row_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>rownum</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge2d80c10d5136f660b76beaf704934f5"></a><!-- doxytag: member="APR_Util_DBD::col" ref="ge2d80c10d5136f660b76beaf704934f5" args="" -->
+apr_dbd_row_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>col</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g705b7ca7fb0a9700b61ad996d694a778"></a><!-- doxytag: member="APR_Util_DBD::errnum" ref="g705b7ca7fb0a9700b61ad996d694a778" args="" -->
+apr_dbd_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>errnum</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7793f069712367d96ac8021492fba941"></a><!-- doxytag: member="APR_Util_DBD::string" ref="g7793f069712367d96ac8021492fba941" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>string</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1086b66aba6ed16e6853a4cef784f8f6"></a><!-- doxytag: member="APR_Util_DBD::query" ref="g1086b66aba6ed16e6853a4cef784f8f6" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>query</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3b25265345988aead1789676cc374ba1"></a><!-- doxytag: member="APR_Util_DBD::label" ref="g3b25265345988aead1789676cc374ba1" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t const <br class="typebreak">
+char const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7b9eedb8b5923d616c292903065439f6"></a><!-- doxytag: member="APR_Util_DBD::nargs" ref="g7b9eedb8b5923d616c292903065439f6" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t int <br class="typebreak">
+apr_dbd_prepared_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>nargs</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga72bdc340ae9df68cd6f4afa28f1fd81"></a><!-- doxytag: member="APR_Util_DBD::args" ref="ga72bdc340ae9df68cd6f4afa28f1fd81" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t int <br class="typebreak">
+apr_dbd_prepared_t int const <br class="typebreak">
+char **&nbsp;</td><td class="memItemRight" valign="bottom"><b>args</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2b76f7cb738a5dc6077174fa03ab42f5"></a><!-- doxytag: member="APR_Util_DBD::type" ref="g2b76f7cb738a5dc6077174fa03ab42f5" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t int <br class="typebreak">
+apr_dbd_prepared_t <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> <br class="typebreak">
+apr_dbd_t apr_dbd_results_t <br class="typebreak">
+apr_dbd_prepared_t int <br class="typebreak">
+apr_dbd_row_t int <br class="typebreak">
+<a class="el" href="group___a_p_r___util___d_b_d.html#g19608fa5d518a5121bee23daacc5c230">apr_dbd_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g06de830a0219765bcda49e9ecfee4a09"></a><!-- doxytag: member="APR_Util_DBD::data" ref="g06de830a0219765bcda49e9ecfee4a09" args="" -->
+<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t int <br class="typebreak">
+apr_dbd_prepared_t <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> <br class="typebreak">
+apr_dbd_t apr_dbd_results_t <br class="typebreak">
+apr_dbd_prepared_t int <br class="typebreak">
+apr_dbd_row_t int <br class="typebreak">
+<a class="el" href="group___a_p_r___util___d_b_d.html#g19608fa5d518a5121bee23daacc5c230">apr_dbd_type_e</a> void *&nbsp;</td><td class="memItemRight" valign="bottom"><b>data</b></td></tr>
+
+</table>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="gff6a26fb3b384bcb3a9172676c53590b"></a><!-- doxytag: member="apr_dbd.h::APR_DBD_TRANSACTION_COMMIT" ref="gff6a26fb3b384bcb3a9172676c53590b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_DBD_TRANSACTION_COMMIT&nbsp;&nbsp;&nbsp;0x00          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+commit the transaction 
+</div>
+</div><p>
+<a class="anchor" name="gd9dc523b0a3b8dea5b8c9b7b0c281ea2"></a><!-- doxytag: member="apr_dbd.h::APR_DBD_TRANSACTION_IGNORE_ERRORS" ref="gd9dc523b0a3b8dea5b8c9b7b0c281ea2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_DBD_TRANSACTION_IGNORE_ERRORS&nbsp;&nbsp;&nbsp;0x02          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+ignore transaction errors 
+</div>
+</div><p>
+<a class="anchor" name="g60a8749e5172b692fd2e356b48ec922b"></a><!-- doxytag: member="apr_dbd.h::APR_DBD_TRANSACTION_ROLLBACK" ref="g60a8749e5172b692fd2e356b48ec922b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define APR_DBD_TRANSACTION_ROLLBACK&nbsp;&nbsp;&nbsp;0x01          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+rollback the transaction 
+</div>
+</div><p>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="g19608fa5d518a5121bee23daacc5c230"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_type_e" ref="g19608fa5d518a5121bee23daacc5c230" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group___a_p_r___util___d_b_d.html#g19608fa5d518a5121bee23daacc5c230">apr_dbd_type_e</a>          </td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+Mapping of C to SQL types, used for prepared statements. <dl class="remark" compact><dt><b>Remarks:</b></dt><dd>For apr_dbd_p[v]query/select functions, in and out parameters are always const char * (i.e. regular nul terminated strings). LOB types are passed with four (4) arguments: payload, length, table and column, all as const char *, where table and column are reserved for future use by Oracle. <p>
+For apr_dbd_p[v]bquery/select functions, in and out parameters are described next to each enumeration constant and are generally native binary types or some APR data type. LOB types are passed with four (4) arguments: payload (char*), length (apr_size_t*), table (char*) and column (char*). Table and column are reserved for future use by Oracle. </dd></dl>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230cc06ee0f3fe0c65b9f8265053550e4ee"></a><!-- doxytag: member="APR_DBD_TYPE_TINY" ref="gg19608fa5d518a5121bee23daacc5c230cc06ee0f3fe0c65b9f8265053550e4ee" args="" -->APR_DBD_TYPE_TINY</em>&nbsp;</td><td>
+%hhd : in, out: char* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230aa4f167bb26fa3e85b0d61f34713ebb6"></a><!-- doxytag: member="APR_DBD_TYPE_UTINY" ref="gg19608fa5d518a5121bee23daacc5c230aa4f167bb26fa3e85b0d61f34713ebb6" args="" -->APR_DBD_TYPE_UTINY</em>&nbsp;</td><td>
+%hhu : in, out: unsigned char* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c2300c38d32785a3cbddbe4ba692fdde16ee"></a><!-- doxytag: member="APR_DBD_TYPE_SHORT" ref="gg19608fa5d518a5121bee23daacc5c2300c38d32785a3cbddbe4ba692fdde16ee" args="" -->APR_DBD_TYPE_SHORT</em>&nbsp;</td><td>
+%hd : in, out: short* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230f3518efb67af10100b92578b5c867c9c"></a><!-- doxytag: member="APR_DBD_TYPE_USHORT" ref="gg19608fa5d518a5121bee23daacc5c230f3518efb67af10100b92578b5c867c9c" args="" -->APR_DBD_TYPE_USHORT</em>&nbsp;</td><td>
+%hu : in, out: unsigned short* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c2304df919bac6f5b56257bfe63ed3e5968c"></a><!-- doxytag: member="APR_DBD_TYPE_INT" ref="gg19608fa5d518a5121bee23daacc5c2304df919bac6f5b56257bfe63ed3e5968c" args="" -->APR_DBD_TYPE_INT</em>&nbsp;</td><td>
+%d : in, out: int* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c23058b37a24a35ddf144a9132a9837ed3d3"></a><!-- doxytag: member="APR_DBD_TYPE_UINT" ref="gg19608fa5d518a5121bee23daacc5c23058b37a24a35ddf144a9132a9837ed3d3" args="" -->APR_DBD_TYPE_UINT</em>&nbsp;</td><td>
+%u : in, out: unsigned int* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230dd86aa288504ec2d4194f35a3a8ac55a"></a><!-- doxytag: member="APR_DBD_TYPE_LONG" ref="gg19608fa5d518a5121bee23daacc5c230dd86aa288504ec2d4194f35a3a8ac55a" args="" -->APR_DBD_TYPE_LONG</em>&nbsp;</td><td>
+%ld : in, out: long* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c2304186d52d5ce586cd7559a0ae8737cbb7"></a><!-- doxytag: member="APR_DBD_TYPE_ULONG" ref="gg19608fa5d518a5121bee23daacc5c2304186d52d5ce586cd7559a0ae8737cbb7" args="" -->APR_DBD_TYPE_ULONG</em>&nbsp;</td><td>
+%lu : in, out: unsigned long* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c2308821461a3390bd0a001e714d2180ae6c"></a><!-- doxytag: member="APR_DBD_TYPE_LONGLONG" ref="gg19608fa5d518a5121bee23daacc5c2308821461a3390bd0a001e714d2180ae6c" args="" -->APR_DBD_TYPE_LONGLONG</em>&nbsp;</td><td>
+%lld : in, out: apr_int64_t* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230d1907d3eb1235acfa8a971fce43711c5"></a><!-- doxytag: member="APR_DBD_TYPE_ULONGLONG" ref="gg19608fa5d518a5121bee23daacc5c230d1907d3eb1235acfa8a971fce43711c5" args="" -->APR_DBD_TYPE_ULONGLONG</em>&nbsp;</td><td>
+%llu : in, out: apr_uint64_t* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c23014281587071981d4e6b25de5bb747e98"></a><!-- doxytag: member="APR_DBD_TYPE_FLOAT" ref="gg19608fa5d518a5121bee23daacc5c23014281587071981d4e6b25de5bb747e98" args="" -->APR_DBD_TYPE_FLOAT</em>&nbsp;</td><td>
+%f : in, out: float* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c23077c20702c7c6566369d3ccc894eb9cd8"></a><!-- doxytag: member="APR_DBD_TYPE_DOUBLE" ref="gg19608fa5d518a5121bee23daacc5c23077c20702c7c6566369d3ccc894eb9cd8" args="" -->APR_DBD_TYPE_DOUBLE</em>&nbsp;</td><td>
+%lf : in, out: double* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c2304c9490a29ed882c46fa738e7cddede44"></a><!-- doxytag: member="APR_DBD_TYPE_STRING" ref="gg19608fa5d518a5121bee23daacc5c2304c9490a29ed882c46fa738e7cddede44" args="" -->APR_DBD_TYPE_STRING</em>&nbsp;</td><td>
+%s : in: char*, out: char** </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230e06c20e9edcd46964dc26bb43134e0e6"></a><!-- doxytag: member="APR_DBD_TYPE_TEXT" ref="gg19608fa5d518a5121bee23daacc5c230e06c20e9edcd46964dc26bb43134e0e6" args="" -->APR_DBD_TYPE_TEXT</em>&nbsp;</td><td>
+%pDt : in: char*, out: char** </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c2302ad65674a89072f4582e97d0a4fad61d"></a><!-- doxytag: member="APR_DBD_TYPE_TIME" ref="gg19608fa5d518a5121bee23daacc5c2302ad65674a89072f4582e97d0a4fad61d" args="" -->APR_DBD_TYPE_TIME</em>&nbsp;</td><td>
+%pDi : in: char*, out: char** </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230b96a2b4b2b1fb94a7faeb01065d77835"></a><!-- doxytag: member="APR_DBD_TYPE_DATE" ref="gg19608fa5d518a5121bee23daacc5c230b96a2b4b2b1fb94a7faeb01065d77835" args="" -->APR_DBD_TYPE_DATE</em>&nbsp;</td><td>
+%pDd : in: char*, out: char** </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c23077bb0dd82ed396f7056ba2aaddd44265"></a><!-- doxytag: member="APR_DBD_TYPE_DATETIME" ref="gg19608fa5d518a5121bee23daacc5c23077bb0dd82ed396f7056ba2aaddd44265" args="" -->APR_DBD_TYPE_DATETIME</em>&nbsp;</td><td>
+%pDa : in: char*, out: char** </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c2305cffb0a0cc618ab3d0c187ca176d61ad"></a><!-- doxytag: member="APR_DBD_TYPE_TIMESTAMP" ref="gg19608fa5d518a5121bee23daacc5c2305cffb0a0cc618ab3d0c187ca176d61ad" args="" -->APR_DBD_TYPE_TIMESTAMP</em>&nbsp;</td><td>
+%pDs : in: char*, out: char** </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230e4db1948f1f1ef7651c5f01c12d1e56a"></a><!-- doxytag: member="APR_DBD_TYPE_ZTIMESTAMP" ref="gg19608fa5d518a5121bee23daacc5c230e4db1948f1f1ef7651c5f01c12d1e56a" args="" -->APR_DBD_TYPE_ZTIMESTAMP</em>&nbsp;</td><td>
+%pDz : in: char*, out: char** </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c23060d6a6ab49b20a306443b7a9ad8c6f11"></a><!-- doxytag: member="APR_DBD_TYPE_BLOB" ref="gg19608fa5d518a5121bee23daacc5c23060d6a6ab49b20a306443b7a9ad8c6f11" args="" -->APR_DBD_TYPE_BLOB</em>&nbsp;</td><td>
+%pDb : in: char* apr_size_t* char* char*, out: apr_bucket_brigade* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230df428a7365d71eacdf24a89c202c1f72"></a><!-- doxytag: member="APR_DBD_TYPE_CLOB" ref="gg19608fa5d518a5121bee23daacc5c230df428a7365d71eacdf24a89c202c1f72" args="" -->APR_DBD_TYPE_CLOB</em>&nbsp;</td><td>
+%pDc : in: char* apr_size_t* char* char*, out: apr_bucket_brigade* </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gg19608fa5d518a5121bee23daacc5c230706a286af4fe4a9b97ee68adc11cd6cc"></a><!-- doxytag: member="APR_DBD_TYPE_NULL" ref="gg19608fa5d518a5121bee23daacc5c230706a286af4fe4a9b97ee68adc11cd6cc" args="" -->APR_DBD_TYPE_NULL</em>&nbsp;</td><td>
+%pDn : in: void*, out: void** </td></tr>
+</table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="g58996e2d6cea54891bbe055f6b5e9d58"></a><!-- doxytag: member="apr_dbd.h::APU_DECLARE" ref="g58996e2d6cea54891bbe055f6b5e9d58" args="(void *) apr_dbd_native_handle(const apr_dbd_driver_t *driver" -->
+<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>
+apr_dbd_native_handle: get native database handle of the underlying db<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- apr_dbd handle </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>- native handle </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g26e40c606585283e84a7ae6179591889"></a><!-- doxytag: member="apr_dbd.h::APU_DECLARE" ref="g26e40c606585283e84a7ae6179591889" args="(const char *) apr_dbd_name(const apr_dbd_driver_t *driver)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">APU_DECLARE           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname">          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_name: get the name of the driver<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>- name</dd></dl>
+apr_dbd_get_entry: get an entry from a row<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>- row pointer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>col</em>&nbsp;</td><td>- entry number </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>value from the row, or NULL if col is out of bounds.</dd></dl>
+apr_dbd_get_name: get an entry name from a result set<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set pointer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>col</em>&nbsp;</td><td>- entry number </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>name of the entry, or NULL if col is out of bounds.</dd></dl>
+apr_dbd_error: get current error message (if any)<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>errnum</em>&nbsp;</td><td>- error code from operation that returned an error </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the database current error message, or message for errnum (implementation-dependent whether errnum is ignored)</dd></dl>
+apr_dbd_escape: escape a string so it is safe for use in query/select<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to alloc the result from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>- the string to escape </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the escaped, safe string</dd></dl>
+quote an XML string Replace '&lt;', '&gt;', and '&amp;' with '&lt;', '&gt;', and '&amp;'. <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>s</em>&nbsp;</td><td>The string to quote </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>quotes</em>&nbsp;</td><td>If quotes is true, then replace '"' with '"'. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The quoted string </dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>If the string does not contain special characters, it is not duplicated into the pool and the original string is returned.</dd></dl>
+Search for a precompiled pattern within a string <dl compact><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>pattern</em>&nbsp;</td><td>The pattern </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>The string in which to search for the pattern </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>The length of s (excluding null terminator) </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the first instance of the pattern in s, or NULL if not found </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g5ac60f67f1f9131b053e3828397752de"></a><!-- doxytag: member="apr_dbd.h::APU_DECLARE" ref="g5ac60f67f1f9131b053e3828397752de" args="(apr_status_t) apr_dbd_init(apr_pool_t *pool)" -->
+<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>
+apr_dbd_init: perform once-only initialisation. Call once only.<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>pool</em>&nbsp;</td><td>- pool to register any shutdown cleanups, etc</td></tr>
+  </table>
+</dl>
+apr_dbd_get_driver: get the driver struct for a name<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>pool</em>&nbsp;</td><td>- (process) pool to register cleanup </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>- driver name </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- pointer to driver struct. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success <p>
+APR_ENOTIMPL for no driver (when DSO not enabled) <p>
+APR_EDSOOPEN if DSO driver file can't be opened <p>
+APR_ESYMNOTFOUND if the driver file doesn't contain a driver</dd></dl>
+apr_dbd_open_ex: open a connection to a backend<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>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>- arguments to driver (implementation-dependent) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- pointer to handle to return </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>error</em>&nbsp;</td><td>- descriptive error. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success <p>
+APR_EGENERAL if driver exists but connection failed </dd></dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>PostgreSQL: the params is passed directly to the PQconnectdb() function (check PostgreSQL documentation for more details on the syntax). <p>
+SQLite2: the params is split on a colon, with the first part used as the filename and second part converted to an integer and used as file mode. <p>
+SQLite3: the params is passed directly to the sqlite3_open() function as a filename to be opened (check SQLite3 documentation for more details). <p>
+Oracle: the params can have "user", "pass", "dbname" and "server" keys, each followed by an equal sign and a value. Such key/value pairs can be delimited by space, CR, LF, tab, semicolon, vertical bar or comma. <p>
+MySQL: the params can have "host", "port", "user", "pass", "dbname", "sock", "flags" "fldsz", "group" and "reconnect" keys, each followed by an equal sign and a value. Such key/value pairs can be delimited by space, CR, LF, tab, semicolon, vertical bar or comma. For now, "flags" can only recognise CLIENT_FOUND_ROWS (check MySQL manual for details). The value associated with "fldsz" determines maximum amount of memory (in bytes) for each of the fields in the result set of prepared statements. By default, this value is 1 MB. The value associated with "group" determines which group from configuration file to use (see MYSQL_READ_DEFAULT_GROUP option of mysql_options() in MySQL manual). Reconnect is set to 1 by default (i.e. true). <p>
+FreeTDS: the params can have "username", "password", "appname", "dbname", "host", "charset", "lang" and "server" keys, each followed by an equal sign and a value.</dd></dl>
+apr_dbd_open: open a connection to a backend<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>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>- arguments to driver (implementation-dependent) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- pointer to handle to return </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success <p>
+APR_EGENERAL if driver exists but connection failed </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd>apr_dbd_open_ex</dd></dl>
+apr_dbd_close: close a connection to a backend<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>handle</em>&nbsp;</td><td>- handle to close </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success or error status</dd></dl>
+check_conn: check status of a database connection<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection to check </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS or error</dd></dl>
+apr_dbd_set_dbname: select database name. May be a no-op if not supported.<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>- the database to select </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+apr_dbd_transaction_start: start a transaction. May be a no-op.<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- a pool to use for error messages (if any). </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the db connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>- ptr to a transaction. May be null on entry </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code </dd></dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Note that transaction modes, set by calling apr_dbd_transaction_mode_set(), will affect all query/select calls within a transaction. By default, any error in query/select during a transaction will cause the transaction to inherit the error code and any further query/select calls will fail immediately. Put transaction in "ignore errors" mode to avoid that. Use "rollback" mode to do explicit rollback.</dd></dl>
+apr_dbd_transaction_end: end a transaction (commit on success, rollback on error). May be a no-op.<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the db connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>- the transaction. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+apr_dbd_transaction_mode_get: get the mode of transaction<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>- the transaction </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>mode of transaction</dd></dl>
+apr_dbd_transaction_mode_set: set the mode of transaction<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>- the transaction </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>- new mode of the transaction </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the mode of transaction in force after the call</dd></dl>
+apr_dbd_query: execute an SQL query that doesn't return a result set<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nrows</em>&nbsp;</td><td>- number of rows affected. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the SQL statement to execute </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+apr_dbd_select: execute an SQL query that returns a result set<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to allocate the result set </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- pointer to result set pointer. May point to NULL on entry </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the SQL statement to execute </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>random</em>&nbsp;</td><td>- 1 to support random access to results (seek any row); 0 to support only looping through results in order (async access - faster) </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+apr_dbd_num_cols: get the number of columns in a results set<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of columns</dd></dl>
+apr_dbd_num_tuples: get the number of rows in a results set of a synchronous select<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of rows, or -1 if the results are asynchronous</dd></dl>
+apr_dbd_get_row: get a row from a result set<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to allocate the row </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set pointer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>- pointer to row pointer. May point to NULL on entry </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>rownum</em>&nbsp;</td><td>- row number (counting from 1), or -1 for "next row". Ignored if random access is not supported. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, -1 for rownum out of range or data finished</dd></dl>
+apr_dbd_prepare: prepare a statement<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to alloc the result from </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>query</em>&nbsp;</td><td>- the SQL query </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>label</em>&nbsp;</td><td>- A label for the prepared statement. use NULL for temporary prepared statements (eg within a Request in httpd) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- statement to prepare. May point to null on entry. </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code </dd></dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>To specify parameters of the prepared query, use %s, %d etc. (see below for full list) in place of database specific parameter syntax (e.g. for PostgreSQL, this would be $1, $2, for SQLite3 this would be ? etc.). For instance: "SELECT name FROM customers WHERE name=%s" would be a query that this function understands. <p>
+Here is the full list of format specifiers that this function understands and what they map to in SQL: %hhd (TINY INT), %hhu (UNSIGNED TINY INT), %hd (SHORT), %hu (UNSIGNED SHORT), %d (INT), %u (UNSIGNED INT), %ld (LONG), %lu (UNSIGNED LONG), %lld (LONG LONG), %llu (UNSIGNED LONG LONG), %f (FLOAT, REAL), %lf (DOUBLE PRECISION), %s (VARCHAR), %pDt (TEXT), %pDi (TIME), %pDd (DATE), %pDa (DATETIME), %pDs (TIMESTAMP), %pDz (TIMESTAMP WITH TIME ZONE), %pDb (BLOB), %pDc (CLOB) and %pDn (NULL). Not all databases have support for all these types, so the underlying driver will attempt the "best match" where possible. A % followed by any letter not in the above list will be interpreted as VARCHAR (i.e. %s).</dd></dl>
+apr_dbd_pquery: query using a prepared statement + args<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nrows</em>&nbsp;</td><td>- number of rows affected. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the prepared statement to execute </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nargs</em>&nbsp;</td><td>- ignored (for backward compatibility only) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- args to prepared statement </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+apr_dbd_pselect: select using a prepared statement + args<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- pointer to query results. May point to NULL on entry </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the prepared statement to execute </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>random</em>&nbsp;</td><td>- Whether to support random-access to results </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nargs</em>&nbsp;</td><td>- ignored (for backward compatibility only) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- args to prepared statement </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+apr_dbd_pbquery: query using a prepared statement + binary args<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nrows</em>&nbsp;</td><td>- number of rows affected. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the prepared statement to execute </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- binary args to prepared statement </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+apr_dbd_pbselect: select using a prepared statement + binary args<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- pointer to query results. May point to NULL on entry </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the prepared statement to execute </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>random</em>&nbsp;</td><td>- Whether to support random-access to results </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- binary args to prepared statement </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+apr_dbd_datum_get: get a binary entry from a row<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>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>- row pointer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>col</em>&nbsp;</td><td>- entry number </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>- type of data to get </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>- pointer to data, allocated by the caller </td></tr>
+  </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS on success, APR_ENOENT if data is NULL or APR_EGENERAL</dd></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>

[... 237 lines stripped ...]