Sophie

Sophie

distrib > Mandriva > current > x86_64 > by-pkgid > e68df492b0c9f27db58b721fc79af4ec > files > 19

apache-mod_spin-1.2.0-2mdv2010.1.x86_64.rpm

<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>mod_spin: Data functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <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="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Data functions</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga41ce4663dc6e54c8a8f73cb2de9aa210">rxv_spin_multi</a>(d)&nbsp;&nbsp;&nbsp;(!rxv_spin_string(d) &amp;&amp; rxv_spin_size(d)&gt;0)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga4d63cb5977249de38f04df85a2ba307a">rxv_spin_single</a>(d)&nbsp;&nbsp;&nbsp;(!rxv_spin_multi(d))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga89cad6b25dc92ec8081b87ddfc9cd27c">rxv_spin_strim2</a>(s)&nbsp;&nbsp;&nbsp;rxv_spin_strim((s),(RXV_SPIN_TRIM_LEFT|RXV_SPIN_TRIM_RIGHT))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga1fda8d3e392ce6162a4f19b013003017">rxv_spin_striml</a>(s)&nbsp;&nbsp;&nbsp;rxv_spin_strim((s),(RXV_SPIN_TRIM_LEFT))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga4c77731f8cbc146d21f8ca7deff1f95c">rxv_spin_strimr</a>(s)&nbsp;&nbsp;&nbsp;rxv_spin_strim((s),(RXV_SPIN_TRIM_RIGHT))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga35fd3d13e70658a55284aec3c1cd1489">rxv_spin_lower</a>(s)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga987435a13ed3ac83239eae6872da72b5">rxv_spin_upper</a>(s)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#gae6edd0e6ad50b75473c9c54e452b80eb">rxv_spin_trim</a>(s, w)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga2d17ec536ebb8539652ce974330d9163">rxv_spin_trim2</a>(s)&nbsp;&nbsp;&nbsp;rxv_spin_trim((s),(RXV_SPIN_TRIM_LEFT|RXV_SPIN_TRIM_RIGHT))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga8b51480ad0bd4f1537f4721ae643b4b4">rxv_spin_triml</a>(s)&nbsp;&nbsp;&nbsp;rxv_spin_trim((s),(RXV_SPIN_TRIM_LEFT))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga7ac26826339e09bd22fb4e86c802420f">rxv_spin_trimr</a>(s)&nbsp;&nbsp;&nbsp;rxv_spin_trim((s),(RXV_SPIN_TRIM_RIGHT))</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct rxv_spin_data&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct rxv_spin_curs&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga9500f45d0e0c6ae380804ace971c405c">rxv_spin_curs_t</a></td></tr>
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga4b56b9a36374e17accb097e6cd225a94">rxv_spin_trim_e</a> { <a class="el" href="group__rxv__spin__data__functions.html#gga4b56b9a36374e17accb097e6cd225a94af68652f021e466e1550e15111c8d0680">RXV_SPIN_TRIM_LEFT</a> = 1, 
<a class="el" href="group__rxv__spin__data__functions.html#gga4b56b9a36374e17accb097e6cd225a94a6d7a394eb17a7ab83f1a49c818659175">RXV_SPIN_TRIM_RIGHT</a>
 }</td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga5709e6032cd99e987aac2f4aa7fef25e">rxv_spin_datum</a> (apr_pool_t *pool, const char *str, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga4a41f05c9dce3882e82d6575363a55fe">rxv_spin_mdatum</a> (apr_pool_t *pool, const char *str, apr_size_t size, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#gad5a9f878ed7648f06ffa03e2313cf0d3">rxv_spin_string</a> (<a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *single)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">apr_hash_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#gafacaa26659037f7d0474f18e92c42c2c">rxv_spin_guts</a> (<a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *rows)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">apr_size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga960aefa01f177d24db55785cb1e4e129">rxv_spin_size</a> (<a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga1c360255e11f73cf0ec0d5cec1207994">rxv_spin_column</a> (apr_pool_t *pool, const char *name, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data,...)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga79387c6ea52fee37d5c9911d2ed7635a">rxv_spin_parse</a> (apr_pool_t *pool, const char *name, char *str, const char *sep, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga0932a8c30a0542d2344a1956c7ce600d">rxv_spin_array</a> (apr_pool_t *pool, const char *name, apr_array_header_t *arr, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#gae0e194b72e67150cbf12f20e5a33e8d8">rxv_spin_brigade</a> (apr_pool_t *pool, const char *name, apr_bucket_brigade *bb, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga73fbf71e9a9d1446a710368ad2621e80">rxv_spin_null</a> (apr_pool_t *pool, const char *name, apr_size_t size, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga51176ddf52cf731fe91dd53fef658767">rxv_spin_rows</a> (apr_pool_t *pool, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data,...)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">apr_size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga91d0364d0dcc0a46ebab5e78bd4aa7b8">rxv_spin_first</a> (apr_pool_t *pool, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *rows,...)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">apr_size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga02b7fc95ed70145c380e0a135310181c">rxv_spin_next</a> (<a class="el" href="group__rxv__spin__data__functions.html#ga9500f45d0e0c6ae380804ace971c405c">rxv_spin_curs_t</a> *curs)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga97bc0545ee9a24342291eaa857c2bf0e">rxv_spin_this</a> (<a class="el" href="group__rxv__spin__data__functions.html#ga9500f45d0e0c6ae380804ace971c405c">rxv_spin_curs_t</a> *curs)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga967fe232cbd4df19b030ea638511a7df">rxv_spin_entry</a> (<a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *rows, const char *name, apr_size_t index)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga33122f7d6b5785f14a8022345d3bb9f5">rxv_spin_resize</a> (<a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data, apr_size_t size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga6d1c854d241322b183d6251ac313c0a9">rxv_spin_copy</a> (apr_pool_t *pool, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *src, <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga7e967f9937cb94b33c199b2db519bc42">rxv_spin_slower</a> (const char *str)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga793722b4b78eaefdec22f4bbd0603052">rxv_spin_supper</a> (const char *str)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__rxv__spin__data__functions.html#ga97b39242934ee83c93820d2dc7eed984">rxv_spin_strim</a> (const char *str, <a class="el" href="group__rxv__spin__data__functions.html#ga4b56b9a36374e17accb097e6cd225a94">rxv_spin_trim_e</a> what)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Data functions (mod_spin API) </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga41ce4663dc6e54c8a8f73cb2de9aa210"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_multi" ref="ga41ce4663dc6e54c8a8f73cb2de9aa210" args="(d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_multi</td>
          <td>(</td>
          <td class="paramtype">d&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;(!rxv_spin_string(d) &amp;&amp; rxv_spin_size(d)&gt;0)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check if data is of rows type </p>

</div>
</div>
<a class="anchor" id="ga4d63cb5977249de38f04df85a2ba307a"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_single" ref="ga4d63cb5977249de38f04df85a2ba307a" args="(d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_single</td>
          <td>(</td>
          <td class="paramtype">d&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;(!rxv_spin_multi(d))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check if data is of single type </p>

</div>
</div>
<a class="anchor" id="ga89cad6b25dc92ec8081b87ddfc9cd27c"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_strim2" ref="ga89cad6b25dc92ec8081b87ddfc9cd27c" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_strim2</td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_strim((s),(RXV_SPIN_TRIM_LEFT|RXV_SPIN_TRIM_RIGHT))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>trim string on both sides </p>

</div>
</div>
<a class="anchor" id="ga1fda8d3e392ce6162a4f19b013003017"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_striml" ref="ga1fda8d3e392ce6162a4f19b013003017" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_striml</td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_strim((s),(RXV_SPIN_TRIM_LEFT))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>trim string on the left side </p>

</div>
</div>
<a class="anchor" id="ga4c77731f8cbc146d21f8ca7deff1f95c"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_strimr" ref="ga4c77731f8cbc146d21f8ca7deff1f95c" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_strimr</td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_strim((s),(RXV_SPIN_TRIM_RIGHT))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>trim string on the right side </p>

</div>
</div>
<a class="anchor" id="ga35fd3d13e70658a55284aec3c1cd1489"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_lower" ref="ga35fd3d13e70658a55284aec3c1cd1489" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_lower</td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">((s)?(<a class="code" href="group__rxv__spin__data__functions.html#ga4d63cb5977249de38f04df85a2ba307a">rxv_spin_single</a>(s)                                            \
              ?<a class="code" href="group__rxv__spin__data__functions.html#ga5709e6032cd99e987aac2f4aa7fef25e">rxv_spin_datum</a>(NULL,<a class="code" href="group__rxv__spin__data__functions.html#ga7e967f9937cb94b33c199b2db519bc42">rxv_spin_slower</a>(<a class="code" href="group__rxv__spin__data__functions.html#gad5a9f878ed7648f06ffa03e2313cf0d3">rxv_spin_string</a>(s)),(s)) \
              :NULL)                                                        \
            :NULL)
</pre></div><p>convert single to lowercase </p>

</div>
</div>
<a class="anchor" id="ga987435a13ed3ac83239eae6872da72b5"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_upper" ref="ga987435a13ed3ac83239eae6872da72b5" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_upper</td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">((s)?(<a class="code" href="group__rxv__spin__data__functions.html#ga4d63cb5977249de38f04df85a2ba307a">rxv_spin_single</a>(s)                                            \
              ?<a class="code" href="group__rxv__spin__data__functions.html#ga5709e6032cd99e987aac2f4aa7fef25e">rxv_spin_datum</a>(NULL,<a class="code" href="group__rxv__spin__data__functions.html#ga793722b4b78eaefdec22f4bbd0603052">rxv_spin_supper</a>(<a class="code" href="group__rxv__spin__data__functions.html#gad5a9f878ed7648f06ffa03e2313cf0d3">rxv_spin_string</a>(s)),(s)) \
              :NULL)                                                        \
            :NULL)
</pre></div><p>convert single to uppercase </p>

</div>
</div>
<a class="anchor" id="gae6edd0e6ad50b75473c9c54e452b80eb"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_trim" ref="gae6edd0e6ad50b75473c9c54e452b80eb" args="(s, w)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_trim</td>
          <td>(</td>
          <td class="paramtype">s, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">w&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">((s)?(<a class="code" href="group__rxv__spin__data__functions.html#ga4d63cb5977249de38f04df85a2ba307a">rxv_spin_single</a>(s)                                               \
              ?<a class="code" href="group__rxv__spin__data__functions.html#ga5709e6032cd99e987aac2f4aa7fef25e">rxv_spin_datum</a>(NULL,<a class="code" href="group__rxv__spin__data__functions.html#ga97b39242934ee83c93820d2dc7eed984">rxv_spin_strim</a>(<a class="code" href="group__rxv__spin__data__functions.html#gad5a9f878ed7648f06ffa03e2313cf0d3">rxv_spin_string</a>(s),(w)),(s)) \
              :NULL)                                                           \
            :NULL)
</pre></div><p>trim single </p>

</div>
</div>
<a class="anchor" id="ga2d17ec536ebb8539652ce974330d9163"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_trim2" ref="ga2d17ec536ebb8539652ce974330d9163" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_trim2</td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_trim((s),(RXV_SPIN_TRIM_LEFT|RXV_SPIN_TRIM_RIGHT))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>trim single on both sides </p>

</div>
</div>
<a class="anchor" id="ga8b51480ad0bd4f1537f4721ae643b4b4"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_triml" ref="ga8b51480ad0bd4f1537f4721ae643b4b4" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_triml</td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_trim((s),(RXV_SPIN_TRIM_LEFT))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>trim single on the left side </p>

</div>
</div>
<a class="anchor" id="ga7ac26826339e09bd22fb4e86c802420f"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_trimr" ref="ga7ac26826339e09bd22fb4e86c802420f" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define rxv_spin_trimr</td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;rxv_spin_trim((s),(RXV_SPIN_TRIM_RIGHT))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>trim single on the right side </p>

</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="gaf40e2976488da2cfc4c1ec4464f8c6be"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_data_t" ref="gaf40e2976488da2cfc4c1ec4464f8c6be" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct rxv_spin_data <a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>data type </p>

</div>
</div>
<a class="anchor" id="ga9500f45d0e0c6ae380804ace971c405c"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_curs_t" ref="ga9500f45d0e0c6ae380804ace971c405c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct rxv_spin_curs <a class="el" href="group__rxv__spin__data__functions.html#ga9500f45d0e0c6ae380804ace971c405c">rxv_spin_curs_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>cursor type </p>

</div>
</div>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="ga4b56b9a36374e17accb097e6cd225a94"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_trim_e" ref="ga4b56b9a36374e17accb097e6cd225a94" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__rxv__spin__data__functions.html#ga4b56b9a36374e17accb097e6cd225a94">rxv_spin_trim_e</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga4b56b9a36374e17accb097e6cd225a94af68652f021e466e1550e15111c8d0680"></a><!-- doxytag: member="RXV_SPIN_TRIM_LEFT" ref="gga4b56b9a36374e17accb097e6cd225a94af68652f021e466e1550e15111c8d0680" args="" -->RXV_SPIN_TRIM_LEFT</em>&nbsp;</td><td>
<p>trim whitespace on the left </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga4b56b9a36374e17accb097e6cd225a94a6d7a394eb17a7ab83f1a49c818659175"></a><!-- doxytag: member="RXV_SPIN_TRIM_RIGHT" ref="gga4b56b9a36374e17accb097e6cd225a94a6d7a394eb17a7ab83f1a49c818659175" args="" -->RXV_SPIN_TRIM_RIGHT</em>&nbsp;</td><td>
<p>trim whitespace on the right </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga5709e6032cd99e987aac2f4aa7fef25e"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_datum" ref="ga5709e6032cd99e987aac2f4aa7fef25e" args="(apr_pool_t *pool, const char *str, rxv_spin_data_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_datum </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create single data from from a nul terminated string. String is not copied.</p>
<dl><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 for allocation of data structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>String to create data from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, structure allocated from the pool, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga5709e6032cd99e987aac2f4aa7fef25e">rxv_spin_datum</a>(pool,<span class="stringliteral">&quot;some string&quot;</span>,NULL);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Pool can be NULL is data is not NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4a41f05c9dce3882e82d6575363a55fe"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_mdatum" ref="ga4a41f05c9dce3882e82d6575363a55fe" args="(apr_pool_t *pool, const char *str, apr_size_t size, rxv_spin_data_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_mdatum </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">apr_size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create single data from from a counted string. Although the string is counted, it has to end with a nul character. This function will check for it and if it isn't there, it'll refuse to create the single. Keep in mind that the memory allocated for the counted string will be size + 1, meaning, if it isn't, the check for that nul character at the end may cause a segfault. String is not copied.</p>
<dl><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 for allocation of data structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>String to create data from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>Size of the string, not counting the ending nul character </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, structure allocated from the pool, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga4a41f05c9dce3882e82d6575363a55fe">rxv_spin_mdatum</a>(pool,<span class="stringliteral">&quot;1234567890&quot;</span>,10,NULL);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Pool can be NULL is data is not NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="gad5a9f878ed7648f06ffa03e2313cf0d3"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_string" ref="gad5a9f878ed7648f06ffa03e2313cf0d3" args="(rxv_spin_data_t *single)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* rxv_spin_string </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>single</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get a nul terminated string from single data. String is not copied.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>single</em>&nbsp;</td><td>Single data </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>nul terminated string, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#gad5a9f878ed7648f06ffa03e2313cf0d3">rxv_spin_string</a>(data);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="gafacaa26659037f7d0474f18e92c42c2c"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_guts" ref="gafacaa26659037f7d0474f18e92c42c2c" args="(rxv_spin_data_t *rows)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">apr_hash_t* rxv_spin_guts </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>rows</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get a hash table from rows data. Hash table is not copied.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rows</em>&nbsp;</td><td>Rows data </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to hash table NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#gafacaa26659037f7d0474f18e92c42c2c">rxv_spin_guts</a>(data);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Values in the hash table are apr_array_header_t pointers. The arrays contain rxv_spin_data_t (meaning: array-&gt;elts is rxv_spin_data_t pointer), so it is possible to use this mechanism to iterate through individual colums as well. If you do modify data this way, make sure all arrays contained in the hash have the same size, or you may get segfaults when you try to access the data. Keep in mind that although you can find out the size of the rxv_spin_data_t this way, it is still an opaque type that should be accessed through mod_spin API. </dd></dl>

</div>
</div>
<a class="anchor" id="ga960aefa01f177d24db55785cb1e4e129"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_size" ref="ga960aefa01f177d24db55785cb1e4e129" args="(rxv_spin_data_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">apr_size_t rxv_spin_size </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the size of data. This does not include terminating nul byte for single. Number of rows is returned for rows.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Data </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of single or rows or 0 on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga960aefa01f177d24db55785cb1e4e129">rxv_spin_size</a>(data);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga1c360255e11f73cf0ec0d5cec1207994"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_column" ref="ga1c360255e11f73cf0ec0d5cec1207994" args="(apr_pool_t *pool, const char *name, rxv_spin_data_t *data,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_column </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</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></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create a column of data from other data. The data returned is of type rows. Data is not copied.</p>
<dl><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 for allocation of data structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the column </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>List of rxv_spin_data_t pointers, ending with NULL </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, structures allocated from the pool, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga1c360255e11f73cf0ec0d5cec1207994">rxv_spin_column</a>(pool,<span class="stringliteral">&quot;column1&quot;</span>,NULL,
                 <a class="code" href="group__rxv__spin__data__functions.html#ga51176ddf52cf731fe91dd53fef658767">rxv_spin_rows</a>(pool,NULL,x,y,z,NULL),
                 <a class="code" href="group__rxv__spin__data__functions.html#ga51176ddf52cf731fe91dd53fef658767">rxv_spin_rows</a>(pool,NULL,u,v,w,NULL),
                 <a class="code" href="group__rxv__spin__data__functions.html#ga4d63cb5977249de38f04df85a2ba307a">rxv_spin_single</a>(pool,<span class="stringliteral">&quot;some important data&quot;</span>,NULL),
                 NULL);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga79387c6ea52fee37d5c9911d2ed7635a"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_parse" ref="ga79387c6ea52fee37d5c9911d2ed7635a" args="(apr_pool_t *pool, const char *name, char *str, const char *sep, rxv_spin_data_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_parse </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>sep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create a column of data by parsing a string. The data returned is of type rows. String to parse is NOT copied into pool storage before parsing, therefore, if you want to parse constant strings, you MUST copy them. This function actually chops up the string that is passed into it, so if the string is supposed to be used somewhere else, you may get a nasty surprise after calling this function. It is safer to make a copy.</p>
<dl><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 for allocation of data structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the column </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>String to parse </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sep</em>&nbsp;</td><td>Separators to use when parsing </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, structures allocated from the pool, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga79387c6ea52fee37d5c9911d2ed7635a">rxv_spin_parse</a>(pool,<span class="stringliteral">&quot;column1&quot;</span>,
                apr_pstrdup(pool,<span class="stringliteral">&quot;first str,second str/third str&quot;</span>),
                <span class="stringliteral">&quot;,/&quot;</span>,NULL);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga0932a8c30a0542d2344a1956c7ce600d"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_array" ref="ga0932a8c30a0542d2344a1956c7ce600d" args="(apr_pool_t *pool, const char *name, apr_array_header_t *arr, rxv_spin_data_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_array </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">apr_array_header_t *&nbsp;</td>
          <td class="paramname"> <em>arr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create a column of data from an array of nul terminated strings. The data returned is of type rows. Strings are not copied.</p>
<dl><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 for allocation of data structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the column </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arr</em>&nbsp;</td><td>Array of pointers to nul terminated strings </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, structures allocated from the pool, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga0932a8c30a0542d2344a1956c7ce600d">rxv_spin_array</a>(pool,<span class="stringliteral">&quot;column1&quot;</span>,arr,NULL);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="gae0e194b72e67150cbf12f20e5a33e8d8"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_brigade" ref="gae0e194b72e67150cbf12f20e5a33e8d8" args="(apr_pool_t *pool, const char *name, apr_bucket_brigade *bb, rxv_spin_data_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_brigade </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">apr_bucket_brigade *&nbsp;</td>
          <td class="paramname"> <em>bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create a column of data by reading a bucket brigade. The data returned is of type rows. All read data is copied into the storage allocated from the pool.</p>
<dl><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 for allocation of data structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the column </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bb</em>&nbsp;</td><td>Bucket brigade to read </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, structures allocated from the pool, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#gae0e194b72e67150cbf12f20e5a33e8d8">rxv_spin_brigade</a>(pool,<span class="stringliteral">&quot;column1&quot;</span>,bb,NULL);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga73fbf71e9a9d1446a710368ad2621e80"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_null" ref="ga73fbf71e9a9d1446a710368ad2621e80" args="(apr_pool_t *pool, const char *name, apr_size_t size, rxv_spin_data_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_null </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">apr_size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Create an empty column of data.</p>
<dl><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 for allocation of data structures </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the column </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>Size (number of elements) of the column to create </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, structures allocated from the pool, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga73fbf71e9a9d1446a710368ad2621e80">rxv_spin_null</a>(pool,<span class="stringliteral">&quot;column1&quot;</span>,rxv_spin_rws_len(r),NULL);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>This function is useful for creating boilerplate columns. </dd></dl>

</div>
</div>
<a class="anchor" id="ga51176ddf52cf731fe91dd53fef658767"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_rows" ref="ga51176ddf52cf731fe91dd53fef658767" args="(apr_pool_t *pool, rxv_spin_data_t *data,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_rows </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</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></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Merge rows of data. If rows contain different array lengths, the biggest size will be used. Data is not copied.</p>
<dl><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 for allocation of data structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>List of rxv_spin_data_t pointers, ending with NULL </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, structures allocated from the pool, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga51176ddf52cf731fe91dd53fef658767">rxv_spin_rows</a>(pool,NULL,def,ghi,xyz,NULL);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Rows that appear later in the argument list override columns of the same name from earlier arguments. If columns need to have their size adjusted, empty elements will be pushed to the end of the arrays that columns point to. Note that give that data isn't copied, this resizing affects original columns too. </dd></dl>

</div>
</div>
<a class="anchor" id="ga91d0364d0dcc0a46ebab5e78bd4aa7b8"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_first" ref="ga91d0364d0dcc0a46ebab5e78bd4aa7b8" args="(apr_pool_t *pool, rxv_spin_data_t *rows,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">apr_size_t rxv_spin_first </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>rows</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></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get first row of data.</p>
<dl><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 for allocation of data structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rows</em>&nbsp;</td><td>Data to get the first row from </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>List of column names (constant pointer to nul terminated string) and cursors (pointer to pointer of rxv_spin_curs_t), ending with NULL </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if successful, or 0 if no rows available </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga9500f45d0e0c6ae380804ace971c405c">rxv_spin_curs_t</a> *c1=NULL,*c2=NULL;

 <a class="code" href="group__rxv__spin__data__functions.html#ga91d0364d0dcc0a46ebab5e78bd4aa7b8">rxv_spin_first</a>(pool,rows,<span class="stringliteral">&quot;column1&quot;</span>,&amp;c1,<span class="stringliteral">&quot;column2&quot;</span>,&amp;c2,NULL);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga02b7fc95ed70145c380e0a135310181c"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_next" ref="ga02b7fc95ed70145c380e0a135310181c" args="(rxv_spin_curs_t *curs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">apr_size_t rxv_spin_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#ga9500f45d0e0c6ae380804ace971c405c">rxv_spin_curs_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curs</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get next row of data.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>curs</em>&nbsp;</td><td>Pointer to the cursor </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>current row number, counted from 1, or 0 if no more available </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <span class="keywordflow">for</span>(r=<a class="code" href="group__rxv__spin__data__functions.html#ga91d0364d0dcc0a46ebab5e78bd4aa7b8">rxv_spin_first</a>(p,rws,<span class="stringliteral">&quot;c1&quot;</span>,&amp;c1,NULL);r;r=<a class="code" href="group__rxv__spin__data__functions.html#ga02b7fc95ed70145c380e0a135310181c">rxv_spin_next</a>(c1)){
   ...
 }
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Note that it is sufficient to call <a class="el" href="group__rxv__spin__data__functions.html#ga02b7fc95ed70145c380e0a135310181c">rxv_spin_next()</a> just once on any of the cursors that have been initialised through <a class="el" href="group__rxv__spin__data__functions.html#ga91d0364d0dcc0a46ebab5e78bd4aa7b8">rxv_spin_first()</a> to get the next row on all of them. </dd></dl>

</div>
</div>
<a class="anchor" id="ga97bc0545ee9a24342291eaa857c2bf0e"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_this" ref="ga97bc0545ee9a24342291eaa857c2bf0e" args="(rxv_spin_curs_t *curs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_this </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#ga9500f45d0e0c6ae380804ace971c405c">rxv_spin_curs_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curs</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get data from the cursor.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>curs</em>&nbsp;</td><td>Pointer to to the cursor </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> data=<a class="code" href="group__rxv__spin__data__functions.html#ga97bc0545ee9a24342291eaa857c2bf0e">rxv_spin_this</a>(curs);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga967fe232cbd4df19b030ea638511a7df"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_entry" ref="ga967fe232cbd4df19b030ea638511a7df" args="(rxv_spin_data_t *rows, const char *name, apr_size_t index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_entry </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>rows</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">apr_size_t&nbsp;</td>
          <td class="paramname"> <em>index</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get an entry from rows of data.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rows</em>&nbsp;</td><td>Rows data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the column </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>Row number, starting at 1 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>rxv_spin_data_t pointer, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> data=<a class="code" href="group__rxv__spin__data__functions.html#ga967fe232cbd4df19b030ea638511a7df">rxv_spin_entry</a>(rows,<span class="stringliteral">&quot;thiscolumn&quot;</span>,3);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga33122f7d6b5785f14a8022345d3bb9f5"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_resize" ref="ga33122f7d6b5785f14a8022345d3bb9f5" args="(rxv_spin_data_t *data, apr_size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_resize </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">apr_size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Resize rows.</p>
<dl><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 for all memory allocation </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Data, rows or metadata type only </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>New size </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>resized data, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga33122f7d6b5785f14a8022345d3bb9f5">rxv_spin_resize</a>(data,100);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>If the requested size is smaller than original size, only the size field will be adjusted. If the requested size is larger, the structures containing pointers to data will be copied to the newly allocated memory space. If you rely on the old data (i.e. before resizing) in any way, you might create big problems, even security related ones. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6d1c854d241322b183d6251ac313c0a9"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_copy" ref="ga6d1c854d241322b183d6251ac313c0a9" args="(apr_pool_t *pool, rxv_spin_data_t *src, rxv_spin_data_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a>* rxv_spin_copy </td>
          <td>(</td>
          <td class="paramtype">apr_pool_t *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#gaf40e2976488da2cfc4c1ec4464f8c6be">rxv_spin_data_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Make a copy of data. The result is a full, deep copy (i.e. there is not a single byte in common with the original).</p>
<dl><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 for all memory allocation </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Data to copy, any type </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>Pointer to existing data or NULL to allocate anew </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>copy of the data, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga6d1c854d241322b183d6251ac313c0a9">rxv_spin_copy</a>(pool,data,NULL);
</pre></div> </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>If you're using this function on rows, the copying might take a while, as all memory is going to be allocated from the pool and all data and structures are going to be copied, down to the last string. In such a scenario, only use this function if you are planning on putting the result into context as a new item, or you need to keep the original data for some other reason. </dd></dl>

</div>
</div>
<a class="anchor" id="ga7e967f9937cb94b33c199b2db519bc42"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_slower" ref="ga7e967f9937cb94b33c199b2db519bc42" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* rxv_spin_slower </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Convert a string to lowercase. String pushed into the function is modified, no copy is made.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>String to convert, nul terminated </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the same string in lowercase, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga7e967f9937cb94b33c199b2db519bc42">rxv_spin_slower</a>(single);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga793722b4b78eaefdec22f4bbd0603052"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_supper" ref="ga793722b4b78eaefdec22f4bbd0603052" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* rxv_spin_supper </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Convert a string to uppercase. String pushed into the function is modified, no copy is made.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>String to convert, nul terminated </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the same string in uppercase, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga793722b4b78eaefdec22f4bbd0603052">rxv_spin_supper</a>(single);
</pre></div> </dd></dl>

</div>
</div>
<a class="anchor" id="ga97b39242934ee83c93820d2dc7eed984"></a><!-- doxytag: member="rxv_spin.h::rxv_spin_strim" ref="ga97b39242934ee83c93820d2dc7eed984" args="(const char *str, rxv_spin_trim_e what)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* rxv_spin_strim </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__rxv__spin__data__functions.html#ga4b56b9a36374e17accb097e6cd225a94">rxv_spin_trim_e</a>&nbsp;</td>
          <td class="paramname"> <em>what</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Trim whitespace from a string. No copy is made. You MUST copy the string if you're trimming constant strings.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>String </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>what</em>&nbsp;</td><td>Trim left: RXV_SPIN_TRIM_LEFT, trim right: RXV_SPIN_TRIM_RIGHT </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the same string trimmed, NULL on error </dd></dl>
<dl class="user"><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rxv__spin__data__functions.html#ga97b39242934ee83c93820d2dc7eed984">rxv_spin_strim</a>(apr_strdup(pool,<span class="stringliteral">&quot;  string with whitespace   &quot;</span>,
                <a class="code" href="group__rxv__spin__data__functions.html#gga4b56b9a36374e17accb097e6cd225a94af68652f021e466e1550e15111c8d0680">RXV_SPIN_TRIM_LEFT</a>|<a class="code" href="group__rxv__spin__data__functions.html#gga4b56b9a36374e17accb097e6cd225a94a6d7a394eb17a7ab83f1a49c818659175">RXV_SPIN_TRIM_RIGHT</a>);
</pre></div> </dd></dl>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"/><address style="text-align: right;"><small>Generated on 29 Dec 2009 for mod_spin by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>