Sun, 20 Oct 2024 12:30:30 +0200
fix memory leak in json reader when handling incomplete tokens
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.13"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>ucx: /home/mike/workspace/c/ucx/src/ucx/utils.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">ucx </div> <div id="projectbrief">UAP Common Extensions</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.13 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); </script> <div id="main-nav"></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#define-members">Macros</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">utils.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Compare, copy and printf functions. <a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> <code>#include "<a class="el" href="string_8h_source.html">string.h</a>"</code><br /> <code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> <code>#include <inttypes.h></code><br /> <code>#include <stdarg.h></code><br /> </div> <p><a href="utils_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a23efd74fa5f701d4cf26ccbfd138a439"><td class="memItemLeft" align="right" valign="top"><a id="a23efd74fa5f701d4cf26ccbfd138a439"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a>   4096</td></tr> <tr class="memdesc:a23efd74fa5f701d4cf26ccbfd138a439"><td class="mdescLeft"> </td><td class="mdescRight">Default buffer size for <a class="el" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392" title="Shorthand for an unbounded ucx_stream_bncopy call using a default buffer. ">ucx_stream_copy()</a> and <a class="el" href="utils_8h.html#add13f39a8af440b4f7e6f74339eaada2" title="Shorthand for ucx_stream_bncopy using a default copy buffer. ">ucx_stream_ncopy()</a>. <br /></td></tr> <tr class="separator:a23efd74fa5f701d4cf26ccbfd138a439"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a41ca1344f781c0d3bf7a414a6e811392"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a41ca1344f781c0d3bf7a414a6e811392">ucx_stream_copy</a>(src, dest, rfnc, wfnc)</td></tr> <tr class="memdesc:a41ca1344f781c0d3bf7a414a6e811392"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for an unbounded ucx_stream_bncopy call using a default buffer. <a href="#a41ca1344f781c0d3bf7a414a6e811392">More...</a><br /></td></tr> <tr class="separator:a41ca1344f781c0d3bf7a414a6e811392"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:add13f39a8af440b4f7e6f74339eaada2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#add13f39a8af440b4f7e6f74339eaada2">ucx_stream_ncopy</a>(src, dest, rfnc, wfnc, n)</td></tr> <tr class="memdesc:add13f39a8af440b4f7e6f74339eaada2"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for ucx_stream_bncopy using a default copy buffer. <a href="#add13f39a8af440b4f7e6f74339eaada2">More...</a><br /></td></tr> <tr class="separator:add13f39a8af440b4f7e6f74339eaada2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6003a1750a66234169bd1f8cc84b297b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a6003a1750a66234169bd1f8cc84b297b">ucx_stream_bcopy</a>(src, dest, rfnc, wfnc, buf, bufsize)</td></tr> <tr class="memdesc:a6003a1750a66234169bd1f8cc84b297b"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for an unbounded ucx_stream_bncopy call using the specified buffer. <a href="#a6003a1750a66234169bd1f8cc84b297b">More...</a><br /></td></tr> <tr class="separator:a6003a1750a66234169bd1f8cc84b297b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af9f333b66ecd639c347c7235f4992e2e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#af9f333b66ecd639c347c7235f4992e2e">ucx_sprintf</a>(...)   <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">ucx_asprintf</a>(<a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>(), __VA_ARGS__)</td></tr> <tr class="memdesc:af9f333b66ecd639c347c7235f4992e2e"><td class="mdescLeft"> </td><td class="mdescRight">Shortcut for <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a> with default allocator. <a href="#af9f333b66ecd639c347c7235f4992e2e">More...</a><br /></td></tr> <tr class="separator:af9f333b66ecd639c347c7235f4992e2e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9d7d65a420f026fcb6982803d5120519"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a9d7d65a420f026fcb6982803d5120519">ucx_bprintf</a>(buffer, ...)</td></tr> <tr class="memdesc:a9d7d65a420f026fcb6982803d5120519"><td class="mdescLeft"> </td><td class="mdescRight">A <code>printf()</code> like function which writes the output to a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. <a href="#a9d7d65a420f026fcb6982803d5120519">More...</a><br /></td></tr> <tr class="separator:a9d7d65a420f026fcb6982803d5120519"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:adeb6e8d0a53a829207cfa0a979d01fff"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#adeb6e8d0a53a829207cfa0a979d01fff">ucx_strcpy</a> (const void *s, void *data)</td></tr> <tr class="memdesc:adeb6e8d0a53a829207cfa0a979d01fff"><td class="mdescLeft"> </td><td class="mdescRight">Copies a string. <a href="#adeb6e8d0a53a829207cfa0a979d01fff">More...</a><br /></td></tr> <tr class="separator:adeb6e8d0a53a829207cfa0a979d01fff"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab2e184e6a744941aab6b8058116baf30"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ab2e184e6a744941aab6b8058116baf30">ucx_memcpy</a> (const void *m, void *n)</td></tr> <tr class="memdesc:ab2e184e6a744941aab6b8058116baf30"><td class="mdescLeft"> </td><td class="mdescRight">Copies a memory area. <a href="#ab2e184e6a744941aab6b8058116baf30">More...</a><br /></td></tr> <tr class="separator:ab2e184e6a744941aab6b8058116baf30"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a114ee7f7da62656ffd35e2dc23394201"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a> (void *src, void *dest, <a class="el" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a> rfnc, <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfnc, char *buf, size_t bufsize, size_t n)</td></tr> <tr class="memdesc:a114ee7f7da62656ffd35e2dc23394201"><td class="mdescLeft"> </td><td class="mdescRight">Reads data from a stream and writes it to another stream. <a href="#a114ee7f7da62656ffd35e2dc23394201">More...</a><br /></td></tr> <tr class="separator:a114ee7f7da62656ffd35e2dc23394201"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa6a37b9d172b6a5b2803d152f9e1b258"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa6a37b9d172b6a5b2803d152f9e1b258">ucx_cmp_str</a> (const void *s1, const void *s2, void *data)</td></tr> <tr class="memdesc:aa6a37b9d172b6a5b2803d152f9e1b258"><td class="mdescLeft"> </td><td class="mdescRight">Wraps the strcmp function. <a href="#aa6a37b9d172b6a5b2803d152f9e1b258">More...</a><br /></td></tr> <tr class="separator:aa6a37b9d172b6a5b2803d152f9e1b258"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac6b354a878f551a3a5b20a167db3f308"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ac6b354a878f551a3a5b20a167db3f308">ucx_cmp_strn</a> (const void *s1, const void *s2, void *n)</td></tr> <tr class="memdesc:ac6b354a878f551a3a5b20a167db3f308"><td class="mdescLeft"> </td><td class="mdescRight">Wraps the strncmp function. <a href="#ac6b354a878f551a3a5b20a167db3f308">More...</a><br /></td></tr> <tr class="separator:ac6b354a878f551a3a5b20a167db3f308"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adee0739589166d272f8cb7c23aabf8ba"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#adee0739589166d272f8cb7c23aabf8ba">ucx_cmp_sstr</a> (const void *s1, const void *s2, void *data)</td></tr> <tr class="memdesc:adee0739589166d272f8cb7c23aabf8ba"><td class="mdescLeft"> </td><td class="mdescRight">Wraps the sstrcmp function. <a href="#adee0739589166d272f8cb7c23aabf8ba">More...</a><br /></td></tr> <tr class="separator:adee0739589166d272f8cb7c23aabf8ba"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8ce7e11e6b3deafe89a32a091fde7f16"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a8ce7e11e6b3deafe89a32a091fde7f16">ucx_cmp_int</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a8ce7e11e6b3deafe89a32a091fde7f16"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type int. <a href="#a8ce7e11e6b3deafe89a32a091fde7f16">More...</a><br /></td></tr> <tr class="separator:a8ce7e11e6b3deafe89a32a091fde7f16"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aeb57a2b9a6aaa0460c7a6bec29accf2c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aeb57a2b9a6aaa0460c7a6bec29accf2c">ucx_cmp_longint</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:aeb57a2b9a6aaa0460c7a6bec29accf2c"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type long int. <a href="#aeb57a2b9a6aaa0460c7a6bec29accf2c">More...</a><br /></td></tr> <tr class="separator:aeb57a2b9a6aaa0460c7a6bec29accf2c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a366b57def20f86a41eaedf575eea5375"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a366b57def20f86a41eaedf575eea5375">ucx_cmp_longlong</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a366b57def20f86a41eaedf575eea5375"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type long long. <a href="#a366b57def20f86a41eaedf575eea5375">More...</a><br /></td></tr> <tr class="separator:a366b57def20f86a41eaedf575eea5375"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa29e6e559946375e34113e34e0b0bd0d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa29e6e559946375e34113e34e0b0bd0d">ucx_cmp_int16</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:aa29e6e559946375e34113e34e0b0bd0d"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type int16_t. <a href="#aa29e6e559946375e34113e34e0b0bd0d">More...</a><br /></td></tr> <tr class="separator:aa29e6e559946375e34113e34e0b0bd0d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a858b2ac443fb202643b71f6a7e9218dd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a858b2ac443fb202643b71f6a7e9218dd">ucx_cmp_int32</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a858b2ac443fb202643b71f6a7e9218dd"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type int32_t. <a href="#a858b2ac443fb202643b71f6a7e9218dd">More...</a><br /></td></tr> <tr class="separator:a858b2ac443fb202643b71f6a7e9218dd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a54701aea6a89fed1402dfb0bf56bc7f6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a54701aea6a89fed1402dfb0bf56bc7f6">ucx_cmp_int64</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a54701aea6a89fed1402dfb0bf56bc7f6"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type int64_t. <a href="#a54701aea6a89fed1402dfb0bf56bc7f6">More...</a><br /></td></tr> <tr class="separator:a54701aea6a89fed1402dfb0bf56bc7f6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abd83a5da91c3dd026a6931bd80c12f1e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#abd83a5da91c3dd026a6931bd80c12f1e">ucx_cmp_uint</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:abd83a5da91c3dd026a6931bd80c12f1e"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type unsigned int. <a href="#abd83a5da91c3dd026a6931bd80c12f1e">More...</a><br /></td></tr> <tr class="separator:abd83a5da91c3dd026a6931bd80c12f1e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3f3cbae2594d6f722bae29acb0408a24"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a3f3cbae2594d6f722bae29acb0408a24">ucx_cmp_ulongint</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a3f3cbae2594d6f722bae29acb0408a24"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type unsigned long int. <a href="#a3f3cbae2594d6f722bae29acb0408a24">More...</a><br /></td></tr> <tr class="separator:a3f3cbae2594d6f722bae29acb0408a24"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6acfc359421f21f9a042a654ff7faac5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a6acfc359421f21f9a042a654ff7faac5">ucx_cmp_ulonglong</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a6acfc359421f21f9a042a654ff7faac5"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type unsigned long long. <a href="#a6acfc359421f21f9a042a654ff7faac5">More...</a><br /></td></tr> <tr class="separator:a6acfc359421f21f9a042a654ff7faac5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acde5366437e886a459b7468f7a9e11f0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#acde5366437e886a459b7468f7a9e11f0">ucx_cmp_uint16</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:acde5366437e886a459b7468f7a9e11f0"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type uint16_t. <a href="#acde5366437e886a459b7468f7a9e11f0">More...</a><br /></td></tr> <tr class="separator:acde5366437e886a459b7468f7a9e11f0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5879d1722330355914d8c9146fa549d3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a5879d1722330355914d8c9146fa549d3">ucx_cmp_uint32</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a5879d1722330355914d8c9146fa549d3"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type uint32_t. <a href="#a5879d1722330355914d8c9146fa549d3">More...</a><br /></td></tr> <tr class="separator:a5879d1722330355914d8c9146fa549d3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1572a78b5b42f7151a5b2a5a7283d62d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a1572a78b5b42f7151a5b2a5a7283d62d">ucx_cmp_uint64</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a1572a78b5b42f7151a5b2a5a7283d62d"><td class="mdescLeft"> </td><td class="mdescRight">Compares two integers of type uint64_t. <a href="#a1572a78b5b42f7151a5b2a5a7283d62d">More...</a><br /></td></tr> <tr class="separator:a1572a78b5b42f7151a5b2a5a7283d62d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4ab6753739d56c09cdf6079fdcabf7c6"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a4ab6753739d56c09cdf6079fdcabf7c6">ucx_dist_int</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a4ab6753739d56c09cdf6079fdcabf7c6"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type int. <a href="#a4ab6753739d56c09cdf6079fdcabf7c6">More...</a><br /></td></tr> <tr class="separator:a4ab6753739d56c09cdf6079fdcabf7c6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a43e73d288b1553a0078bf4c98dd341f5"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a43e73d288b1553a0078bf4c98dd341f5">ucx_dist_longint</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a43e73d288b1553a0078bf4c98dd341f5"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type long int. <a href="#a43e73d288b1553a0078bf4c98dd341f5">More...</a><br /></td></tr> <tr class="separator:a43e73d288b1553a0078bf4c98dd341f5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a306778414a2427951ea263be92368627"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a306778414a2427951ea263be92368627">ucx_dist_longlong</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a306778414a2427951ea263be92368627"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type long long. <a href="#a306778414a2427951ea263be92368627">More...</a><br /></td></tr> <tr class="separator:a306778414a2427951ea263be92368627"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a81fb8434b70ca11bf2c14abfa21d16a9"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a81fb8434b70ca11bf2c14abfa21d16a9">ucx_dist_int16</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a81fb8434b70ca11bf2c14abfa21d16a9"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type int16_t. <a href="#a81fb8434b70ca11bf2c14abfa21d16a9">More...</a><br /></td></tr> <tr class="separator:a81fb8434b70ca11bf2c14abfa21d16a9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab4a659cc46096f0490c1dafa57726476"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ab4a659cc46096f0490c1dafa57726476">ucx_dist_int32</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:ab4a659cc46096f0490c1dafa57726476"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type int32_t. <a href="#ab4a659cc46096f0490c1dafa57726476">More...</a><br /></td></tr> <tr class="separator:ab4a659cc46096f0490c1dafa57726476"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a54e7d06585bad3a899befc4e9c13853f"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a54e7d06585bad3a899befc4e9c13853f">ucx_dist_int64</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a54e7d06585bad3a899befc4e9c13853f"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type int64_t. <a href="#a54e7d06585bad3a899befc4e9c13853f">More...</a><br /></td></tr> <tr class="separator:a54e7d06585bad3a899befc4e9c13853f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a37b7d471ca1679992afc11a0deda45f4"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a37b7d471ca1679992afc11a0deda45f4">ucx_dist_uint</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a37b7d471ca1679992afc11a0deda45f4"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type unsigned int. <a href="#a37b7d471ca1679992afc11a0deda45f4">More...</a><br /></td></tr> <tr class="separator:a37b7d471ca1679992afc11a0deda45f4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abb13476228d0c16bfaba08469adbae2d"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#abb13476228d0c16bfaba08469adbae2d">ucx_dist_ulongint</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:abb13476228d0c16bfaba08469adbae2d"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type unsigned long int. <a href="#abb13476228d0c16bfaba08469adbae2d">More...</a><br /></td></tr> <tr class="separator:abb13476228d0c16bfaba08469adbae2d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a59a5859272cb4b43cbdd58208c41e32b"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a59a5859272cb4b43cbdd58208c41e32b">ucx_dist_ulonglong</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a59a5859272cb4b43cbdd58208c41e32b"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type unsigned long long. <a href="#a59a5859272cb4b43cbdd58208c41e32b">More...</a><br /></td></tr> <tr class="separator:a59a5859272cb4b43cbdd58208c41e32b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a66e00a0703cbcde050ec922578e2f080"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a66e00a0703cbcde050ec922578e2f080">ucx_dist_uint16</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a66e00a0703cbcde050ec922578e2f080"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type uint16_t. <a href="#a66e00a0703cbcde050ec922578e2f080">More...</a><br /></td></tr> <tr class="separator:a66e00a0703cbcde050ec922578e2f080"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:add2b5c5507caba59d894b84e056b079b"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#add2b5c5507caba59d894b84e056b079b">ucx_dist_uint32</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:add2b5c5507caba59d894b84e056b079b"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type uint32_t. <a href="#add2b5c5507caba59d894b84e056b079b">More...</a><br /></td></tr> <tr class="separator:add2b5c5507caba59d894b84e056b079b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3ba75e2e0b2479eef2b22fb219b42da7"><td class="memItemLeft" align="right" valign="top">intmax_t </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a3ba75e2e0b2479eef2b22fb219b42da7">ucx_dist_uint64</a> (const void *i1, const void *i2, void *data)</td></tr> <tr class="memdesc:a3ba75e2e0b2479eef2b22fb219b42da7"><td class="mdescLeft"> </td><td class="mdescRight">Distance function for integers of type uint64_t. <a href="#a3ba75e2e0b2479eef2b22fb219b42da7">More...</a><br /></td></tr> <tr class="separator:a3ba75e2e0b2479eef2b22fb219b42da7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad1196b561bcdad76c393885819769a97"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ad1196b561bcdad76c393885819769a97">ucx_cmp_float</a> (const void *f1, const void *f2, void *data)</td></tr> <tr class="memdesc:ad1196b561bcdad76c393885819769a97"><td class="mdescLeft"> </td><td class="mdescRight">Compares two real numbers of type float. <a href="#ad1196b561bcdad76c393885819769a97">More...</a><br /></td></tr> <tr class="separator:ad1196b561bcdad76c393885819769a97"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab804b7c27d0bfcd7bf3a3583140825b6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#ab804b7c27d0bfcd7bf3a3583140825b6">ucx_cmp_double</a> (const void *d1, const void *d2, void *data)</td></tr> <tr class="memdesc:ab804b7c27d0bfcd7bf3a3583140825b6"><td class="mdescLeft"> </td><td class="mdescRight">Compares two real numbers of type double. <a href="#ab804b7c27d0bfcd7bf3a3583140825b6">More...</a><br /></td></tr> <tr class="separator:ab804b7c27d0bfcd7bf3a3583140825b6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa174d539de3ea59be4f9640f17ce53d8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa174d539de3ea59be4f9640f17ce53d8">ucx_cmp_ptr</a> (const void *ptr1, const void *ptr2, void *data)</td></tr> <tr class="memdesc:aa174d539de3ea59be4f9640f17ce53d8"><td class="mdescLeft"> </td><td class="mdescRight">Compares two pointers. <a href="#aa174d539de3ea59be4f9640f17ce53d8">More...</a><br /></td></tr> <tr class="separator:aa174d539de3ea59be4f9640f17ce53d8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aff7d2bcded71196831a8c0664333f8e7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aff7d2bcded71196831a8c0664333f8e7">ucx_cmp_mem</a> (const void *ptr1, const void *ptr2, void *n)</td></tr> <tr class="memdesc:aff7d2bcded71196831a8c0664333f8e7"><td class="mdescLeft"> </td><td class="mdescRight">Compares two memory areas. <a href="#aff7d2bcded71196831a8c0664333f8e7">More...</a><br /></td></tr> <tr class="separator:aff7d2bcded71196831a8c0664333f8e7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa0bec80e1c67f769ff5e112a7d4ce72a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">ucx_fprintf</a> (void *stream, <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfc, const char *fmt,...)</td></tr> <tr class="memdesc:aa0bec80e1c67f769ff5e112a7d4ce72a"><td class="mdescLeft"> </td><td class="mdescRight">A <code>printf()</code> like function which writes the output to a stream by using a <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed" title="Function pointer to a write function. ">write_func()</a>. <a href="#aa0bec80e1c67f769ff5e112a7d4ce72a">More...</a><br /></td></tr> <tr class="separator:aa0bec80e1c67f769ff5e112a7d4ce72a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4907967beb92c3ae351dd239abbb6927"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a4907967beb92c3ae351dd239abbb6927">ucx_vfprintf</a> (void *stream, <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> wfc, const char *fmt, va_list ap)</td></tr> <tr class="memdesc:a4907967beb92c3ae351dd239abbb6927"><td class="mdescLeft"> </td><td class="mdescRight"><code>va_list</code> version of <a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a" title="A printf() like function which writes the output to a stream by using a write_func(). ">ucx_fprintf()</a>. <a href="#a4907967beb92c3ae351dd239abbb6927">More...</a><br /></td></tr> <tr class="separator:a4907967beb92c3ae351dd239abbb6927"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9f9cf0e89ffdc256ecb35429907f51f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">ucx_asprintf</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const char *fmt,...)</td></tr> <tr class="memdesc:a9f9cf0e89ffdc256ecb35429907f51f5"><td class="mdescLeft"> </td><td class="mdescRight">A <code>printf()</code> like function which allocates space for a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> the result is written to. <a href="#a9f9cf0e89ffdc256ecb35429907f51f5">More...</a><br /></td></tr> <tr class="separator:a9f9cf0e89ffdc256ecb35429907f51f5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3ea1dfb856c741f3e8ec6bfdc9ad427e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="utils_8h.html#a3ea1dfb856c741f3e8ec6bfdc9ad427e">ucx_vasprintf</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, const char *fmt, va_list ap)</td></tr> <tr class="memdesc:a3ea1dfb856c741f3e8ec6bfdc9ad427e"><td class="mdescLeft"> </td><td class="mdescRight"><code>va_list</code> version of <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a>. <a href="#a3ea1dfb856c741f3e8ec6bfdc9ad427e">More...</a><br /></td></tr> <tr class="separator:a3ea1dfb856c741f3e8ec6bfdc9ad427e"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Compare, copy and printf functions. </p> <dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> <dd> Olaf Wintermann </dd></dl> </div><h2 class="groupheader">Macro Definition Documentation</h2> <a id="a9d7d65a420f026fcb6982803d5120519"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9d7d65a420f026fcb6982803d5120519">◆ </a></span>ucx_bprintf</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_bprintf</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">buffer, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"><a class="code" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">ucx_fprintf</a>((<a class="code" href="structUcxBuffer.html">UcxBuffer</a>*)buffer, \</div><div class="line"> (<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)<a class="code" href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">ucx_buffer_write</a>, __VA_ARGS__)</div><div class="ttc" id="buffer_8h_html_af8aacc7401814392b58c1b7b81bffc05"><div class="ttname"><a href="buffer_8h.html#af8aacc7401814392b58c1b7b81bffc05">ucx_buffer_write</a></div><div class="ttdeci">size_t ucx_buffer_write(const void *ptr, size_t size, size_t nitems, UcxBuffer *buffer)</div><div class="ttdoc">Writes data to a UcxBuffer. </div><div class="ttdef"><b>Definition:</b> buffer.c:152</div></div> <div class="ttc" id="structUcxBuffer_html"><div class="ttname"><a href="structUcxBuffer.html">UcxBuffer</a></div><div class="ttdoc">UCX Buffer. </div><div class="ttdef"><b>Definition:</b> buffer.h:73</div></div> <div class="ttc" id="utils_8h_html_aa0bec80e1c67f769ff5e112a7d4ce72a"><div class="ttname"><a href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a">ucx_fprintf</a></div><div class="ttdeci">int ucx_fprintf(void *stream, write_func wfc, const char *fmt,...)</div><div class="ttdoc">A printf() like function which writes the output to a stream by using a write_func(). </div><div class="ttdef"><b>Definition:</b> utils.c:343</div></div> <div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> </div><!-- fragment --> <p>A <code>printf()</code> like function which writes the output to a <a class="el" href="structUcxBuffer.html" title="UCX Buffer. ">UcxBuffer</a>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">buffer</td><td>the buffer the data is written to </td></tr> <tr><td class="paramname">...</td><td>format string and additional arguments </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the total number of bytes written </dd></dl> <dl class="section see"><dt>See also</dt><dd><a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a" title="A printf() like function which writes the output to a stream by using a write_func(). ">ucx_fprintf()</a> </dd></dl> </div> </div> <a id="af9f333b66ecd639c347c7235f4992e2e"></a> <h2 class="memtitle"><span class="permalink"><a href="#af9f333b66ecd639c347c7235f4992e2e">◆ </a></span>ucx_sprintf</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_sprintf</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname"><em>...</em></td><td>)</td> <td>   <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5">ucx_asprintf</a>(<a class="el" href="allocator_8h.html#a98d2f1b341118b7a0e341fda5d8b2ebf">ucx_default_allocator</a>(), __VA_ARGS__)</td> </tr> </table> </div><div class="memdoc"> <p>Shortcut for <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a> with default allocator. </p> </div> </div> <a id="a6003a1750a66234169bd1f8cc84b297b"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6003a1750a66234169bd1f8cc84b297b">◆ </a></span>ucx_stream_bcopy</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_stream_bcopy</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">src, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">dest, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">rfnc, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">wfnc, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">buf, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">bufsize </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"><a class="code" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a>(\</div><div class="line"> src, dest, (<a class="code" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>)rfnc, (<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)wfnc, \</div><div class="line"> buf, bufsize, (<span class="keywordtype">size_t</span>)-1)</div><div class="ttc" id="utils_8h_html_a114ee7f7da62656ffd35e2dc23394201"><div class="ttname"><a href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a></div><div class="ttdeci">size_t ucx_stream_bncopy(void *src, void *dest, read_func rfnc, write_func wfnc, char *buf, size_t bufsize, size_t n)</div><div class="ttdoc">Reads data from a stream and writes it to another stream. </div><div class="ttdef"><b>Definition:</b> utils.c:52</div></div> <div class="ttc" id="ucx_8h_html_a6a67e255e460acb58f802067b3ff5fd5"><div class="ttname"><a href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a></div><div class="ttdeci">size_t(* read_func)(void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a read function. </div><div class="ttdef"><b>Definition:</b> ucx.h:132</div></div> <div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> </div><!-- fragment --> <p>Shorthand for an unbounded ucx_stream_bncopy call using the specified buffer. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">src</td><td>the source stream </td></tr> <tr><td class="paramname">dest</td><td>the destination stream </td></tr> <tr><td class="paramname">rfnc</td><td>the read function </td></tr> <tr><td class="paramname">wfnc</td><td>the write function </td></tr> <tr><td class="paramname">buf</td><td>a pointer to the copy buffer or <code>NULL</code> if a buffer shall be implicitly created on the heap </td></tr> <tr><td class="paramname">bufsize</td><td>the size of the copy buffer - if <code>NULL</code> was provided for <code>buf</code>, this is the size of the buffer that shall be implicitly created </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>total number of bytes copied </dd></dl> </div> </div> <a id="a41ca1344f781c0d3bf7a414a6e811392"></a> <h2 class="memtitle"><span class="permalink"><a href="#a41ca1344f781c0d3bf7a414a6e811392">◆ </a></span>ucx_stream_copy</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_stream_copy</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">src, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">dest, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">rfnc, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">wfnc </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"><a class="code" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a>(\</div><div class="line"> src, dest, (<a class="code" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>)rfnc, (<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)wfnc, \</div><div class="line"> NULL, <a class="code" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a>, (<span class="keywordtype">size_t</span>)-1)</div><div class="ttc" id="utils_8h_html_a114ee7f7da62656ffd35e2dc23394201"><div class="ttname"><a href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a></div><div class="ttdeci">size_t ucx_stream_bncopy(void *src, void *dest, read_func rfnc, write_func wfnc, char *buf, size_t bufsize, size_t n)</div><div class="ttdoc">Reads data from a stream and writes it to another stream. </div><div class="ttdef"><b>Definition:</b> utils.c:52</div></div> <div class="ttc" id="utils_8h_html_a23efd74fa5f701d4cf26ccbfd138a439"><div class="ttname"><a href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a></div><div class="ttdeci">#define UCX_STREAM_COPY_BUFSIZE</div><div class="ttdoc">Default buffer size for ucx_stream_copy() and ucx_stream_ncopy(). </div><div class="ttdef"><b>Definition:</b> utils.h:55</div></div> <div class="ttc" id="ucx_8h_html_a6a67e255e460acb58f802067b3ff5fd5"><div class="ttname"><a href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a></div><div class="ttdeci">size_t(* read_func)(void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a read function. </div><div class="ttdef"><b>Definition:</b> ucx.h:132</div></div> <div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> </div><!-- fragment --> <p>Shorthand for an unbounded ucx_stream_bncopy call using a default buffer. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">src</td><td>the source stream </td></tr> <tr><td class="paramname">dest</td><td>the destination stream </td></tr> <tr><td class="paramname">rfnc</td><td>the read function </td></tr> <tr><td class="paramname">wfnc</td><td>the write function </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>total number of bytes copied</dd></dl> <dl class="section see"><dt>See also</dt><dd><a class="el" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439" title="Default buffer size for ucx_stream_copy() and ucx_stream_ncopy(). ">UCX_STREAM_COPY_BUFSIZE</a> </dd></dl> </div> </div> <a id="add13f39a8af440b4f7e6f74339eaada2"></a> <h2 class="memtitle"><span class="permalink"><a href="#add13f39a8af440b4f7e6f74339eaada2">◆ </a></span>ucx_stream_ncopy</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ucx_stream_ncopy</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">src, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">dest, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">rfnc, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">wfnc, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">n </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line"><a class="code" href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a>(\</div><div class="line"> src, dest, (<a class="code" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a>)rfnc, (<a class="code" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a>)wfnc, \</div><div class="line"> NULL, <a class="code" href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a>, n)</div><div class="ttc" id="utils_8h_html_a114ee7f7da62656ffd35e2dc23394201"><div class="ttname"><a href="utils_8h.html#a114ee7f7da62656ffd35e2dc23394201">ucx_stream_bncopy</a></div><div class="ttdeci">size_t ucx_stream_bncopy(void *src, void *dest, read_func rfnc, write_func wfnc, char *buf, size_t bufsize, size_t n)</div><div class="ttdoc">Reads data from a stream and writes it to another stream. </div><div class="ttdef"><b>Definition:</b> utils.c:52</div></div> <div class="ttc" id="utils_8h_html_a23efd74fa5f701d4cf26ccbfd138a439"><div class="ttname"><a href="utils_8h.html#a23efd74fa5f701d4cf26ccbfd138a439">UCX_STREAM_COPY_BUFSIZE</a></div><div class="ttdeci">#define UCX_STREAM_COPY_BUFSIZE</div><div class="ttdoc">Default buffer size for ucx_stream_copy() and ucx_stream_ncopy(). </div><div class="ttdef"><b>Definition:</b> utils.h:55</div></div> <div class="ttc" id="ucx_8h_html_a6a67e255e460acb58f802067b3ff5fd5"><div class="ttname"><a href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a></div><div class="ttdeci">size_t(* read_func)(void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a read function. </div><div class="ttdef"><b>Definition:</b> ucx.h:132</div></div> <div class="ttc" id="ucx_8h_html_a989b3f0fa4d307d278378fde435641ed"><div class="ttname"><a href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a></div><div class="ttdeci">size_t(* write_func)(const void *, size_t, size_t, void *)</div><div class="ttdoc">Function pointer to a write function. </div><div class="ttdef"><b>Definition:</b> ucx.h:119</div></div> </div><!-- fragment --> <p>Shorthand for ucx_stream_bncopy using a default copy buffer. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">src</td><td>the source stream </td></tr> <tr><td class="paramname">dest</td><td>the destination stream </td></tr> <tr><td class="paramname">rfnc</td><td>the read function </td></tr> <tr><td class="paramname">wfnc</td><td>the write function </td></tr> <tr><td class="paramname">n</td><td>maximum number of bytes that shall be copied </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>total number of bytes copied </dd></dl> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a id="a9f9cf0e89ffdc256ecb35429907f51f5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9f9cf0e89ffdc256ecb35429907f51f5">◆ </a></span>ucx_asprintf()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> ucx_asprintf </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>fmt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>A <code>printf()</code> like function which allocates space for a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> the result is written to. </p> <p><b>Attention</b>: The <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> data is allocated with the allocators <a class="el" href="allocator_8h.html#a29f0f6a23a70db3b60635cd6dc384473" title="A function pointer to the allocators malloc() function. ">ucx_allocator_malloc()</a> function. So it is implementation dependent, if the returned <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointer must be passed to the allocators <a class="el" href="allocator_8h.html#aaf2387ddaddd8ab4b267e6b00e5d6f7e" title="A function pointer to the allocators free() function. ">ucx_allocator_free()</a> function manually.</p> <p><b>Note</b>: The <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the return value will <em>always</em> be <code>NULL</code>-terminated.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <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> used for allocating the result <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> </td></tr> <tr><td class="paramname">fmt</td><td>format string </td></tr> <tr><td class="paramname">...</td><td>additional arguments </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the formatted string </dd></dl> </div> </div> <a id="ab804b7c27d0bfcd7bf3a3583140825b6"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab804b7c27d0bfcd7bf3a3583140825b6">◆ </a></span>ucx_cmp_double()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_double </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>d1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>d2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two real numbers of type double. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">d1</td><td>pointer to double one </td></tr> <tr><td class="paramname">d2</td><td>pointer to double two </td></tr> <tr><td class="paramname">data</td><td>if provided: a pointer to precision (default: 1e-14) </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *d1 is less than *d2, 0 if both are equal, 1 if *d1 is greater than *d2 </dd></dl> </div> </div> <a id="ad1196b561bcdad76c393885819769a97"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad1196b561bcdad76c393885819769a97">◆ </a></span>ucx_cmp_float()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_float </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>f1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>f2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two real numbers of type float. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">f1</td><td>pointer to float one </td></tr> <tr><td class="paramname">f2</td><td>pointer to float two </td></tr> <tr><td class="paramname">data</td><td>if provided: a pointer to precision (default: 1e-6f) </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *f1 is less than *f2, 0 if both are equal, 1 if *f1 is greater than *f2 </dd></dl> </div> </div> <a id="a8ce7e11e6b3deafe89a32a091fde7f16"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8ce7e11e6b3deafe89a32a091fde7f16">◆ </a></span>ucx_cmp_int()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_int </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type int. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to integer one </td></tr> <tr><td class="paramname">i2</td><td>pointer to integer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="aa29e6e559946375e34113e34e0b0bd0d"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa29e6e559946375e34113e34e0b0bd0d">◆ </a></span>ucx_cmp_int16()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_int16 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type int16_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to int16_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to int16_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="a858b2ac443fb202643b71f6a7e9218dd"></a> <h2 class="memtitle"><span class="permalink"><a href="#a858b2ac443fb202643b71f6a7e9218dd">◆ </a></span>ucx_cmp_int32()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_int32 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type int32_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to int32_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to int32_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="a54701aea6a89fed1402dfb0bf56bc7f6"></a> <h2 class="memtitle"><span class="permalink"><a href="#a54701aea6a89fed1402dfb0bf56bc7f6">◆ </a></span>ucx_cmp_int64()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_int64 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type int64_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to int64_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to int64_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="aeb57a2b9a6aaa0460c7a6bec29accf2c"></a> <h2 class="memtitle"><span class="permalink"><a href="#aeb57a2b9a6aaa0460c7a6bec29accf2c">◆ </a></span>ucx_cmp_longint()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_longint </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type long int. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to long integer one </td></tr> <tr><td class="paramname">i2</td><td>pointer to long integer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="a366b57def20f86a41eaedf575eea5375"></a> <h2 class="memtitle"><span class="permalink"><a href="#a366b57def20f86a41eaedf575eea5375">◆ </a></span>ucx_cmp_longlong()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_longlong </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type long long. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to long long one </td></tr> <tr><td class="paramname">i2</td><td>pointer to long long two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="aff7d2bcded71196831a8c0664333f8e7"></a> <h2 class="memtitle"><span class="permalink"><a href="#aff7d2bcded71196831a8c0664333f8e7">◆ </a></span>ucx_cmp_mem()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_mem </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>ptr1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>ptr2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>n</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two memory areas. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ptr1</td><td>pointer one </td></tr> <tr><td class="paramname">ptr2</td><td>pointer two </td></tr> <tr><td class="paramname">n</td><td>a pointer to the size_t containing the third parameter for memcmp </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the result of memcmp(ptr1, ptr2, *n) </dd></dl> </div> </div> <a id="aa174d539de3ea59be4f9640f17ce53d8"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa174d539de3ea59be4f9640f17ce53d8">◆ </a></span>ucx_cmp_ptr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_ptr </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>ptr1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>ptr2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two pointers. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ptr1</td><td>pointer one </td></tr> <tr><td class="paramname">ptr2</td><td>pointer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1 if ptr1 is less than ptr2, 0 if both are equal, 1 if ptr1 is greater than ptr2 </dd></dl> </div> </div> <a id="adee0739589166d272f8cb7c23aabf8ba"></a> <h2 class="memtitle"><span class="permalink"><a href="#adee0739589166d272f8cb7c23aabf8ba">◆ </a></span>ucx_cmp_sstr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_sstr </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>s1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>s2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Wraps the sstrcmp function. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">s1</td><td>sstr one </td></tr> <tr><td class="paramname">s2</td><td>sstr two </td></tr> <tr><td class="paramname">data</td><td>ignored </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the result of <a class="el" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160" title="Compares two UCX strings with standard memcmp(). ">sstrcmp(s1, s2)</a> </dd></dl> </div> </div> <a id="aa6a37b9d172b6a5b2803d152f9e1b258"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa6a37b9d172b6a5b2803d152f9e1b258">◆ </a></span>ucx_cmp_str()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_str </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>s1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>s2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Wraps the strcmp function. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">s1</td><td>string one </td></tr> <tr><td class="paramname">s2</td><td>string two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the result of strcmp(s1, s2) </dd></dl> </div> </div> <a id="ac6b354a878f551a3a5b20a167db3f308"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac6b354a878f551a3a5b20a167db3f308">◆ </a></span>ucx_cmp_strn()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_strn </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>s1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>s2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>n</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Wraps the strncmp function. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">s1</td><td>string one </td></tr> <tr><td class="paramname">s2</td><td>string two </td></tr> <tr><td class="paramname">n</td><td>a pointer to the size_t containing the third strncmp parameter </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the result of strncmp(s1, s2, *n) </dd></dl> </div> </div> <a id="abd83a5da91c3dd026a6931bd80c12f1e"></a> <h2 class="memtitle"><span class="permalink"><a href="#abd83a5da91c3dd026a6931bd80c12f1e">◆ </a></span>ucx_cmp_uint()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_uint </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type unsigned int. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to unsigned integer one </td></tr> <tr><td class="paramname">i2</td><td>pointer to unsigned integer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="acde5366437e886a459b7468f7a9e11f0"></a> <h2 class="memtitle"><span class="permalink"><a href="#acde5366437e886a459b7468f7a9e11f0">◆ </a></span>ucx_cmp_uint16()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_uint16 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type uint16_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to uint16_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to uint16_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="a5879d1722330355914d8c9146fa549d3"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5879d1722330355914d8c9146fa549d3">◆ </a></span>ucx_cmp_uint32()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_uint32 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type uint32_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to uint32_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to uint32_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="a1572a78b5b42f7151a5b2a5a7283d62d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1572a78b5b42f7151a5b2a5a7283d62d">◆ </a></span>ucx_cmp_uint64()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_uint64 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type uint64_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to uint64_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to uint64_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="a3f3cbae2594d6f722bae29acb0408a24"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3f3cbae2594d6f722bae29acb0408a24">◆ </a></span>ucx_cmp_ulongint()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_ulongint </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type unsigned long int. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to unsigned long integer one </td></tr> <tr><td class="paramname">i2</td><td>pointer to unsigned long integer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="a6acfc359421f21f9a042a654ff7faac5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6acfc359421f21f9a042a654ff7faac5">◆ </a></span>ucx_cmp_ulonglong()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_cmp_ulonglong </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two integers of type unsigned long long. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to unsigned long long one </td></tr> <tr><td class="paramname">i2</td><td>pointer to unsigned long long two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>-1, if *i1 is less than *i2, 0 if both are equal, 1 if *i1 is greater than *i2 </dd></dl> </div> </div> <a id="a4ab6753739d56c09cdf6079fdcabf7c6"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4ab6753739d56c09cdf6079fdcabf7c6">◆ </a></span>ucx_dist_int()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_int </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type int. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to integer one </td></tr> <tr><td class="paramname">i2</td><td>pointer to integer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="a81fb8434b70ca11bf2c14abfa21d16a9"></a> <h2 class="memtitle"><span class="permalink"><a href="#a81fb8434b70ca11bf2c14abfa21d16a9">◆ </a></span>ucx_dist_int16()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_int16 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type int16_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to int16_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to int16_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="ab4a659cc46096f0490c1dafa57726476"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab4a659cc46096f0490c1dafa57726476">◆ </a></span>ucx_dist_int32()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_int32 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type int32_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to int32_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to int32_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="a54e7d06585bad3a899befc4e9c13853f"></a> <h2 class="memtitle"><span class="permalink"><a href="#a54e7d06585bad3a899befc4e9c13853f">◆ </a></span>ucx_dist_int64()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_int64 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type int64_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to int64_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to int64_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="a43e73d288b1553a0078bf4c98dd341f5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a43e73d288b1553a0078bf4c98dd341f5">◆ </a></span>ucx_dist_longint()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_longint </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type long int. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to long integer one </td></tr> <tr><td class="paramname">i2</td><td>pointer to long integer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="a306778414a2427951ea263be92368627"></a> <h2 class="memtitle"><span class="permalink"><a href="#a306778414a2427951ea263be92368627">◆ </a></span>ucx_dist_longlong()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_longlong </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type long long. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to long long one </td></tr> <tr><td class="paramname">i2</td><td>pointer to long long two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="a37b7d471ca1679992afc11a0deda45f4"></a> <h2 class="memtitle"><span class="permalink"><a href="#a37b7d471ca1679992afc11a0deda45f4">◆ </a></span>ucx_dist_uint()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_uint </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type unsigned int. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to unsigned integer one </td></tr> <tr><td class="paramname">i2</td><td>pointer to unsigned integer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="a66e00a0703cbcde050ec922578e2f080"></a> <h2 class="memtitle"><span class="permalink"><a href="#a66e00a0703cbcde050ec922578e2f080">◆ </a></span>ucx_dist_uint16()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_uint16 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type uint16_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to uint16_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to uint16_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="add2b5c5507caba59d894b84e056b079b"></a> <h2 class="memtitle"><span class="permalink"><a href="#add2b5c5507caba59d894b84e056b079b">◆ </a></span>ucx_dist_uint32()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_uint32 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type uint32_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to uint32_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to uint32_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="a3ba75e2e0b2479eef2b22fb219b42da7"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3ba75e2e0b2479eef2b22fb219b42da7">◆ </a></span>ucx_dist_uint64()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_uint64 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type uint64_t. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to uint64_t one </td></tr> <tr><td class="paramname">i2</td><td>pointer to uint64_t two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="abb13476228d0c16bfaba08469adbae2d"></a> <h2 class="memtitle"><span class="permalink"><a href="#abb13476228d0c16bfaba08469adbae2d">◆ </a></span>ucx_dist_ulongint()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_ulongint </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type unsigned long int. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to unsigned long integer one </td></tr> <tr><td class="paramname">i2</td><td>pointer to unsigned long integer two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="a59a5859272cb4b43cbdd58208c41e32b"></a> <h2 class="memtitle"><span class="permalink"><a href="#a59a5859272cb4b43cbdd58208c41e32b">◆ </a></span>ucx_dist_ulonglong()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">intmax_t ucx_dist_ulonglong </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>i1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>i2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Distance function for integers of type unsigned long long. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">i1</td><td>pointer to unsigned long long one </td></tr> <tr><td class="paramname">i2</td><td>pointer to unsigned long long two </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>i1 minus i2 </dd></dl> </div> </div> <a id="aa0bec80e1c67f769ff5e112a7d4ce72a"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa0bec80e1c67f769ff5e112a7d4ce72a">◆ </a></span>ucx_fprintf()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_fprintf </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>stream</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> </td> <td class="paramname"><em>wfc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>fmt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>A <code>printf()</code> like function which writes the output to a stream by using a <a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed" title="Function pointer to a write function. ">write_func()</a>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">stream</td><td>the stream the data is written to </td></tr> <tr><td class="paramname">wfc</td><td>the write function </td></tr> <tr><td class="paramname">fmt</td><td>format string </td></tr> <tr><td class="paramname">...</td><td>additional arguments </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the total number of bytes written </dd></dl> </div> </div> <a id="ab2e184e6a744941aab6b8058116baf30"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab2e184e6a744941aab6b8058116baf30">◆ </a></span>ucx_memcpy()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* ucx_memcpy </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>n</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Copies a memory area. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">m</td><td>a pointer to the memory area </td></tr> <tr><td class="paramname">n</td><td>a pointer to the size_t containing the size of the memory area </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a pointer to a copy of the specified memory area that can be passed to free(void*) </dd></dl> </div> </div> <a id="adeb6e8d0a53a829207cfa0a979d01fff"></a> <h2 class="memtitle"><span class="permalink"><a href="#adeb6e8d0a53a829207cfa0a979d01fff">◆ </a></span>ucx_strcpy()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* ucx_strcpy </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"><em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Copies a string. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">s</td><td>the string to copy </td></tr> <tr><td class="paramname">data</td><td>omitted </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a pointer to a copy of s1 that can be passed to free(void*) </dd></dl> </div> </div> <a id="a114ee7f7da62656ffd35e2dc23394201"></a> <h2 class="memtitle"><span class="permalink"><a href="#a114ee7f7da62656ffd35e2dc23394201">◆ </a></span>ucx_stream_bncopy()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">size_t ucx_stream_bncopy </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>src</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>dest</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#a6a67e255e460acb58f802067b3ff5fd5">read_func</a> </td> <td class="paramname"><em>rfnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> </td> <td class="paramname"><em>wfnc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>bufsize</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>n</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Reads data from a stream and writes it to another stream. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">src</td><td>the source stream </td></tr> <tr><td class="paramname">dest</td><td>the destination stream </td></tr> <tr><td class="paramname">rfnc</td><td>the read function </td></tr> <tr><td class="paramname">wfnc</td><td>the write function </td></tr> <tr><td class="paramname">buf</td><td>a pointer to the copy buffer or <code>NULL</code> if a buffer shall be implicitly created on the heap </td></tr> <tr><td class="paramname">bufsize</td><td>the size of the copy buffer - if <code>NULL</code> was provided for <code>buf</code>, this is the size of the buffer that shall be implicitly created </td></tr> <tr><td class="paramname">n</td><td>the maximum number of bytes that shall be copied </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the total number of bytes copied </dd></dl> </div> </div> <a id="a3ea1dfb856c741f3e8ec6bfdc9ad427e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3ea1dfb856c741f3e8ec6bfdc9ad427e">◆ </a></span>ucx_vasprintf()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> ucx_vasprintf </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>fmt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">va_list </td> <td class="paramname"><em>ap</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p><code>va_list</code> version of <a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <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> used for allocating the result <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> </td></tr> <tr><td class="paramname">fmt</td><td>format string </td></tr> <tr><td class="paramname">ap</td><td>argument list </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the formatted string </dd></dl> <dl class="section see"><dt>See also</dt><dd><a class="el" href="utils_8h.html#a9f9cf0e89ffdc256ecb35429907f51f5" title="A printf() like function which allocates space for a sstr_t the result is written to...">ucx_asprintf()</a> </dd></dl> </div> </div> <a id="a4907967beb92c3ae351dd239abbb6927"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4907967beb92c3ae351dd239abbb6927">◆ </a></span>ucx_vfprintf()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ucx_vfprintf </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>stream</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ucx_8h.html#a989b3f0fa4d307d278378fde435641ed">write_func</a> </td> <td class="paramname"><em>wfc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>fmt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">va_list </td> <td class="paramname"><em>ap</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p><code>va_list</code> version of <a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a" title="A printf() like function which writes the output to a stream by using a write_func(). ">ucx_fprintf()</a>. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">stream</td><td>the stream the data is written to </td></tr> <tr><td class="paramname">wfc</td><td>the write function </td></tr> <tr><td class="paramname">fmt</td><td>format string </td></tr> <tr><td class="paramname">ap</td><td>argument list </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the total number of bytes written </dd></dl> <dl class="section see"><dt>See also</dt><dd><a class="el" href="utils_8h.html#aa0bec80e1c67f769ff5e112a7d4ce72a" title="A printf() like function which writes the output to a stream by using a write_func(). ">ucx_fprintf()</a> </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.13 </small></address> </body> </html>