docs/api-2.1/avl_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/avl.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">avl.h File Reference</div> </div>
universe@390 74 </div><!--header-->
universe@390 75 <div class="contents">
universe@390 76
universe@390 77 <p>AVL tree 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 <code>#include &lt;inttypes.h&gt;</code><br />
universe@390 82 </div>
universe@390 83 <p><a href="avl_8h_source.html">Go to the source code of this file.</a></p>
universe@390 84 <table class="memberdecls">
universe@390 85 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
universe@390 86 Data Structures</h2></td></tr>
universe@390 87 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a></td></tr>
universe@390 88 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">UCX AVL Node. <a href="structUcxAVLNode.html#details">More...</a><br /></td></tr>
universe@390 89 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 90 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a></td></tr>
universe@390 91 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">UCX AVL Tree. <a href="structUcxAVLTree.html#details">More...</a><br /></td></tr>
universe@390 92 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 93 </table><table class="memberdecls">
universe@390 94 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
universe@390 95 Macros</h2></td></tr>
universe@390 96 <tr class="memitem:ac2886d4b79b48c9fabf6408873f84cd2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#ac2886d4b79b48c9fabf6408873f84cd2">ucx_avl_default_new</a>()&#160;&#160;&#160;<a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">ucx_avl_new_a</a>(<a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">ucx_cmp_ptr</a>, <a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>())</td></tr>
universe@390 97 <tr class="memdesc:ac2886d4b79b48c9fabf6408873f84cd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macro for initializing a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with the default allocator and a <a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8" title="Compares two pointers. ">ucx_cmp_ptr()</a> compare function. <a href="#ac2886d4b79b48c9fabf6408873f84cd2">More...</a><br /></td></tr>
universe@390 98 <tr class="separator:ac2886d4b79b48c9fabf6408873f84cd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 99 <tr class="memitem:aaaf4a6f6f661cda7791db239212285d9"><td class="memItemLeft" align="right" valign="top"><a id="aaaf4a6f6f661cda7791db239212285d9"></a>
universe@390 100 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#aaaf4a6f6f661cda7791db239212285d9">UCX_AVL_FIND_EXACT</a>&#160;&#160;&#160;0</td></tr>
universe@390 101 <tr class="memdesc:aaaf4a6f6f661cda7791db239212285d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> with the same behavior as <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e" title="Gets the node from the tree, that is associated with the specified key. ">ucx_avl_get_node()</a>. <br /></td></tr>
universe@390 102 <tr class="separator:aaaf4a6f6f661cda7791db239212285d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 103 <tr class="memitem:abd2446d544d5412b6997ee8a17bd368c"><td class="memItemLeft" align="right" valign="top"><a id="abd2446d544d5412b6997ee8a17bd368c"></a>
universe@390 104 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#abd2446d544d5412b6997ee8a17bd368c">UCX_AVL_FIND_LOWER_BOUNDED</a>&#160;&#160;&#160;1</td></tr>
universe@390 105 <tr class="memdesc:abd2446d544d5412b6997ee8a17bd368c"><td class="mdescLeft">&#160;</td><td class="mdescRight">A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> finding the node whose key is at least as large as the specified key. <br /></td></tr>
universe@390 106 <tr class="separator:abd2446d544d5412b6997ee8a17bd368c"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 107 <tr class="memitem:ac74ee7649c1e206b08b31f37dd68ca5e"><td class="memItemLeft" align="right" valign="top"><a id="ac74ee7649c1e206b08b31f37dd68ca5e"></a>
universe@390 108 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e">UCX_AVL_FIND_UPPER_BOUNDED</a>&#160;&#160;&#160;2</td></tr>
universe@390 109 <tr class="memdesc:ac74ee7649c1e206b08b31f37dd68ca5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> finding the node whose key is at most as large as the specified key. <br /></td></tr>
universe@390 110 <tr class="separator:ac74ee7649c1e206b08b31f37dd68ca5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 111 <tr class="memitem:af16f24d74fd6af0154de041566c6603b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#af16f24d74fd6af0154de041566c6603b">UCX_AVL_FIND_CLOSEST</a>&#160;&#160;&#160;3</td></tr>
universe@390 112 <tr class="memdesc:af16f24d74fd6af0154de041566c6603b"><td class="mdescLeft">&#160;</td><td class="mdescRight">A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> finding the node with a key that is as close to the specified key as possible. <a href="#af16f24d74fd6af0154de041566c6603b">More...</a><br /></td></tr>
universe@390 113 <tr class="separator:af16f24d74fd6af0154de041566c6603b"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 114 </table><table class="memberdecls">
universe@390 115 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
universe@390 116 Typedefs</h2></td></tr>
universe@390 117 <tr class="memitem:a08ba2496c2316df58548c3cc29712add"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a08ba2496c2316df58548c3cc29712add">UcxAVLNode</a></td></tr>
universe@390 118 <tr class="memdesc:a08ba2496c2316df58548c3cc29712add"><td class="mdescLeft">&#160;</td><td class="mdescRight">UCX AVL Node type. <a href="#a08ba2496c2316df58548c3cc29712add">More...</a><br /></td></tr>
universe@390 119 <tr class="separator:a08ba2496c2316df58548c3cc29712add"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 120 </table><table class="memberdecls">
universe@390 121 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
universe@390 122 Functions</h2></td></tr>
universe@390 123 <tr class="memitem:a11b043d65a11b7092d5d98b298e5ede3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a11b043d65a11b7092d5d98b298e5ede3">ucx_avl_new</a> (<a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfunc)</td></tr>
universe@390 124 <tr class="memdesc:a11b043d65a11b7092d5d98b298e5ede3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with a default allocator. <a href="#a11b043d65a11b7092d5d98b298e5ede3">More...</a><br /></td></tr>
universe@390 125 <tr class="separator:a11b043d65a11b7092d5d98b298e5ede3"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 126 <tr class="memitem:af0f868d67e9dc08b4867c02a06c23ee2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">ucx_avl_new_a</a> (<a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a> cmpfunc, <a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator)</td></tr>
universe@390 127 <tr class="memdesc:af0f868d67e9dc08b4867c02a06c23ee2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with the specified allocator. <a href="#af0f868d67e9dc08b4867c02a06c23ee2">More...</a><br /></td></tr>
universe@390 128 <tr class="separator:af0f868d67e9dc08b4867c02a06c23ee2"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 129 <tr class="memitem:a2f92db538f25fce908d2cb3e5590944c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a2f92db538f25fce908d2cb3e5590944c">ucx_avl_free</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree)</td></tr>
universe@390 130 <tr class="memdesc:a2f92db538f25fce908d2cb3e5590944c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. <a href="#a2f92db538f25fce908d2cb3e5590944c">More...</a><br /></td></tr>
universe@390 131 <tr class="separator:a2f92db538f25fce908d2cb3e5590944c"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 132 <tr class="memitem:a31ad7fb196ca211f1fc39f4e15f72279"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279">ucx_avl_free_content</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, <a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a> destr)</td></tr>
universe@390 133 <tr class="memdesc:a31ad7fb196ca211f1fc39f4e15f72279"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees the contents of a <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. <a href="#a31ad7fb196ca211f1fc39f4e15f72279">More...</a><br /></td></tr>
universe@390 134 <tr class="separator:a31ad7fb196ca211f1fc39f4e15f72279"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 135 <tr class="memitem:acf42da9a4168e47dc10b4ba0d27ceb4e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e">ucx_avl_get_node</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key)</td></tr>
universe@390 136 <tr class="memdesc:acf42da9a4168e47dc10b4ba0d27ceb4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the node from the tree, that is associated with the specified key. <a href="#acf42da9a4168e47dc10b4ba0d27ceb4e">More...</a><br /></td></tr>
universe@390 137 <tr class="separator:acf42da9a4168e47dc10b4ba0d27ceb4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 138 <tr class="memitem:adbcf7ceb3f014a30c7214f7304519efe"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#adbcf7ceb3f014a30c7214f7304519efe">ucx_avl_get</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key)</td></tr>
universe@390 139 <tr class="memdesc:adbcf7ceb3f014a30c7214f7304519efe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the value from the tree, that is associated with the specified key. <a href="#adbcf7ceb3f014a30c7214f7304519efe">More...</a><br /></td></tr>
universe@390 140 <tr class="separator:adbcf7ceb3f014a30c7214f7304519efe"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 141 <tr class="memitem:a664986f64d6865605199fbff06e19cd5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5">ucx_avl_find_node</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, <a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a> dfnc, int mode)</td></tr>
universe@390 142 <tr class="memdesc:a664986f64d6865605199fbff06e19cd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds a node within the tree. <a href="#a664986f64d6865605199fbff06e19cd5">More...</a><br /></td></tr>
universe@390 143 <tr class="separator:a664986f64d6865605199fbff06e19cd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 144 <tr class="memitem:a51770e1614b28d7d22dea096c3704f83"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a51770e1614b28d7d22dea096c3704f83">ucx_avl_find</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, <a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a> dfnc, int mode)</td></tr>
universe@390 145 <tr class="memdesc:a51770e1614b28d7d22dea096c3704f83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds a value within the tree. <a href="#a51770e1614b28d7d22dea096c3704f83">More...</a><br /></td></tr>
universe@390 146 <tr class="separator:a51770e1614b28d7d22dea096c3704f83"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 147 <tr class="memitem:aec401fab4a24a7edffa734f9baf88577"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#aec401fab4a24a7edffa734f9baf88577">ucx_avl_put</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, void *value)</td></tr>
universe@390 148 <tr class="memdesc:aec401fab4a24a7edffa734f9baf88577"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puts a key/value pair into the tree. <a href="#aec401fab4a24a7edffa734f9baf88577">More...</a><br /></td></tr>
universe@390 149 <tr class="separator:aec401fab4a24a7edffa734f9baf88577"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 150 <tr class="memitem:a32cf8955cc0226a82bacfc7b76d6474c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a32cf8955cc0226a82bacfc7b76d6474c">ucx_avl_put_s</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, void *value, void **oldvalue)</td></tr>
universe@390 151 <tr class="memdesc:a32cf8955cc0226a82bacfc7b76d6474c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puts a key/value pair into the tree. <a href="#a32cf8955cc0226a82bacfc7b76d6474c">More...</a><br /></td></tr>
universe@390 152 <tr class="separator:a32cf8955cc0226a82bacfc7b76d6474c"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 153 <tr class="memitem:a9a792b7d9e58073deef74a341f8bc720"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a9a792b7d9e58073deef74a341f8bc720">ucx_avl_remove_node</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, <a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *node)</td></tr>
universe@390 154 <tr class="memdesc:a9a792b7d9e58073deef74a341f8bc720"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a node from the AVL tree. <a href="#a9a792b7d9e58073deef74a341f8bc720">More...</a><br /></td></tr>
universe@390 155 <tr class="separator:a9a792b7d9e58073deef74a341f8bc720"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 156 <tr class="memitem:a1d821119c805d7fbb7e424bc3effeba9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a1d821119c805d7fbb7e424bc3effeba9">ucx_avl_remove</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key)</td></tr>
universe@390 157 <tr class="memdesc:a1d821119c805d7fbb7e424bc3effeba9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an element from the AVL tree. <a href="#a1d821119c805d7fbb7e424bc3effeba9">More...</a><br /></td></tr>
universe@390 158 <tr class="separator:a1d821119c805d7fbb7e424bc3effeba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 159 <tr class="memitem:a01aeeecd6415f0cc2b623486eb28f254"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a01aeeecd6415f0cc2b623486eb28f254">ucx_avl_remove_s</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree, intptr_t key, intptr_t *oldkey, void **oldvalue)</td></tr>
universe@390 160 <tr class="memdesc:a01aeeecd6415f0cc2b623486eb28f254"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an element from the AVL tree. <a href="#a01aeeecd6415f0cc2b623486eb28f254">More...</a><br /></td></tr>
universe@390 161 <tr class="separator:a01aeeecd6415f0cc2b623486eb28f254"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 162 <tr class="memitem:a92c1d41c2b22fe4a029a486ab2153e35"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a92c1d41c2b22fe4a029a486ab2153e35">ucx_avl_count</a> (<a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *tree)</td></tr>
universe@390 163 <tr class="memdesc:a92c1d41c2b22fe4a029a486ab2153e35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Counts the nodes in the specified <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. <a href="#a92c1d41c2b22fe4a029a486ab2153e35">More...</a><br /></td></tr>
universe@390 164 <tr class="separator:a92c1d41c2b22fe4a029a486ab2153e35"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 165 <tr class="memitem:a0e739aeb66dda6a6a3f6eb51b50cf346"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#a0e739aeb66dda6a6a3f6eb51b50cf346">ucx_avl_pred</a> (<a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *node)</td></tr>
universe@390 166 <tr class="memdesc:a0e739aeb66dda6a6a3f6eb51b50cf346"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds the in-order predecessor of the given node. <a href="#a0e739aeb66dda6a6a3f6eb51b50cf346">More...</a><br /></td></tr>
universe@390 167 <tr class="separator:a0e739aeb66dda6a6a3f6eb51b50cf346"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 168 <tr class="memitem:aab1ad9b027ff5e50671aa0ee84e2d541"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="avl_8h.html#aab1ad9b027ff5e50671aa0ee84e2d541">ucx_avl_succ</a> (<a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *node)</td></tr>
universe@390 169 <tr class="memdesc:aab1ad9b027ff5e50671aa0ee84e2d541"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds the in-order successor of the given node. <a href="#aab1ad9b027ff5e50671aa0ee84e2d541">More...</a><br /></td></tr>
universe@390 170 <tr class="separator:aab1ad9b027ff5e50671aa0ee84e2d541"><td class="memSeparator" colspan="2">&#160;</td></tr>
universe@390 171 </table>
universe@390 172 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
universe@390 173 <div class="textblock"><p>AVL tree implementation. </p>
universe@390 174 <p>This binary search tree implementation allows average O(1) insertion and removal of elements (excluding binary search time).</p>
universe@390 175 <dl class="section author"><dt>Author</dt><dd>Mike Becker </dd>
universe@390 176 <dd>
universe@390 177 Olaf Wintermann </dd></dl>
universe@390 178 </div><h2 class="groupheader">Macro Definition Documentation</h2>
universe@390 179 <a id="ac2886d4b79b48c9fabf6408873f84cd2"></a>
universe@390 180 <h2 class="memtitle"><span class="permalink"><a href="#ac2886d4b79b48c9fabf6408873f84cd2">&#9670;&nbsp;</a></span>ucx_avl_default_new</h2>
universe@390 181
universe@390 182 <div class="memitem">
universe@390 183 <div class="memproto">
universe@390 184 <table class="memname">
universe@390 185 <tr>
universe@390 186 <td class="memname">#define ucx_avl_default_new</td>
universe@390 187 <td>(</td>
universe@390 188 <td class="paramname"></td><td>)</td>
universe@390 189 <td>&#160;&#160;&#160;<a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2">ucx_avl_new_a</a>(<a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">ucx_cmp_ptr</a>, <a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>())</td>
universe@390 190 </tr>
universe@390 191 </table>
universe@390 192 </div><div class="memdoc">
universe@390 193
universe@390 194 <p>Macro for initializing a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with the default allocator and a <a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8" title="Compares two pointers. ">ucx_cmp_ptr()</a> compare function. </p>
universe@390 195 <dl class="section return"><dt>Returns</dt><dd>a new default <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> object </dd></dl>
universe@390 196
universe@390 197 </div>
universe@390 198 </div>
universe@390 199 <a id="af16f24d74fd6af0154de041566c6603b"></a>
universe@390 200 <h2 class="memtitle"><span class="permalink"><a href="#af16f24d74fd6af0154de041566c6603b">&#9670;&nbsp;</a></span>UCX_AVL_FIND_CLOSEST</h2>
universe@390 201
universe@390 202 <div class="memitem">
universe@390 203 <div class="memproto">
universe@390 204 <table class="memname">
universe@390 205 <tr>
universe@390 206 <td class="memname">#define UCX_AVL_FIND_CLOSEST&#160;&#160;&#160;3</td>
universe@390 207 </tr>
universe@390 208 </table>
universe@390 209 </div><div class="memdoc">
universe@390 210
universe@390 211 <p>A mode for <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> finding the node with a key that is as close to the specified key as possible. </p>
universe@390 212 <p>If the key is present, the behavior is like <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e" title="Gets the node from the tree, that is associated with the specified key. ">ucx_avl_get_node()</a>. This mode only returns <code>NULL</code> on empty trees. </p>
universe@390 213
universe@390 214 </div>
universe@390 215 </div>
universe@390 216 <h2 class="groupheader">Typedef Documentation</h2>
universe@390 217 <a id="a08ba2496c2316df58548c3cc29712add"></a>
universe@390 218 <h2 class="memtitle"><span class="permalink"><a href="#a08ba2496c2316df58548c3cc29712add">&#9670;&nbsp;</a></span>UcxAVLNode</h2>
universe@390 219
universe@390 220 <div class="memitem">
universe@390 221 <div class="memproto">
universe@390 222 <table class="memname">
universe@390 223 <tr>
universe@390 224 <td class="memname">typedef struct <a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> <a class="el" href="structUcxAVLNode.html">UcxAVLNode</a></td>
universe@390 225 </tr>
universe@390 226 </table>
universe@390 227 </div><div class="memdoc">
universe@390 228
universe@390 229 <p>UCX AVL Node type. </p>
universe@390 230 <dl class="section see"><dt>See also</dt><dd><a class="el" href="structUcxAVLNode.html" title="UCX AVL Node. ">UcxAVLNode</a> </dd></dl>
universe@390 231
universe@390 232 </div>
universe@390 233 </div>
universe@390 234 <h2 class="groupheader">Function Documentation</h2>
universe@390 235 <a id="a92c1d41c2b22fe4a029a486ab2153e35"></a>
universe@390 236 <h2 class="memtitle"><span class="permalink"><a href="#a92c1d41c2b22fe4a029a486ab2153e35">&#9670;&nbsp;</a></span>ucx_avl_count()</h2>
universe@390 237
universe@390 238 <div class="memitem">
universe@390 239 <div class="memproto">
universe@390 240 <table class="memname">
universe@390 241 <tr>
universe@390 242 <td class="memname">size_t ucx_avl_count </td>
universe@390 243 <td>(</td>
universe@390 244 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 245 <td class="paramname"><em>tree</em></td><td>)</td>
universe@390 246 <td></td>
universe@390 247 </tr>
universe@390 248 </table>
universe@390 249 </div><div class="memdoc">
universe@390 250
universe@390 251 <p>Counts the nodes in the specified <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. </p>
universe@390 252 <dl class="params"><dt>Parameters</dt><dd>
universe@390 253 <table class="params">
universe@390 254 <tr><td class="paramname">tree</td><td>the AVL tree </td></tr>
universe@390 255 </table>
universe@390 256 </dd>
universe@390 257 </dl>
universe@390 258 <dl class="section return"><dt>Returns</dt><dd>the node count </dd></dl>
universe@390 259
universe@390 260 </div>
universe@390 261 </div>
universe@390 262 <a id="a51770e1614b28d7d22dea096c3704f83"></a>
universe@390 263 <h2 class="memtitle"><span class="permalink"><a href="#a51770e1614b28d7d22dea096c3704f83">&#9670;&nbsp;</a></span>ucx_avl_find()</h2>
universe@390 264
universe@390 265 <div class="memitem">
universe@390 266 <div class="memproto">
universe@390 267 <table class="memname">
universe@390 268 <tr>
universe@390 269 <td class="memname">void* ucx_avl_find </td>
universe@390 270 <td>(</td>
universe@390 271 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 272 <td class="paramname"><em>tree</em>, </td>
universe@390 273 </tr>
universe@390 274 <tr>
universe@390 275 <td class="paramkey"></td>
universe@390 276 <td></td>
universe@390 277 <td class="paramtype">intptr_t&#160;</td>
universe@390 278 <td class="paramname"><em>key</em>, </td>
universe@390 279 </tr>
universe@390 280 <tr>
universe@390 281 <td class="paramkey"></td>
universe@390 282 <td></td>
universe@390 283 <td class="paramtype"><a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a>&#160;</td>
universe@390 284 <td class="paramname"><em>dfnc</em>, </td>
universe@390 285 </tr>
universe@390 286 <tr>
universe@390 287 <td class="paramkey"></td>
universe@390 288 <td></td>
universe@390 289 <td class="paramtype">int&#160;</td>
universe@390 290 <td class="paramname"><em>mode</em>&#160;</td>
universe@390 291 </tr>
universe@390 292 <tr>
universe@390 293 <td></td>
universe@390 294 <td>)</td>
universe@390 295 <td></td><td></td>
universe@390 296 </tr>
universe@390 297 </table>
universe@390 298 </div><div class="memdoc">
universe@390 299
universe@390 300 <p>Finds a value within the tree. </p>
universe@390 301 <p>See <a class="el" href="avl_8h.html#a664986f64d6865605199fbff06e19cd5" title="Finds a node within the tree. ">ucx_avl_find_node()</a> for details.</p>
universe@390 302 <dl class="params"><dt>Parameters</dt><dd>
universe@390 303 <table class="params">
universe@390 304 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 305 <tr><td class="paramname">key</td><td>the key </td></tr>
universe@390 306 <tr><td class="paramname">dfnc</td><td>the distance function </td></tr>
universe@390 307 <tr><td class="paramname">mode</td><td>the find mode </td></tr>
universe@390 308 </table>
universe@390 309 </dd>
universe@390 310 </dl>
universe@390 311 <dl class="section return"><dt>Returns</dt><dd>the value (or <code>NULL</code>, if no value can be found) </dd></dl>
universe@390 312
universe@390 313 </div>
universe@390 314 </div>
universe@390 315 <a id="a664986f64d6865605199fbff06e19cd5"></a>
universe@390 316 <h2 class="memtitle"><span class="permalink"><a href="#a664986f64d6865605199fbff06e19cd5">&#9670;&nbsp;</a></span>ucx_avl_find_node()</h2>
universe@390 317
universe@390 318 <div class="memitem">
universe@390 319 <div class="memproto">
universe@390 320 <table class="memname">
universe@390 321 <tr>
universe@390 322 <td class="memname"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>* ucx_avl_find_node </td>
universe@390 323 <td>(</td>
universe@390 324 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 325 <td class="paramname"><em>tree</em>, </td>
universe@390 326 </tr>
universe@390 327 <tr>
universe@390 328 <td class="paramkey"></td>
universe@390 329 <td></td>
universe@390 330 <td class="paramtype">intptr_t&#160;</td>
universe@390 331 <td class="paramname"><em>key</em>, </td>
universe@390 332 </tr>
universe@390 333 <tr>
universe@390 334 <td class="paramkey"></td>
universe@390 335 <td></td>
universe@390 336 <td class="paramtype"><a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a>&#160;</td>
universe@390 337 <td class="paramname"><em>dfnc</em>, </td>
universe@390 338 </tr>
universe@390 339 <tr>
universe@390 340 <td class="paramkey"></td>
universe@390 341 <td></td>
universe@390 342 <td class="paramtype">int&#160;</td>
universe@390 343 <td class="paramname"><em>mode</em>&#160;</td>
universe@390 344 </tr>
universe@390 345 <tr>
universe@390 346 <td></td>
universe@390 347 <td>)</td>
universe@390 348 <td></td><td></td>
universe@390 349 </tr>
universe@390 350 </table>
universe@390 351 </div><div class="memdoc">
universe@390 352
universe@390 353 <p>Finds a node within the tree. </p>
universe@390 354 <p>The following modes are supported: </p><ul>
universe@390 355 <li>
universe@390 356 <a class="el" href="avl_8h.html#aaaf4a6f6f661cda7791db239212285d9" title="A mode for ucx_avl_find_node() with the same behavior as ucx_avl_get_node(). ">UCX_AVL_FIND_EXACT</a>: the same behavior as <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e" title="Gets the node from the tree, that is associated with the specified key. ">ucx_avl_get_node()</a> </li>
universe@390 357 <li>
universe@390 358 <a class="el" href="avl_8h.html#abd2446d544d5412b6997ee8a17bd368c" title="A mode for ucx_avl_find_node() finding the node whose key is at least as large as the specified key...">UCX_AVL_FIND_LOWER_BOUNDED</a>: finds the node whose key is at least as large as the specified key </li>
universe@390 359 <li>
universe@390 360 <a class="el" href="avl_8h.html#ac74ee7649c1e206b08b31f37dd68ca5e" title="A mode for ucx_avl_find_node() finding the node whose key is at most as large as the specified key...">UCX_AVL_FIND_UPPER_BOUNDED</a>: finds the node whose key is at most as large as the specified key </li>
universe@390 361 <li>
universe@390 362 <a class="el" href="avl_8h.html#af16f24d74fd6af0154de041566c6603b" title="A mode for ucx_avl_find_node() finding the node with a key that is as close to the specified key as p...">UCX_AVL_FIND_CLOSEST</a>: finds the node with a key that is as close to the specified key as possible. If the key is present, the behavior is like <a class="el" href="avl_8h.html#acf42da9a4168e47dc10b4ba0d27ceb4e" title="Gets the node from the tree, that is associated with the specified key. ">ucx_avl_get_node()</a>. This mode only returns <code>NULL</code> on empty trees. </li>
universe@390 363 </ul>
universe@390 364 <p>The distance function provided MUST agree with the compare function of the AVL tree.</p>
universe@390 365 <dl class="params"><dt>Parameters</dt><dd>
universe@390 366 <table class="params">
universe@390 367 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 368 <tr><td class="paramname">key</td><td>the key </td></tr>
universe@390 369 <tr><td class="paramname">dfnc</td><td>the distance function </td></tr>
universe@390 370 <tr><td class="paramname">mode</td><td>the find mode </td></tr>
universe@390 371 </table>
universe@390 372 </dd>
universe@390 373 </dl>
universe@390 374 <dl class="section return"><dt>Returns</dt><dd>the node (or <code>NULL</code>, if no node can be found) </dd></dl>
universe@390 375
universe@390 376 </div>
universe@390 377 </div>
universe@390 378 <a id="a2f92db538f25fce908d2cb3e5590944c"></a>
universe@390 379 <h2 class="memtitle"><span class="permalink"><a href="#a2f92db538f25fce908d2cb3e5590944c">&#9670;&nbsp;</a></span>ucx_avl_free()</h2>
universe@390 380
universe@390 381 <div class="memitem">
universe@390 382 <div class="memproto">
universe@390 383 <table class="memname">
universe@390 384 <tr>
universe@390 385 <td class="memname">void ucx_avl_free </td>
universe@390 386 <td>(</td>
universe@390 387 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 388 <td class="paramname"><em>tree</em></td><td>)</td>
universe@390 389 <td></td>
universe@390 390 </tr>
universe@390 391 </table>
universe@390 392 </div><div class="memdoc">
universe@390 393
universe@390 394 <p>Destroys a <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. </p>
universe@390 395 <p>Note, that the contents are not automatically freed. Use may use <a class="el" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279" title="Frees the contents of a UcxAVLTree. ">ucx_avl_free_content()</a> before calling this function.</p>
universe@390 396 <dl class="params"><dt>Parameters</dt><dd>
universe@390 397 <table class="params">
universe@390 398 <tr><td class="paramname">tree</td><td>the tree to destroy </td></tr>
universe@390 399 </table>
universe@390 400 </dd>
universe@390 401 </dl>
universe@390 402 <dl class="section see"><dt>See also</dt><dd><a class="el" href="avl_8h.html#a31ad7fb196ca211f1fc39f4e15f72279" title="Frees the contents of a UcxAVLTree. ">ucx_avl_free_content()</a> </dd></dl>
universe@390 403
universe@390 404 </div>
universe@390 405 </div>
universe@390 406 <a id="a31ad7fb196ca211f1fc39f4e15f72279"></a>
universe@390 407 <h2 class="memtitle"><span class="permalink"><a href="#a31ad7fb196ca211f1fc39f4e15f72279">&#9670;&nbsp;</a></span>ucx_avl_free_content()</h2>
universe@390 408
universe@390 409 <div class="memitem">
universe@390 410 <div class="memproto">
universe@390 411 <table class="memname">
universe@390 412 <tr>
universe@390 413 <td class="memname">void ucx_avl_free_content </td>
universe@390 414 <td>(</td>
universe@390 415 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 416 <td class="paramname"><em>tree</em>, </td>
universe@390 417 </tr>
universe@390 418 <tr>
universe@390 419 <td class="paramkey"></td>
universe@390 420 <td></td>
universe@390 421 <td class="paramtype"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a>&#160;</td>
universe@390 422 <td class="paramname"><em>destr</em>&#160;</td>
universe@390 423 </tr>
universe@390 424 <tr>
universe@390 425 <td></td>
universe@390 426 <td>)</td>
universe@390 427 <td></td><td></td>
universe@390 428 </tr>
universe@390 429 </table>
universe@390 430 </div><div class="memdoc">
universe@390 431
universe@390 432 <p>Frees the contents of a <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a>. </p>
universe@390 433 <p>This is a convenience function that iterates over the tree and passes all values to the specified destructor function.</p>
universe@390 434 <p>If no destructor is specified (<code>NULL</code>), the free() function of the tree's own allocator is used.</p>
universe@390 435 <p>You must ensure, that it is valid to pass each value in the map to the same destructor function.</p>
universe@390 436 <p>You should free the entire tree afterwards, as the contents will be invalid.</p>
universe@390 437 <dl class="params"><dt>Parameters</dt><dd>
universe@390 438 <table class="params">
universe@390 439 <tr><td class="paramname">tree</td><td>for which the contents shall be freed </td></tr>
universe@390 440 <tr><td class="paramname">destr</td><td>optional pointer to a destructor function </td></tr>
universe@390 441 </table>
universe@390 442 </dd>
universe@390 443 </dl>
universe@390 444 <dl class="section see"><dt>See also</dt><dd><a class="el" href="avl_8h.html#a2f92db538f25fce908d2cb3e5590944c" title="Destroys a UcxAVLTree. ">ucx_avl_free()</a> </dd></dl>
universe@390 445
universe@390 446 </div>
universe@390 447 </div>
universe@390 448 <a id="adbcf7ceb3f014a30c7214f7304519efe"></a>
universe@390 449 <h2 class="memtitle"><span class="permalink"><a href="#adbcf7ceb3f014a30c7214f7304519efe">&#9670;&nbsp;</a></span>ucx_avl_get()</h2>
universe@390 450
universe@390 451 <div class="memitem">
universe@390 452 <div class="memproto">
universe@390 453 <table class="memname">
universe@390 454 <tr>
universe@390 455 <td class="memname">void* ucx_avl_get </td>
universe@390 456 <td>(</td>
universe@390 457 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 458 <td class="paramname"><em>tree</em>, </td>
universe@390 459 </tr>
universe@390 460 <tr>
universe@390 461 <td class="paramkey"></td>
universe@390 462 <td></td>
universe@390 463 <td class="paramtype">intptr_t&#160;</td>
universe@390 464 <td class="paramname"><em>key</em>&#160;</td>
universe@390 465 </tr>
universe@390 466 <tr>
universe@390 467 <td></td>
universe@390 468 <td>)</td>
universe@390 469 <td></td><td></td>
universe@390 470 </tr>
universe@390 471 </table>
universe@390 472 </div><div class="memdoc">
universe@390 473
universe@390 474 <p>Gets the value from the tree, that is associated with the specified key. </p>
universe@390 475 <dl class="params"><dt>Parameters</dt><dd>
universe@390 476 <table class="params">
universe@390 477 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 478 <tr><td class="paramname">key</td><td>the key </td></tr>
universe@390 479 </table>
universe@390 480 </dd>
universe@390 481 </dl>
universe@390 482 <dl class="section return"><dt>Returns</dt><dd>the value (or <code>NULL</code>, if the key is not present) </dd></dl>
universe@390 483
universe@390 484 </div>
universe@390 485 </div>
universe@390 486 <a id="acf42da9a4168e47dc10b4ba0d27ceb4e"></a>
universe@390 487 <h2 class="memtitle"><span class="permalink"><a href="#acf42da9a4168e47dc10b4ba0d27ceb4e">&#9670;&nbsp;</a></span>ucx_avl_get_node()</h2>
universe@390 488
universe@390 489 <div class="memitem">
universe@390 490 <div class="memproto">
universe@390 491 <table class="memname">
universe@390 492 <tr>
universe@390 493 <td class="memname"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>* ucx_avl_get_node </td>
universe@390 494 <td>(</td>
universe@390 495 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 496 <td class="paramname"><em>tree</em>, </td>
universe@390 497 </tr>
universe@390 498 <tr>
universe@390 499 <td class="paramkey"></td>
universe@390 500 <td></td>
universe@390 501 <td class="paramtype">intptr_t&#160;</td>
universe@390 502 <td class="paramname"><em>key</em>&#160;</td>
universe@390 503 </tr>
universe@390 504 <tr>
universe@390 505 <td></td>
universe@390 506 <td>)</td>
universe@390 507 <td></td><td></td>
universe@390 508 </tr>
universe@390 509 </table>
universe@390 510 </div><div class="memdoc">
universe@390 511
universe@390 512 <p>Gets the node from the tree, that is associated with the specified key. </p>
universe@390 513 <dl class="params"><dt>Parameters</dt><dd>
universe@390 514 <table class="params">
universe@390 515 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 516 <tr><td class="paramname">key</td><td>the key </td></tr>
universe@390 517 </table>
universe@390 518 </dd>
universe@390 519 </dl>
universe@390 520 <dl class="section return"><dt>Returns</dt><dd>the node (or <code>NULL</code>, if the key is not present) </dd></dl>
universe@390 521
universe@390 522 </div>
universe@390 523 </div>
universe@390 524 <a id="a11b043d65a11b7092d5d98b298e5ede3"></a>
universe@390 525 <h2 class="memtitle"><span class="permalink"><a href="#a11b043d65a11b7092d5d98b298e5ede3">&#9670;&nbsp;</a></span>ucx_avl_new()</h2>
universe@390 526
universe@390 527 <div class="memitem">
universe@390 528 <div class="memproto">
universe@390 529 <table class="memname">
universe@390 530 <tr>
universe@390 531 <td class="memname"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a>* ucx_avl_new </td>
universe@390 532 <td>(</td>
universe@390 533 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 534 <td class="paramname"><em>cmpfunc</em></td><td>)</td>
universe@390 535 <td></td>
universe@390 536 </tr>
universe@390 537 </table>
universe@390 538 </div><div class="memdoc">
universe@390 539
universe@390 540 <p>Initializes a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with a default allocator. </p>
universe@390 541 <dl class="params"><dt>Parameters</dt><dd>
universe@390 542 <table class="params">
universe@390 543 <tr><td class="paramname">cmpfunc</td><td>the compare function that shall be used </td></tr>
universe@390 544 </table>
universe@390 545 </dd>
universe@390 546 </dl>
universe@390 547 <dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> object </dd></dl>
universe@390 548 <dl class="section see"><dt>See also</dt><dd><a class="el" href="avl_8h.html#af0f868d67e9dc08b4867c02a06c23ee2" title="Initializes a new UcxAVLTree with the specified allocator. ">ucx_avl_new_a()</a> </dd></dl>
universe@390 549
universe@390 550 </div>
universe@390 551 </div>
universe@390 552 <a id="af0f868d67e9dc08b4867c02a06c23ee2"></a>
universe@390 553 <h2 class="memtitle"><span class="permalink"><a href="#af0f868d67e9dc08b4867c02a06c23ee2">&#9670;&nbsp;</a></span>ucx_avl_new_a()</h2>
universe@390 554
universe@390 555 <div class="memitem">
universe@390 556 <div class="memproto">
universe@390 557 <table class="memname">
universe@390 558 <tr>
universe@390 559 <td class="memname"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a>* ucx_avl_new_a </td>
universe@390 560 <td>(</td>
universe@390 561 <td class="paramtype"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>&#160;</td>
universe@390 562 <td class="paramname"><em>cmpfunc</em>, </td>
universe@390 563 </tr>
universe@390 564 <tr>
universe@390 565 <td class="paramkey"></td>
universe@390 566 <td></td>
universe@390 567 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td>
universe@390 568 <td class="paramname"><em>allocator</em>&#160;</td>
universe@390 569 </tr>
universe@390 570 <tr>
universe@390 571 <td></td>
universe@390 572 <td>)</td>
universe@390 573 <td></td><td></td>
universe@390 574 </tr>
universe@390 575 </table>
universe@390 576 </div><div class="memdoc">
universe@390 577
universe@390 578 <p>Initializes a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> with the specified allocator. </p>
universe@390 579 <p>The cmpfunc should be capable of comparing two keys within this AVL tree. So if you want to use null terminated strings as keys, you could use the <a class="el" href="utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258" title="Wraps the strcmp function. ">ucx_cmp_str()</a> function here.</p>
universe@390 580 <dl class="params"><dt>Parameters</dt><dd>
universe@390 581 <table class="params">
universe@390 582 <tr><td class="paramname">cmpfunc</td><td>the compare function that shall be used </td></tr>
universe@390 583 <tr><td class="paramname">allocator</td><td>the <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> that shall be used </td></tr>
universe@390 584 </table>
universe@390 585 </dd>
universe@390 586 </dl>
universe@390 587 <dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> object </dd></dl>
universe@390 588
universe@390 589 </div>
universe@390 590 </div>
universe@390 591 <a id="a0e739aeb66dda6a6a3f6eb51b50cf346"></a>
universe@390 592 <h2 class="memtitle"><span class="permalink"><a href="#a0e739aeb66dda6a6a3f6eb51b50cf346">&#9670;&nbsp;</a></span>ucx_avl_pred()</h2>
universe@390 593
universe@390 594 <div class="memitem">
universe@390 595 <div class="memproto">
universe@390 596 <table class="memname">
universe@390 597 <tr>
universe@390 598 <td class="memname"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>* ucx_avl_pred </td>
universe@390 599 <td>(</td>
universe@390 600 <td class="paramtype"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *&#160;</td>
universe@390 601 <td class="paramname"><em>node</em></td><td>)</td>
universe@390 602 <td></td>
universe@390 603 </tr>
universe@390 604 </table>
universe@390 605 </div><div class="memdoc">
universe@390 606
universe@390 607 <p>Finds the in-order predecessor of the given node. </p>
universe@390 608 <dl class="params"><dt>Parameters</dt><dd>
universe@390 609 <table class="params">
universe@390 610 <tr><td class="paramname">node</td><td>an AVL node </td></tr>
universe@390 611 </table>
universe@390 612 </dd>
universe@390 613 </dl>
universe@390 614 <dl class="section return"><dt>Returns</dt><dd>the in-order predecessor of the given node, or <code>NULL</code> if the given node is the in-order minimum </dd></dl>
universe@390 615
universe@390 616 </div>
universe@390 617 </div>
universe@390 618 <a id="aec401fab4a24a7edffa734f9baf88577"></a>
universe@390 619 <h2 class="memtitle"><span class="permalink"><a href="#aec401fab4a24a7edffa734f9baf88577">&#9670;&nbsp;</a></span>ucx_avl_put()</h2>
universe@390 620
universe@390 621 <div class="memitem">
universe@390 622 <div class="memproto">
universe@390 623 <table class="memname">
universe@390 624 <tr>
universe@390 625 <td class="memname">int ucx_avl_put </td>
universe@390 626 <td>(</td>
universe@390 627 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 628 <td class="paramname"><em>tree</em>, </td>
universe@390 629 </tr>
universe@390 630 <tr>
universe@390 631 <td class="paramkey"></td>
universe@390 632 <td></td>
universe@390 633 <td class="paramtype">intptr_t&#160;</td>
universe@390 634 <td class="paramname"><em>key</em>, </td>
universe@390 635 </tr>
universe@390 636 <tr>
universe@390 637 <td class="paramkey"></td>
universe@390 638 <td></td>
universe@390 639 <td class="paramtype">void *&#160;</td>
universe@390 640 <td class="paramname"><em>value</em>&#160;</td>
universe@390 641 </tr>
universe@390 642 <tr>
universe@390 643 <td></td>
universe@390 644 <td>)</td>
universe@390 645 <td></td><td></td>
universe@390 646 </tr>
universe@390 647 </table>
universe@390 648 </div><div class="memdoc">
universe@390 649
universe@390 650 <p>Puts a key/value pair into the tree. </p>
universe@390 651 <p>Attention: use this function only, if a possible old value does not need to be preserved.</p>
universe@390 652 <dl class="params"><dt>Parameters</dt><dd>
universe@390 653 <table class="params">
universe@390 654 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 655 <tr><td class="paramname">key</td><td>the key </td></tr>
universe@390 656 <tr><td class="paramname">value</td><td>the new value </td></tr>
universe@390 657 </table>
universe@390 658 </dd>
universe@390 659 </dl>
universe@390 660 <dl class="section return"><dt>Returns</dt><dd>zero, if and only if the operation succeeded </dd></dl>
universe@390 661
universe@390 662 </div>
universe@390 663 </div>
universe@390 664 <a id="a32cf8955cc0226a82bacfc7b76d6474c"></a>
universe@390 665 <h2 class="memtitle"><span class="permalink"><a href="#a32cf8955cc0226a82bacfc7b76d6474c">&#9670;&nbsp;</a></span>ucx_avl_put_s()</h2>
universe@390 666
universe@390 667 <div class="memitem">
universe@390 668 <div class="memproto">
universe@390 669 <table class="memname">
universe@390 670 <tr>
universe@390 671 <td class="memname">int ucx_avl_put_s </td>
universe@390 672 <td>(</td>
universe@390 673 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 674 <td class="paramname"><em>tree</em>, </td>
universe@390 675 </tr>
universe@390 676 <tr>
universe@390 677 <td class="paramkey"></td>
universe@390 678 <td></td>
universe@390 679 <td class="paramtype">intptr_t&#160;</td>
universe@390 680 <td class="paramname"><em>key</em>, </td>
universe@390 681 </tr>
universe@390 682 <tr>
universe@390 683 <td class="paramkey"></td>
universe@390 684 <td></td>
universe@390 685 <td class="paramtype">void *&#160;</td>
universe@390 686 <td class="paramname"><em>value</em>, </td>
universe@390 687 </tr>
universe@390 688 <tr>
universe@390 689 <td class="paramkey"></td>
universe@390 690 <td></td>
universe@390 691 <td class="paramtype">void **&#160;</td>
universe@390 692 <td class="paramname"><em>oldvalue</em>&#160;</td>
universe@390 693 </tr>
universe@390 694 <tr>
universe@390 695 <td></td>
universe@390 696 <td>)</td>
universe@390 697 <td></td><td></td>
universe@390 698 </tr>
universe@390 699 </table>
universe@390 700 </div><div class="memdoc">
universe@390 701
universe@390 702 <p>Puts a key/value pair into the tree. </p>
universe@390 703 <p>This is a secure function which saves the old value to the variable pointed at by oldvalue.</p>
universe@390 704 <dl class="params"><dt>Parameters</dt><dd>
universe@390 705 <table class="params">
universe@390 706 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 707 <tr><td class="paramname">key</td><td>the key </td></tr>
universe@390 708 <tr><td class="paramname">value</td><td>the new value </td></tr>
universe@390 709 <tr><td class="paramname">oldvalue</td><td>optional: a pointer to the location where a possible old value shall be stored </td></tr>
universe@390 710 </table>
universe@390 711 </dd>
universe@390 712 </dl>
universe@390 713 <dl class="section return"><dt>Returns</dt><dd>zero, if and only if the operation succeeded </dd></dl>
universe@390 714
universe@390 715 </div>
universe@390 716 </div>
universe@390 717 <a id="a1d821119c805d7fbb7e424bc3effeba9"></a>
universe@390 718 <h2 class="memtitle"><span class="permalink"><a href="#a1d821119c805d7fbb7e424bc3effeba9">&#9670;&nbsp;</a></span>ucx_avl_remove()</h2>
universe@390 719
universe@390 720 <div class="memitem">
universe@390 721 <div class="memproto">
universe@390 722 <table class="memname">
universe@390 723 <tr>
universe@390 724 <td class="memname">int ucx_avl_remove </td>
universe@390 725 <td>(</td>
universe@390 726 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 727 <td class="paramname"><em>tree</em>, </td>
universe@390 728 </tr>
universe@390 729 <tr>
universe@390 730 <td class="paramkey"></td>
universe@390 731 <td></td>
universe@390 732 <td class="paramtype">intptr_t&#160;</td>
universe@390 733 <td class="paramname"><em>key</em>&#160;</td>
universe@390 734 </tr>
universe@390 735 <tr>
universe@390 736 <td></td>
universe@390 737 <td>)</td>
universe@390 738 <td></td><td></td>
universe@390 739 </tr>
universe@390 740 </table>
universe@390 741 </div><div class="memdoc">
universe@390 742
universe@390 743 <p>Removes an element from the AVL tree. </p>
universe@390 744 <dl class="params"><dt>Parameters</dt><dd>
universe@390 745 <table class="params">
universe@390 746 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 747 <tr><td class="paramname">key</td><td>the key </td></tr>
universe@390 748 </table>
universe@390 749 </dd>
universe@390 750 </dl>
universe@390 751 <dl class="section return"><dt>Returns</dt><dd>zero, if and only if an element has been removed </dd></dl>
universe@390 752
universe@390 753 </div>
universe@390 754 </div>
universe@390 755 <a id="a9a792b7d9e58073deef74a341f8bc720"></a>
universe@390 756 <h2 class="memtitle"><span class="permalink"><a href="#a9a792b7d9e58073deef74a341f8bc720">&#9670;&nbsp;</a></span>ucx_avl_remove_node()</h2>
universe@390 757
universe@390 758 <div class="memitem">
universe@390 759 <div class="memproto">
universe@390 760 <table class="memname">
universe@390 761 <tr>
universe@390 762 <td class="memname">int ucx_avl_remove_node </td>
universe@390 763 <td>(</td>
universe@390 764 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 765 <td class="paramname"><em>tree</em>, </td>
universe@390 766 </tr>
universe@390 767 <tr>
universe@390 768 <td class="paramkey"></td>
universe@390 769 <td></td>
universe@390 770 <td class="paramtype"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *&#160;</td>
universe@390 771 <td class="paramname"><em>node</em>&#160;</td>
universe@390 772 </tr>
universe@390 773 <tr>
universe@390 774 <td></td>
universe@390 775 <td>)</td>
universe@390 776 <td></td><td></td>
universe@390 777 </tr>
universe@390 778 </table>
universe@390 779 </div><div class="memdoc">
universe@390 780
universe@390 781 <p>Removes a node from the AVL tree. </p>
universe@390 782 <p>Note: the specified node is logically removed. The tree implementation decides which memory area is freed. In most cases the here provided node is freed, so its further use is generally undefined.</p>
universe@390 783 <dl class="params"><dt>Parameters</dt><dd>
universe@390 784 <table class="params">
universe@390 785 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 786 <tr><td class="paramname">node</td><td>the node to remove </td></tr>
universe@390 787 </table>
universe@390 788 </dd>
universe@390 789 </dl>
universe@390 790 <dl class="section return"><dt>Returns</dt><dd>zero, if and only if an element has been removed </dd></dl>
universe@390 791
universe@390 792 </div>
universe@390 793 </div>
universe@390 794 <a id="a01aeeecd6415f0cc2b623486eb28f254"></a>
universe@390 795 <h2 class="memtitle"><span class="permalink"><a href="#a01aeeecd6415f0cc2b623486eb28f254">&#9670;&nbsp;</a></span>ucx_avl_remove_s()</h2>
universe@390 796
universe@390 797 <div class="memitem">
universe@390 798 <div class="memproto">
universe@390 799 <table class="memname">
universe@390 800 <tr>
universe@390 801 <td class="memname">int ucx_avl_remove_s </td>
universe@390 802 <td>(</td>
universe@390 803 <td class="paramtype"><a class="el" href="structUcxAVLTree.html">UcxAVLTree</a> *&#160;</td>
universe@390 804 <td class="paramname"><em>tree</em>, </td>
universe@390 805 </tr>
universe@390 806 <tr>
universe@390 807 <td class="paramkey"></td>
universe@390 808 <td></td>
universe@390 809 <td class="paramtype">intptr_t&#160;</td>
universe@390 810 <td class="paramname"><em>key</em>, </td>
universe@390 811 </tr>
universe@390 812 <tr>
universe@390 813 <td class="paramkey"></td>
universe@390 814 <td></td>
universe@390 815 <td class="paramtype">intptr_t *&#160;</td>
universe@390 816 <td class="paramname"><em>oldkey</em>, </td>
universe@390 817 </tr>
universe@390 818 <tr>
universe@390 819 <td class="paramkey"></td>
universe@390 820 <td></td>
universe@390 821 <td class="paramtype">void **&#160;</td>
universe@390 822 <td class="paramname"><em>oldvalue</em>&#160;</td>
universe@390 823 </tr>
universe@390 824 <tr>
universe@390 825 <td></td>
universe@390 826 <td>)</td>
universe@390 827 <td></td><td></td>
universe@390 828 </tr>
universe@390 829 </table>
universe@390 830 </div><div class="memdoc">
universe@390 831
universe@390 832 <p>Removes an element from the AVL tree. </p>
universe@390 833 <p>This is a secure function which saves the old key and value data from node to the variables at the location of oldkey and oldvalue (if specified), so they can be freed afterwards (if necessary).</p>
universe@390 834 <p>Note: the returned key in oldkey is possibly not the same as the provided key for the lookup (in terms of memory location).</p>
universe@390 835 <dl class="params"><dt>Parameters</dt><dd>
universe@390 836 <table class="params">
universe@390 837 <tr><td class="paramname">tree</td><td>the <a class="el" href="structUcxAVLTree.html" title="UCX AVL Tree. ">UcxAVLTree</a> </td></tr>
universe@390 838 <tr><td class="paramname">key</td><td>the key of the element to remove </td></tr>
universe@390 839 <tr><td class="paramname">oldkey</td><td>optional: a pointer to the location where the old key shall be stored </td></tr>
universe@390 840 <tr><td class="paramname">oldvalue</td><td>optional: a pointer to the location where the old value shall be stored </td></tr>
universe@390 841 </table>
universe@390 842 </dd>
universe@390 843 </dl>
universe@390 844 <dl class="section return"><dt>Returns</dt><dd>zero, if and only if an element has been removed </dd></dl>
universe@390 845
universe@390 846 </div>
universe@390 847 </div>
universe@390 848 <a id="aab1ad9b027ff5e50671aa0ee84e2d541"></a>
universe@390 849 <h2 class="memtitle"><span class="permalink"><a href="#aab1ad9b027ff5e50671aa0ee84e2d541">&#9670;&nbsp;</a></span>ucx_avl_succ()</h2>
universe@390 850
universe@390 851 <div class="memitem">
universe@390 852 <div class="memproto">
universe@390 853 <table class="memname">
universe@390 854 <tr>
universe@390 855 <td class="memname"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a>* ucx_avl_succ </td>
universe@390 856 <td>(</td>
universe@390 857 <td class="paramtype"><a class="el" href="structUcxAVLNode.html">UcxAVLNode</a> *&#160;</td>
universe@390 858 <td class="paramname"><em>node</em></td><td>)</td>
universe@390 859 <td></td>
universe@390 860 </tr>
universe@390 861 </table>
universe@390 862 </div><div class="memdoc">
universe@390 863
universe@390 864 <p>Finds the in-order successor of the given node. </p>
universe@390 865 <dl class="params"><dt>Parameters</dt><dd>
universe@390 866 <table class="params">
universe@390 867 <tr><td class="paramname">node</td><td>an AVL node </td></tr>
universe@390 868 </table>
universe@390 869 </dd>
universe@390 870 </dl>
universe@390 871 <dl class="section return"><dt>Returns</dt><dd>the in-order successor of the given node, or <code>NULL</code> if the given node is the in-order maximum </dd></dl>
universe@390 872
universe@390 873 </div>
universe@390 874 </div>
universe@390 875 </div><!-- contents -->
universe@390 876 <!-- start footer part -->
universe@390 877 <hr class="footer"/><address class="footer"><small>
universe@390 878 Generated on Thu Dec 19 2019 19:58:24 for ucx by &#160;<a href="http://www.doxygen.org/index.html">
universe@390 879 <img class="footer" src="doxygen.png" alt="doxygen"/>
universe@390 880 </a> 1.8.13
universe@390 881 </small></address>
universe@390 882 </body>
universe@390 883 </html>

mercurial