docs/api-2.1/map_8h_source.html

Thu, 29 Aug 2024 20:48:15 +0200

author
Mike Becker <universe@uap-core.de>
date
Thu, 29 Aug 2024 20:48:15 +0200
changeset 874
cdce47f34d48
parent 390
d345541018fa
permissions
-rw-r--r--

fix inserting via iterator correctly increases element count

fixes #423

<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ucx: /home/mike/workspace/c/ucx/src/ucx/map.h Source File</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/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></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 id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">ucx
   </div>
   <div id="projectbrief">UAP Common Extensions</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</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 id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">map.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="map_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *   1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *      notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *   2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *      notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *      documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#ifndef UCX_MAP_H</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#define UCX_MAP_H</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ucx_8h.html">ucx.h</a>&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="string_8h.html">string.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="allocator_8h.html">allocator.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#ifdef  __cplusplus</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="map_8h.html#a940896c4aa1b13e54c55c04c3efc186b">   65</a></span>&#160;<span class="preprocessor">#define UCX_MAP_FOREACH(key,value,iter) \</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">        for(UcxKey key;ucx_map_iter_next(&amp;iter,&amp;key, (void**)&amp;value);)</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="map_8h.html#a18e21948725b2da68c35da587a722033">   69</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxMap.html">UcxMap</a>          <a class="code" href="structUcxMap.html">UcxMap</a>;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="map_8h.html#ad63828bb23123fc01a5315a2bac3b142">   72</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxKey.html">UcxKey</a>          <a class="code" href="structUcxKey.html">UcxKey</a>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="map_8h.html#ad7d7a910a32113eb93eae11c3dc97b4b">   75</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxMapElement.html">UcxMapElement</a>   <a class="code" href="structUcxMapElement.html">UcxMapElement</a>;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="map_8h.html#ae36aff5f645948c54f51578b11fd87fb">   78</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structUcxMapIterator.html">UcxMapIterator</a>  <a class="code" href="structUcxMapIterator.html">UcxMapIterator</a>;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structUcxMap.html">   81</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structUcxMap.html">UcxMap</a> {</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">   83</a></span>&#160;    <a class="code" href="structUcxAllocator.html">UcxAllocator</a>  *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">   85</a></span>&#160;    <a class="code" href="structUcxMapElement.html">UcxMapElement</a> **<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">   87</a></span>&#160;    <span class="keywordtype">size_t</span>        <a class="code" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">size</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd">   89</a></span>&#160;    <span class="keywordtype">size_t</span>        <a class="code" href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd">count</a>;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;};</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structUcxKey.html">   93</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structUcxKey.html">UcxKey</a> {</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c">   95</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c">data</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="structUcxKey.html#abef01de37f355688f2ac797d2c280683">   97</a></span>&#160;    <span class="keywordtype">size_t</span>     <a class="code" href="structUcxKey.html#abef01de37f355688f2ac797d2c280683">len</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752">   99</a></span>&#160;    <span class="keywordtype">int</span>        <a class="code" href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752">hash</a>;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;};</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structUcxMapKey.html">  103</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structUcxMapKey.html">UcxMapKey</a> {</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5">  105</a></span>&#160;    <span class="keywordtype">void</span>    *<a class="code" href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5">data</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270">  107</a></span>&#160;    <span class="keywordtype">size_t</span>  <a class="code" href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270">len</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913">  109</a></span>&#160;    <span class="keywordtype">int</span>     <a class="code" href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913">hash</a>;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;};</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="structUcxMapElement.html">  113</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structUcxMapElement.html">UcxMapElement</a> {</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c">  115</a></span>&#160;    <span class="keywordtype">void</span>              *<a class="code" href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c">data</a>;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51">  118</a></span>&#160;    <a class="code" href="structUcxMapElement.html">UcxMapElement</a>     *<a class="code" href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51">next</a>;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structUcxMapElement.html#aa446141b708e106e2c8de1303318187c">  121</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structUcxMapKey.html">UcxMapKey</a>  key;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;};</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structUcxMapIterator.html">  125</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structUcxMapIterator.html">UcxMapIterator</a> {</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95">  127</a></span>&#160;    <a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span>  *<a class="code" href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95">map</a>;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f">  130</a></span>&#160;    <a class="code" href="structUcxMapElement.html">UcxMapElement</a> *<a class="code" href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f">cur</a>;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65">  138</a></span>&#160;    <span class="keywordtype">size_t</span>        <a class="code" href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65">index</a>;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;};</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">ucx_map_new</a>(<span class="keywordtype">size_t</span> <a class="code" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">size</a>);</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="map_8h.html#aed508a94c66cc15372503c64b70eb03e">ucx_map_new_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>, <span class="keywordtype">size_t</span> <a class="code" href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">size</a>);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="keywordtype">void</span> <a class="code" href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e">ucx_map_free</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>);</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="keywordtype">void</span> <a class="code" href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618">ucx_map_free_content</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr);</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="keywordtype">void</span> <a class="code" href="map_8h.html#a285e90e40681c6d9631c935dda0967f2">ucx_map_clear</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="keywordtype">int</span> <a class="code" href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425">ucx_map_copy</a>(<a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *from, <a class="code" href="structUcxMap.html">UcxMap</a> *to, <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4">ucx_map_clone</a>(<a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="map_8h.html#a9aea9103703d5c168420bb6bf85549ea">ucx_map_clone_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>,</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                        <a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> fnc, <span class="keywordtype">void</span> *data);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="keywordtype">int</span> <a class="code" href="map_8h.html#a174bce9fad554dd92b8da354e0d32512">ucx_map_rehash</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>);</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;<span class="keywordtype">int</span> <a class="code" href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="structUcxKey.html">UcxKey</a> key, <span class="keywordtype">void</span> *value);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;<span class="keywordtype">void</span>* <a class="code" href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a>(<a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="structUcxKey.html">UcxKey</a> key);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="keywordtype">void</span>* <a class="code" href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a>(<a class="code" href="structUcxMap.html">UcxMap</a> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>, <a class="code" href="structUcxKey.html">UcxKey</a> key);</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="map_8h.html#ac26a8615bfc8f47ee9eaceb47645f98e">  304</a></span>&#160;<span class="preprocessor">#define ucx_map_sstr_put(map, key, value) \</span></div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="preprocessor">    ucx_map_put(map, ucx_key(key.ptr, key.length), (void*)value)</span></div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="map_8h.html#ad9356b01425b934ab237b52339ac0cc3">  315</a></span>&#160;<span class="preprocessor">#define ucx_map_cstr_put(map, key, value) \</span></div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;<span class="preprocessor">    ucx_map_put(map, ucx_key(key, strlen(key)), (void*)value)</span></div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="map_8h.html#aaa30af79b4068c923895619e83f44367">  326</a></span>&#160;<span class="preprocessor">#define ucx_map_int_put(map, key, value) \</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;<span class="preprocessor">    ucx_map_put(map, ucx_key(&amp;key, sizeof(key)), (void*)value)</span></div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="map_8h.html#a14d385f6b7f371f0507861cabd2eab4e">  336</a></span>&#160;<span class="preprocessor">#define ucx_map_sstr_get(map, key) \</span></div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="preprocessor">    ucx_map_get(map, ucx_key(key.ptr, key.length))</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="map_8h.html#a64e1fb55498fa502dd2ed8ed69062cdd">  346</a></span>&#160;<span class="preprocessor">#define ucx_map_cstr_get(map, key) \</span></div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;<span class="preprocessor">    ucx_map_get(map, ucx_key(key, strlen(key)))</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="map_8h.html#aa1681bd2178553cd092fd24c4d681d3c">  356</a></span>&#160;<span class="preprocessor">#define ucx_map_int_get(map, key) \</span></div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="preprocessor">    ucx_map_get(map, ucx_key(&amp;key, sizeof(int)))</span></div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="map_8h.html#a48700ea86fadb9ea54d13010f9124df2">  366</a></span>&#160;<span class="preprocessor">#define ucx_map_sstr_remove(map, key) \</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="preprocessor">    ucx_map_remove(map, ucx_key(key.ptr, key.length))</span></div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="map_8h.html#a9c4405a5a75ecf64e2ef3d0c6501a9fe">  376</a></span>&#160;<span class="preprocessor">#define ucx_map_cstr_remove(map, key) \</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<span class="preprocessor">    ucx_map_remove(map, ucx_key(key, strlen(key)))</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="map_8h.html#aa767958b5468737755c09f7185b1770c">  386</a></span>&#160;<span class="preprocessor">#define ucx_map_int_remove(map, key) \</span></div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;<span class="preprocessor">    ucx_map_remove(map, ucx_key(&amp;key, sizeof(key)))</span></div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;<a class="code" href="structUcxKey.html">UcxKey</a> <a class="code" href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="keywordtype">int</span> <a class="code" href="map_8h.html#aea3be97254c05595d986ef6a9faae87b">ucx_hash</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">size_t</span> len);</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;<a class="code" href="structUcxMapIterator.html">UcxMapIterator</a> <a class="code" href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110">ucx_map_iterator</a>(<a class="code" href="structUcxMap.html">UcxMap</a> <span class="keyword">const</span> *<a class="code" href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">map</a>);</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;<span class="keywordtype">int</span> <a class="code" href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a>(<a class="code" href="structUcxMapIterator.html">UcxMapIterator</a> *iterator, <a class="code" href="structUcxKey.html">UcxKey</a> *key, <span class="keywordtype">void</span> **value);</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#a3f65978c481af7f637cad021d93522d5">ucx_map_union</a>(<span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;                      <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6">ucx_map_union_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>,</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                        <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;                        <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d">ucx_map_intersection</a>(<span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;                             <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#a169e0470a20484dd76425fdf77e3651e">ucx_map_intersection_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>,</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;                               <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;                               <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc">ucx_map_difference</a>(<span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;                           <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;<a class="code" href="structUcxMap.html">UcxMap</a>* <a class="code" href="map_8h.html#ad0ba103494247d798ac3037c50fc8831">ucx_map_difference_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *<a class="code" href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">allocator</a>,</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;                             <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *first, <span class="keyword">const</span> <a class="code" href="structUcxMap.html">UcxMap</a> *second,</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;                             <a class="code" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, <span class="keywordtype">void</span>* cpdata);</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;<span class="preprocessor">#ifdef  __cplusplus</span></div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;}</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;<span class="preprocessor">#endif  </span><span class="comment">/* UCX_MAP_H */</span><span class="preprocessor"></span></div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;</div><div class="ttc" id="ucx_8h_html_aab917a5fe0965673c73e8ebd0a1fc967"><div class="ttname"><a href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a></div><div class="ttdeci">void *(* copy_func)(const void *, void *)</div><div class="ttdoc">Function pointer to a copy function. </div><div class="ttdef"><b>Definition:</b> ucx.h:106</div></div>
<div class="ttc" id="structUcxMapIterator_html_ac2376545c8816dd6895de4995e558c65"><div class="ttname"><a href="structUcxMapIterator.html#ac2376545c8816dd6895de4995e558c65">UcxMapIterator::index</a></div><div class="ttdeci">size_t index</div><div class="ttdoc">The current index of the element list array. </div><div class="ttdef"><b>Definition:</b> map.h:138</div></div>
<div class="ttc" id="structUcxMapKey_html_a504d46caa45c79cd87ff8cd835654270"><div class="ttname"><a href="structUcxMapKey.html#a504d46caa45c79cd87ff8cd835654270">UcxMapKey::len</a></div><div class="ttdeci">size_t len</div><div class="ttdoc">The length of the key data. </div><div class="ttdef"><b>Definition:</b> map.h:107</div></div>
<div class="ttc" id="map_8h_html_ad0ba103494247d798ac3037c50fc8831"><div class="ttname"><a href="map_8h.html#ad0ba103494247d798ac3037c50fc8831">ucx_map_difference_a</a></div><div class="ttdeci">UcxMap * ucx_map_difference_a(UcxAllocator *allocator, const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the difference of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:386</div></div>
<div class="ttc" id="string_8h_html"><div class="ttname"><a href="string_8h.html">string.h</a></div><div class="ttdoc">Bounded string implementation. </div></div>
<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div>
<div class="ttc" id="map_8h_html_aea3be97254c05595d986ef6a9faae87b"><div class="ttname"><a href="map_8h.html#aea3be97254c05595d986ef6a9faae87b">ucx_hash</a></div><div class="ttdeci">int ucx_hash(const char *data, size_t len)</div><div class="ttdoc">Computes a murmur hash-2. </div><div class="ttdef"><b>Definition:</b> map.c:260</div></div>
<div class="ttc" id="structUcxMapKey_html_a34c1f8fec98174583944fffd30e7c913"><div class="ttname"><a href="structUcxMapKey.html#a34c1f8fec98174583944fffd30e7c913">UcxMapKey::hash</a></div><div class="ttdeci">int hash</div><div class="ttdoc">The hash value of the key data. </div><div class="ttdef"><b>Definition:</b> map.h:109</div></div>
<div class="ttc" id="map_8h_html_a750f3d9d83e2f3788a14c17a9d160618"><div class="ttname"><a href="map_8h.html#a750f3d9d83e2f3788a14c17a9d160618">ucx_map_free_content</a></div><div class="ttdeci">void ucx_map_free_content(UcxMap *map, ucx_destructor destr)</div><div class="ttdoc">Frees the contents of a hash map. </div><div class="ttdef"><b>Definition:</b> map.c:85</div></div>
<div class="ttc" id="map_8h_html_ab61192c5af2e06ecb9ad73880d1c95a6"><div class="ttname"><a href="map_8h.html#ab61192c5af2e06ecb9ad73880d1c95a6">ucx_map_get</a></div><div class="ttdeci">void * ucx_map_get(UcxMap const *map, UcxKey key)</div><div class="ttdoc">Retrieves a value by using a key. </div><div class="ttdef"><b>Definition:</b> map.c:243</div></div>
<div class="ttc" id="map_8h_html_a9150e9c64fdf4dfcc2cad106b91aa110"><div class="ttname"><a href="map_8h.html#a9150e9c64fdf4dfcc2cad106b91aa110">ucx_map_iterator</a></div><div class="ttdeci">UcxMapIterator ucx_map_iterator(UcxMap const *map)</div><div class="ttdoc">Creates an iterator for a map. </div><div class="ttdef"><b>Definition:</b> map.c:302</div></div>
<div class="ttc" id="map_8h_html_a3f65978c481af7f637cad021d93522d5"><div class="ttname"><a href="map_8h.html#a3f65978c481af7f637cad021d93522d5">ucx_map_union</a></div><div class="ttdeci">UcxMap * ucx_map_union(const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the union of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:343</div></div>
<div class="ttc" id="structUcxKey_html_aac9d372ac34a4cbd8459e2b04e505752"><div class="ttname"><a href="structUcxKey.html#aac9d372ac34a4cbd8459e2b04e505752">UcxKey::hash</a></div><div class="ttdeci">int hash</div><div class="ttdoc">A cache for the hash value of the key data. </div><div class="ttdef"><b>Definition:</b> map.h:99</div></div>
<div class="ttc" id="map_8h_html_a285e90e40681c6d9631c935dda0967f2"><div class="ttname"><a href="map_8h.html#a285e90e40681c6d9631c935dda0967f2">ucx_map_clear</a></div><div class="ttdeci">void ucx_map_clear(UcxMap *map)</div><div class="ttdoc">Clears a hash map. </div><div class="ttdef"><b>Definition:</b> map.c:97</div></div>
<div class="ttc" id="map_8h_html_a774fcff87d1e58b6c5af77dd19a8c3dc"><div class="ttname"><a href="map_8h.html#a774fcff87d1e58b6c5af77dd19a8c3dc">ucx_map_difference</a></div><div class="ttdeci">UcxMap * ucx_map_difference(const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the difference of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:380</div></div>
<div class="ttc" id="structUcxMapElement_html"><div class="ttname"><a href="structUcxMapElement.html">UcxMapElement</a></div><div class="ttdoc">Structure for an element of a UcxMap. </div><div class="ttdef"><b>Definition:</b> map.h:113</div></div>
<div class="ttc" id="structUcxKey_html"><div class="ttname"><a href="structUcxKey.html">UcxKey</a></div><div class="ttdoc">Structure to publicly denote a key of a UcxMap. </div><div class="ttdef"><b>Definition:</b> map.h:93</div></div>
<div class="ttc" id="structUcxMap_html_a14e9163f71f6c014dfa2103de70ae9cd"><div class="ttname"><a href="structUcxMap.html#a14e9163f71f6c014dfa2103de70ae9cd">UcxMap::count</a></div><div class="ttdeci">size_t count</div><div class="ttdoc">The count of elements currently stored in this map. </div><div class="ttdef"><b>Definition:</b> map.h:89</div></div>
<div class="ttc" id="structUcxMapElement_html_a99fe8188b0889201d70ff5f922deef51"><div class="ttname"><a href="structUcxMapElement.html#a99fe8188b0889201d70ff5f922deef51">UcxMapElement::next</a></div><div class="ttdeci">UcxMapElement * next</div><div class="ttdoc">A pointer to the next element in the current list. </div><div class="ttdef"><b>Definition:</b> map.h:118</div></div>
<div class="ttc" id="map_8h_html_ab6370c3fa8113fdad593ce4b0460c9c6"><div class="ttname"><a href="map_8h.html#ab6370c3fa8113fdad593ce4b0460c9c6">ucx_map_union_a</a></div><div class="ttdeci">UcxMap * ucx_map_union_a(UcxAllocator *allocator, const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the union of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:349</div></div>
<div class="ttc" id="structUcxMapIterator_html_af88d6e22547d09fe1d665dd650dcdb95"><div class="ttname"><a href="structUcxMapIterator.html#af88d6e22547d09fe1d665dd650dcdb95">UcxMapIterator::map</a></div><div class="ttdeci">UcxMap const  * map</div><div class="ttdoc">The map to iterate over. </div><div class="ttdef"><b>Definition:</b> map.h:127</div></div>
<div class="ttc" id="structUcxMapIterator_html"><div class="ttname"><a href="structUcxMapIterator.html">UcxMapIterator</a></div><div class="ttdoc">Structure for an iterator over a UcxMap. </div><div class="ttdef"><b>Definition:</b> map.h:125</div></div>
<div class="ttc" id="structUcxMapElement_html_abbd7f3bf5beef370f702d2d5bb07733c"><div class="ttname"><a href="structUcxMapElement.html#abbd7f3bf5beef370f702d2d5bb07733c">UcxMapElement::data</a></div><div class="ttdeci">void * data</div><div class="ttdoc">The value data. </div><div class="ttdef"><b>Definition:</b> map.h:115</div></div>
<div class="ttc" id="map_8h_html_adfeb2d61003fd2896bcfdc9a57f36425"><div class="ttname"><a href="map_8h.html#adfeb2d61003fd2896bcfdc9a57f36425">ucx_map_copy</a></div><div class="ttdeci">int ucx_map_copy(UcxMap const *from, UcxMap *to, copy_func fnc, void *data)</div><div class="ttdoc">Copies contents from a map to another map using a copy function. </div><div class="ttdef"><b>Definition:</b> map.c:106</div></div>
<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div>
<div class="ttc" id="map_8h_html_a3e540bb46b8ee19789aed63fd8919200"><div class="ttname"><a href="map_8h.html#a3e540bb46b8ee19789aed63fd8919200">ucx_key</a></div><div class="ttdeci">UcxKey ucx_key(const void *data, size_t len)</div><div class="ttdoc">Creates a UcxKey based on the given data. </div><div class="ttdef"><b>Definition:</b> map.c:251</div></div>
<div class="ttc" id="map_8h_html_a79f31de8b93814493759dbc8b940cf0c"><div class="ttname"><a href="map_8h.html#a79f31de8b93814493759dbc8b940cf0c">ucx_map_new</a></div><div class="ttdeci">UcxMap * ucx_map_new(size_t size)</div><div class="ttdoc">Creates a new hash map with the specified size. </div><div class="ttdef"><b>Definition:</b> map.c:34</div></div>
<div class="ttc" id="structUcxMapIterator_html_af1fc40f899f37280adb5b85acf6e742f"><div class="ttname"><a href="structUcxMapIterator.html#af1fc40f899f37280adb5b85acf6e742f">UcxMapIterator::cur</a></div><div class="ttdeci">UcxMapElement * cur</div><div class="ttdoc">The current map element. </div><div class="ttdef"><b>Definition:</b> map.h:130</div></div>
<div class="ttc" id="map_8h_html_aed508a94c66cc15372503c64b70eb03e"><div class="ttname"><a href="map_8h.html#aed508a94c66cc15372503c64b70eb03e">ucx_map_new_a</a></div><div class="ttdeci">UcxMap * ucx_map_new_a(UcxAllocator *allocator, size_t size)</div><div class="ttdoc">Creates a new hash map with the specified size using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> map.c:38</div></div>
<div class="ttc" id="structUcxMap_html_a531f3e481c1c331cf037b916192e974d"><div class="ttname"><a href="structUcxMap.html#a531f3e481c1c331cf037b916192e974d">UcxMap::allocator</a></div><div class="ttdeci">UcxAllocator * allocator</div><div class="ttdoc">An allocator that is used for the map elements. </div><div class="ttdef"><b>Definition:</b> map.h:83</div></div>
<div class="ttc" id="structUcxMapKey_html"><div class="ttname"><a href="structUcxMapKey.html">UcxMapKey</a></div><div class="ttdoc">Internal structure for a key of a UcxMap. </div><div class="ttdef"><b>Definition:</b> map.h:103</div></div>
<div class="ttc" id="map_8h_html_ac04a08b604217070254d4c58f0e82498"><div class="ttname"><a href="map_8h.html#ac04a08b604217070254d4c58f0e82498">ucx_map_put</a></div><div class="ttdeci">int ucx_map_put(UcxMap *map, UcxKey key, void *value)</div><div class="ttdoc">Puts a key/value-pair into the map. </div><div class="ttdef"><b>Definition:</b> map.c:158</div></div>
<div class="ttc" id="map_8h_html_a9aea9103703d5c168420bb6bf85549ea"><div class="ttname"><a href="map_8h.html#a9aea9103703d5c168420bb6bf85549ea">ucx_map_clone_a</a></div><div class="ttdeci">UcxMap * ucx_map_clone_a(UcxAllocator *allocator, UcxMap const *map, copy_func fnc, void *data)</div><div class="ttdoc">Clones the map and rehashes if necessary. </div><div class="ttdef"><b>Definition:</b> map.c:121</div></div>
<div class="ttc" id="structUcxMap_html_afe120846b26d99580a7ff1276464e838"><div class="ttname"><a href="structUcxMap.html#afe120846b26d99580a7ff1276464e838">UcxMap::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">The size of the map is the length of the element list array. </div><div class="ttdef"><b>Definition:</b> map.h:87</div></div>
<div class="ttc" id="map_8h_html_aceb8675abf44860b4bbc301bbada5b91"><div class="ttname"><a href="map_8h.html#aceb8675abf44860b4bbc301bbada5b91">ucx_map_iter_next</a></div><div class="ttdeci">int ucx_map_iter_next(UcxMapIterator *iterator, UcxKey *key, void **value)</div><div class="ttdoc">Proceeds to the next element of the map (if any). </div><div class="ttdef"><b>Definition:</b> map.c:310</div></div>
<div class="ttc" id="structUcxKey_html_a6176109f25b34f3fa92bcfbc8ae7a88c"><div class="ttname"><a href="structUcxKey.html#a6176109f25b34f3fa92bcfbc8ae7a88c">UcxKey::data</a></div><div class="ttdeci">const void * data</div><div class="ttdoc">The key data. </div><div class="ttdef"><b>Definition:</b> map.h:95</div></div>
<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div>
<div class="ttc" id="structUcxMap_html"><div class="ttname"><a href="structUcxMap.html">UcxMap</a></div><div class="ttdoc">Structure for the UCX map. </div><div class="ttdef"><b>Definition:</b> map.h:81</div></div>
<div class="ttc" id="map_8h_html_a17248a4888eb8f9ae18be522d64632aa"><div class="ttname"><a href="map_8h.html#a17248a4888eb8f9ae18be522d64632aa">ucx_map_remove</a></div><div class="ttdeci">void * ucx_map_remove(UcxMap *map, UcxKey key)</div><div class="ttdoc">Removes a key/value-pair from the map by using the key. </div><div class="ttdef"><b>Definition:</b> map.c:247</div></div>
<div class="ttc" id="structUcxKey_html_abef01de37f355688f2ac797d2c280683"><div class="ttname"><a href="structUcxKey.html#abef01de37f355688f2ac797d2c280683">UcxKey::len</a></div><div class="ttdeci">size_t len</div><div class="ttdoc">The length of the key data. </div><div class="ttdef"><b>Definition:</b> map.h:97</div></div>
<div class="ttc" id="map_8h_html_aa594d7a5afebc3bed6bb265348cf6b0d"><div class="ttname"><a href="map_8h.html#aa594d7a5afebc3bed6bb265348cf6b0d">ucx_map_intersection</a></div><div class="ttdeci">UcxMap * ucx_map_intersection(const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the intersection of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:357</div></div>
<div class="ttc" id="map_8h_html_a174bce9fad554dd92b8da354e0d32512"><div class="ttname"><a href="map_8h.html#a174bce9fad554dd92b8da354e0d32512">ucx_map_rehash</a></div><div class="ttdeci">int ucx_map_rehash(UcxMap *map)</div><div class="ttdoc">Increases size of the hash map, if necessary. </div><div class="ttdef"><b>Definition:</b> map.c:132</div></div>
<div class="ttc" id="map_8h_html_abe3d9688e4224bf7bb962abf25ff8c2e"><div class="ttname"><a href="map_8h.html#abe3d9688e4224bf7bb962abf25ff8c2e">ucx_map_free</a></div><div class="ttdeci">void ucx_map_free(UcxMap *map)</div><div class="ttdoc">Frees a hash map. </div><div class="ttdef"><b>Definition:</b> map.c:79</div></div>
<div class="ttc" id="map_8h_html_a62c6c30cbb0d824ba710f5030ff9a4e4"><div class="ttname"><a href="map_8h.html#a62c6c30cbb0d824ba710f5030ff9a4e4">ucx_map_clone</a></div><div class="ttdeci">UcxMap * ucx_map_clone(UcxMap const *map, copy_func fnc, void *data)</div><div class="ttdoc">Clones the map and rehashes if necessary. </div><div class="ttdef"><b>Definition:</b> map.c:117</div></div>
<div class="ttc" id="structUcxMap_html_a5792b5037c4f77ea3cb144b66c9b8790"><div class="ttname"><a href="structUcxMap.html#a5792b5037c4f77ea3cb144b66c9b8790">UcxMap::map</a></div><div class="ttdeci">UcxMapElement ** map</div><div class="ttdoc">The array of map element lists. </div><div class="ttdef"><b>Definition:</b> map.h:85</div></div>
<div class="ttc" id="map_8h_html_a169e0470a20484dd76425fdf77e3651e"><div class="ttname"><a href="map_8h.html#a169e0470a20484dd76425fdf77e3651e">ucx_map_intersection_a</a></div><div class="ttdeci">UcxMap * ucx_map_intersection_a(UcxAllocator *allocator, const UcxMap *first, const UcxMap *second, copy_func cpfnc, void *cpdata)</div><div class="ttdoc">Returns the intersection of two maps. </div><div class="ttdef"><b>Definition:</b> map.c:363</div></div>
<div class="ttc" id="structUcxMapKey_html_ab71d1841e4f538628c00f782267fb6d5"><div class="ttname"><a href="structUcxMapKey.html#ab71d1841e4f538628c00f782267fb6d5">UcxMapKey::data</a></div><div class="ttdeci">void * data</div><div class="ttdoc">The key data. </div><div class="ttdef"><b>Definition:</b> map.h:105</div></div>
<div class="ttc" id="ucx_8h_html_ad2b370c2809914c8b7fedab163c266b3"><div class="ttname"><a href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a></div><div class="ttdeci">void(* ucx_destructor)(void *)</div><div class="ttdoc">A function pointer to a destructor function. </div><div class="ttdef"><b>Definition:</b> ucx.h:72</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Dec 19 2019 19:58:24 for ucx by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

mercurial