Sophie

Sophie

distrib > CentOS > 5 > x86_64 > by-pkgid > bdbf07027827e6ad7d9208f8a9eaea97 > files > 150

apr-docs-1.2.7-11.el5_6.5.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Apache Portable Runtime: Table and Array Functions</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</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="pages.html"><span>Related&nbsp;Pages</span></a></li>
    <li><a href="examples.html"><span>Examples</span></a></li>
  </ul></div>
<h1>Table and Array Functions<br>
<small>
[<a class="el" href="group___a_p_r.html">Apache Portability Runtime library</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__array__header__t.html">apr_array_header_t</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structapr__table__entry__t.html">apr_table_entry_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__apr__tables.html#gdf1c8f4b05500fb1955580e01a49fc73">APR_OVERLAP_TABLES_SET</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gb37c029e3f3eac3f82ee29ff8da1ea1c">APR_OVERLAP_TABLES_MERGE</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>

<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g63f0d079e55606c4dfdb825d855d0d8f">apr_array_header_t</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="structapr__table__entry__t.html">apr_table_entry_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g30d529898acbe12d67ec1fb7253a6d64">apr_table_entry_t</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g7ae9fe24b8b8355f608ffc4d5468b1be">apr_table_do_callback_fn_t</a> )(void *rec, const char *key, const char *value)</td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g83152217f11a5c3a584429c7403b2c1d">apr_table_elts</a> (const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g03407e669cba0a06e1a38e10944c5b89">apr_is_empty_table</a> (const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gd7fbba71a02bbf7d9c4d4472d63cd4e9">apr_is_empty_array</a> (const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *a)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g20a6421de59e3f439d8a5da2d0d3659d">apr_array_make</a> (<a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p, int nelts, int elt_size)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g07789853ed6a510a3f4fddd3af854adc">apr_array_push</a> (<a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *arr)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g6b3d2e5d0f578c5c28df2c2421e2565d">apr_array_pop</a> (<a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *arr)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g48fce18b5f61c194c05219ae7bb693c7">apr_array_cat</a> (<a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *dst, const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *src)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g07f695db67812a1250267326471aff43">apr_array_copy</a> (<a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p, const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *arr)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g3f8a27f88aa2ed0fcc24034000c70e3f">apr_array_copy_hdr</a> (<a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p, const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *arr)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g96bf5a2346d30905f5191248784d0a4e">apr_array_append</a> (<a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p, const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *first, const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *second)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#geea4b065b1c61a0ec20653407f2ecb42">apr_array_pstrcat</a> (<a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p, const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *arr, const char sep)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gaee266fb19b0453bbaa1c62f7514b1fb">apr_table_make</a> (<a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p, int nelts)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g95fa4065f34b972a44d7d07bc9f41546">apr_table_copy</a> (<a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p, const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g775cc7b0edd0411652cabd5fef83b457">apr_table_clear</a> (<a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g38d6c3ec174c80b13cd91887dbb46783">apr_table_get</a> (const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, const char *key)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g4576e46d6ce962663de8098d3153a88b">apr_table_set</a> (<a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, const char *key, const char *val)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g8f0414143c5782e27cdbd5e0d96acf3c">apr_table_setn</a> (<a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, const char *key, const char *val)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g1e0a17644ab1f705f1c013cfd8a1bdba">apr_table_unset</a> (<a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, const char *key)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#ga24bacc2005d1d00d55db0ca256d9043">apr_table_merge</a> (<a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, const char *key, const char *val)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gb58cb0e7297cb8f5f0bef8de03c1beae">apr_table_mergen</a> (<a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, const char *key, const char *val)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g91d215fc0a9387fc4254db2aa60d6f2c">apr_table_add</a> (<a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, const char *key, const char *val)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gf3f4204eb8825c26c86c4c5b610b6dea">apr_table_addn</a> (<a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, const char *key, const char *val)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gf0fc20bc27a453ff6724a1a02c2452c5">apr_table_overlay</a> (<a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p, const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *overlay, const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *base)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gbc72ff8bb94ec0a98518115429077b8c">apr_table_do</a> (<a class="el" href="group__apr__tables.html#g7ae9fe24b8b8355f608ffc4d5468b1be">apr_table_do_callback_fn_t</a> *comp, void *rec, const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t,...)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g8337d678f499a661b55cb416c1ed1587">apr_table_vdo</a> (<a class="el" href="group__apr__tables.html#g7ae9fe24b8b8355f608ffc4d5468b1be">apr_table_do_callback_fn_t</a> *comp, void *rec, const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *t, va_list vp)</td></tr>

<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gaf282eb934baa1e1dad2b18e7b58fb0a">apr_array_header_t::elt_size</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gcccc82cd58c6b03edefeaf67e5d627e6">apr_array_header_t::nelts</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gf1b7d0d51587955967ea9f46b397b95e">apr_array_header_t::nalloc</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g33904e25812b2bb44b43b46bdc3e31f5">apr_array_header_t::elts</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#g2179c531768d3294ce5b288156aaa218">apr_table_entry_t::val</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">apr_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__tables.html#gadf3a2941bd9700c7712aa7f89248b17">apr_table_entry_t::key_checksum</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Tables are used to store entirely opaque structures for applications, while Arrays are usually used to deal with string lists. <hr><h2>Define Documentation</h2>
<a class="anchor" name="gb37c029e3f3eac3f82ee29ff8da1ea1c"></a><!-- doxytag: member="apr_tables.h::APR_OVERLAP_TABLES_MERGE" ref="gb37c029e3f3eac3f82ee29ff8da1ea1c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define APR_OVERLAP_TABLES_MERGE&nbsp;&nbsp;&nbsp;(1)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
flag for overlap to use apr_table_mergen 
</div>
</div><p>
<a class="anchor" name="gdf1c8f4b05500fb1955580e01a49fc73"></a><!-- doxytag: member="apr_tables.h::APR_OVERLAP_TABLES_SET" ref="gdf1c8f4b05500fb1955580e01a49fc73" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define APR_OVERLAP_TABLES_SET&nbsp;&nbsp;&nbsp;(0)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
flag for overlap to use apr_table_setn 
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="g63f0d079e55606c4dfdb825d855d0d8f"></a><!-- doxytag: member="apr_tables.h::apr_array_header_t" ref="g63f0d079e55606c4dfdb825d855d0d8f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="g7ae9fe24b8b8355f608ffc4d5468b1be"></a><!-- doxytag: member="apr_tables.h::apr_table_do_callback_fn_t" ref="g7ae9fe24b8b8355f608ffc4d5468b1be" args=")(void *rec, const char *key, const char *value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int( <a class="el" href="group__apr__tables.html#g7ae9fe24b8b8355f608ffc4d5468b1be">apr_table_do_callback_fn_t</a>)(void *rec, const char *key, const char *value)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Declaration prototype for the iterator callback function of <a class="el" href="group__apr__tables.html#gbc72ff8bb94ec0a98518115429077b8c">apr_table_do()</a> and <a class="el" href="group__apr__tables.html#g8337d678f499a661b55cb416c1ed1587">apr_table_vdo()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rec</em>&nbsp;</td><td>The data passed as the first argument to apr_table_[v]do() </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key from this iteration of the table </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>The value from this iteration of the table </td></tr>
  </table>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd>Iteration continues while this callback function returns non-zero. To export the callback function for apr_table_[v]do() it must be declared in the _NONSTD convention. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g30d529898acbe12d67ec1fb7253a6d64"></a><!-- doxytag: member="apr_tables.h::apr_table_entry_t" ref="g30d529898acbe12d67ec1fb7253a6d64" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structapr__table__entry__t.html">apr_table_entry_t</a> <a class="el" href="structapr__table__entry__t.html">apr_table_entry_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The (opaque) structure for string-content tables. 
</div>
</div><p>
<a class="anchor" name="gfdafc0875a2cf6d44d17779ea91e4f1a"></a><!-- doxytag: member="apr_tables.h::apr_table_t" ref="gfdafc0875a2cf6d44d17779ea91e4f1a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
the table abstract data type 
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g96bf5a2346d30905f5191248784d0a4e"></a><!-- doxytag: member="apr_tables.h::apr_array_append" ref="g96bf5a2346d30905f5191248784d0a4e" args="(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a>* apr_array_append           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>second</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Append one array to the end of another, creating a new array in the process. <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 the new array out of </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>The array to put first in the new array. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>second</em>&nbsp;</td><td>The array to put second in the new array. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>A new array containing the data from the two arrays passed in. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g48fce18b5f61c194c05219ae7bb693c7"></a><!-- doxytag: member="apr_tables.h::apr_array_cat" ref="g48fce18b5f61c194c05219ae7bb693c7" args="(apr_array_header_t *dst, const apr_array_header_t *src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_array_cat           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Concatenate two arrays together <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>The destination array, and the one to go first in the combined array </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>The source array to add to the destination array </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g07f695db67812a1250267326471aff43"></a><!-- doxytag: member="apr_tables.h::apr_array_copy" ref="g07f695db67812a1250267326471aff43" args="(apr_pool_t *p, const apr_array_header_t *arr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a>* apr_array_copy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>arr</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy the entire array <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 the copy of the array out of </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arr</em>&nbsp;</td><td>The array to copy </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>An exact copy of the array passed in </dd></dl>
<dl compact><dt><b>Remarks:</b></dt><dd>The alternate apr_array_copy_hdr copies only the header, and arranges for the elements to be copied if (and only if) the code subsequently does a push or arraycat. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g3f8a27f88aa2ed0fcc24034000c70e3f"></a><!-- doxytag: member="apr_tables.h::apr_array_copy_hdr" ref="g3f8a27f88aa2ed0fcc24034000c70e3f" args="(apr_pool_t *p, const apr_array_header_t *arr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a>* apr_array_copy_hdr           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>arr</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy the headers of the array, and arrange for the elements to be copied if and only if the code subsequently does a push or arraycat. <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 the copy of the array out of </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arr</em>&nbsp;</td><td>The array to copy </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>An exact copy of the array passed in </dd></dl>
<dl compact><dt><b>Remarks:</b></dt><dd>The alternate apr_array_copy copies the *entire* array. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g20a6421de59e3f439d8a5da2d0d3659d"></a><!-- doxytag: member="apr_tables.h::apr_array_make" ref="g20a6421de59e3f439d8a5da2d0d3659d" args="(apr_pool_t *p, int nelts, int elt_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a>* apr_array_make           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nelts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>elt_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create an array <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 the memory out of </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nelts</em>&nbsp;</td><td>the number of elements in the initial array </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>elt_size</em>&nbsp;</td><td>The size of each element in the array. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The new array </dd></dl>

</div>
</div><p>
<a class="anchor" name="g6b3d2e5d0f578c5c28df2c2421e2565d"></a><!-- doxytag: member="apr_tables.h::apr_array_pop" ref="g6b3d2e5d0f578c5c28df2c2421e2565d" args="(apr_array_header_t *arr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* apr_array_pop           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>arr</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove an element from an array (as a first-in, last-out stack) <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>arr</em>&nbsp;</td><td>The array to remove an element from. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>Location of the element in the array. </dd></dl>
<dl compact><dt><b>Remarks:</b></dt><dd>If there are no elements in the array, NULL is returned. </dd></dl>

</div>
</div><p>
<a class="anchor" name="geea4b065b1c61a0ec20653407f2ecb42"></a><!-- doxytag: member="apr_tables.h::apr_array_pstrcat" ref="geea4b065b1c61a0ec20653407f2ecb42" args="(apr_pool_t *p, const apr_array_header_t *arr, const char sep)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* apr_array_pstrcat           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>arr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char&nbsp;</td>
          <td class="paramname"> <em>sep</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Generates a new string from the apr_pool_t containing the concatenated sequence of substrings referenced as elements within the array. The string will be empty if all substrings are empty or null, or if there are no elements in the array. If sep is non-NUL, it will be inserted between elements as a separator. <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 the string out of </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arr</em>&nbsp;</td><td>The array to generate the string from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sep</em>&nbsp;</td><td>The separator to use </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>A string containing all of the data in the array. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g07789853ed6a510a3f4fddd3af854adc"></a><!-- doxytag: member="apr_tables.h::apr_array_push" ref="g07789853ed6a510a3f4fddd3af854adc" args="(apr_array_header_t *arr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* apr_array_push           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>arr</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a new element to an array (as a first-in, last-out stack) <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>arr</em>&nbsp;</td><td>The array to add an element to. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>Location for the new element in the array. </dd></dl>
<dl compact><dt><b>Remarks:</b></dt><dd>If there are no free spots in the array, then this function will allocate new space for the new element. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gd7fbba71a02bbf7d9c4d4472d63cd4e9"></a><!-- doxytag: member="apr_tables.h::apr_is_empty_array" ref="gd7fbba71a02bbf7d9c4d4472d63cd4e9" args="(const apr_array_header_t *a)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int apr_is_empty_array           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>a</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Determine if the array is empty <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>The array to check </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>True if empty, False otherwise </dd></dl>

</div>
</div><p>
<a class="anchor" name="g03407e669cba0a06e1a38e10944c5b89"></a><!-- doxytag: member="apr_tables.h::apr_is_empty_table" ref="g03407e669cba0a06e1a38e10944c5b89" args="(const apr_table_t *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int apr_is_empty_table           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Determine if the table is empty <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to check </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>True if empty, False otherwise </dd></dl>

</div>
</div><p>
<a class="anchor" name="g91d215fc0a9387fc4254db2aa60d6f2c"></a><!-- doxytag: member="apr_tables.h::apr_table_add" ref="g91d215fc0a9387fc4254db2aa60d6f2c" args="(apr_table_t *t, const char *key, const char *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_table_add           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add data to a table, regardless of whether there is another element with the same 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>t</em>&nbsp;</td><td>The table to add to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>The value to add. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd>When adding data, this function makes a copy of both the key and the value. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gf3f4204eb8825c26c86c4c5b610b6dea"></a><!-- doxytag: member="apr_tables.h::apr_table_addn" ref="gf3f4204eb8825c26c86c4c5b610b6dea" args="(apr_table_t *t, const char *key, const char *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_table_addn           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add data to a table, regardless of whether there is another element with the same 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>t</em>&nbsp;</td><td>The table to add to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>The value to add. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd>When adding data, this function does not make a copy of the key or the value, so care should be taken to ensure that the values will not change after they have been added.. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g775cc7b0edd0411652cabd5fef83b457"></a><!-- doxytag: member="apr_tables.h::apr_table_clear" ref="g775cc7b0edd0411652cabd5fef83b457" args="(apr_table_t *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_table_clear           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete all of the elements from a table <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to clear </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g95fa4065f34b972a44d7d07bc9f41546"></a><!-- doxytag: member="apr_tables.h::apr_table_copy" ref="g95fa4065f34b972a44d7d07bc9f41546" args="(apr_pool_t *p, const apr_table_t *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a>* apr_table_copy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a new table and copy another table into it <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 the new table out of </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to copy </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>A copy of the table passed in </dd></dl>

</div>
</div><p>
<a class="anchor" name="gbc72ff8bb94ec0a98518115429077b8c"></a><!-- doxytag: member="apr_tables.h::apr_table_do" ref="gbc72ff8bb94ec0a98518115429077b8c" args="(apr_table_do_callback_fn_t *comp, void *rec, const apr_table_t *t,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int apr_table_do           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#g7ae9fe24b8b8355f608ffc4d5468b1be">apr_table_do_callback_fn_t</a> *&nbsp;</td>
          <td class="paramname"> <em>comp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>rec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Iterate over a table running the provided function once for every element in the table. If there is data passed in as a vararg, then the function is only run on those elements whose key matches something in the vararg. If the vararg is NULL, then every element is run through the function. Iteration continues while the function returns non-zero. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>comp</em>&nbsp;</td><td>The function to run </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rec</em>&nbsp;</td><td>The data to pass as the first argument to the function </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to iterate over </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>The vararg. If this is NULL, then all elements in the table are run through the function, otherwise only those whose key matches are run. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>FALSE if one of the comp() iterations returned zero; TRUE if all iterations returned non-zero </dd></dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__apr__tables.html#g7ae9fe24b8b8355f608ffc4d5468b1be">apr_table_do_callback_fn_t</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="g83152217f11a5c3a584429c7403b2c1d"></a><!-- doxytag: member="apr_tables.h::apr_table_elts" ref="g83152217f11a5c3a584429c7403b2c1d" args="(const apr_table_t *t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a>* apr_table_elts           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the elements from a table <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>An array containing the contents of the table </dd></dl>

</div>
</div><p>
<a class="anchor" name="g38d6c3ec174c80b13cd91887dbb46783"></a><!-- doxytag: member="apr_tables.h::apr_table_get" ref="g38d6c3ec174c80b13cd91887dbb46783" args="(const apr_table_t *t, const char *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* apr_table_get           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the value associated with a given key from the table. After this call, The data is still in the table <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to search for the key </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key to search for </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The value associated with the key, or NULL if the key does not exist. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gaee266fb19b0453bbaa1c62f7514b1fb"></a><!-- doxytag: member="apr_tables.h::apr_table_make" ref="gaee266fb19b0453bbaa1c62f7514b1fb" args="(apr_pool_t *p, int nelts)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a>* apr_table_make           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nelts</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Make a new table <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 the pool out of </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nelts</em>&nbsp;</td><td>The number of elements in the initial table. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The new table. </dd></dl>
<dl compact><dt><b>Warning:</b></dt><dd>This table can only store text data </dd></dl>

</div>
</div><p>
<a class="anchor" name="ga24bacc2005d1d00d55db0ca256d9043"></a><!-- doxytag: member="apr_tables.h::apr_table_merge" ref="ga24bacc2005d1d00d55db0ca256d9043" args="(apr_table_t *t, const char *key, const char *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_table_merge           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add data to a table by merging the value with data that has already been stored <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to search for the data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key to merge data for </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>The data to add </td></tr>
  </table>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd>If the key is not found, then this function acts like apr_table_add </dd></dl>

</div>
</div><p>
<a class="anchor" name="gb58cb0e7297cb8f5f0bef8de03c1beae"></a><!-- doxytag: member="apr_tables.h::apr_table_mergen" ref="gb58cb0e7297cb8f5f0bef8de03c1beae" args="(apr_table_t *t, const char *key, const char *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_table_mergen           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add data to a table by merging the value with data that has already been stored <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to search for the data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key to merge data for </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>The data to add </td></tr>
  </table>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd>If the key is not found, then this function acts like apr_table_addn </dd></dl>

</div>
</div><p>
<a class="anchor" name="gf0fc20bc27a453ff6724a1a02c2452c5"></a><!-- doxytag: member="apr_tables.h::apr_table_overlay" ref="gf0fc20bc27a453ff6724a1a02c2452c5" args="(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a>* apr_table_overlay           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>overlay</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>base</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Merge two tables into one new table <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 use for the new table </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>overlay</em>&nbsp;</td><td>The first table to put in the new table </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>base</em>&nbsp;</td><td>The table to add at the end of the new table </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>A new table containing all of the data from the two passed in </dd></dl>

</div>
</div><p>
<a class="anchor" name="g4576e46d6ce962663de8098d3153a88b"></a><!-- doxytag: member="apr_tables.h::apr_table_set" ref="g4576e46d6ce962663de8098d3153a88b" args="(apr_table_t *t, const char *key, const char *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_table_set           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a key/value pair to a table, if another element already exists with the same key, this will over-write the old data. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to add the data to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key fo use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>The value to add </td></tr>
  </table>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd>When adding data, this function makes a copy of both the key and the value. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g8f0414143c5782e27cdbd5e0d96acf3c"></a><!-- doxytag: member="apr_tables.h::apr_table_setn" ref="g8f0414143c5782e27cdbd5e0d96acf3c" args="(apr_table_t *t, const char *key, const char *val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_table_setn           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a key/value pair to a table, if another element already exists with the same key, this will over-write the old data. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to add the data to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>The value to add </td></tr>
  </table>
</dl>
<dl compact><dt><b>Warning:</b></dt><dd>When adding data, this function does not make a copy of the key or the value, so care should be taken to ensure that the values will not change after they have been added.. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g1e0a17644ab1f705f1c013cfd8a1bdba"></a><!-- doxytag: member="apr_tables.h::apr_table_unset" ref="g1e0a17644ab1f705f1c013cfd8a1bdba" args="(apr_table_t *t, const char *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void apr_table_unset           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove data from the table <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to remove data from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key of the data being removed </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g8337d678f499a661b55cb416c1ed1587"></a><!-- doxytag: member="apr_tables.h::apr_table_vdo" ref="g8337d678f499a661b55cb416c1ed1587" args="(apr_table_do_callback_fn_t *comp, void *rec, const apr_table_t *t, va_list vp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int apr_table_vdo           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__apr__tables.html#g7ae9fe24b8b8355f608ffc4d5468b1be">apr_table_do_callback_fn_t</a> *&nbsp;</td>
          <td class="paramname"> <em>comp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>rec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__apr__tables.html#gfdafc0875a2cf6d44d17779ea91e4f1a">apr_table_t</a> *&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">va_list&nbsp;</td>
          <td class="paramname"> <em>vp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Iterate over a table running the provided function once for every element in the table. If there is data passed in as a vararg, then the function is only run on those element's whose key matches something in the vararg. If the vararg is NULL, then every element is run through the function. Iteration continues while the function returns non-zero. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>comp</em>&nbsp;</td><td>The function to run </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rec</em>&nbsp;</td><td>The data to pass as the first argument to the function </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>The table to iterate over </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>vp</em>&nbsp;</td><td>The vararg table. If this is NULL, then all elements in the table are run through the function, otherwise only those whose key matches are run. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>FALSE if one of the comp() iterations returned zero; TRUE if all iterations returned non-zero </dd></dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__apr__tables.html#g7ae9fe24b8b8355f608ffc4d5468b1be">apr_table_do_callback_fn_t</a> </dd></dl>

</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="gaf282eb934baa1e1dad2b18e7b58fb0a"></a><!-- doxytag: member="apr_array_header_t::elt_size" ref="gaf282eb934baa1e1dad2b18e7b58fb0a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="group__apr__tables.html#gaf282eb934baa1e1dad2b18e7b58fb0a">apr_array_header_t::elt_size</a><code> [inherited]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The amount of memory allocated for each element of the array 
</div>
</div><p>
<a class="anchor" name="g33904e25812b2bb44b43b46bdc3e31f5"></a><!-- doxytag: member="apr_array_header_t::elts" ref="g33904e25812b2bb44b43b46bdc3e31f5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* <a class="el" href="group__apr__tables.html#g33904e25812b2bb44b43b46bdc3e31f5">apr_array_header_t::elts</a><code> [inherited]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The elements in the array 
</div>
</div><p>
<a class="anchor" name="gadf3a2941bd9700c7712aa7f89248b17"></a><!-- doxytag: member="apr_table_entry_t::key_checksum" ref="gadf3a2941bd9700c7712aa7f89248b17" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">apr_uint32_t <a class="el" href="group__apr__tables.html#gadf3a2941bd9700c7712aa7f89248b17">apr_table_entry_t::key_checksum</a><code> [inherited]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A checksum for the key, for use by the apr_table internals 
</div>
</div><p>
<a class="anchor" name="gf1b7d0d51587955967ea9f46b397b95e"></a><!-- doxytag: member="apr_array_header_t::nalloc" ref="gf1b7d0d51587955967ea9f46b397b95e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="group__apr__tables.html#gf1b7d0d51587955967ea9f46b397b95e">apr_array_header_t::nalloc</a><code> [inherited]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The number of elements allocated in the array 
</div>
</div><p>
<a class="anchor" name="gcccc82cd58c6b03edefeaf67e5d627e6"></a><!-- doxytag: member="apr_array_header_t::nelts" ref="gcccc82cd58c6b03edefeaf67e5d627e6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="group__apr__tables.html#gcccc82cd58c6b03edefeaf67e5d627e6">apr_array_header_t::nelts</a><code> [inherited]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The number of active elements in the array 
</div>
</div><p>
<a class="anchor" name="g2179c531768d3294ce5b288156aaa218"></a><!-- doxytag: member="apr_table_entry_t::val" ref="g2179c531768d3294ce5b288156aaa218" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* <a class="el" href="group__apr__tables.html#g2179c531768d3294ce5b288156aaa218">apr_table_entry_t::val</a><code> [inherited]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The value for the current table entry 
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Tue May 31 12:20:26 2011 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.4.7 </small></address>
</body>
</html>