docs/api-2.1/ucx_8h.html

changeset 390
d345541018fa
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/docs/api-2.1/ucx_8h.html	Sat Feb 06 19:11:44 2021 +0100
     1.3 @@ -0,0 +1,388 @@
     1.4 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     1.5 +<html xmlns="http://www.w3.org/1999/xhtml">
     1.6 +<head>
     1.7 +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
     1.8 +<meta http-equiv="X-UA-Compatible" content="IE=9"/>
     1.9 +<meta name="generator" content="Doxygen 1.8.13"/>
    1.10 +<meta name="viewport" content="width=device-width, initial-scale=1"/>
    1.11 +<title>ucx: /home/mike/workspace/c/ucx/src/ucx/ucx.h File Reference</title>
    1.12 +<link href="tabs.css" rel="stylesheet" type="text/css"/>
    1.13 +<script type="text/javascript" src="jquery.js"></script>
    1.14 +<script type="text/javascript" src="dynsections.js"></script>
    1.15 +<link href="search/search.css" rel="stylesheet" type="text/css"/>
    1.16 +<script type="text/javascript" src="search/searchdata.js"></script>
    1.17 +<script type="text/javascript" src="search/search.js"></script>
    1.18 +<link href="doxygen.css" rel="stylesheet" type="text/css" />
    1.19 +</head>
    1.20 +<body>
    1.21 +<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
    1.22 +<div id="titlearea">
    1.23 +<table cellspacing="0" cellpadding="0">
    1.24 + <tbody>
    1.25 + <tr style="height: 56px;">
    1.26 +  <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td>
    1.27 +  <td id="projectalign" style="padding-left: 0.5em;">
    1.28 +   <div id="projectname">ucx
    1.29 +   </div>
    1.30 +   <div id="projectbrief">UAP Common Extensions</div>
    1.31 +  </td>
    1.32 + </tr>
    1.33 + </tbody>
    1.34 +</table>
    1.35 +</div>
    1.36 +<!-- end header part -->
    1.37 +<!-- Generated by Doxygen 1.8.13 -->
    1.38 +<script type="text/javascript">
    1.39 +var searchBox = new SearchBox("searchBox", "search",false,'Search');
    1.40 +</script>
    1.41 +<script type="text/javascript" src="menudata.js"></script>
    1.42 +<script type="text/javascript" src="menu.js"></script>
    1.43 +<script type="text/javascript">
    1.44 +$(function() {
    1.45 +  initMenu('',true,false,'search.php','Search');
    1.46 +  $(document).ready(function() { init_search(); });
    1.47 +});
    1.48 +</script>
    1.49 +<div id="main-nav"></div>
    1.50 +<!-- window showing the filter options -->
    1.51 +<div id="MSearchSelectWindow"
    1.52 +     onmouseover="return searchBox.OnSearchSelectShow()"
    1.53 +     onmouseout="return searchBox.OnSearchSelectHide()"
    1.54 +     onkeydown="return searchBox.OnSearchSelectKey(event)">
    1.55 +</div>
    1.56 +
    1.57 +<!-- iframe showing the search results (closed by default) -->
    1.58 +<div id="MSearchResultsWindow">
    1.59 +<iframe src="javascript:void(0)" frameborder="0" 
    1.60 +        name="MSearchResults" id="MSearchResults">
    1.61 +</iframe>
    1.62 +</div>
    1.63 +
    1.64 +<div id="nav-path" class="navpath">
    1.65 +  <ul>
    1.66 +<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>
    1.67 +</div>
    1.68 +</div><!-- top -->
    1.69 +<div class="header">
    1.70 +  <div class="summary">
    1.71 +<a href="#define-members">Macros</a> &#124;
    1.72 +<a href="#typedef-members">Typedefs</a> &#124;
    1.73 +<a href="#func-members">Functions</a>  </div>
    1.74 +  <div class="headertitle">
    1.75 +<div class="title">ucx.h File Reference</div>  </div>
    1.76 +</div><!--header-->
    1.77 +<div class="contents">
    1.78 +
    1.79 +<p>Main UCX Header providing most common definitions.  
    1.80 +<a href="#details">More...</a></p>
    1.81 +<div class="textblock"><code>#include &lt;stdlib.h&gt;</code><br />
    1.82 +<code>#include &lt;stdint.h&gt;</code><br />
    1.83 +<code>#include &lt;sys/types.h&gt;</code><br />
    1.84 +</div>
    1.85 +<p><a href="ucx_8h_source.html">Go to the source code of this file.</a></p>
    1.86 +<table class="memberdecls">
    1.87 +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
    1.88 +Macros</h2></td></tr>
    1.89 +<tr class="memitem:aa57e5dd22d42387d748cc16777df1383"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383">UCX_VERSION_MAJOR</a>&#160;&#160;&#160;2</td></tr>
    1.90 +<tr class="memdesc:aa57e5dd22d42387d748cc16777df1383"><td class="mdescLeft">&#160;</td><td class="mdescRight">Major UCX version as integer constant.  <a href="#aa57e5dd22d42387d748cc16777df1383">More...</a><br /></td></tr>
    1.91 +<tr class="separator:aa57e5dd22d42387d748cc16777df1383"><td class="memSeparator" colspan="2">&#160;</td></tr>
    1.92 +<tr class="memitem:a9ac10d6353e23d4615a87fc737c65eb0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0">UCX_VERSION_MINOR</a>&#160;&#160;&#160;1</td></tr>
    1.93 +<tr class="memdesc:a9ac10d6353e23d4615a87fc737c65eb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minor UCX version as integer constant.  <a href="#a9ac10d6353e23d4615a87fc737c65eb0">More...</a><br /></td></tr>
    1.94 +<tr class="separator:a9ac10d6353e23d4615a87fc737c65eb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
    1.95 +<tr class="memitem:af12001920ca2fc1405615684e4dea284"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#af12001920ca2fc1405615684e4dea284">UCX_VERSION</a>&#160;&#160;&#160;(((<a class="el" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383">UCX_VERSION_MAJOR</a>)&lt;&lt;16)|<a class="el" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0">UCX_VERSION_MINOR</a>)</td></tr>
    1.96 +<tr class="memdesc:af12001920ca2fc1405615684e4dea284"><td class="mdescLeft">&#160;</td><td class="mdescRight">Version constant which ensures to increase monotonically.  <a href="#af12001920ca2fc1405615684e4dea284">More...</a><br /></td></tr>
    1.97 +<tr class="separator:af12001920ca2fc1405615684e4dea284"><td class="memSeparator" colspan="2">&#160;</td></tr>
    1.98 +<tr class="memitem:a0b5ed6c1a0b15356f4f948acfd32a4cc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a0b5ed6c1a0b15356f4f948acfd32a4cc">ucx_szmul</a>(a,  b,  result)&#160;&#160;&#160;<a class="el" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx_szmul_impl</a>(a, b, result)</td></tr>
    1.99 +<tr class="memdesc:a0b5ed6c1a0b15356f4f948acfd32a4cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a multiplication of size_t values and checks for overflow.  <a href="#a0b5ed6c1a0b15356f4f948acfd32a4cc">More...</a><br /></td></tr>
   1.100 +<tr class="separator:a0b5ed6c1a0b15356f4f948acfd32a4cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
   1.101 +</table><table class="memberdecls">
   1.102 +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
   1.103 +Typedefs</h2></td></tr>
   1.104 +<tr class="memitem:ad2b370c2809914c8b7fedab163c266b3"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#ad2b370c2809914c8b7fedab163c266b3">ucx_destructor</a>) (void *)</td></tr>
   1.105 +<tr class="memdesc:ad2b370c2809914c8b7fedab163c266b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function pointer to a destructor function.  <a href="#ad2b370c2809914c8b7fedab163c266b3">More...</a><br /></td></tr>
   1.106 +<tr class="separator:ad2b370c2809914c8b7fedab163c266b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
   1.107 +<tr class="memitem:afe5e2d5dbf34778e0e97852051570791"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#afe5e2d5dbf34778e0e97852051570791">cmp_func</a>) (const void *, const void *, void *)</td></tr>
   1.108 +<tr class="memdesc:afe5e2d5dbf34778e0e97852051570791"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer to a compare function.  <a href="#afe5e2d5dbf34778e0e97852051570791">More...</a><br /></td></tr>
   1.109 +<tr class="separator:afe5e2d5dbf34778e0e97852051570791"><td class="memSeparator" colspan="2">&#160;</td></tr>
   1.110 +<tr class="memitem:a0bc5bf89e556c1d45d10863d52728ac9"><td class="memItemLeft" align="right" valign="top">typedef intmax_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a0bc5bf89e556c1d45d10863d52728ac9">distance_func</a>) (const void *, const void *, void *)</td></tr>
   1.111 +<tr class="memdesc:a0bc5bf89e556c1d45d10863d52728ac9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer to a distance function.  <a href="#a0bc5bf89e556c1d45d10863d52728ac9">More...</a><br /></td></tr>
   1.112 +<tr class="separator:a0bc5bf89e556c1d45d10863d52728ac9"><td class="memSeparator" colspan="2">&#160;</td></tr>
   1.113 +<tr class="memitem:aab917a5fe0965673c73e8ebd0a1fc967"><td class="memItemLeft" align="right" valign="top">typedef void *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#aab917a5fe0965673c73e8ebd0a1fc967">copy_func</a>) (const void *, void *)</td></tr>
   1.114 +<tr class="memdesc:aab917a5fe0965673c73e8ebd0a1fc967"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer to a copy function.  <a href="#aab917a5fe0965673c73e8ebd0a1fc967">More...</a><br /></td></tr>
   1.115 +<tr class="separator:aab917a5fe0965673c73e8ebd0a1fc967"><td class="memSeparator" colspan="2">&#160;</td></tr>
   1.116 +<tr class="memitem:a989b3f0fa4d307d278378fde435641ed"><td class="memItemLeft" align="right" valign="top">typedef size_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>) (const void *, size_t, size_t, void *)</td></tr>
   1.117 +<tr class="memdesc:a989b3f0fa4d307d278378fde435641ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer to a write function.  <a href="#a989b3f0fa4d307d278378fde435641ed">More...</a><br /></td></tr>
   1.118 +<tr class="separator:a989b3f0fa4d307d278378fde435641ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
   1.119 +<tr class="memitem:a6a67e255e460acb58f802067b3ff5fd5"><td class="memItemLeft" align="right" valign="top">typedef size_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>) (void *, size_t, size_t, void *)</td></tr>
   1.120 +<tr class="memdesc:a6a67e255e460acb58f802067b3ff5fd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer to a read function.  <a href="#a6a67e255e460acb58f802067b3ff5fd5">More...</a><br /></td></tr>
   1.121 +<tr class="separator:a6a67e255e460acb58f802067b3ff5fd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
   1.122 +</table><table class="memberdecls">
   1.123 +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
   1.124 +Functions</h2></td></tr>
   1.125 +<tr class="memitem:a6637171cc0ec097b297f731a3036dd3b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx_szmul_impl</a> (size_t a, size_t b, size_t *result)</td></tr>
   1.126 +<tr class="memdesc:a6637171cc0ec097b297f731a3036dd3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a multiplication of size_t values and checks for overflow.  <a href="#a6637171cc0ec097b297f731a3036dd3b">More...</a><br /></td></tr>
   1.127 +<tr class="separator:a6637171cc0ec097b297f731a3036dd3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
   1.128 +</table>
   1.129 +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
   1.130 +<div class="textblock"><p>Main UCX Header providing most common definitions. </p>
   1.131 +<dl class="section author"><dt>Author</dt><dd>Mike Becker </dd>
   1.132 +<dd>
   1.133 +Olaf Wintermann </dd></dl>
   1.134 +</div><h2 class="groupheader">Macro Definition Documentation</h2>
   1.135 +<a id="a0b5ed6c1a0b15356f4f948acfd32a4cc"></a>
   1.136 +<h2 class="memtitle"><span class="permalink"><a href="#a0b5ed6c1a0b15356f4f948acfd32a4cc">&#9670;&nbsp;</a></span>ucx_szmul</h2>
   1.137 +
   1.138 +<div class="memitem">
   1.139 +<div class="memproto">
   1.140 +      <table class="memname">
   1.141 +        <tr>
   1.142 +          <td class="memname">#define ucx_szmul</td>
   1.143 +          <td>(</td>
   1.144 +          <td class="paramtype">&#160;</td>
   1.145 +          <td class="paramname">a, </td>
   1.146 +        </tr>
   1.147 +        <tr>
   1.148 +          <td class="paramkey"></td>
   1.149 +          <td></td>
   1.150 +          <td class="paramtype">&#160;</td>
   1.151 +          <td class="paramname">b, </td>
   1.152 +        </tr>
   1.153 +        <tr>
   1.154 +          <td class="paramkey"></td>
   1.155 +          <td></td>
   1.156 +          <td class="paramtype">&#160;</td>
   1.157 +          <td class="paramname">result&#160;</td>
   1.158 +        </tr>
   1.159 +        <tr>
   1.160 +          <td></td>
   1.161 +          <td>)</td>
   1.162 +          <td></td><td>&#160;&#160;&#160;<a class="el" href="ucx_8h.html#a6637171cc0ec097b297f731a3036dd3b">ucx_szmul_impl</a>(a, b, result)</td>
   1.163 +        </tr>
   1.164 +      </table>
   1.165 +</div><div class="memdoc">
   1.166 +
   1.167 +<p>Performs a multiplication of size_t values and checks for overflow. </p>
   1.168 +<dl class="params"><dt>Parameters</dt><dd>
   1.169 +  <table class="params">
   1.170 +    <tr><td class="paramname">a</td><td>first operand </td></tr>
   1.171 +    <tr><td class="paramname">b</td><td>second operand </td></tr>
   1.172 +    <tr><td class="paramname">result</td><td>a pointer to a size_t, where the result should be stored </td></tr>
   1.173 +  </table>
   1.174 +  </dd>
   1.175 +</dl>
   1.176 +<dl class="section return"><dt>Returns</dt><dd>zero, if no overflow occurred and the result is correct, non-zero otherwise </dd></dl>
   1.177 +
   1.178 +</div>
   1.179 +</div>
   1.180 +<a id="af12001920ca2fc1405615684e4dea284"></a>
   1.181 +<h2 class="memtitle"><span class="permalink"><a href="#af12001920ca2fc1405615684e4dea284">&#9670;&nbsp;</a></span>UCX_VERSION</h2>
   1.182 +
   1.183 +<div class="memitem">
   1.184 +<div class="memproto">
   1.185 +      <table class="memname">
   1.186 +        <tr>
   1.187 +          <td class="memname">#define UCX_VERSION&#160;&#160;&#160;(((<a class="el" href="ucx_8h.html#aa57e5dd22d42387d748cc16777df1383">UCX_VERSION_MAJOR</a>)&lt;&lt;16)|<a class="el" href="ucx_8h.html#a9ac10d6353e23d4615a87fc737c65eb0">UCX_VERSION_MINOR</a>)</td>
   1.188 +        </tr>
   1.189 +      </table>
   1.190 +</div><div class="memdoc">
   1.191 +
   1.192 +<p>Version constant which ensures to increase monotonically. </p>
   1.193 +
   1.194 +</div>
   1.195 +</div>
   1.196 +<a id="aa57e5dd22d42387d748cc16777df1383"></a>
   1.197 +<h2 class="memtitle"><span class="permalink"><a href="#aa57e5dd22d42387d748cc16777df1383">&#9670;&nbsp;</a></span>UCX_VERSION_MAJOR</h2>
   1.198 +
   1.199 +<div class="memitem">
   1.200 +<div class="memproto">
   1.201 +      <table class="memname">
   1.202 +        <tr>
   1.203 +          <td class="memname">#define UCX_VERSION_MAJOR&#160;&#160;&#160;2</td>
   1.204 +        </tr>
   1.205 +      </table>
   1.206 +</div><div class="memdoc">
   1.207 +
   1.208 +<p>Major UCX version as integer constant. </p>
   1.209 +
   1.210 +</div>
   1.211 +</div>
   1.212 +<a id="a9ac10d6353e23d4615a87fc737c65eb0"></a>
   1.213 +<h2 class="memtitle"><span class="permalink"><a href="#a9ac10d6353e23d4615a87fc737c65eb0">&#9670;&nbsp;</a></span>UCX_VERSION_MINOR</h2>
   1.214 +
   1.215 +<div class="memitem">
   1.216 +<div class="memproto">
   1.217 +      <table class="memname">
   1.218 +        <tr>
   1.219 +          <td class="memname">#define UCX_VERSION_MINOR&#160;&#160;&#160;1</td>
   1.220 +        </tr>
   1.221 +      </table>
   1.222 +</div><div class="memdoc">
   1.223 +
   1.224 +<p>Minor UCX version as integer constant. </p>
   1.225 +
   1.226 +</div>
   1.227 +</div>
   1.228 +<h2 class="groupheader">Typedef Documentation</h2>
   1.229 +<a id="afe5e2d5dbf34778e0e97852051570791"></a>
   1.230 +<h2 class="memtitle"><span class="permalink"><a href="#afe5e2d5dbf34778e0e97852051570791">&#9670;&nbsp;</a></span>cmp_func</h2>
   1.231 +
   1.232 +<div class="memitem">
   1.233 +<div class="memproto">
   1.234 +      <table class="memname">
   1.235 +        <tr>
   1.236 +          <td class="memname">typedef int(* cmp_func) (const void *, const void *, void *)</td>
   1.237 +        </tr>
   1.238 +      </table>
   1.239 +</div><div class="memdoc">
   1.240 +
   1.241 +<p>Function pointer to a compare function. </p>
   1.242 +<p>The compare function shall take three arguments: the two values that shall be compared and optional additional data. The function shall then return -1 if the first argument is less than the second argument, 1 if the first argument is greater than the second argument and 0 if both arguments are equal. If the third argument is <code>NULL</code>, it shall be ignored. </p>
   1.243 +
   1.244 +</div>
   1.245 +</div>
   1.246 +<a id="aab917a5fe0965673c73e8ebd0a1fc967"></a>
   1.247 +<h2 class="memtitle"><span class="permalink"><a href="#aab917a5fe0965673c73e8ebd0a1fc967">&#9670;&nbsp;</a></span>copy_func</h2>
   1.248 +
   1.249 +<div class="memitem">
   1.250 +<div class="memproto">
   1.251 +      <table class="memname">
   1.252 +        <tr>
   1.253 +          <td class="memname">typedef void*(* copy_func) (const void *, void *)</td>
   1.254 +        </tr>
   1.255 +      </table>
   1.256 +</div><div class="memdoc">
   1.257 +
   1.258 +<p>Function pointer to a copy function. </p>
   1.259 +<p>The copy function shall create a copy of the first argument and may use additional data provided by the second argument. If the second argument is <code>NULL</code>, it shall be ignored.</p>
   1.260 +<p><b>Attention:</b> if pointers returned by functions of this type may be passed to <code>free()</code> depends on the implementation of the respective <code>copy_func</code>. </p>
   1.261 +
   1.262 +</div>
   1.263 +</div>
   1.264 +<a id="a0bc5bf89e556c1d45d10863d52728ac9"></a>
   1.265 +<h2 class="memtitle"><span class="permalink"><a href="#a0bc5bf89e556c1d45d10863d52728ac9">&#9670;&nbsp;</a></span>distance_func</h2>
   1.266 +
   1.267 +<div class="memitem">
   1.268 +<div class="memproto">
   1.269 +      <table class="memname">
   1.270 +        <tr>
   1.271 +          <td class="memname">typedef intmax_t(* distance_func) (const void *, const void *, void *)</td>
   1.272 +        </tr>
   1.273 +      </table>
   1.274 +</div><div class="memdoc">
   1.275 +
   1.276 +<p>Function pointer to a distance function. </p>
   1.277 +<p>The distance function shall take three arguments: the two values for which the distance shall be computed and optional additional data. The function shall then return the signed distance as integer value. </p>
   1.278 +
   1.279 +</div>
   1.280 +</div>
   1.281 +<a id="a6a67e255e460acb58f802067b3ff5fd5"></a>
   1.282 +<h2 class="memtitle"><span class="permalink"><a href="#a6a67e255e460acb58f802067b3ff5fd5">&#9670;&nbsp;</a></span>read_func</h2>
   1.283 +
   1.284 +<div class="memitem">
   1.285 +<div class="memproto">
   1.286 +      <table class="memname">
   1.287 +        <tr>
   1.288 +          <td class="memname">typedef size_t(* read_func) (void *, size_t, size_t, void *)</td>
   1.289 +        </tr>
   1.290 +      </table>
   1.291 +</div><div class="memdoc">
   1.292 +
   1.293 +<p>Function pointer to a read function. </p>
   1.294 +<p>The signature of the read function shall be compatible to the signature of standard <code>fread</code>, though it may use arbitrary data types for source and destination.</p>
   1.295 +<p>The arguments shall contain (in ascending order): a pointer to the destination, the length of one element, the element count and a pointer to the source. </p>
   1.296 +
   1.297 +</div>
   1.298 +</div>
   1.299 +<a id="ad2b370c2809914c8b7fedab163c266b3"></a>
   1.300 +<h2 class="memtitle"><span class="permalink"><a href="#ad2b370c2809914c8b7fedab163c266b3">&#9670;&nbsp;</a></span>ucx_destructor</h2>
   1.301 +
   1.302 +<div class="memitem">
   1.303 +<div class="memproto">
   1.304 +      <table class="memname">
   1.305 +        <tr>
   1.306 +          <td class="memname">typedef void(* ucx_destructor) (void *)</td>
   1.307 +        </tr>
   1.308 +      </table>
   1.309 +</div><div class="memdoc">
   1.310 +
   1.311 +<p>A function pointer to a destructor function. </p>
   1.312 +<dl class="section see"><dt>See also</dt><dd>ucx_mempool_setdestr() </dd>
   1.313 +<dd>
   1.314 +ucx_mempool_regdestr() </dd></dl>
   1.315 +
   1.316 +</div>
   1.317 +</div>
   1.318 +<a id="a989b3f0fa4d307d278378fde435641ed"></a>
   1.319 +<h2 class="memtitle"><span class="permalink"><a href="#a989b3f0fa4d307d278378fde435641ed">&#9670;&nbsp;</a></span>write_func</h2>
   1.320 +
   1.321 +<div class="memitem">
   1.322 +<div class="memproto">
   1.323 +      <table class="memname">
   1.324 +        <tr>
   1.325 +          <td class="memname">typedef size_t(* write_func) (const void *, size_t, size_t, void *)</td>
   1.326 +        </tr>
   1.327 +      </table>
   1.328 +</div><div class="memdoc">
   1.329 +
   1.330 +<p>Function pointer to a write function. </p>
   1.331 +<p>The signature of the write function shall be compatible to the signature of standard <code>fwrite</code>, though it may use arbitrary data types for source and destination.</p>
   1.332 +<p>The arguments shall contain (in ascending order): a pointer to the source, the length of one element, the element count and a pointer to the destination. </p>
   1.333 +
   1.334 +</div>
   1.335 +</div>
   1.336 +<h2 class="groupheader">Function Documentation</h2>
   1.337 +<a id="a6637171cc0ec097b297f731a3036dd3b"></a>
   1.338 +<h2 class="memtitle"><span class="permalink"><a href="#a6637171cc0ec097b297f731a3036dd3b">&#9670;&nbsp;</a></span>ucx_szmul_impl()</h2>
   1.339 +
   1.340 +<div class="memitem">
   1.341 +<div class="memproto">
   1.342 +      <table class="memname">
   1.343 +        <tr>
   1.344 +          <td class="memname">int ucx_szmul_impl </td>
   1.345 +          <td>(</td>
   1.346 +          <td class="paramtype">size_t&#160;</td>
   1.347 +          <td class="paramname"><em>a</em>, </td>
   1.348 +        </tr>
   1.349 +        <tr>
   1.350 +          <td class="paramkey"></td>
   1.351 +          <td></td>
   1.352 +          <td class="paramtype">size_t&#160;</td>
   1.353 +          <td class="paramname"><em>b</em>, </td>
   1.354 +        </tr>
   1.355 +        <tr>
   1.356 +          <td class="paramkey"></td>
   1.357 +          <td></td>
   1.358 +          <td class="paramtype">size_t *&#160;</td>
   1.359 +          <td class="paramname"><em>result</em>&#160;</td>
   1.360 +        </tr>
   1.361 +        <tr>
   1.362 +          <td></td>
   1.363 +          <td>)</td>
   1.364 +          <td></td><td></td>
   1.365 +        </tr>
   1.366 +      </table>
   1.367 +</div><div class="memdoc">
   1.368 +
   1.369 +<p>Performs a multiplication of size_t values and checks for overflow. </p>
   1.370 +<p>This is a custom implementation in case there is no compiler builtin available.</p>
   1.371 +<dl class="params"><dt>Parameters</dt><dd>
   1.372 +  <table class="params">
   1.373 +    <tr><td class="paramname">a</td><td>first operand </td></tr>
   1.374 +    <tr><td class="paramname">b</td><td>second operand </td></tr>
   1.375 +    <tr><td class="paramname">result</td><td>a pointer to a size_t where the result should be stored </td></tr>
   1.376 +  </table>
   1.377 +  </dd>
   1.378 +</dl>
   1.379 +<dl class="section return"><dt>Returns</dt><dd>zero, if no overflow occurred and the result is correct, non-zero otherwise </dd></dl>
   1.380 +
   1.381 +</div>
   1.382 +</div>
   1.383 +</div><!-- contents -->
   1.384 +<!-- start footer part -->
   1.385 +<hr class="footer"/><address class="footer"><small>
   1.386 +Generated on Thu Dec 19 2019 19:58:24 for ucx by &#160;<a href="http://www.doxygen.org/index.html">
   1.387 +<img class="footer" src="doxygen.png" alt="doxygen"/>
   1.388 +</a> 1.8.13
   1.389 +</small></address>
   1.390 +</body>
   1.391 +</html>

mercurial