docs/api-2.1/list_8h.html

Sat, 06 Feb 2021 19:11:44 +0100

author
Mike Becker <universe@uap-core.de>
date
Sat, 06 Feb 2021 19:11:44 +0100
changeset 390
d345541018fa
permissions
-rw-r--r--

starts ucx 3.0 development

universe@390 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
universe@390 2 <html xmlns="http://www.w3.org/1999/xhtml">
universe@390 3 <head>
universe@390 4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
universe@390 5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
universe@390 6 <meta name="generator" content="Doxygen 1.8.13"/>
universe@390 7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
universe@390 8 <title>ucx: /home/mike/workspace/c/ucx/src/ucx/list.h File Reference</title>
universe@390 9 <link href="tabs.css" rel="stylesheet" type="text/css"/>
universe@390 10 <script type="text/javascript" src="jquery.js"></script>
universe@390 11 <script type="text/javascript" src="dynsections.js"></script>
universe@390 12 <link href="search/search.css" rel="stylesheet" type="text/css"/>
universe@390 13 <script type="text/javascript" src="search/searchdata.js"></script>
universe@390 14 <script type="text/javascript" src="search/search.js"></script>
universe@390 15 <link href="doxygen.css" rel="stylesheet" type="text/css" />
universe@390 16 </head>
universe@390 17 <body>
universe@390 18 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
universe@390 19 <div id="titlearea">
universe@390 20 <table cellspacing="0" cellpadding="0">
universe@390 21 <tbody>
universe@390 22 <tr style="height: 56px;">
universe@390 23 <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td>
universe@390 24 <td id="projectalign" style="padding-left: 0.5em;">
universe@390 25 <div id="projectname">ucx
universe@390 26 </div>
universe@390 27 <div id="projectbrief">UAP Common Extensions</div>
universe@390 28 </td>
universe@390 29 </tr>
universe@390 30 </tbody>
universe@390 31 </table>
universe@390 32 </div>
universe@390 33 <!-- end header part -->
universe@390 34 <!-- Generated by Doxygen 1.8.13 -->
universe@390 35 <script type="text/javascript">
universe@390 36 var searchBox = new SearchBox("searchBox", "search",false,'Search');
universe@390 37 </script>
universe@390 38 <script type="text/javascript" src="menudata.js"></script>
universe@390 39 <script type="text/javascript" src="menu.js"></script>
universe@390 40 <script type="text/javascript">
universe@390 41 $(function() {
universe@390 42 initMenu('',true,false,'search.php','Search');
universe@390 43 $(document).ready(function() { init_search(); });
universe@390 44 });
universe@390 45 </script>
universe@390 46 <div id="main-nav"></div>
universe@390 47 <!-- window showing the filter options -->
universe@390 48 <div id="MSearchSelectWindow"
universe@390 49 onmouseover="return searchBox.OnSearchSelectShow()"
universe@390 50 onmouseout="return searchBox.OnSearchSelectHide()"
universe@390 51 onkeydown="return searchBox.OnSearchSelectKey(event)">
universe@390 52 </div>
universe@390 53
universe@390 54 <!-- iframe showing the search results (closed by default) -->
universe@390 55 <div id="MSearchResultsWindow">
universe@390 56 <iframe src="javascript:void(0)" frameborder="0"
universe@390 57 name="MSearchResults" id="MSearchResults">
universe@390 58 </iframe>
universe@390 59 </div>
universe@390 60
universe@390 61 <div id="nav-path" class="navpath">
universe@390 62 <ul>
universe@390 63 <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>
universe@390 64 </div>
universe@390 65 </div><!-- top -->
universe@390 66 <div class="header">
universe@390 67 <div class="summary">
universe@390 68 <a href="#nested-classes">Data Structures</a> &#124;
universe@390 69 <a href="#define-members">Macros</a> &#124;
universe@390 70 <a href="#typedef-members">Typedefs</a> &#124;
universe@390 71 <a href="#func-members">Functions</a> </div>
universe@390 72 <div class="headertitle">
universe@390 73 <div class="title">list.h File Reference</div> </div>
universe@390 74 </div><!--header-->
universe@390 75 <div class="contents">
universe@390 76
universe@390 77 <p>Doubly linked list implementation.
universe@390 78 <a href="#details">More...</a></p>
universe@390 79 <div class="textblock"><code>#include &quot;<a class="el" href="ucx_8h_source.html">ucx.h</a>&quot;</code><br />
universe@390 80 <code>#include &quot;<a class="el" href="allocator_8h_source.html">allocator.h</a>&quot;</code><br />
universe@390 81 </div>
universe@390 82 <p><a href="list_8h_source.html">Go to the source code of this file.</a></p>
universe@390 83 <table class="memberdecls">
universe@390 84 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
universe@390 85 Data Structures</h2></td></tr>
universe@390 86 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxList.html">UcxList</a></td></tr>
universe@390 87 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">UCX list structure. <a href="structUcxList.html#details">More...</a><br /></td></tr>
universe@390 88 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 89 </table><table class="memberdecls">
universe@390 90 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
universe@390 91 Macros</h2></td></tr>
universe@390 92 <tr class="memitem:a4b143b6526a410aa4d22cb3bb9365d70"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a4b143b6526a410aa4d22cb3bb9365d70">UCX_FOREACH</a>(elem, list)&#160;&#160;&#160;for (<a class="el" href="structUcxList.html">UcxList</a>* elem = (<a class="el" href="structUcxList.html">UcxList</a>*) list ; elem != NULL ; elem = elem-&gt;next)</td></tr>
universe@390 93 <tr class="memdesc:a4b143b6526a410aa4d22cb3bb9365d70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loop statement for UCX lists. <a href="#a4b143b6526a410aa4d22cb3bb9365d70">More...</a><br /></td></tr>
universe@390 94 <tr class="separator:a4b143b6526a410aa4d22cb3bb9365d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 95 </table><table class="memberdecls">
universe@390 96 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
universe@390 97 Typedefs</h2></td></tr>
universe@390 98 <tr class="memitem:aa6f89f91c1081c9a7c6866c298f497a2"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxList.html">UcxList</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#aa6f89f91c1081c9a7c6866c298f497a2">UcxList</a></td></tr>
universe@390 99 <tr class="memdesc:aa6f89f91c1081c9a7c6866c298f497a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">UCX list type. <a href="#aa6f89f91c1081c9a7c6866c298f497a2">More...</a><br /></td></tr>
universe@390 100 <tr class="separator:aa6f89f91c1081c9a7c6866c298f497a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 101 </table><table class="memberdecls">
universe@390 102 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
universe@390 103 Functions</h2></td></tr>
universe@390 104 <tr class="memitem:ae7054a41c289b24e6caf5cb07ac850ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed">ucx_list_clone</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpyfnc, void *data)</td></tr>
universe@390 105 <tr class="memdesc:ae7054a41c289b24e6caf5cb07ac850ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an element-wise copy of a list. <a href="#ae7054a41c289b24e6caf5cb07ac850ed">More...</a><br /></td></tr>
universe@390 106 <tr class="separator:ae7054a41c289b24e6caf5cb07ac850ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 107 <tr class="memitem:a08ca1ba0d2e82258b0408714c1f4c425"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a08ca1ba0d2e82258b0408714c1f4c425">ucx_list_clone_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpyfnc, void *data)</td></tr>
universe@390 108 <tr class="memdesc:a08ca1ba0d2e82258b0408714c1f4c425"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an element-wise copy of a list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a08ca1ba0d2e82258b0408714c1f4c425">More...</a><br /></td></tr>
universe@390 109 <tr class="separator:a08ca1ba0d2e82258b0408714c1f4c425"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 110 <tr class="memitem:adc435447cecf885bc63d232191085bbe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#adc435447cecf885bc63d232191085bbe">ucx_list_equals</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list1, const <a class="el" href="structUcxList.html">UcxList</a> *list2, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr>
universe@390 111 <tr class="memdesc:adc435447cecf885bc63d232191085bbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares two UCX lists element-wise by using a compare function. <a href="#adc435447cecf885bc63d232191085bbe">More...</a><br /></td></tr>
universe@390 112 <tr class="separator:adc435447cecf885bc63d232191085bbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 113 <tr class="memitem:a1a0fa2c5b1e478a96da19b0c3f013668"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668">ucx_list_free</a> (<a class="el" href="structUcxList.html">UcxList</a> *list)</td></tr>
universe@390 114 <tr class="memdesc:a1a0fa2c5b1e478a96da19b0c3f013668"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the entire list. <a href="#a1a0fa2c5b1e478a96da19b0c3f013668">More...</a><br /></td></tr>
universe@390 115 <tr class="separator:a1a0fa2c5b1e478a96da19b0c3f013668"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 116 <tr class="memitem:a944e11f76c38767cd1100d72a4e3b25b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a944e11f76c38767cd1100d72a4e3b25b">ucx_list_free_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxList.html">UcxList</a> *list)</td></tr>
universe@390 117 <tr class="memdesc:a944e11f76c38767cd1100d72a4e3b25b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the entire list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a944e11f76c38767cd1100d72a4e3b25b">More...</a><br /></td></tr>
universe@390 118 <tr class="separator:a944e11f76c38767cd1100d72a4e3b25b"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 119 <tr class="memitem:a4ba6c96642f72ea046cc22627c72979c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a4ba6c96642f72ea046cc22627c72979c">ucx_list_free_content</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr)</td></tr>
universe@390 120 <tr class="memdesc:a4ba6c96642f72ea046cc22627c72979c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the contents of the specified list by calling the specified destructor on each of them. <a href="#a4ba6c96642f72ea046cc22627c72979c">More...</a><br /></td></tr>
universe@390 121 <tr class="separator:a4ba6c96642f72ea046cc22627c72979c"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 122 <tr class="memitem:a00c122c8a26d35b60676939df4161621"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a00c122c8a26d35b60676939df4161621">ucx_list_append</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, void *data)</td></tr>
universe@390 123 <tr class="memdesc:a00c122c8a26d35b60676939df4161621"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inserts an element at the end of the list. <a href="#a00c122c8a26d35b60676939df4161621">More...</a><br /></td></tr>
universe@390 124 <tr class="separator:a00c122c8a26d35b60676939df4161621"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 125 <tr class="memitem:adf3b3e2e0ff977d8928671d6bd82fc60"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#adf3b3e2e0ff977d8928671d6bd82fc60">ucx_list_append_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxList.html">UcxList</a> *list, void *data)</td></tr>
universe@390 126 <tr class="memdesc:adf3b3e2e0ff977d8928671d6bd82fc60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inserts an element at the end of the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#adf3b3e2e0ff977d8928671d6bd82fc60">More...</a><br /></td></tr>
universe@390 127 <tr class="separator:adf3b3e2e0ff977d8928671d6bd82fc60"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 128 <tr class="memitem:a8fcb68e4556395b15180eec2d0b77aa4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4">ucx_list_prepend</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, void *data)</td></tr>
universe@390 129 <tr class="memdesc:a8fcb68e4556395b15180eec2d0b77aa4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inserts an element at the beginning of the list. <a href="#a8fcb68e4556395b15180eec2d0b77aa4">More...</a><br /></td></tr>
universe@390 130 <tr class="separator:a8fcb68e4556395b15180eec2d0b77aa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 131 <tr class="memitem:a54654e6dc60e1c3de9e886c150e404ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a54654e6dc60e1c3de9e886c150e404ec">ucx_list_prepend_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxList.html">UcxList</a> *list, void *data)</td></tr>
universe@390 132 <tr class="memdesc:a54654e6dc60e1c3de9e886c150e404ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inserts an element at the beginning of the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a54654e6dc60e1c3de9e886c150e404ec">More...</a><br /></td></tr>
universe@390 133 <tr class="separator:a54654e6dc60e1c3de9e886c150e404ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 134 <tr class="memitem:a77163a0cc82fae52bec26c8c0c3674d9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a77163a0cc82fae52bec26c8c0c3674d9">ucx_list_concat</a> (<a class="el" href="structUcxList.html">UcxList</a> *list1, <a class="el" href="structUcxList.html">UcxList</a> *list2)</td></tr>
universe@390 135 <tr class="memdesc:a77163a0cc82fae52bec26c8c0c3674d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates two lists. <a href="#a77163a0cc82fae52bec26c8c0c3674d9">More...</a><br /></td></tr>
universe@390 136 <tr class="separator:a77163a0cc82fae52bec26c8c0c3674d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 137 <tr class="memitem:a6aa0e34ebc5f0dca6f52d0f7626b4bd5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">ucx_list_first</a> (const <a class="el" href="structUcxList.html">UcxList</a> *elem)</td></tr>
universe@390 138 <tr class="memdesc:a6aa0e34ebc5f0dca6f52d0f7626b4bd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the first element of a list. <a href="#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">More...</a><br /></td></tr>
universe@390 139 <tr class="separator:a6aa0e34ebc5f0dca6f52d0f7626b4bd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 140 <tr class="memitem:add5ec40c5006e29c629d23c2eb5a6553"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#add5ec40c5006e29c629d23c2eb5a6553">ucx_list_last</a> (const <a class="el" href="structUcxList.html">UcxList</a> *elem)</td></tr>
universe@390 141 <tr class="memdesc:add5ec40c5006e29c629d23c2eb5a6553"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last element of a list. <a href="#add5ec40c5006e29c629d23c2eb5a6553">More...</a><br /></td></tr>
universe@390 142 <tr class="separator:add5ec40c5006e29c629d23c2eb5a6553"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 143 <tr class="memitem:a2509ffe19bce6a8708c77f89480c75fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a2509ffe19bce6a8708c77f89480c75fb">ucx_list_get</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, size_t index)</td></tr>
universe@390 144 <tr class="memdesc:a2509ffe19bce6a8708c77f89480c75fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the list element at the specified index. <a href="#a2509ffe19bce6a8708c77f89480c75fb">More...</a><br /></td></tr>
universe@390 145 <tr class="separator:a2509ffe19bce6a8708c77f89480c75fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 146 <tr class="memitem:ae2ff2974812ca185870f80bc4ed9337e"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#ae2ff2974812ca185870f80bc4ed9337e">ucx_list_indexof</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, const <a class="el" href="structUcxList.html">UcxList</a> *elem)</td></tr>
universe@390 147 <tr class="memdesc:ae2ff2974812ca185870f80bc4ed9337e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index of an element. <a href="#ae2ff2974812ca185870f80bc4ed9337e">More...</a><br /></td></tr>
universe@390 148 <tr class="separator:ae2ff2974812ca185870f80bc4ed9337e"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 149 <tr class="memitem:ae88001cc8ae40b946560f31434abed8f"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#ae88001cc8ae40b946560f31434abed8f">ucx_list_size</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list)</td></tr>
universe@390 150 <tr class="memdesc:ae88001cc8ae40b946560f31434abed8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the element count of the list. <a href="#ae88001cc8ae40b946560f31434abed8f">More...</a><br /></td></tr>
universe@390 151 <tr class="separator:ae88001cc8ae40b946560f31434abed8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 152 <tr class="memitem:a9b3b6842d3be572e06a7f519e198cb83"><td class="memItemLeft" align="right" valign="top">ssize_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83">ucx_list_find</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, void *elem, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr>
universe@390 153 <tr class="memdesc:a9b3b6842d3be572e06a7f519e198cb83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index of an element containing the specified data. <a href="#a9b3b6842d3be572e06a7f519e198cb83">More...</a><br /></td></tr>
universe@390 154 <tr class="separator:a9b3b6842d3be572e06a7f519e198cb83"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 155 <tr class="memitem:a8b0fa051fcfe12e1a82cca1087973852"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a8b0fa051fcfe12e1a82cca1087973852">ucx_list_contains</a> (const <a class="el" href="structUcxList.html">UcxList</a> *list, void *elem, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr>
universe@390 156 <tr class="memdesc:a8b0fa051fcfe12e1a82cca1087973852"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a list contains a specific element. <a href="#a8b0fa051fcfe12e1a82cca1087973852">More...</a><br /></td></tr>
universe@390 157 <tr class="separator:a8b0fa051fcfe12e1a82cca1087973852"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 158 <tr class="memitem:ac74962d9bd7cfc9d3e2e09651469377b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#ac74962d9bd7cfc9d3e2e09651469377b">ucx_list_sort</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *data)</td></tr>
universe@390 159 <tr class="memdesc:ac74962d9bd7cfc9d3e2e09651469377b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorts a <a class="el" href="structUcxList.html" title="UCX list structure. ">UcxList</a> with natural merge sort. <a href="#ac74962d9bd7cfc9d3e2e09651469377b">More...</a><br /></td></tr>
universe@390 160 <tr class="separator:ac74962d9bd7cfc9d3e2e09651469377b"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 161 <tr class="memitem:a410cb3e8260037ba56c72d14b899b468"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468">ucx_list_remove</a> (<a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="structUcxList.html">UcxList</a> *element)</td></tr>
universe@390 162 <tr class="memdesc:a410cb3e8260037ba56c72d14b899b468"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an element from the list. <a href="#a410cb3e8260037ba56c72d14b899b468">More...</a><br /></td></tr>
universe@390 163 <tr class="separator:a410cb3e8260037ba56c72d14b899b468"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 164 <tr class="memitem:aca687b7c4e7170175f447e549125aa52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#aca687b7c4e7170175f447e549125aa52">ucx_list_remove_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structUcxList.html">UcxList</a> *list, <a class="el" href="structUcxList.html">UcxList</a> *element)</td></tr>
universe@390 165 <tr class="memdesc:aca687b7c4e7170175f447e549125aa52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an element from the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#aca687b7c4e7170175f447e549125aa52">More...</a><br /></td></tr>
universe@390 166 <tr class="separator:aca687b7c4e7170175f447e549125aa52"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 167 <tr class="memitem:a94ecdb0cea1633ad7074f027fa8485fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a94ecdb0cea1633ad7074f027fa8485fa">ucx_list_union</a> (const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
universe@390 168 <tr class="memdesc:a94ecdb0cea1633ad7074f027fa8485fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the union of two lists. <a href="#a94ecdb0cea1633ad7074f027fa8485fa">More...</a><br /></td></tr>
universe@390 169 <tr class="separator:a94ecdb0cea1633ad7074f027fa8485fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 170 <tr class="memitem:a65b4355536f4ebc4130211b46469f4c1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a65b4355536f4ebc4130211b46469f4c1">ucx_list_union_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
universe@390 171 <tr class="memdesc:a65b4355536f4ebc4130211b46469f4c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the union of two lists. <a href="#a65b4355536f4ebc4130211b46469f4c1">More...</a><br /></td></tr>
universe@390 172 <tr class="separator:a65b4355536f4ebc4130211b46469f4c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 173 <tr class="memitem:a259f9b754978aeca23dfabba16e20f39"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a259f9b754978aeca23dfabba16e20f39">ucx_list_intersection</a> (const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
universe@390 174 <tr class="memdesc:a259f9b754978aeca23dfabba16e20f39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the intersection of two lists. <a href="#a259f9b754978aeca23dfabba16e20f39">More...</a><br /></td></tr>
universe@390 175 <tr class="separator:a259f9b754978aeca23dfabba16e20f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 176 <tr class="memitem:a1d0b00514dbb81ba6270b58da0c5b9a8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a1d0b00514dbb81ba6270b58da0c5b9a8">ucx_list_intersection_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
universe@390 177 <tr class="memdesc:a1d0b00514dbb81ba6270b58da0c5b9a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the intersection of two lists. <a href="#a1d0b00514dbb81ba6270b58da0c5b9a8">More...</a><br /></td></tr>
universe@390 178 <tr class="separator:a1d0b00514dbb81ba6270b58da0c5b9a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 179 <tr class="memitem:a6c5db5d1d11ad28b6fe1a80ee1c1e449"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a6c5db5d1d11ad28b6fe1a80ee1c1e449">ucx_list_difference</a> (const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
universe@390 180 <tr class="memdesc:a6c5db5d1d11ad28b6fe1a80ee1c1e449"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the difference of two lists. <a href="#a6c5db5d1d11ad28b6fe1a80ee1c1e449">More...</a><br /></td></tr>
universe@390 181 <tr class="separator:a6c5db5d1d11ad28b6fe1a80ee1c1e449"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 182 <tr class="memitem:a4a2a2fc5cc41073c516db6235bbc51d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="list_8h.html#a4a2a2fc5cc41073c516db6235bbc51d5">ucx_list_difference_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const <a class="el" href="structUcxList.html">UcxList</a> *left, const <a class="el" href="structUcxList.html">UcxList</a> *right, <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfnc, void *cmpdata, <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a> cpfnc, void *cpdata)</td></tr>
universe@390 183 <tr class="memdesc:a4a2a2fc5cc41073c516db6235bbc51d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the difference of two lists. <a href="#a4a2a2fc5cc41073c516db6235bbc51d5">More...</a><br /></td></tr>
universe@390 184 <tr class="separator:a4a2a2fc5cc41073c516db6235bbc51d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 185 </table>
universe@390 186 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
universe@390 187 <div class="textblock"><p>Doubly linked list implementation. </p>
universe@390 188 <dl class="section author"><dt>Author</dt><dd>Mike Becker </dd>
universe@390 189 <dd>
universe@390 190 Olaf Wintermann </dd></dl>
universe@390 191 </div><h2 class="groupheader">Macro Definition Documentation</h2>
universe@390 192 <a id="a4b143b6526a410aa4d22cb3bb9365d70"></a>
universe@390 193 <h2 class="memtitle"><span class="permalink"><a href="#a4b143b6526a410aa4d22cb3bb9365d70">&#9670;&nbsp;</a></span>UCX_FOREACH</h2>
universe@390 194
universe@390 195 <div class="memitem">
universe@390 196 <div class="memproto">
universe@390 197 <table class="memname">
universe@390 198 <tr>
universe@390 199 <td class="memname">#define UCX_FOREACH</td>
universe@390 200 <td>(</td>
universe@390 201 <td class="paramtype">&#160;</td>
universe@390 202 <td class="paramname">elem, </td>
universe@390 203 </tr>
universe@390 204 <tr>
universe@390 205 <td class="paramkey"></td>
universe@390 206 <td></td>
universe@390 207 <td class="paramtype">&#160;</td>
universe@390 208 <td class="paramname">list&#160;</td>
universe@390 209 </tr>
universe@390 210 <tr>
universe@390 211 <td></td>
universe@390 212 <td>)</td>
universe@390 213 <td></td><td>&#160;&#160;&#160;for (<a class="el" href="structUcxList.html">UcxList</a>* elem = (<a class="el" href="structUcxList.html">UcxList</a>*) list ; elem != NULL ; elem = elem-&gt;next)</td>
universe@390 214 </tr>
universe@390 215 </table>
universe@390 216 </div><div class="memdoc">
universe@390 217
universe@390 218 <p>Loop statement for UCX lists. </p>
universe@390 219 <p>The first argument is the name of the iteration variable. The scope of this variable is limited to the <code>UCX_FOREACH</code> statement.</p>
universe@390 220 <p>The second argument is a pointer to the list. In most cases this will be the pointer to the first element of the list, but it may also be an arbitrary element of the list. The iteration will then start with that element.</p>
universe@390 221 <dl class="params"><dt>Parameters</dt><dd>
universe@390 222 <table class="params">
universe@390 223 <tr><td class="paramname">list</td><td>The first element of the list </td></tr>
universe@390 224 <tr><td class="paramname">elem</td><td>The variable name of the element </td></tr>
universe@390 225 </table>
universe@390 226 </dd>
universe@390 227 </dl>
universe@390 228
universe@390 229 </div>
universe@390 230 </div>
universe@390 231 <h2 class="groupheader">Typedef Documentation</h2>
universe@390 232 <a id="aa6f89f91c1081c9a7c6866c298f497a2"></a>
universe@390 233 <h2 class="memtitle"><span class="permalink"><a href="#aa6f89f91c1081c9a7c6866c298f497a2">&#9670;&nbsp;</a></span>UcxList</h2>
universe@390 234
universe@390 235 <div class="memitem">
universe@390 236 <div class="memproto">
universe@390 237 <table class="memname">
universe@390 238 <tr>
universe@390 239 <td class="memname">typedef struct <a class="el" href="structUcxList.html">UcxList</a> <a class="el" href="structUcxList.html">UcxList</a></td>
universe@390 240 </tr>
universe@390 241 </table>
universe@390 242 </div><div class="memdoc">
universe@390 243
universe@390 244 <p>UCX list type. </p>
universe@390 245 <dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxList.html" title="UCX list structure. ">UcxList</a> </dd></dl>
universe@390 246
universe@390 247 </div>
universe@390 248 </div>
universe@390 249 <h2 class="groupheader">Function Documentation</h2>
universe@390 250 <a id="a00c122c8a26d35b60676939df4161621"></a>
universe@390 251 <h2 class="memtitle"><span class="permalink"><a href="#a00c122c8a26d35b60676939df4161621">&#9670;&nbsp;</a></span>ucx_list_append()</h2>
universe@390 252
universe@390 253 <div class="memitem">
universe@390 254 <div class="memproto">
universe@390 255 <table class="memname">
universe@390 256 <tr>
universe@390 257 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_append </td>
universe@390 258 <td>(</td>
universe@390 259 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 260 <td class="paramname"><em>list</em>, </td>
universe@390 261 </tr>
universe@390 262 <tr>
universe@390 263 <td class="paramkey"></td>
universe@390 264 <td></td>
universe@390 265 <td class="paramtype">void *&#160;</td>
universe@390 266 <td class="paramname"><em>data</em>&#160;</td>
universe@390 267 </tr>
universe@390 268 <tr>
universe@390 269 <td></td>
universe@390 270 <td>)</td>
universe@390 271 <td></td><td></td>
universe@390 272 </tr>
universe@390 273 </table>
universe@390 274 </div><div class="memdoc">
universe@390 275
universe@390 276 <p>Inserts an element at the end of the list. </p>
universe@390 277 <p>This is generally an O(n) operation, as the end of the list is retrieved with <a class="el" href="list_8h.html#add5ec40c5006e29c629d23c2eb5a6553" title="Returns the last element of a list. ">ucx_list_last()</a>.</p>
universe@390 278 <dl class="params"><dt>Parameters</dt><dd>
universe@390 279 <table class="params">
universe@390 280 <tr><td class="paramname">list</td><td>the list where to append the data, or <code>NULL</code> to create a new list </td></tr>
universe@390 281 <tr><td class="paramname">data</td><td>the data to insert </td></tr>
universe@390 282 </table>
universe@390 283 </dd>
universe@390 284 </dl>
universe@390 285 <dl class="section return"><dt>Returns</dt><dd><code>list</code>, if it is not <code>NULL</code> or a pointer to the newly created list otherwise </dd></dl>
universe@390 286
universe@390 287 </div>
universe@390 288 </div>
universe@390 289 <a id="adf3b3e2e0ff977d8928671d6bd82fc60"></a>
universe@390 290 <h2 class="memtitle"><span class="permalink"><a href="#adf3b3e2e0ff977d8928671d6bd82fc60">&#9670;&nbsp;</a></span>ucx_list_append_a()</h2>
universe@390 291
universe@390 292 <div class="memitem">
universe@390 293 <div class="memproto">
universe@390 294 <table class="memname">
universe@390 295 <tr>
universe@390 296 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_append_a </td>
universe@390 297 <td>(</td>
universe@390 298 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 299 <td class="paramname"><em>allocator</em>, </td>
universe@390 300 </tr>
universe@390 301 <tr>
universe@390 302 <td class="paramkey"></td>
universe@390 303 <td></td>
universe@390 304 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 305 <td class="paramname"><em>list</em>, </td>
universe@390 306 </tr>
universe@390 307 <tr>
universe@390 308 <td class="paramkey"></td>
universe@390 309 <td></td>
universe@390 310 <td class="paramtype">void *&#160;</td>
universe@390 311 <td class="paramname"><em>data</em>&#160;</td>
universe@390 312 </tr>
universe@390 313 <tr>
universe@390 314 <td></td>
universe@390 315 <td>)</td>
universe@390 316 <td></td><td></td>
universe@390 317 </tr>
universe@390 318 </table>
universe@390 319 </div><div class="memdoc">
universe@390 320
universe@390 321 <p>Inserts an element at the end of the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p>
universe@390 322 <p>See <a class="el" href="list_8h.html#a00c122c8a26d35b60676939df4161621" title="Inserts an element at the end of the list. ">ucx_list_append()</a> for details.</p>
universe@390 323 <dl class="params"><dt>Parameters</dt><dd>
universe@390 324 <table class="params">
universe@390 325 <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr>
universe@390 326 <tr><td class="paramname">list</td><td>the list where to append the data, or <code>NULL</code> to create a new list </td></tr>
universe@390 327 <tr><td class="paramname">data</td><td>the data to insert </td></tr>
universe@390 328 </table>
universe@390 329 </dd>
universe@390 330 </dl>
universe@390 331 <dl class="section return"><dt>Returns</dt><dd><code>list</code>, if it is not <code>NULL</code> or a pointer to the newly created list otherwise </dd></dl>
universe@390 332 <dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a00c122c8a26d35b60676939df4161621" title="Inserts an element at the end of the list. ">ucx_list_append()</a> </dd></dl>
universe@390 333
universe@390 334 </div>
universe@390 335 </div>
universe@390 336 <a id="ae7054a41c289b24e6caf5cb07ac850ed"></a>
universe@390 337 <h2 class="memtitle"><span class="permalink"><a href="#ae7054a41c289b24e6caf5cb07ac850ed">&#9670;&nbsp;</a></span>ucx_list_clone()</h2>
universe@390 338
universe@390 339 <div class="memitem">
universe@390 340 <div class="memproto">
universe@390 341 <table class="memname">
universe@390 342 <tr>
universe@390 343 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_clone </td>
universe@390 344 <td>(</td>
universe@390 345 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 346 <td class="paramname"><em>list</em>, </td>
universe@390 347 </tr>
universe@390 348 <tr>
universe@390 349 <td class="paramkey"></td>
universe@390 350 <td></td>
universe@390 351 <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
universe@390 352 <td class="paramname"><em>cpyfnc</em>, </td>
universe@390 353 </tr>
universe@390 354 <tr>
universe@390 355 <td class="paramkey"></td>
universe@390 356 <td></td>
universe@390 357 <td class="paramtype">void *&#160;</td>
universe@390 358 <td class="paramname"><em>data</em>&#160;</td>
universe@390 359 </tr>
universe@390 360 <tr>
universe@390 361 <td></td>
universe@390 362 <td>)</td>
universe@390 363 <td></td><td></td>
universe@390 364 </tr>
universe@390 365 </table>
universe@390 366 </div><div class="memdoc">
universe@390 367
universe@390 368 <p>Creates an element-wise copy of a list. </p>
universe@390 369 <p>This function clones the specified list by creating new list elements and copying the data with the specified <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967" title="Function pointer to a copy function. ">copy_func()</a>. If no <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967" title="Function pointer to a copy function. ">copy_func()</a> is specified, a shallow copy is created and the new list will reference the same data as the source list.</p>
universe@390 370 <dl class="params"><dt>Parameters</dt><dd>
universe@390 371 <table class="params">
universe@390 372 <tr><td class="paramname">list</td><td>the list to copy </td></tr>
universe@390 373 <tr><td class="paramname">cpyfnc</td><td>a pointer to the function that shall copy an element (may be <code>NULL</code>) </td></tr>
universe@390 374 <tr><td class="paramname">data</td><td>additional data for the <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967" title="Function pointer to a copy function. ">copy_func()</a> </td></tr>
universe@390 375 </table>
universe@390 376 </dd>
universe@390 377 </dl>
universe@390 378 <dl class="section return"><dt>Returns</dt><dd>a pointer to the copy </dd></dl>
universe@390 379
universe@390 380 </div>
universe@390 381 </div>
universe@390 382 <a id="a08ca1ba0d2e82258b0408714c1f4c425"></a>
universe@390 383 <h2 class="memtitle"><span class="permalink"><a href="#a08ca1ba0d2e82258b0408714c1f4c425">&#9670;&nbsp;</a></span>ucx_list_clone_a()</h2>
universe@390 384
universe@390 385 <div class="memitem">
universe@390 386 <div class="memproto">
universe@390 387 <table class="memname">
universe@390 388 <tr>
universe@390 389 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_clone_a </td>
universe@390 390 <td>(</td>
universe@390 391 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 392 <td class="paramname"><em>allocator</em>, </td>
universe@390 393 </tr>
universe@390 394 <tr>
universe@390 395 <td class="paramkey"></td>
universe@390 396 <td></td>
universe@390 397 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 398 <td class="paramname"><em>list</em>, </td>
universe@390 399 </tr>
universe@390 400 <tr>
universe@390 401 <td class="paramkey"></td>
universe@390 402 <td></td>
universe@390 403 <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
universe@390 404 <td class="paramname"><em>cpyfnc</em>, </td>
universe@390 405 </tr>
universe@390 406 <tr>
universe@390 407 <td class="paramkey"></td>
universe@390 408 <td></td>
universe@390 409 <td class="paramtype">void *&#160;</td>
universe@390 410 <td class="paramname"><em>data</em>&#160;</td>
universe@390 411 </tr>
universe@390 412 <tr>
universe@390 413 <td></td>
universe@390 414 <td>)</td>
universe@390 415 <td></td><td></td>
universe@390 416 </tr>
universe@390 417 </table>
universe@390 418 </div><div class="memdoc">
universe@390 419
universe@390 420 <p>Creates an element-wise copy of a list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p>
universe@390 421 <p>See <a class="el" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed" title="Creates an element-wise copy of a list. ">ucx_list_clone()</a> for details.</p>
universe@390 422 <p>You might want to pass the allocator via the <code>data</code> parameter, to access it within the copy function for making deep copies.</p>
universe@390 423 <dl class="params"><dt>Parameters</dt><dd>
universe@390 424 <table class="params">
universe@390 425 <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr>
universe@390 426 <tr><td class="paramname">list</td><td>the list to copy </td></tr>
universe@390 427 <tr><td class="paramname">cpyfnc</td><td>a pointer to the function that shall copy an element (may be <code>NULL</code>) </td></tr>
universe@390 428 <tr><td class="paramname">data</td><td>additional data for the <a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967" title="Function pointer to a copy function. ">copy_func()</a> </td></tr>
universe@390 429 </table>
universe@390 430 </dd>
universe@390 431 </dl>
universe@390 432 <dl class="section return"><dt>Returns</dt><dd>a pointer to the copy </dd></dl>
universe@390 433 <dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#ae7054a41c289b24e6caf5cb07ac850ed" title="Creates an element-wise copy of a list. ">ucx_list_clone()</a> </dd></dl>
universe@390 434
universe@390 435 </div>
universe@390 436 </div>
universe@390 437 <a id="a77163a0cc82fae52bec26c8c0c3674d9"></a>
universe@390 438 <h2 class="memtitle"><span class="permalink"><a href="#a77163a0cc82fae52bec26c8c0c3674d9">&#9670;&nbsp;</a></span>ucx_list_concat()</h2>
universe@390 439
universe@390 440 <div class="memitem">
universe@390 441 <div class="memproto">
universe@390 442 <table class="memname">
universe@390 443 <tr>
universe@390 444 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_concat </td>
universe@390 445 <td>(</td>
universe@390 446 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 447 <td class="paramname"><em>list1</em>, </td>
universe@390 448 </tr>
universe@390 449 <tr>
universe@390 450 <td class="paramkey"></td>
universe@390 451 <td></td>
universe@390 452 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 453 <td class="paramname"><em>list2</em>&#160;</td>
universe@390 454 </tr>
universe@390 455 <tr>
universe@390 456 <td></td>
universe@390 457 <td>)</td>
universe@390 458 <td></td><td></td>
universe@390 459 </tr>
universe@390 460 </table>
universe@390 461 </div><div class="memdoc">
universe@390 462
universe@390 463 <p>Concatenates two lists. </p>
universe@390 464 <p>Either of the two arguments may be <code>NULL</code>.</p>
universe@390 465 <p>This function modifies the references to the next/previous element of the last/first element of <code>list1</code>/<code> list2</code>.</p>
universe@390 466 <dl class="params"><dt>Parameters</dt><dd>
universe@390 467 <table class="params">
universe@390 468 <tr><td class="paramname">list1</td><td>first list </td></tr>
universe@390 469 <tr><td class="paramname">list2</td><td>second list </td></tr>
universe@390 470 </table>
universe@390 471 </dd>
universe@390 472 </dl>
universe@390 473 <dl class="section return"><dt>Returns</dt><dd>if <code>list1</code> is <code>NULL</code>, <code>list2</code> is returned, otherwise <code>list1</code> is returned </dd></dl>
universe@390 474
universe@390 475 </div>
universe@390 476 </div>
universe@390 477 <a id="a8b0fa051fcfe12e1a82cca1087973852"></a>
universe@390 478 <h2 class="memtitle"><span class="permalink"><a href="#a8b0fa051fcfe12e1a82cca1087973852">&#9670;&nbsp;</a></span>ucx_list_contains()</h2>
universe@390 479
universe@390 480 <div class="memitem">
universe@390 481 <div class="memproto">
universe@390 482 <table class="memname">
universe@390 483 <tr>
universe@390 484 <td class="memname">int ucx_list_contains </td>
universe@390 485 <td>(</td>
universe@390 486 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 487 <td class="paramname"><em>list</em>, </td>
universe@390 488 </tr>
universe@390 489 <tr>
universe@390 490 <td class="paramkey"></td>
universe@390 491 <td></td>
universe@390 492 <td class="paramtype">void *&#160;</td>
universe@390 493 <td class="paramname"><em>elem</em>, </td>
universe@390 494 </tr>
universe@390 495 <tr>
universe@390 496 <td class="paramkey"></td>
universe@390 497 <td></td>
universe@390 498 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 499 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 500 </tr>
universe@390 501 <tr>
universe@390 502 <td class="paramkey"></td>
universe@390 503 <td></td>
universe@390 504 <td class="paramtype">void *&#160;</td>
universe@390 505 <td class="paramname"><em>data</em>&#160;</td>
universe@390 506 </tr>
universe@390 507 <tr>
universe@390 508 <td></td>
universe@390 509 <td>)</td>
universe@390 510 <td></td><td></td>
universe@390 511 </tr>
universe@390 512 </table>
universe@390 513 </div><div class="memdoc">
universe@390 514
universe@390 515 <p>Checks, if a list contains a specific element. </p>
universe@390 516 <p>An element is found, if <a class="el" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83" title="Returns the index of an element containing the specified data. ">ucx_list_find()</a> returns a value greater than -1.</p>
universe@390 517 <dl class="params"><dt>Parameters</dt><dd>
universe@390 518 <table class="params">
universe@390 519 <tr><td class="paramname">list</td><td>the list where to search for the data </td></tr>
universe@390 520 <tr><td class="paramname">elem</td><td>the element data </td></tr>
universe@390 521 <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr>
universe@390 522 <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr>
universe@390 523 </table>
universe@390 524 </dd>
universe@390 525 </dl>
universe@390 526 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the list contains the specified element data </dd></dl>
universe@390 527 <dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a9b3b6842d3be572e06a7f519e198cb83" title="Returns the index of an element containing the specified data. ">ucx_list_find()</a> </dd></dl>
universe@390 528
universe@390 529 </div>
universe@390 530 </div>
universe@390 531 <a id="a6c5db5d1d11ad28b6fe1a80ee1c1e449"></a>
universe@390 532 <h2 class="memtitle"><span class="permalink"><a href="#a6c5db5d1d11ad28b6fe1a80ee1c1e449">&#9670;&nbsp;</a></span>ucx_list_difference()</h2>
universe@390 533
universe@390 534 <div class="memitem">
universe@390 535 <div class="memproto">
universe@390 536 <table class="memname">
universe@390 537 <tr>
universe@390 538 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_difference </td>
universe@390 539 <td>(</td>
universe@390 540 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 541 <td class="paramname"><em>left</em>, </td>
universe@390 542 </tr>
universe@390 543 <tr>
universe@390 544 <td class="paramkey"></td>
universe@390 545 <td></td>
universe@390 546 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 547 <td class="paramname"><em>right</em>, </td>
universe@390 548 </tr>
universe@390 549 <tr>
universe@390 550 <td class="paramkey"></td>
universe@390 551 <td></td>
universe@390 552 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 553 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 554 </tr>
universe@390 555 <tr>
universe@390 556 <td class="paramkey"></td>
universe@390 557 <td></td>
universe@390 558 <td class="paramtype">void *&#160;</td>
universe@390 559 <td class="paramname"><em>cmpdata</em>, </td>
universe@390 560 </tr>
universe@390 561 <tr>
universe@390 562 <td class="paramkey"></td>
universe@390 563 <td></td>
universe@390 564 <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
universe@390 565 <td class="paramname"><em>cpfnc</em>, </td>
universe@390 566 </tr>
universe@390 567 <tr>
universe@390 568 <td class="paramkey"></td>
universe@390 569 <td></td>
universe@390 570 <td class="paramtype">void *&#160;</td>
universe@390 571 <td class="paramname"><em>cpdata</em>&#160;</td>
universe@390 572 </tr>
universe@390 573 <tr>
universe@390 574 <td></td>
universe@390 575 <td>)</td>
universe@390 576 <td></td><td></td>
universe@390 577 </tr>
universe@390 578 </table>
universe@390 579 </div><div class="memdoc">
universe@390 580
universe@390 581 <p>Returns the difference of two lists. </p>
universe@390 582 <p>The difference contains all elements of the left list (including duplicates) that are not equal to any element of the right list.</p>
universe@390 583 <dl class="params"><dt>Parameters</dt><dd>
universe@390 584 <table class="params">
universe@390 585 <tr><td class="paramname">left</td><td>the left source list </td></tr>
universe@390 586 <tr><td class="paramname">right</td><td>the right source list </td></tr>
universe@390 587 <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr>
universe@390 588 <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr>
universe@390 589 <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
universe@390 590 <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
universe@390 591 </table>
universe@390 592 </dd>
universe@390 593 </dl>
universe@390 594 <dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl>
universe@390 595
universe@390 596 </div>
universe@390 597 </div>
universe@390 598 <a id="a4a2a2fc5cc41073c516db6235bbc51d5"></a>
universe@390 599 <h2 class="memtitle"><span class="permalink"><a href="#a4a2a2fc5cc41073c516db6235bbc51d5">&#9670;&nbsp;</a></span>ucx_list_difference_a()</h2>
universe@390 600
universe@390 601 <div class="memitem">
universe@390 602 <div class="memproto">
universe@390 603 <table class="memname">
universe@390 604 <tr>
universe@390 605 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_difference_a </td>
universe@390 606 <td>(</td>
universe@390 607 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 608 <td class="paramname"><em>allocator</em>, </td>
universe@390 609 </tr>
universe@390 610 <tr>
universe@390 611 <td class="paramkey"></td>
universe@390 612 <td></td>
universe@390 613 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 614 <td class="paramname"><em>left</em>, </td>
universe@390 615 </tr>
universe@390 616 <tr>
universe@390 617 <td class="paramkey"></td>
universe@390 618 <td></td>
universe@390 619 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 620 <td class="paramname"><em>right</em>, </td>
universe@390 621 </tr>
universe@390 622 <tr>
universe@390 623 <td class="paramkey"></td>
universe@390 624 <td></td>
universe@390 625 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 626 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 627 </tr>
universe@390 628 <tr>
universe@390 629 <td class="paramkey"></td>
universe@390 630 <td></td>
universe@390 631 <td class="paramtype">void *&#160;</td>
universe@390 632 <td class="paramname"><em>cmpdata</em>, </td>
universe@390 633 </tr>
universe@390 634 <tr>
universe@390 635 <td class="paramkey"></td>
universe@390 636 <td></td>
universe@390 637 <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
universe@390 638 <td class="paramname"><em>cpfnc</em>, </td>
universe@390 639 </tr>
universe@390 640 <tr>
universe@390 641 <td class="paramkey"></td>
universe@390 642 <td></td>
universe@390 643 <td class="paramtype">void *&#160;</td>
universe@390 644 <td class="paramname"><em>cpdata</em>&#160;</td>
universe@390 645 </tr>
universe@390 646 <tr>
universe@390 647 <td></td>
universe@390 648 <td>)</td>
universe@390 649 <td></td><td></td>
universe@390 650 </tr>
universe@390 651 </table>
universe@390 652 </div><div class="memdoc">
universe@390 653
universe@390 654 <p>Returns the difference of two lists. </p>
universe@390 655 <p>The difference contains all elements of the left list (including duplicates) that are not equal to any element of the right list.</p>
universe@390 656 <dl class="params"><dt>Parameters</dt><dd>
universe@390 657 <table class="params">
universe@390 658 <tr><td class="paramname">allocator</td><td>allocates the new list elements </td></tr>
universe@390 659 <tr><td class="paramname">left</td><td>the left source list </td></tr>
universe@390 660 <tr><td class="paramname">right</td><td>the right source list </td></tr>
universe@390 661 <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr>
universe@390 662 <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr>
universe@390 663 <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
universe@390 664 <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
universe@390 665 </table>
universe@390 666 </dd>
universe@390 667 </dl>
universe@390 668 <dl class="section return"><dt>Returns</dt><dd>a new list containing the difference </dd></dl>
universe@390 669
universe@390 670 </div>
universe@390 671 </div>
universe@390 672 <a id="adc435447cecf885bc63d232191085bbe"></a>
universe@390 673 <h2 class="memtitle"><span class="permalink"><a href="#adc435447cecf885bc63d232191085bbe">&#9670;&nbsp;</a></span>ucx_list_equals()</h2>
universe@390 674
universe@390 675 <div class="memitem">
universe@390 676 <div class="memproto">
universe@390 677 <table class="memname">
universe@390 678 <tr>
universe@390 679 <td class="memname">int ucx_list_equals </td>
universe@390 680 <td>(</td>
universe@390 681 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 682 <td class="paramname"><em>list1</em>, </td>
universe@390 683 </tr>
universe@390 684 <tr>
universe@390 685 <td class="paramkey"></td>
universe@390 686 <td></td>
universe@390 687 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 688 <td class="paramname"><em>list2</em>, </td>
universe@390 689 </tr>
universe@390 690 <tr>
universe@390 691 <td class="paramkey"></td>
universe@390 692 <td></td>
universe@390 693 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 694 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 695 </tr>
universe@390 696 <tr>
universe@390 697 <td class="paramkey"></td>
universe@390 698 <td></td>
universe@390 699 <td class="paramtype">void *&#160;</td>
universe@390 700 <td class="paramname"><em>data</em>&#160;</td>
universe@390 701 </tr>
universe@390 702 <tr>
universe@390 703 <td></td>
universe@390 704 <td>)</td>
universe@390 705 <td></td><td></td>
universe@390 706 </tr>
universe@390 707 </table>
universe@390 708 </div><div class="memdoc">
universe@390 709
universe@390 710 <p>Compares two UCX lists element-wise by using a compare function. </p>
universe@390 711 <p>Each element of the two specified lists are compared by using the specified compare function and the additional data. The type and content of this additional data depends on the <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> used.</p>
universe@390 712 <p>If the list pointers denote elements within a list, the lists are compared starting with the denoted elements. Thus any previous elements are not taken into account. This might be useful to check, if certain list tails match each other.</p>
universe@390 713 <dl class="params"><dt>Parameters</dt><dd>
universe@390 714 <table class="params">
universe@390 715 <tr><td class="paramname">list1</td><td>the first list </td></tr>
universe@390 716 <tr><td class="paramname">list2</td><td>the second list </td></tr>
universe@390 717 <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr>
universe@390 718 <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr>
universe@390 719 </table>
universe@390 720 </dd>
universe@390 721 </dl>
universe@390 722 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the two lists equal element-wise, 0 otherwise </dd></dl>
universe@390 723
universe@390 724 </div>
universe@390 725 </div>
universe@390 726 <a id="a9b3b6842d3be572e06a7f519e198cb83"></a>
universe@390 727 <h2 class="memtitle"><span class="permalink"><a href="#a9b3b6842d3be572e06a7f519e198cb83">&#9670;&nbsp;</a></span>ucx_list_find()</h2>
universe@390 728
universe@390 729 <div class="memitem">
universe@390 730 <div class="memproto">
universe@390 731 <table class="memname">
universe@390 732 <tr>
universe@390 733 <td class="memname">ssize_t ucx_list_find </td>
universe@390 734 <td>(</td>
universe@390 735 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 736 <td class="paramname"><em>list</em>, </td>
universe@390 737 </tr>
universe@390 738 <tr>
universe@390 739 <td class="paramkey"></td>
universe@390 740 <td></td>
universe@390 741 <td class="paramtype">void *&#160;</td>
universe@390 742 <td class="paramname"><em>elem</em>, </td>
universe@390 743 </tr>
universe@390 744 <tr>
universe@390 745 <td class="paramkey"></td>
universe@390 746 <td></td>
universe@390 747 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 748 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 749 </tr>
universe@390 750 <tr>
universe@390 751 <td class="paramkey"></td>
universe@390 752 <td></td>
universe@390 753 <td class="paramtype">void *&#160;</td>
universe@390 754 <td class="paramname"><em>data</em>&#160;</td>
universe@390 755 </tr>
universe@390 756 <tr>
universe@390 757 <td></td>
universe@390 758 <td>)</td>
universe@390 759 <td></td><td></td>
universe@390 760 </tr>
universe@390 761 </table>
universe@390 762 </div><div class="memdoc">
universe@390 763
universe@390 764 <p>Returns the index of an element containing the specified data. </p>
universe@390 765 <p>This function uses a <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> to compare the data of each list element with the specified data. If no cmp_func is provided, the pointers are compared.</p>
universe@390 766 <p>If the list contains the data more than once, the index of the first occurrence is returned.</p>
universe@390 767 <dl class="params"><dt>Parameters</dt><dd>
universe@390 768 <table class="params">
universe@390 769 <tr><td class="paramname">list</td><td>the list where to search for the data </td></tr>
universe@390 770 <tr><td class="paramname">elem</td><td>the element data </td></tr>
universe@390 771 <tr><td class="paramname">cmpfnc</td><td>the compare function </td></tr>
universe@390 772 <tr><td class="paramname">data</td><td>additional data for the compare function </td></tr>
universe@390 773 </table>
universe@390 774 </dd>
universe@390 775 </dl>
universe@390 776 <dl class="section return"><dt>Returns</dt><dd>the index of the element containing the specified data or -1 if the data is not found in this list </dd></dl>
universe@390 777
universe@390 778 </div>
universe@390 779 </div>
universe@390 780 <a id="a6aa0e34ebc5f0dca6f52d0f7626b4bd5"></a>
universe@390 781 <h2 class="memtitle"><span class="permalink"><a href="#a6aa0e34ebc5f0dca6f52d0f7626b4bd5">&#9670;&nbsp;</a></span>ucx_list_first()</h2>
universe@390 782
universe@390 783 <div class="memitem">
universe@390 784 <div class="memproto">
universe@390 785 <table class="memname">
universe@390 786 <tr>
universe@390 787 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_first </td>
universe@390 788 <td>(</td>
universe@390 789 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 790 <td class="paramname"><em>elem</em></td><td>)</td>
universe@390 791 <td></td>
universe@390 792 </tr>
universe@390 793 </table>
universe@390 794 </div><div class="memdoc">
universe@390 795
universe@390 796 <p>Returns the first element of a list. </p>
universe@390 797 <p>If the argument is the list pointer, it is directly returned. Otherwise this function traverses to the first element of the list and returns the list pointer.</p>
universe@390 798 <dl class="params"><dt>Parameters</dt><dd>
universe@390 799 <table class="params">
universe@390 800 <tr><td class="paramname">elem</td><td>one element of the list </td></tr>
universe@390 801 </table>
universe@390 802 </dd>
universe@390 803 </dl>
universe@390 804 <dl class="section return"><dt>Returns</dt><dd>the first element of the list, the specified element is a member of </dd></dl>
universe@390 805
universe@390 806 </div>
universe@390 807 </div>
universe@390 808 <a id="a1a0fa2c5b1e478a96da19b0c3f013668"></a>
universe@390 809 <h2 class="memtitle"><span class="permalink"><a href="#a1a0fa2c5b1e478a96da19b0c3f013668">&#9670;&nbsp;</a></span>ucx_list_free()</h2>
universe@390 810
universe@390 811 <div class="memitem">
universe@390 812 <div class="memproto">
universe@390 813 <table class="memname">
universe@390 814 <tr>
universe@390 815 <td class="memname">void ucx_list_free </td>
universe@390 816 <td>(</td>
universe@390 817 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 818 <td class="paramname"><em>list</em></td><td>)</td>
universe@390 819 <td></td>
universe@390 820 </tr>
universe@390 821 </table>
universe@390 822 </div><div class="memdoc">
universe@390 823
universe@390 824 <p>Destroys the entire list. </p>
universe@390 825 <p>The members of the list are not automatically freed, so ensure they are otherwise referenced or destroyed by ucx_list_free_contents(). Otherwise, a memory leak is likely to occur.</p>
universe@390 826 <p><b>Caution:</b> the argument <b>MUST</b> denote an entire list (i.e. a call to <a class="el" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5" title="Returns the first element of a list. ">ucx_list_first()</a> on the argument must return the argument itself)</p>
universe@390 827 <dl class="params"><dt>Parameters</dt><dd>
universe@390 828 <table class="params">
universe@390 829 <tr><td class="paramname">list</td><td>the list to free </td></tr>
universe@390 830 </table>
universe@390 831 </dd>
universe@390 832 </dl>
universe@390 833 <dl class="section see"><dt>See also</dt><dd>ucx_list_free_contents() </dd></dl>
universe@390 834
universe@390 835 </div>
universe@390 836 </div>
universe@390 837 <a id="a944e11f76c38767cd1100d72a4e3b25b"></a>
universe@390 838 <h2 class="memtitle"><span class="permalink"><a href="#a944e11f76c38767cd1100d72a4e3b25b">&#9670;&nbsp;</a></span>ucx_list_free_a()</h2>
universe@390 839
universe@390 840 <div class="memitem">
universe@390 841 <div class="memproto">
universe@390 842 <table class="memname">
universe@390 843 <tr>
universe@390 844 <td class="memname">void ucx_list_free_a </td>
universe@390 845 <td>(</td>
universe@390 846 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 847 <td class="paramname"><em>allocator</em>, </td>
universe@390 848 </tr>
universe@390 849 <tr>
universe@390 850 <td class="paramkey"></td>
universe@390 851 <td></td>
universe@390 852 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 853 <td class="paramname"><em>list</em>&#160;</td>
universe@390 854 </tr>
universe@390 855 <tr>
universe@390 856 <td></td>
universe@390 857 <td>)</td>
universe@390 858 <td></td><td></td>
universe@390 859 </tr>
universe@390 860 </table>
universe@390 861 </div><div class="memdoc">
universe@390 862
universe@390 863 <p>Destroys the entire list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p>
universe@390 864 <p>See <a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668" title="Destroys the entire list. ">ucx_list_free()</a> for details.</p>
universe@390 865 <dl class="params"><dt>Parameters</dt><dd>
universe@390 866 <table class="params">
universe@390 867 <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr>
universe@390 868 <tr><td class="paramname">list</td><td>the list to free </td></tr>
universe@390 869 </table>
universe@390 870 </dd>
universe@390 871 </dl>
universe@390 872 <dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668" title="Destroys the entire list. ">ucx_list_free()</a> </dd></dl>
universe@390 873
universe@390 874 </div>
universe@390 875 </div>
universe@390 876 <a id="a4ba6c96642f72ea046cc22627c72979c"></a>
universe@390 877 <h2 class="memtitle"><span class="permalink"><a href="#a4ba6c96642f72ea046cc22627c72979c">&#9670;&nbsp;</a></span>ucx_list_free_content()</h2>
universe@390 878
universe@390 879 <div class="memitem">
universe@390 880 <div class="memproto">
universe@390 881 <table class="memname">
universe@390 882 <tr>
universe@390 883 <td class="memname">void ucx_list_free_content </td>
universe@390 884 <td>(</td>
universe@390 885 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 886 <td class="paramname"><em>list</em>, </td>
universe@390 887 </tr>
universe@390 888 <tr>
universe@390 889 <td class="paramkey"></td>
universe@390 890 <td></td>
universe@390 891 <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a>&#160;</td>
universe@390 892 <td class="paramname"><em>destr</em>&#160;</td>
universe@390 893 </tr>
universe@390 894 <tr>
universe@390 895 <td></td>
universe@390 896 <td>)</td>
universe@390 897 <td></td><td></td>
universe@390 898 </tr>
universe@390 899 </table>
universe@390 900 </div><div class="memdoc">
universe@390 901
universe@390 902 <p>Destroys the contents of the specified list by calling the specified destructor on each of them. </p>
universe@390 903 <p>Note, that the contents are not usable afterwards and the list should be destroyed with <a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668" title="Destroys the entire list. ">ucx_list_free()</a>.</p>
universe@390 904 <p>If no destructor is specified (<code>NULL</code>), stdlib's free() is used.</p>
universe@390 905 <dl class="params"><dt>Parameters</dt><dd>
universe@390 906 <table class="params">
universe@390 907 <tr><td class="paramname">list</td><td>the list for which the contents shall be freed </td></tr>
universe@390 908 <tr><td class="paramname">destr</td><td>optional destructor function </td></tr>
universe@390 909 </table>
universe@390 910 </dd>
universe@390 911 </dl>
universe@390 912 <dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a1a0fa2c5b1e478a96da19b0c3f013668" title="Destroys the entire list. ">ucx_list_free()</a> </dd></dl>
universe@390 913
universe@390 914 </div>
universe@390 915 </div>
universe@390 916 <a id="a2509ffe19bce6a8708c77f89480c75fb"></a>
universe@390 917 <h2 class="memtitle"><span class="permalink"><a href="#a2509ffe19bce6a8708c77f89480c75fb">&#9670;&nbsp;</a></span>ucx_list_get()</h2>
universe@390 918
universe@390 919 <div class="memitem">
universe@390 920 <div class="memproto">
universe@390 921 <table class="memname">
universe@390 922 <tr>
universe@390 923 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_get </td>
universe@390 924 <td>(</td>
universe@390 925 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 926 <td class="paramname"><em>list</em>, </td>
universe@390 927 </tr>
universe@390 928 <tr>
universe@390 929 <td class="paramkey"></td>
universe@390 930 <td></td>
universe@390 931 <td class="paramtype">size_t&#160;</td>
universe@390 932 <td class="paramname"><em>index</em>&#160;</td>
universe@390 933 </tr>
universe@390 934 <tr>
universe@390 935 <td></td>
universe@390 936 <td>)</td>
universe@390 937 <td></td><td></td>
universe@390 938 </tr>
universe@390 939 </table>
universe@390 940 </div><div class="memdoc">
universe@390 941
universe@390 942 <p>Returns the list element at the specified index. </p>
universe@390 943 <dl class="params"><dt>Parameters</dt><dd>
universe@390 944 <table class="params">
universe@390 945 <tr><td class="paramname">list</td><td>the list to retrieve the element from </td></tr>
universe@390 946 <tr><td class="paramname">index</td><td>index of the element to return </td></tr>
universe@390 947 </table>
universe@390 948 </dd>
universe@390 949 </dl>
universe@390 950 <dl class="section return"><dt>Returns</dt><dd>the element at the specified index or <code>NULL</code>, if the index is greater than the list size </dd></dl>
universe@390 951
universe@390 952 </div>
universe@390 953 </div>
universe@390 954 <a id="ae2ff2974812ca185870f80bc4ed9337e"></a>
universe@390 955 <h2 class="memtitle"><span class="permalink"><a href="#ae2ff2974812ca185870f80bc4ed9337e">&#9670;&nbsp;</a></span>ucx_list_indexof()</h2>
universe@390 956
universe@390 957 <div class="memitem">
universe@390 958 <div class="memproto">
universe@390 959 <table class="memname">
universe@390 960 <tr>
universe@390 961 <td class="memname">ssize_t ucx_list_indexof </td>
universe@390 962 <td>(</td>
universe@390 963 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 964 <td class="paramname"><em>list</em>, </td>
universe@390 965 </tr>
universe@390 966 <tr>
universe@390 967 <td class="paramkey"></td>
universe@390 968 <td></td>
universe@390 969 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 970 <td class="paramname"><em>elem</em>&#160;</td>
universe@390 971 </tr>
universe@390 972 <tr>
universe@390 973 <td></td>
universe@390 974 <td>)</td>
universe@390 975 <td></td><td></td>
universe@390 976 </tr>
universe@390 977 </table>
universe@390 978 </div><div class="memdoc">
universe@390 979
universe@390 980 <p>Returns the index of an element. </p>
universe@390 981 <dl class="params"><dt>Parameters</dt><dd>
universe@390 982 <table class="params">
universe@390 983 <tr><td class="paramname">list</td><td>the list where to search for the element </td></tr>
universe@390 984 <tr><td class="paramname">elem</td><td>the element to find </td></tr>
universe@390 985 </table>
universe@390 986 </dd>
universe@390 987 </dl>
universe@390 988 <dl class="section return"><dt>Returns</dt><dd>the index of the element or -1 if the list does not contain the element </dd></dl>
universe@390 989
universe@390 990 </div>
universe@390 991 </div>
universe@390 992 <a id="a259f9b754978aeca23dfabba16e20f39"></a>
universe@390 993 <h2 class="memtitle"><span class="permalink"><a href="#a259f9b754978aeca23dfabba16e20f39">&#9670;&nbsp;</a></span>ucx_list_intersection()</h2>
universe@390 994
universe@390 995 <div class="memitem">
universe@390 996 <div class="memproto">
universe@390 997 <table class="memname">
universe@390 998 <tr>
universe@390 999 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_intersection </td>
universe@390 1000 <td>(</td>
universe@390 1001 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1002 <td class="paramname"><em>left</em>, </td>
universe@390 1003 </tr>
universe@390 1004 <tr>
universe@390 1005 <td class="paramkey"></td>
universe@390 1006 <td></td>
universe@390 1007 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1008 <td class="paramname"><em>right</em>, </td>
universe@390 1009 </tr>
universe@390 1010 <tr>
universe@390 1011 <td class="paramkey"></td>
universe@390 1012 <td></td>
universe@390 1013 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 1014 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 1015 </tr>
universe@390 1016 <tr>
universe@390 1017 <td class="paramkey"></td>
universe@390 1018 <td></td>
universe@390 1019 <td class="paramtype">void *&#160;</td>
universe@390 1020 <td class="paramname"><em>cmpdata</em>, </td>
universe@390 1021 </tr>
universe@390 1022 <tr>
universe@390 1023 <td class="paramkey"></td>
universe@390 1024 <td></td>
universe@390 1025 <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
universe@390 1026 <td class="paramname"><em>cpfnc</em>, </td>
universe@390 1027 </tr>
universe@390 1028 <tr>
universe@390 1029 <td class="paramkey"></td>
universe@390 1030 <td></td>
universe@390 1031 <td class="paramtype">void *&#160;</td>
universe@390 1032 <td class="paramname"><em>cpdata</em>&#160;</td>
universe@390 1033 </tr>
universe@390 1034 <tr>
universe@390 1035 <td></td>
universe@390 1036 <td>)</td>
universe@390 1037 <td></td><td></td>
universe@390 1038 </tr>
universe@390 1039 </table>
universe@390 1040 </div><div class="memdoc">
universe@390 1041
universe@390 1042 <p>Returns the intersection of two lists. </p>
universe@390 1043 <p>The intersection contains all elements of the left list (including duplicates) that can be found in the right list.</p>
universe@390 1044 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1045 <table class="params">
universe@390 1046 <tr><td class="paramname">left</td><td>the left source list </td></tr>
universe@390 1047 <tr><td class="paramname">right</td><td>the right source list </td></tr>
universe@390 1048 <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr>
universe@390 1049 <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr>
universe@390 1050 <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
universe@390 1051 <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
universe@390 1052 </table>
universe@390 1053 </dd>
universe@390 1054 </dl>
universe@390 1055 <dl class="section return"><dt>Returns</dt><dd>a new list containing the intersection </dd></dl>
universe@390 1056
universe@390 1057 </div>
universe@390 1058 </div>
universe@390 1059 <a id="a1d0b00514dbb81ba6270b58da0c5b9a8"></a>
universe@390 1060 <h2 class="memtitle"><span class="permalink"><a href="#a1d0b00514dbb81ba6270b58da0c5b9a8">&#9670;&nbsp;</a></span>ucx_list_intersection_a()</h2>
universe@390 1061
universe@390 1062 <div class="memitem">
universe@390 1063 <div class="memproto">
universe@390 1064 <table class="memname">
universe@390 1065 <tr>
universe@390 1066 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_intersection_a </td>
universe@390 1067 <td>(</td>
universe@390 1068 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 1069 <td class="paramname"><em>allocator</em>, </td>
universe@390 1070 </tr>
universe@390 1071 <tr>
universe@390 1072 <td class="paramkey"></td>
universe@390 1073 <td></td>
universe@390 1074 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1075 <td class="paramname"><em>left</em>, </td>
universe@390 1076 </tr>
universe@390 1077 <tr>
universe@390 1078 <td class="paramkey"></td>
universe@390 1079 <td></td>
universe@390 1080 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1081 <td class="paramname"><em>right</em>, </td>
universe@390 1082 </tr>
universe@390 1083 <tr>
universe@390 1084 <td class="paramkey"></td>
universe@390 1085 <td></td>
universe@390 1086 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 1087 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 1088 </tr>
universe@390 1089 <tr>
universe@390 1090 <td class="paramkey"></td>
universe@390 1091 <td></td>
universe@390 1092 <td class="paramtype">void *&#160;</td>
universe@390 1093 <td class="paramname"><em>cmpdata</em>, </td>
universe@390 1094 </tr>
universe@390 1095 <tr>
universe@390 1096 <td class="paramkey"></td>
universe@390 1097 <td></td>
universe@390 1098 <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
universe@390 1099 <td class="paramname"><em>cpfnc</em>, </td>
universe@390 1100 </tr>
universe@390 1101 <tr>
universe@390 1102 <td class="paramkey"></td>
universe@390 1103 <td></td>
universe@390 1104 <td class="paramtype">void *&#160;</td>
universe@390 1105 <td class="paramname"><em>cpdata</em>&#160;</td>
universe@390 1106 </tr>
universe@390 1107 <tr>
universe@390 1108 <td></td>
universe@390 1109 <td>)</td>
universe@390 1110 <td></td><td></td>
universe@390 1111 </tr>
universe@390 1112 </table>
universe@390 1113 </div><div class="memdoc">
universe@390 1114
universe@390 1115 <p>Returns the intersection of two lists. </p>
universe@390 1116 <p>The intersection contains all elements of the left list (including duplicates) that can be found in the right list.</p>
universe@390 1117 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1118 <table class="params">
universe@390 1119 <tr><td class="paramname">allocator</td><td>allocates the new list elements </td></tr>
universe@390 1120 <tr><td class="paramname">left</td><td>the left source list </td></tr>
universe@390 1121 <tr><td class="paramname">right</td><td>the right source list </td></tr>
universe@390 1122 <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr>
universe@390 1123 <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr>
universe@390 1124 <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
universe@390 1125 <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
universe@390 1126 </table>
universe@390 1127 </dd>
universe@390 1128 </dl>
universe@390 1129 <dl class="section return"><dt>Returns</dt><dd>a new list containing the intersection </dd></dl>
universe@390 1130
universe@390 1131 </div>
universe@390 1132 </div>
universe@390 1133 <a id="add5ec40c5006e29c629d23c2eb5a6553"></a>
universe@390 1134 <h2 class="memtitle"><span class="permalink"><a href="#add5ec40c5006e29c629d23c2eb5a6553">&#9670;&nbsp;</a></span>ucx_list_last()</h2>
universe@390 1135
universe@390 1136 <div class="memitem">
universe@390 1137 <div class="memproto">
universe@390 1138 <table class="memname">
universe@390 1139 <tr>
universe@390 1140 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_last </td>
universe@390 1141 <td>(</td>
universe@390 1142 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1143 <td class="paramname"><em>elem</em></td><td>)</td>
universe@390 1144 <td></td>
universe@390 1145 </tr>
universe@390 1146 </table>
universe@390 1147 </div><div class="memdoc">
universe@390 1148
universe@390 1149 <p>Returns the last element of a list. </p>
universe@390 1150 <p>If the argument has no successor, it is the last element and therefore directly returned. Otherwise this function traverses to the last element of the list and returns it.</p>
universe@390 1151 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1152 <table class="params">
universe@390 1153 <tr><td class="paramname">elem</td><td>one element of the list </td></tr>
universe@390 1154 </table>
universe@390 1155 </dd>
universe@390 1156 </dl>
universe@390 1157 <dl class="section return"><dt>Returns</dt><dd>the last element of the list, the specified element is a member of </dd></dl>
universe@390 1158
universe@390 1159 </div>
universe@390 1160 </div>
universe@390 1161 <a id="a8fcb68e4556395b15180eec2d0b77aa4"></a>
universe@390 1162 <h2 class="memtitle"><span class="permalink"><a href="#a8fcb68e4556395b15180eec2d0b77aa4">&#9670;&nbsp;</a></span>ucx_list_prepend()</h2>
universe@390 1163
universe@390 1164 <div class="memitem">
universe@390 1165 <div class="memproto">
universe@390 1166 <table class="memname">
universe@390 1167 <tr>
universe@390 1168 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_prepend </td>
universe@390 1169 <td>(</td>
universe@390 1170 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1171 <td class="paramname"><em>list</em>, </td>
universe@390 1172 </tr>
universe@390 1173 <tr>
universe@390 1174 <td class="paramkey"></td>
universe@390 1175 <td></td>
universe@390 1176 <td class="paramtype">void *&#160;</td>
universe@390 1177 <td class="paramname"><em>data</em>&#160;</td>
universe@390 1178 </tr>
universe@390 1179 <tr>
universe@390 1180 <td></td>
universe@390 1181 <td>)</td>
universe@390 1182 <td></td><td></td>
universe@390 1183 </tr>
universe@390 1184 </table>
universe@390 1185 </div><div class="memdoc">
universe@390 1186
universe@390 1187 <p>Inserts an element at the beginning of the list. </p>
universe@390 1188 <p>You <em>should</em> overwrite the old list pointer by calling <code>mylist = ucx_list_prepend(mylist, mydata);</code>. However, you may also perform successive calls of <a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4" title="Inserts an element at the beginning of the list. ">ucx_list_prepend()</a> on the same list pointer, as this function always searchs for the head of the list with <a class="el" href="list_8h.html#a6aa0e34ebc5f0dca6f52d0f7626b4bd5" title="Returns the first element of a list. ">ucx_list_first()</a>.</p>
universe@390 1189 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1190 <table class="params">
universe@390 1191 <tr><td class="paramname">list</td><td>the list where to insert the data or <code>NULL</code> to create a new list </td></tr>
universe@390 1192 <tr><td class="paramname">data</td><td>the data to insert </td></tr>
universe@390 1193 </table>
universe@390 1194 </dd>
universe@390 1195 </dl>
universe@390 1196 <dl class="section return"><dt>Returns</dt><dd>a pointer to the new list head </dd></dl>
universe@390 1197
universe@390 1198 </div>
universe@390 1199 </div>
universe@390 1200 <a id="a54654e6dc60e1c3de9e886c150e404ec"></a>
universe@390 1201 <h2 class="memtitle"><span class="permalink"><a href="#a54654e6dc60e1c3de9e886c150e404ec">&#9670;&nbsp;</a></span>ucx_list_prepend_a()</h2>
universe@390 1202
universe@390 1203 <div class="memitem">
universe@390 1204 <div class="memproto">
universe@390 1205 <table class="memname">
universe@390 1206 <tr>
universe@390 1207 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_prepend_a </td>
universe@390 1208 <td>(</td>
universe@390 1209 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 1210 <td class="paramname"><em>allocator</em>, </td>
universe@390 1211 </tr>
universe@390 1212 <tr>
universe@390 1213 <td class="paramkey"></td>
universe@390 1214 <td></td>
universe@390 1215 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1216 <td class="paramname"><em>list</em>, </td>
universe@390 1217 </tr>
universe@390 1218 <tr>
universe@390 1219 <td class="paramkey"></td>
universe@390 1220 <td></td>
universe@390 1221 <td class="paramtype">void *&#160;</td>
universe@390 1222 <td class="paramname"><em>data</em>&#160;</td>
universe@390 1223 </tr>
universe@390 1224 <tr>
universe@390 1225 <td></td>
universe@390 1226 <td>)</td>
universe@390 1227 <td></td><td></td>
universe@390 1228 </tr>
universe@390 1229 </table>
universe@390 1230 </div><div class="memdoc">
universe@390 1231
universe@390 1232 <p>Inserts an element at the beginning of the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p>
universe@390 1233 <p>See <a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4" title="Inserts an element at the beginning of the list. ">ucx_list_prepend()</a> for details.</p>
universe@390 1234 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1235 <table class="params">
universe@390 1236 <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr>
universe@390 1237 <tr><td class="paramname">list</td><td>the list where to insert the data or <code>NULL</code> to create a new list </td></tr>
universe@390 1238 <tr><td class="paramname">data</td><td>the data to insert </td></tr>
universe@390 1239 </table>
universe@390 1240 </dd>
universe@390 1241 </dl>
universe@390 1242 <dl class="section return"><dt>Returns</dt><dd>a pointer to the new list head </dd></dl>
universe@390 1243 <dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a8fcb68e4556395b15180eec2d0b77aa4" title="Inserts an element at the beginning of the list. ">ucx_list_prepend()</a> </dd></dl>
universe@390 1244
universe@390 1245 </div>
universe@390 1246 </div>
universe@390 1247 <a id="a410cb3e8260037ba56c72d14b899b468"></a>
universe@390 1248 <h2 class="memtitle"><span class="permalink"><a href="#a410cb3e8260037ba56c72d14b899b468">&#9670;&nbsp;</a></span>ucx_list_remove()</h2>
universe@390 1249
universe@390 1250 <div class="memitem">
universe@390 1251 <div class="memproto">
universe@390 1252 <table class="memname">
universe@390 1253 <tr>
universe@390 1254 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_remove </td>
universe@390 1255 <td>(</td>
universe@390 1256 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1257 <td class="paramname"><em>list</em>, </td>
universe@390 1258 </tr>
universe@390 1259 <tr>
universe@390 1260 <td class="paramkey"></td>
universe@390 1261 <td></td>
universe@390 1262 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1263 <td class="paramname"><em>element</em>&#160;</td>
universe@390 1264 </tr>
universe@390 1265 <tr>
universe@390 1266 <td></td>
universe@390 1267 <td>)</td>
universe@390 1268 <td></td><td></td>
universe@390 1269 </tr>
universe@390 1270 </table>
universe@390 1271 </div><div class="memdoc">
universe@390 1272
universe@390 1273 <p>Removes an element from the list. </p>
universe@390 1274 <p>If the first element is removed, the list pointer changes. So it is <em>highly recommended</em> to <em>always</em> update the pointer by calling <code>mylist = ucx_list_remove(mylist, myelem);</code>.</p>
universe@390 1275 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1276 <table class="params">
universe@390 1277 <tr><td class="paramname">list</td><td>the list from which the element shall be removed </td></tr>
universe@390 1278 <tr><td class="paramname">element</td><td>the element to remove </td></tr>
universe@390 1279 </table>
universe@390 1280 </dd>
universe@390 1281 </dl>
universe@390 1282 <dl class="section return"><dt>Returns</dt><dd>returns the updated list pointer or <code>NULL</code>, if the list is now empty </dd></dl>
universe@390 1283
universe@390 1284 </div>
universe@390 1285 </div>
universe@390 1286 <a id="aca687b7c4e7170175f447e549125aa52"></a>
universe@390 1287 <h2 class="memtitle"><span class="permalink"><a href="#aca687b7c4e7170175f447e549125aa52">&#9670;&nbsp;</a></span>ucx_list_remove_a()</h2>
universe@390 1288
universe@390 1289 <div class="memitem">
universe@390 1290 <div class="memproto">
universe@390 1291 <table class="memname">
universe@390 1292 <tr>
universe@390 1293 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_remove_a </td>
universe@390 1294 <td>(</td>
universe@390 1295 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 1296 <td class="paramname"><em>allocator</em>, </td>
universe@390 1297 </tr>
universe@390 1298 <tr>
universe@390 1299 <td class="paramkey"></td>
universe@390 1300 <td></td>
universe@390 1301 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1302 <td class="paramname"><em>list</em>, </td>
universe@390 1303 </tr>
universe@390 1304 <tr>
universe@390 1305 <td class="paramkey"></td>
universe@390 1306 <td></td>
universe@390 1307 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1308 <td class="paramname"><em>element</em>&#160;</td>
universe@390 1309 </tr>
universe@390 1310 <tr>
universe@390 1311 <td></td>
universe@390 1312 <td>)</td>
universe@390 1313 <td></td><td></td>
universe@390 1314 </tr>
universe@390 1315 </table>
universe@390 1316 </div><div class="memdoc">
universe@390 1317
universe@390 1318 <p>Removes an element from the list using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p>
universe@390 1319 <p>See <a class="el" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468" title="Removes an element from the list. ">ucx_list_remove()</a> for details.</p>
universe@390 1320 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1321 <table class="params">
universe@390 1322 <tr><td class="paramname">allocator</td><td>the allocator to use </td></tr>
universe@390 1323 <tr><td class="paramname">list</td><td>the list from which the element shall be removed </td></tr>
universe@390 1324 <tr><td class="paramname">element</td><td>the element to remove </td></tr>
universe@390 1325 </table>
universe@390 1326 </dd>
universe@390 1327 </dl>
universe@390 1328 <dl class="section return"><dt>Returns</dt><dd>returns the updated list pointer or <code>NULL</code>, if the list </dd></dl>
universe@390 1329 <dl class="section see"><dt>See also</dt><dd><a class="el" href="list_8h.html#a410cb3e8260037ba56c72d14b899b468" title="Removes an element from the list. ">ucx_list_remove()</a> </dd></dl>
universe@390 1330
universe@390 1331 </div>
universe@390 1332 </div>
universe@390 1333 <a id="ae88001cc8ae40b946560f31434abed8f"></a>
universe@390 1334 <h2 class="memtitle"><span class="permalink"><a href="#ae88001cc8ae40b946560f31434abed8f">&#9670;&nbsp;</a></span>ucx_list_size()</h2>
universe@390 1335
universe@390 1336 <div class="memitem">
universe@390 1337 <div class="memproto">
universe@390 1338 <table class="memname">
universe@390 1339 <tr>
universe@390 1340 <td class="memname">size_t ucx_list_size </td>
universe@390 1341 <td>(</td>
universe@390 1342 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1343 <td class="paramname"><em>list</em></td><td>)</td>
universe@390 1344 <td></td>
universe@390 1345 </tr>
universe@390 1346 </table>
universe@390 1347 </div><div class="memdoc">
universe@390 1348
universe@390 1349 <p>Returns the element count of the list. </p>
universe@390 1350 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1351 <table class="params">
universe@390 1352 <tr><td class="paramname">list</td><td>the list whose elements are counted </td></tr>
universe@390 1353 </table>
universe@390 1354 </dd>
universe@390 1355 </dl>
universe@390 1356 <dl class="section return"><dt>Returns</dt><dd>the element count </dd></dl>
universe@390 1357
universe@390 1358 </div>
universe@390 1359 </div>
universe@390 1360 <a id="ac74962d9bd7cfc9d3e2e09651469377b"></a>
universe@390 1361 <h2 class="memtitle"><span class="permalink"><a href="#ac74962d9bd7cfc9d3e2e09651469377b">&#9670;&nbsp;</a></span>ucx_list_sort()</h2>
universe@390 1362
universe@390 1363 <div class="memitem">
universe@390 1364 <div class="memproto">
universe@390 1365 <table class="memname">
universe@390 1366 <tr>
universe@390 1367 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_sort </td>
universe@390 1368 <td>(</td>
universe@390 1369 <td class="paramtype"><a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1370 <td class="paramname"><em>list</em>, </td>
universe@390 1371 </tr>
universe@390 1372 <tr>
universe@390 1373 <td class="paramkey"></td>
universe@390 1374 <td></td>
universe@390 1375 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 1376 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 1377 </tr>
universe@390 1378 <tr>
universe@390 1379 <td class="paramkey"></td>
universe@390 1380 <td></td>
universe@390 1381 <td class="paramtype">void *&#160;</td>
universe@390 1382 <td class="paramname"><em>data</em>&#160;</td>
universe@390 1383 </tr>
universe@390 1384 <tr>
universe@390 1385 <td></td>
universe@390 1386 <td>)</td>
universe@390 1387 <td></td><td></td>
universe@390 1388 </tr>
universe@390 1389 </table>
universe@390 1390 </div><div class="memdoc">
universe@390 1391
universe@390 1392 <p>Sorts a <a class="el" href="structUcxList.html" title="UCX list structure. ">UcxList</a> with natural merge sort. </p>
universe@390 1393 <p>This function uses O(n) additional temporary memory for merge operations that is automatically freed after each merge.</p>
universe@390 1394 <p>As the head of the list might change, you <b>MUST</b> call this function as follows: <code>mylist = ucx_list_sort(mylist, mycmpfnc, mydata);</code>.</p>
universe@390 1395 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1396 <table class="params">
universe@390 1397 <tr><td class="paramname">list</td><td>the list to sort </td></tr>
universe@390 1398 <tr><td class="paramname">cmpfnc</td><td>the function that shall be used to compare the element data </td></tr>
universe@390 1399 <tr><td class="paramname">data</td><td>additional data for the <a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791" title="Function pointer to a compare function. ">cmp_func()</a> </td></tr>
universe@390 1400 </table>
universe@390 1401 </dd>
universe@390 1402 </dl>
universe@390 1403 <dl class="section return"><dt>Returns</dt><dd>the sorted list </dd></dl>
universe@390 1404
universe@390 1405 </div>
universe@390 1406 </div>
universe@390 1407 <a id="a94ecdb0cea1633ad7074f027fa8485fa"></a>
universe@390 1408 <h2 class="memtitle"><span class="permalink"><a href="#a94ecdb0cea1633ad7074f027fa8485fa">&#9670;&nbsp;</a></span>ucx_list_union()</h2>
universe@390 1409
universe@390 1410 <div class="memitem">
universe@390 1411 <div class="memproto">
universe@390 1412 <table class="memname">
universe@390 1413 <tr>
universe@390 1414 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_union </td>
universe@390 1415 <td>(</td>
universe@390 1416 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1417 <td class="paramname"><em>left</em>, </td>
universe@390 1418 </tr>
universe@390 1419 <tr>
universe@390 1420 <td class="paramkey"></td>
universe@390 1421 <td></td>
universe@390 1422 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1423 <td class="paramname"><em>right</em>, </td>
universe@390 1424 </tr>
universe@390 1425 <tr>
universe@390 1426 <td class="paramkey"></td>
universe@390 1427 <td></td>
universe@390 1428 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 1429 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 1430 </tr>
universe@390 1431 <tr>
universe@390 1432 <td class="paramkey"></td>
universe@390 1433 <td></td>
universe@390 1434 <td class="paramtype">void *&#160;</td>
universe@390 1435 <td class="paramname"><em>cmpdata</em>, </td>
universe@390 1436 </tr>
universe@390 1437 <tr>
universe@390 1438 <td class="paramkey"></td>
universe@390 1439 <td></td>
universe@390 1440 <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
universe@390 1441 <td class="paramname"><em>cpfnc</em>, </td>
universe@390 1442 </tr>
universe@390 1443 <tr>
universe@390 1444 <td class="paramkey"></td>
universe@390 1445 <td></td>
universe@390 1446 <td class="paramtype">void *&#160;</td>
universe@390 1447 <td class="paramname"><em>cpdata</em>&#160;</td>
universe@390 1448 </tr>
universe@390 1449 <tr>
universe@390 1450 <td></td>
universe@390 1451 <td>)</td>
universe@390 1452 <td></td><td></td>
universe@390 1453 </tr>
universe@390 1454 </table>
universe@390 1455 </div><div class="memdoc">
universe@390 1456
universe@390 1457 <p>Returns the union of two lists. </p>
universe@390 1458 <p>The union is a list of unique elements regarding cmpfnc obtained from both source lists.</p>
universe@390 1459 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1460 <table class="params">
universe@390 1461 <tr><td class="paramname">left</td><td>the left source list </td></tr>
universe@390 1462 <tr><td class="paramname">right</td><td>the right source list </td></tr>
universe@390 1463 <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr>
universe@390 1464 <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr>
universe@390 1465 <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
universe@390 1466 <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
universe@390 1467 </table>
universe@390 1468 </dd>
universe@390 1469 </dl>
universe@390 1470 <dl class="section return"><dt>Returns</dt><dd>a new list containing the union </dd></dl>
universe@390 1471
universe@390 1472 </div>
universe@390 1473 </div>
universe@390 1474 <a id="a65b4355536f4ebc4130211b46469f4c1"></a>
universe@390 1475 <h2 class="memtitle"><span class="permalink"><a href="#a65b4355536f4ebc4130211b46469f4c1">&#9670;&nbsp;</a></span>ucx_list_union_a()</h2>
universe@390 1476
universe@390 1477 <div class="memitem">
universe@390 1478 <div class="memproto">
universe@390 1479 <table class="memname">
universe@390 1480 <tr>
universe@390 1481 <td class="memname"><a class="el" href="structUcxList.html">UcxList</a>* ucx_list_union_a </td>
universe@390 1482 <td>(</td>
universe@390 1483 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 1484 <td class="paramname"><em>allocator</em>, </td>
universe@390 1485 </tr>
universe@390 1486 <tr>
universe@390 1487 <td class="paramkey"></td>
universe@390 1488 <td></td>
universe@390 1489 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1490 <td class="paramname"><em>left</em>, </td>
universe@390 1491 </tr>
universe@390 1492 <tr>
universe@390 1493 <td class="paramkey"></td>
universe@390 1494 <td></td>
universe@390 1495 <td class="paramtype">const <a class="el" href="structUcxList.html">UcxList</a> *&#160;</td>
universe@390 1496 <td class="paramname"><em>right</em>, </td>
universe@390 1497 </tr>
universe@390 1498 <tr>
universe@390 1499 <td class="paramkey"></td>
universe@390 1500 <td></td>
universe@390 1501 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 1502 <td class="paramname"><em>cmpfnc</em>, </td>
universe@390 1503 </tr>
universe@390 1504 <tr>
universe@390 1505 <td class="paramkey"></td>
universe@390 1506 <td></td>
universe@390 1507 <td class="paramtype">void *&#160;</td>
universe@390 1508 <td class="paramname"><em>cmpdata</em>, </td>
universe@390 1509 </tr>
universe@390 1510 <tr>
universe@390 1511 <td class="paramkey"></td>
universe@390 1512 <td></td>
universe@390 1513 <td class="paramtype"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>&#160;</td>
universe@390 1514 <td class="paramname"><em>cpfnc</em>, </td>
universe@390 1515 </tr>
universe@390 1516 <tr>
universe@390 1517 <td class="paramkey"></td>
universe@390 1518 <td></td>
universe@390 1519 <td class="paramtype">void *&#160;</td>
universe@390 1520 <td class="paramname"><em>cpdata</em>&#160;</td>
universe@390 1521 </tr>
universe@390 1522 <tr>
universe@390 1523 <td></td>
universe@390 1524 <td>)</td>
universe@390 1525 <td></td><td></td>
universe@390 1526 </tr>
universe@390 1527 </table>
universe@390 1528 </div><div class="memdoc">
universe@390 1529
universe@390 1530 <p>Returns the union of two lists. </p>
universe@390 1531 <p>The union is a list of unique elements regarding cmpfnc obtained from both source lists.</p>
universe@390 1532 <dl class="params"><dt>Parameters</dt><dd>
universe@390 1533 <table class="params">
universe@390 1534 <tr><td class="paramname">allocator</td><td>allocates the new list elements </td></tr>
universe@390 1535 <tr><td class="paramname">left</td><td>the left source list </td></tr>
universe@390 1536 <tr><td class="paramname">right</td><td>the right source list </td></tr>
universe@390 1537 <tr><td class="paramname">cmpfnc</td><td>a function to compare elements </td></tr>
universe@390 1538 <tr><td class="paramname">cmpdata</td><td>additional data for the compare function </td></tr>
universe@390 1539 <tr><td class="paramname">cpfnc</td><td>a function to copy the elements </td></tr>
universe@390 1540 <tr><td class="paramname">cpdata</td><td>additional data for the copy function </td></tr>
universe@390 1541 </table>
universe@390 1542 </dd>
universe@390 1543 </dl>
universe@390 1544 <dl class="section return"><dt>Returns</dt><dd>a new list containing the union </dd></dl>
universe@390 1545
universe@390 1546 </div>
universe@390 1547 </div>
universe@390 1548 </div><!-- contents -->
universe@390 1549 <!-- start footer part -->
universe@390 1550 <hr class="footer"/><address class="footer"><small>
universe@390 1551 Generated on Thu Dec 19 2019 19:58:24 for ucx by &#160;<a href="http://www.doxygen.org/index.html">
universe@390 1552 <img class="footer" src="doxygen.png" alt="doxygen"/>
universe@390 1553 </a> 1.8.13
universe@390 1554 </small></address>
universe@390 1555 </body>
universe@390 1556 </html>

mercurial