Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 1f1ab576b13e67c68689a724d5620e3f > files > 30

lib64ref_array-devel-0.1.3-5.mga4.x86_64.rpm

<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>libref_array: Interface</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libref_array
   &#160;<span id="projectnumber">0.2.91</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;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">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.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)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<!-- 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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>

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

<div class="header">
  <div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Interface</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gabfc89503d377fecbf66617fae2adbecf"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#gabfc89503d377fecbf66617fae2adbecf">ref_array_fn</a> )(void *elem, <a class="el" href="group__ref__array.html#ga0ac2a3e03871cc472a33ff6107f6f813">ref_array_del_enum</a> type, void *data)</td></tr>
<tr class="memdesc:gabfc89503d377fecbf66617fae2adbecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Element cleanup callback.  <a href="#gabfc89503d377fecbf66617fae2adbecf">More...</a><br/></td></tr>
<tr class="separator:gabfc89503d377fecbf66617fae2adbecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaafd40b7962198c153867b426fa170912"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#gaafd40b7962198c153867b426fa170912">ref_array_copy_cb</a> )(void *elem, void *new_elem)</td></tr>
<tr class="memdesc:gaafd40b7962198c153867b426fa170912"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy callback.  <a href="#gaafd40b7962198c153867b426fa170912">More...</a><br/></td></tr>
<tr class="separator:gaafd40b7962198c153867b426fa170912"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga0ac2a3e03871cc472a33ff6107f6f813"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga0ac2a3e03871cc472a33ff6107f6f813">ref_array_del_enum</a> </td></tr>
<tr class="memdesc:ga0ac2a3e03871cc472a33ff6107f6f813"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumeration of the delete modes.  <a href="group__ref__array.html#ga0ac2a3e03871cc472a33ff6107f6f813">More...</a><br/></td></tr>
<tr class="separator:ga0ac2a3e03871cc472a33ff6107f6f813"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga13bdf5bcd330e7df8b753dc651e0cfa7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga13bdf5bcd330e7df8b753dc651e0cfa7">ref_array_create</a> (struct ref_array **ra, size_t elem, uint32_t grow_by, <a class="el" href="group__ref__array.html#gabfc89503d377fecbf66617fae2adbecf">ref_array_fn</a> cb, void *data)</td></tr>
<tr class="memdesc:ga13bdf5bcd330e7df8b753dc651e0cfa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create referenced array.  <a href="#ga13bdf5bcd330e7df8b753dc651e0cfa7">More...</a><br/></td></tr>
<tr class="separator:ga13bdf5bcd330e7df8b753dc651e0cfa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7cab074a24f06fd60fcb092de62f71ca"><td class="memItemLeft" align="right" valign="top">struct ref_array *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga7cab074a24f06fd60fcb092de62f71ca">ref_array_getref</a> (struct ref_array *ra)</td></tr>
<tr class="memdesc:ga7cab074a24f06fd60fcb092de62f71ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get new reference to an array.  <a href="#ga7cab074a24f06fd60fcb092de62f71ca">More...</a><br/></td></tr>
<tr class="separator:ga7cab074a24f06fd60fcb092de62f71ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad12fcbb73ffa658e2ef9fc297c0afba3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#gad12fcbb73ffa658e2ef9fc297c0afba3">ref_array_destroy</a> (struct ref_array *ra)</td></tr>
<tr class="memdesc:gad12fcbb73ffa658e2ef9fc297c0afba3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the array.  <a href="#gad12fcbb73ffa658e2ef9fc297c0afba3">More...</a><br/></td></tr>
<tr class="separator:gad12fcbb73ffa658e2ef9fc297c0afba3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga856974365ce14d5bfb1a81020c528c0a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga856974365ce14d5bfb1a81020c528c0a">ref_array_append</a> (struct ref_array *ra, void *element)</td></tr>
<tr class="memdesc:ga856974365ce14d5bfb1a81020c528c0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add new element to the array.  <a href="#ga856974365ce14d5bfb1a81020c528c0a">More...</a><br/></td></tr>
<tr class="separator:ga856974365ce14d5bfb1a81020c528c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga49fa7f1a8a3fa7c8dbdcb55b28d5e54c"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga49fa7f1a8a3fa7c8dbdcb55b28d5e54c">ref_array_get</a> (struct ref_array *ra, uint32_t idx, void *acptr)</td></tr>
<tr class="memdesc:ga49fa7f1a8a3fa7c8dbdcb55b28d5e54c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get element data.  <a href="#ga49fa7f1a8a3fa7c8dbdcb55b28d5e54c">More...</a><br/></td></tr>
<tr class="separator:ga49fa7f1a8a3fa7c8dbdcb55b28d5e54c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4447316ccc23d13fa15cea76f5c5e3c9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga4447316ccc23d13fa15cea76f5c5e3c9">ref_array_getlen</a> (struct ref_array *ra, uint32_t *len)</td></tr>
<tr class="memdesc:ga4447316ccc23d13fa15cea76f5c5e3c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get array length.  <a href="#ga4447316ccc23d13fa15cea76f5c5e3c9">More...</a><br/></td></tr>
<tr class="separator:ga4447316ccc23d13fa15cea76f5c5e3c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0226495cda6dd0b863d3ae82e9c80947"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga0226495cda6dd0b863d3ae82e9c80947">ref_array_len</a> (struct ref_array *ra)</td></tr>
<tr class="memdesc:ga0226495cda6dd0b863d3ae82e9c80947"><td class="mdescLeft">&#160;</td><td class="mdescRight">Array length.  <a href="#ga0226495cda6dd0b863d3ae82e9c80947">More...</a><br/></td></tr>
<tr class="separator:ga0226495cda6dd0b863d3ae82e9c80947"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga89b5b3e4a4fbb1e943fa98055c751652"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga89b5b3e4a4fbb1e943fa98055c751652">ref_array_insert</a> (struct ref_array *ra, uint32_t idx, void *element)</td></tr>
<tr class="memdesc:ga89b5b3e4a4fbb1e943fa98055c751652"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert a new element into the array.  <a href="#ga89b5b3e4a4fbb1e943fa98055c751652">More...</a><br/></td></tr>
<tr class="separator:ga89b5b3e4a4fbb1e943fa98055c751652"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf2d7bee061c28c8f932422511121842a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#gaf2d7bee061c28c8f932422511121842a">ref_array_replace</a> (struct ref_array *ra, uint32_t idx, void *element)</td></tr>
<tr class="memdesc:gaf2d7bee061c28c8f932422511121842a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Replace element in the array.  <a href="#gaf2d7bee061c28c8f932422511121842a">More...</a><br/></td></tr>
<tr class="separator:gaf2d7bee061c28c8f932422511121842a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0ffc16563bf093936f7e716e88a91e38"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga0ffc16563bf093936f7e716e88a91e38">ref_array_remove</a> (struct ref_array *ra, uint32_t idx)</td></tr>
<tr class="memdesc:ga0ffc16563bf093936f7e716e88a91e38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove element from the array.  <a href="#ga0ffc16563bf093936f7e716e88a91e38">More...</a><br/></td></tr>
<tr class="separator:ga0ffc16563bf093936f7e716e88a91e38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab95cf1c92684f0e0876a612fb1350f89"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#gab95cf1c92684f0e0876a612fb1350f89">ref_array_swap</a> (struct ref_array *ra, uint32_t idx1, uint32_t idx2)</td></tr>
<tr class="memdesc:gab95cf1c92684f0e0876a612fb1350f89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swap two elements in the array.  <a href="#gab95cf1c92684f0e0876a612fb1350f89">More...</a><br/></td></tr>
<tr class="separator:gab95cf1c92684f0e0876a612fb1350f89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a71c9047c106a96c5fab4cfac3837d8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#ga6a71c9047c106a96c5fab4cfac3837d8">ref_array_reset</a> (struct ref_array *ra)</td></tr>
<tr class="memdesc:ga6a71c9047c106a96c5fab4cfac3837d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset array.  <a href="#ga6a71c9047c106a96c5fab4cfac3837d8">More...</a><br/></td></tr>
<tr class="separator:ga6a71c9047c106a96c5fab4cfac3837d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae2b8a4927d8e315bc27ac37f660e2db1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ref__array.html#gae2b8a4927d8e315bc27ac37f660e2db1">ref_array_copy</a> (struct ref_array *ra, <a class="el" href="group__ref__array.html#gaafd40b7962198c153867b426fa170912">ref_array_copy_cb</a> copy_cb, <a class="el" href="group__ref__array.html#gabfc89503d377fecbf66617fae2adbecf">ref_array_fn</a> cb, void *data, struct ref_array **copy_ra)</td></tr>
<tr class="memdesc:gae2b8a4927d8e315bc27ac37f660e2db1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy array.  <a href="#gae2b8a4927d8e315bc27ac37f660e2db1">More...</a><br/></td></tr>
<tr class="separator:gae2b8a4927d8e315bc27ac37f660e2db1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="gaafd40b7962198c153867b426fa170912"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef int(* ref_array_copy_cb)(void *elem, void *new_elem)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copy callback. </p>
<p>Callback that can be provided by a caller to copy elements of the array.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">elem</td><td>Pointer to the array element. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">new_elem</td><td>Pointer to pointer to the new element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
ENOMEM - No memory. </dd>
<dd>
EINVAL - Invalid argument.</dd></dl>
<p>Callback can return other errors and the implementor's discretion. </p>

</div>
</div>
<a class="anchor" id="gabfc89503d377fecbf66617fae2adbecf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* ref_array_fn)(void *elem, <a class="el" href="group__ref__array.html#ga0ac2a3e03871cc472a33ff6107f6f813">ref_array_del_enum</a> type, void *data)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Element cleanup callback. </p>
<p>Callback that can be provided by a caller to free data when the storage is actually destroyed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">elem</td><td>Pointer to the array element. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>Type of the operation performed. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Application data that can be used inside the callback. No return value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga0ac2a3e03871cc472a33ff6107f6f813"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__ref__array.html#ga0ac2a3e03871cc472a33ff6107f6f813">ref_array_del_enum</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enumeration of the delete modes. </p>
<p>When the array is destroyed each element of the array most likely needs to be freed. Same is true when an element is removed from the array. However the caller might need to do different things with the data depending on whether the array is destroyed or whether the element is removed. This enumeration defines constants that you used to indicate which operation was performed. </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga856974365ce14d5bfb1a81020c528c0a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ref_array_append </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>element</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add new element to the array. </p>
<p>Appends an element to the end of the array.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">element</td><td>Pointer to data. The number of bytes defined at the array creation as the array size will be copied into the array element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
ENOMEM - No memory. </dd>
<dd>
EINVAL - Invalid argument. </dd></dl>

</div>
</div>
<a class="anchor" id="gae2b8a4927d8e315bc27ac37f660e2db1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ref_array_copy </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__ref__array.html#gaafd40b7962198c153867b426fa170912">ref_array_copy_cb</a>&#160;</td>
          <td class="paramname"><em>copy_cb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__ref__array.html#gabfc89503d377fecbf66617fae2adbecf">ref_array_fn</a>&#160;</td>
          <td class="paramname"><em>cb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct ref_array **&#160;</td>
          <td class="paramname"><em>copy_ra</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copy array. </p>
<p>Function copies all contents calling a provided callback for every entry of the array.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object to copy. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">copy_cb</td><td>Copy callback. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cb</td><td>Cleanup callback, will be used to clean data in the array copy. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Caller supplied data passed to cleanup callback. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">copy_ra</td><td>Newly allocated copy.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
ENOMEM - No memory. </dd>
<dd>
EINVAL - Invalid argument. </dd></dl>

</div>
</div>
<a class="anchor" id="ga13bdf5bcd330e7df8b753dc651e0cfa7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ref_array_create </td>
          <td>(</td>
          <td class="paramtype">struct ref_array **&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>elem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>grow_by</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__ref__array.html#gabfc89503d377fecbf66617fae2adbecf">ref_array_fn</a>&#160;</td>
          <td class="paramname"><em>cb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create referenced array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">ra</td><td>Newly created array object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">elem</td><td>Element size in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">grow_by</td><td>Defines how many elements should be allocated together as one chunk. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cb</td><td>Cleanup callback. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Caller supplied data passed to cleanup callback.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
ENOMEM - No memory. </dd>
<dd>
EINVAL - Invalid argument. </dd></dl>

</div>
</div>
<a class="anchor" id="gad12fcbb73ffa658e2ef9fc297c0afba3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ref_array_destroy </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete the array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object or a reference. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga49fa7f1a8a3fa7c8dbdcb55b28d5e54c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* ref_array_get </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>acptr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get element data. </p>
<p>Retrieves data from the array element.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>Index of the array element. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">acptr</td><td>Pointer to the memory where the element's data will be copied. Can be NULL. In this case nothing is copied.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the data stored in the element. Conventionally it should be a const pointer, however such declaration would make using variable that receives the result of this function immutable. This is very inconvenient because such variable should be able to point to data related to multiple elements of the array.</dd>
<dd>
Pointer to the element's data. </dd>
<dd>
NULL if index is out of range. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4447316ccc23d13fa15cea76f5c5e3c9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ref_array_getlen </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t *&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get array length. </p>
<p>Determines length of the array.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">len</td><td>Variable will receive the length of the array.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid argument. </dd></dl>

</div>
</div>
<a class="anchor" id="ga7cab074a24f06fd60fcb092de62f71ca"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct ref_array* ref_array_getref </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get new reference to an array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A new reference to an array object. </dd>
<dd>
NULL - Invalid argument. </dd></dl>

</div>
</div>
<a class="anchor" id="ga89b5b3e4a4fbb1e943fa98055c751652"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ref_array_insert </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>element</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Insert a new element into the array. </p>
<p>Inserts an element into the array. If idx is 0 the element will be added to the beginning of the array, if idx is 1 the element will be added after the first element of the array and so on. If index is greater than the number of elements in the array the function returns error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>Index of the array element. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">element</td><td>Pointer to data. The number of bytes defined at the array creation as the array size will be copied into the array element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
ENOMEM - No memory. </dd>
<dd>
EINVAL - Invalid argument. </dd>
<dd>
ERANGE - Index is our of range. </dd></dl>

</div>
</div>
<a class="anchor" id="ga0226495cda6dd0b863d3ae82e9c80947"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t ref_array_len </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Array length. </p>
<p>Alternative function to get length.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Length of the array. Returns 0 if the array is invalid. </dd></dl>

</div>
</div>
<a class="anchor" id="ga0ffc16563bf093936f7e716e88a91e38"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ref_array_remove </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>idx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Remove element from the array. </p>
<p>The element is removed and the length is decreased by 1. If index is greater than the number of elements in the array the function returns error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>Index of the array element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid argument. </dd>
<dd>
ERANGE - Index is our of range. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf2d7bee061c28c8f932422511121842a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ref_array_replace </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>element</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Replace element in the array. </p>
<p>Replace an element of the array identified by index with a new value. If index is greater than the number of elements in the array the function returns error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>Index of the array element. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">element</td><td>Pointer to data. The number of bytes defined at the array creation as the array size will be copied into the array element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
ENOMEM - No memory. </dd>
<dd>
EINVAL - Invalid argument. </dd>
<dd>
ERANGE - Index is our of range. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6a71c9047c106a96c5fab4cfac3837d8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ref_array_reset </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reset array. </p>
<p>Function clears all contents without destroying the object. The delete callback will be called for every element of the array from the beginning to the end passing in REF_ARRAY_DESTROY value. All the storage for the array will be deallocated. After the call the array will be empty as if just created.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object. No return value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gab95cf1c92684f0e0876a612fb1350f89"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ref_array_swap </td>
          <td>(</td>
          <td class="paramtype">struct ref_array *&#160;</td>
          <td class="paramname"><em>ra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>idx1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>idx2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Swap two elements in the array. </p>
<p>If any of the indexes is greater than the number of elements in the array the function returns error.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ra</td><td>Existing array object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">idx1</td><td>Index of the array element. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">idx2</td><td>Index of the array element.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 - Success. </dd>
<dd>
EINVAL - Invalid argument. </dd>
<dd>
ERANGE - Index is our of range. </dd>
<dd>
ENOMEM - No memory. </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 23:51:10 for libref_array by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>