UNIXworkcode

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 <meta http-equiv="X-UA-Compatible" content="IE=9"/> 6 <meta name="generator" content="Doxygen 1.8.13"/> 7 <meta name="viewport" content="width=device-width, initial-scale=1"/> 8 <title>ucx: /home/mike/workspace/c/ucx/src/ucx/string.h File Reference</title> 9 <link href="tabs.css" rel="stylesheet" type="text/css"/> 10 <script type="text/javascript" src="jquery.js"></script> 11 <script type="text/javascript" src="dynsections.js"></script> 12 <link href="search/search.css" rel="stylesheet" type="text/css"/> 13 <script type="text/javascript" src="search/searchdata.js"></script> 14 <script type="text/javascript" src="search/search.js"></script> 15 <link href="doxygen.css" rel="stylesheet" type="text/css" /> 16 </head> 17 <body> 18 <div id="top"><!-- do not remove this div, it is closed by doxygen! --> 19 <div id="titlearea"> 20 <table cellspacing="0" cellpadding="0"> 21 <tbody> 22 <tr style="height: 56px;"> 23 <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> 24 <td id="projectalign" style="padding-left: 0.5em;"> 25 <div id="projectname">ucx 26 </div> 27 <div id="projectbrief">UAP Common Extensions</div> 28 </td> 29 </tr> 30 </tbody> 31 </table> 32 </div> 33 <!-- end header part --> 34 <!-- Generated by Doxygen 1.8.13 --> 35 <script type="text/javascript"> 36 var searchBox = new SearchBox("searchBox", "search",false,'Search'); 37 </script> 38 <script type="text/javascript" src="menudata.js"></script> 39 <script type="text/javascript" src="menu.js"></script> 40 <script type="text/javascript"> 41 $(function() { 42 initMenu('',true,false,'search.php','Search'); 43 $(document).ready(function() { init_search(); }); 44 }); 45 </script> 46 <div id="main-nav"></div> 47 <!-- window showing the filter options --> 48 <div id="MSearchSelectWindow" 49 onmouseover="return searchBox.OnSearchSelectShow()" 50 onmouseout="return searchBox.OnSearchSelectHide()" 51 onkeydown="return searchBox.OnSearchSelectKey(event)"> 52 </div> 53 54 <!-- iframe showing the search results (closed by default) --> 55 <div id="MSearchResultsWindow"> 56 <iframe src="javascript:void(0)" frameborder="0" 57 name="MSearchResults" id="MSearchResults"> 58 </iframe> 59 </div> 60 61 <div id="nav-path" class="navpath"> 62 <ul> 63 <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> 64 </div> 65 </div><!-- top --> 66 <div class="header"> 67 <div class="summary"> 68 <a href="#nested-classes">Data Structures</a> &#124; 69 <a href="#define-members">Macros</a> &#124; 70 <a href="#func-members">Functions</a> </div> 71 <div class="headertitle"> 72 <div class="title">string.h File Reference</div> </div> 73 </div><!--header--> 74 <div class="contents"> 75 76 <p>Bounded string implementation. 77 <a href="#details">More...</a></p> 78 <div class="textblock"><code>#include &quot;<a class="el" href="ucx_8h_source.html">ucx.h</a>&quot;</code><br /> 79 <code>#include &quot;<a class="el" href="allocator_8h_source.html">allocator.h</a>&quot;</code><br /> 80 <code>#include &lt;stddef.h&gt;</code><br /> 81 </div> 82 <p><a href="string_8h_source.html">Go to the source code of this file.</a></p> 83 <table class="memberdecls"> 84 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> 85 Data Structures</h2></td></tr> 86 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsstr__t.html">sstr_t</a></td></tr> 87 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The UCX string structure. <a href="structsstr__t.html#details">More...</a><br /></td></tr> 88 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr> 89 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structscstr__t.html">scstr_t</a></td></tr> 90 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The UCX string structure for immutable (constant) strings. <a href="structscstr__t.html#details">More...</a><br /></td></tr> 91 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr> 92 </table><table class="memberdecls"> 93 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> 94 Macros</h2></td></tr> 95 <tr class="memitem:a9037956cca97a4e84b642f17f3d10378"><td class="memItemLeft" align="right" valign="top"><a id="a9037956cca97a4e84b642f17f3d10378"></a> 96 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9037956cca97a4e84b642f17f3d10378">ST</a>(s)&#160;&#160;&#160;{ s, sizeof(s)-1 }</td></tr> 97 <tr class="memdesc:a9037956cca97a4e84b642f17f3d10378"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shortcut for a <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> struct</code> or <code><a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> struct</code> literal. <br /></td></tr> 98 <tr class="separator:a9037956cca97a4e84b642f17f3d10378"><td class="memSeparator" colspan="2">&#160;</td></tr> 99 <tr class="memitem:a8fa17c8cf4c36df48f4108c36da8573e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e">S</a>(s)&#160;&#160;&#160;<a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>(s, sizeof(s)-1)</td></tr> 100 <tr class="memdesc:a8fa17c8cf4c36df48f4108c36da8573e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shortcut for the conversion of a C string to a <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>. <a href="#a8fa17c8cf4c36df48f4108c36da8573e">More...</a><br /></td></tr> 101 <tr class="separator:a8fa17c8cf4c36df48f4108c36da8573e"><td class="memSeparator" colspan="2">&#160;</td></tr> 102 <tr class="memitem:a7d261dd0bc358c957a368bc058c1ce53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d261dd0bc358c957a368bc058c1ce53">SC</a>(s)&#160;&#160;&#160;<a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a>(s, sizeof(s)-1)</td></tr> 103 <tr class="memdesc:a7d261dd0bc358c957a368bc058c1ce53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shortcut for the conversion of a C string to a <code><a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a></code>. <a href="#a7d261dd0bc358c957a368bc058c1ce53">More...</a><br /></td></tr> 104 <tr class="separator:a7d261dd0bc358c957a368bc058c1ce53"><td class="memSeparator" colspan="2">&#160;</td></tr> 105 <tr class="memitem:a23ed51e87385886bb65e8cd19c839362"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a23ed51e87385886bb65e8cd19c839362">SFMT</a>(s)&#160;&#160;&#160;(int) (s).length, (s).ptr</td></tr> 106 <tr class="memdesc:a23ed51e87385886bb65e8cd19c839362"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> or <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> to printf arguments. <a href="#a23ed51e87385886bb65e8cd19c839362">More...</a><br /></td></tr> 107 <tr class="separator:a23ed51e87385886bb65e8cd19c839362"><td class="memSeparator" colspan="2">&#160;</td></tr> 108 <tr class="memitem:a7d5bc48708405a28b23667e32dfcecae"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d5bc48708405a28b23667e32dfcecae">PRIsstr</a>&#160;&#160;&#160;&quot;.*s&quot;</td></tr> 109 <tr class="memdesc:a7d5bc48708405a28b23667e32dfcecae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Format specifier for a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> or <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. <a href="#a7d5bc48708405a28b23667e32dfcecae">More...</a><br /></td></tr> 110 <tr class="separator:a7d5bc48708405a28b23667e32dfcecae"><td class="memSeparator" colspan="2">&#160;</td></tr> 111 <tr class="memitem:ad4293350a9b39a23a6546bd0fef2aeed"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(str)&#160;&#160;&#160;<a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a>(str)</td></tr> 112 <tr class="memdesc:ad4293350a9b39a23a6546bd0fef2aeed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a UCX string to an immutable UCX string (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>). <a href="#ad4293350a9b39a23a6546bd0fef2aeed">More...</a><br /></td></tr> 113 <tr class="separator:ad4293350a9b39a23a6546bd0fef2aeed"><td class="memSeparator" colspan="2">&#160;</td></tr> 114 <tr class="memitem:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c">sstrnlen</a>(count, ...)&#160;&#160;&#160;<a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a>(count, __VA_ARGS__)</td></tr> 115 <tr class="memdesc:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the accumulated length of all specified strings. <a href="#a33fa945acc5ac2ce962e5ef13cf1638c">More...</a><br /></td></tr> 116 <tr class="separator:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="memSeparator" colspan="2">&#160;</td></tr> 117 <tr class="memitem:a6af8a4c347c7fdb5980d4c4803be2759"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759">sstrcat</a>(count, s1, ...)&#160;&#160;&#160;<a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a>(count, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), __VA_ARGS__)</td></tr> 118 <tr class="memdesc:a6af8a4c347c7fdb5980d4c4803be2759"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates two or more strings. <a href="#a6af8a4c347c7fdb5980d4c4803be2759">More...</a><br /></td></tr> 119 <tr class="separator:a6af8a4c347c7fdb5980d4c4803be2759"><td class="memSeparator" colspan="2">&#160;</td></tr> 120 <tr class="memitem:a6068d460f9bc05962666a917d26568b3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a6068d460f9bc05962666a917d26568b3">sstrcat_a</a>(alloc, count, s1, ...)&#160;&#160;&#160;<a class="el" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a>(alloc, count, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), __VA_ARGS__)</td></tr> 121 <tr class="memdesc:a6068d460f9bc05962666a917d26568b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates two or more strings using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a6068d460f9bc05962666a917d26568b3">More...</a><br /></td></tr> 122 <tr class="separator:a6068d460f9bc05962666a917d26568b3"><td class="memSeparator" colspan="2">&#160;</td></tr> 123 <tr class="memitem:a9d03be026afa9447c52bb34b9e3b895a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9d03be026afa9447c52bb34b9e3b895a">sstrstr</a>(string, match)&#160;&#160;&#160;<a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td></tr> 124 <tr class="memdesc:a9d03be026afa9447c52bb34b9e3b895a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a substring starting at the location of the first occurrence of the specified string. <a href="#a9d03be026afa9447c52bb34b9e3b895a">More...</a><br /></td></tr> 125 <tr class="separator:a9d03be026afa9447c52bb34b9e3b895a"><td class="memSeparator" colspan="2">&#160;</td></tr> 126 <tr class="memitem:aa696932213265e10f864678686f4ccde"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aa696932213265e10f864678686f4ccde">sstrscstr</a>(string, match)&#160;&#160;&#160;<a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td></tr> 127 <tr class="memdesc:aa696932213265e10f864678686f4ccde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. <a href="#aa696932213265e10f864678686f4ccde">More...</a><br /></td></tr> 128 <tr class="separator:aa696932213265e10f864678686f4ccde"><td class="memSeparator" colspan="2">&#160;</td></tr> 129 <tr class="memitem:aa929984004c3576bfafb95031aca8eb7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7">sstrsplit</a>(string, delim, count)&#160;&#160;&#160;<a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(delim), count)</td></tr> 130 <tr class="memdesc:aa929984004c3576bfafb95031aca8eb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Splits a string into parts by using a delimiter string. <a href="#aa929984004c3576bfafb95031aca8eb7">More...</a><br /></td></tr> 131 <tr class="separator:aa929984004c3576bfafb95031aca8eb7"><td class="memSeparator" colspan="2">&#160;</td></tr> 132 <tr class="memitem:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601">sstrsplit_a</a>(allocator, string, delim, count)&#160;&#160;&#160;<a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(delim), count)</td></tr> 133 <tr class="memdesc:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performing <a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7" title="Splits a string into parts by using a delimiter string. ">sstrsplit()</a> using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#ac9f69fa3a17e26a3a5f9d985b5844601">More...</a><br /></td></tr> 134 <tr class="separator:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="memSeparator" colspan="2">&#160;</td></tr> 135 <tr class="memitem:a7ae7156c8de57454ca38d306100b8160"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160">sstrcmp</a>(s1, s2)&#160;&#160;&#160;<a class="el" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s2))</td></tr> 136 <tr class="memdesc:a7ae7156c8de57454ca38d306100b8160"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares two UCX strings with standard <code>memcmp()</code>. <a href="#a7ae7156c8de57454ca38d306100b8160">More...</a><br /></td></tr> 137 <tr class="separator:a7ae7156c8de57454ca38d306100b8160"><td class="memSeparator" colspan="2">&#160;</td></tr> 138 <tr class="memitem:a81b0f6df794152c2038703d4e9d0ad59"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a81b0f6df794152c2038703d4e9d0ad59">sstrcasecmp</a>(s1, s2)&#160;&#160;&#160;<a class="el" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s2))</td></tr> 139 <tr class="memdesc:a81b0f6df794152c2038703d4e9d0ad59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares two UCX strings ignoring the case. <a href="#a81b0f6df794152c2038703d4e9d0ad59">More...</a><br /></td></tr> 140 <tr class="separator:a81b0f6df794152c2038703d4e9d0ad59"><td class="memSeparator" colspan="2">&#160;</td></tr> 141 <tr class="memitem:accbfd2b459a028d7af9fb7df6f977d80"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80">sstrdup</a>(string)&#160;&#160;&#160;<a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> 142 <tr class="memdesc:accbfd2b459a028d7af9fb7df6f977d80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a duplicate of the specified string. <a href="#accbfd2b459a028d7af9fb7df6f977d80">More...</a><br /></td></tr> 143 <tr class="separator:accbfd2b459a028d7af9fb7df6f977d80"><td class="memSeparator" colspan="2">&#160;</td></tr> 144 <tr class="memitem:a8d098baada4ea9ad5d8b6343b5aec007"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007">sstrdup_a</a>(allocator, string)&#160;&#160;&#160;<a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> 145 <tr class="memdesc:a8d098baada4ea9ad5d8b6343b5aec007"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a duplicate of the specified string using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a8d098baada4ea9ad5d8b6343b5aec007">More...</a><br /></td></tr> 146 <tr class="separator:a8d098baada4ea9ad5d8b6343b5aec007"><td class="memSeparator" colspan="2">&#160;</td></tr> 147 <tr class="memitem:a7d73b66256384b26927e787318fdefa2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d73b66256384b26927e787318fdefa2">sstrprefix</a>(string, prefix)&#160;&#160;&#160;<a class="el" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(prefix))</td></tr> 148 <tr class="memdesc:a7d73b66256384b26927e787318fdefa2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a string has a specific prefix. <a href="#a7d73b66256384b26927e787318fdefa2">More...</a><br /></td></tr> 149 <tr class="separator:a7d73b66256384b26927e787318fdefa2"><td class="memSeparator" colspan="2">&#160;</td></tr> 150 <tr class="memitem:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e">sstrsuffix</a>(string, suffix)&#160;&#160;&#160;<a class="el" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(suffix))</td></tr> 151 <tr class="memdesc:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a string has a specific suffix. <a href="#ac6a5246f26be2e8a5f34d8995b7ec14e">More...</a><br /></td></tr> 152 <tr class="separator:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="memSeparator" colspan="2">&#160;</td></tr> 153 <tr class="memitem:acd3dc64e90db9b4046e14f115a815ff4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#acd3dc64e90db9b4046e14f115a815ff4">sstrcaseprefix</a>(string, prefix)&#160;&#160;&#160;<a class="el" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(prefix))</td></tr> 154 <tr class="memdesc:acd3dc64e90db9b4046e14f115a815ff4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a string has a specific prefix, ignoring the case. <a href="#acd3dc64e90db9b4046e14f115a815ff4">More...</a><br /></td></tr> 155 <tr class="separator:acd3dc64e90db9b4046e14f115a815ff4"><td class="memSeparator" colspan="2">&#160;</td></tr> 156 <tr class="memitem:a57eabd4862d531dd685bbf2feb8468bf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a57eabd4862d531dd685bbf2feb8468bf">sstrcasesuffix</a>(string, suffix)&#160;&#160;&#160;<a class="el" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(suffix))</td></tr> 157 <tr class="memdesc:a57eabd4862d531dd685bbf2feb8468bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a string has a specific suffix, ignoring the case. <a href="#a57eabd4862d531dd685bbf2feb8468bf">More...</a><br /></td></tr> 158 <tr class="separator:a57eabd4862d531dd685bbf2feb8468bf"><td class="memSeparator" colspan="2">&#160;</td></tr> 159 <tr class="memitem:a89343ea3e719f00ee802b557db57b769"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a89343ea3e719f00ee802b557db57b769">sstrlower</a>(string)&#160;&#160;&#160;<a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> 160 <tr class="memdesc:a89343ea3e719f00ee802b557db57b769"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a lower case version of a string. <a href="#a89343ea3e719f00ee802b557db57b769">More...</a><br /></td></tr> 161 <tr class="separator:a89343ea3e719f00ee802b557db57b769"><td class="memSeparator" colspan="2">&#160;</td></tr> 162 <tr class="memitem:a4bb4742fe71115f493991d307cb22b23"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a4bb4742fe71115f493991d307cb22b23">sstrlower_a</a>(allocator, string)&#160;&#160;&#160;<a class="el" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> 163 <tr class="memdesc:a4bb4742fe71115f493991d307cb22b23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a lower case version of a string. <a href="#a4bb4742fe71115f493991d307cb22b23">More...</a><br /></td></tr> 164 <tr class="separator:a4bb4742fe71115f493991d307cb22b23"><td class="memSeparator" colspan="2">&#160;</td></tr> 165 <tr class="memitem:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824">sstrupper</a>(string)&#160;&#160;&#160;<a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> 166 <tr class="memdesc:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a upper case version of a string. <a href="#a084fe5a3a90d6fb6b15ecda03bb30824">More...</a><br /></td></tr> 167 <tr class="separator:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="memSeparator" colspan="2">&#160;</td></tr> 168 <tr class="memitem:a5f0dd83c0176b812fb428004b2877a34"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a5f0dd83c0176b812fb428004b2877a34">sstrupper_a</a>(allocator, string)&#160;&#160;&#160;<a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a>(allocator, string)</td></tr> 169 <tr class="memdesc:a5f0dd83c0176b812fb428004b2877a34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a upper case version of a string. <a href="#a5f0dd83c0176b812fb428004b2877a34">More...</a><br /></td></tr> 170 <tr class="separator:a5f0dd83c0176b812fb428004b2877a34"><td class="memSeparator" colspan="2">&#160;</td></tr> 171 </table><table class="memberdecls"> 172 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> 173 Functions</h2></td></tr> 174 <tr class="memitem:a69d5e3eeec783cc43314df71248768f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a69d5e3eeec783cc43314df71248768f5">ucx_sc2sc</a> (<a class="el" href="structscstr__t.html">scstr_t</a> str)</td></tr> 175 <tr class="memdesc:a69d5e3eeec783cc43314df71248768f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of two type adjustment functions that return an <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. <a href="#a69d5e3eeec783cc43314df71248768f5">More...</a><br /></td></tr> 176 <tr class="separator:a69d5e3eeec783cc43314df71248768f5"><td class="memSeparator" colspan="2">&#160;</td></tr> 177 <tr class="memitem:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359">ucx_ss2sc</a> (<a class="el" href="structsstr__t.html">sstr_t</a> str)</td></tr> 178 <tr class="memdesc:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of two type adjustment functions that return an <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. <a href="#a9ce5ad1b2aa2dbeba204d452c2e64359">More...</a><br /></td></tr> 179 <tr class="separator:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="memSeparator" colspan="2">&#160;</td></tr> 180 <tr class="memitem:aedeb5d7bddda54116101a8d68af8c56d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a> ()</td></tr> 181 <tr class="memdesc:aedeb5d7bddda54116101a8d68af8c56d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a UCX string to an immutable UCX string (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>). <a href="#aedeb5d7bddda54116101a8d68af8c56d">More...</a><br /></td></tr> 182 <tr class="separator:aedeb5d7bddda54116101a8d68af8c56d"><td class="memSeparator" colspan="2">&#160;</td></tr> 183 <tr class="memitem:a539eb7059251a051ee5d179526a23e9a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">sstr</a> (char *cstring)</td></tr> 184 <tr class="memdesc:a539eb7059251a051ee5d179526a23e9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> based on a C string. <a href="#a539eb7059251a051ee5d179526a23e9a">More...</a><br /></td></tr> 185 <tr class="separator:a539eb7059251a051ee5d179526a23e9a"><td class="memSeparator" colspan="2">&#160;</td></tr> 186 <tr class="memitem:a2744c38ac44abf3e01fa059056dcf36c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a> (char *cstring, size_t length)</td></tr> 187 <tr class="memdesc:a2744c38ac44abf3e01fa059056dcf36c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> of the specified length based on a C string. <a href="#a2744c38ac44abf3e01fa059056dcf36c">More...</a><br /></td></tr> 188 <tr class="separator:a2744c38ac44abf3e01fa059056dcf36c"><td class="memSeparator" colspan="2">&#160;</td></tr> 189 <tr class="memitem:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">scstr</a> (const char *cstring)</td></tr> 190 <tr class="memdesc:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> based on a constant C string. <a href="#a2b1d6f1eca1c1549f37107b9c026c5a6">More...</a><br /></td></tr> 191 <tr class="separator:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="memSeparator" colspan="2">&#160;</td></tr> 192 <tr class="memitem:ae594f6e222ea394cef6a26c0dfad000d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a> (const char *cstring, size_t length)</td></tr> 193 <tr class="memdesc:ae594f6e222ea394cef6a26c0dfad000d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> of the specified length based on a constant C string. <a href="#ae594f6e222ea394cef6a26c0dfad000d">More...</a><br /></td></tr> 194 <tr class="separator:ae594f6e222ea394cef6a26c0dfad000d"><td class="memSeparator" colspan="2">&#160;</td></tr> 195 <tr class="memitem:ac1b000030d6d197eec48c15a182055d5"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a> (size_t count,...)</td></tr> 196 <tr class="memdesc:ac1b000030d6d197eec48c15a182055d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the accumulated length of all specified strings. <a href="#ac1b000030d6d197eec48c15a182055d5">More...</a><br /></td></tr> 197 <tr class="separator:ac1b000030d6d197eec48c15a182055d5"><td class="memSeparator" colspan="2">&#160;</td></tr> 198 <tr class="memitem:a7376842c19e954b49215da81ef76ac0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a> (size_t count, <a class="el" href="structscstr__t.html">scstr_t</a> s1,...)</td></tr> 199 <tr class="memdesc:a7376842c19e954b49215da81ef76ac0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates two or more strings. <a href="#a7376842c19e954b49215da81ef76ac0c">More...</a><br /></td></tr> 200 <tr class="separator:a7376842c19e954b49215da81ef76ac0c"><td class="memSeparator" colspan="2">&#160;</td></tr> 201 <tr class="memitem:abacce4cbd6f70fcb6453904ef08b02e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *alloc, size_t count, <a class="el" href="structscstr__t.html">scstr_t</a> s1,...)</td></tr> 202 <tr class="memdesc:abacce4cbd6f70fcb6453904ef08b02e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concatenates two or more strings using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#abacce4cbd6f70fcb6453904ef08b02e9">More...</a><br /></td></tr> 203 <tr class="separator:abacce4cbd6f70fcb6453904ef08b02e9"><td class="memSeparator" colspan="2">&#160;</td></tr> 204 <tr class="memitem:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">sstrsubs</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, size_t start)</td></tr> 205 <tr class="memdesc:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a substring starting at the specified location. <a href="#a5eb9e0e1f26cf7fbecc038cd90e8b258">More...</a><br /></td></tr> 206 <tr class="separator:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="memSeparator" colspan="2">&#160;</td></tr> 207 <tr class="memitem:a78925c91af54f23cebd20ff99ef4331a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a">sstrsubsl</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, size_t start, size_t length)</td></tr> 208 <tr class="memdesc:a78925c91af54f23cebd20ff99ef4331a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a substring with the given length starting at the specified location. <a href="#a78925c91af54f23cebd20ff99ef4331a">More...</a><br /></td></tr> 209 <tr class="separator:a78925c91af54f23cebd20ff99ef4331a"><td class="memSeparator" colspan="2">&#160;</td></tr> 210 <tr class="memitem:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060">scstrsubs</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, size_t start)</td></tr> 211 <tr class="memdesc:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a substring of an immutable string starting at the specified location. <a href="#a9a6c8d8db0dda0037c3c852cce1a5060">More...</a><br /></td></tr> 212 <tr class="separator:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="memSeparator" colspan="2">&#160;</td></tr> 213 <tr class="memitem:ad50f0f67b906fad0744f46bcb51e144b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b">scstrsubsl</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, size_t start, size_t length)</td></tr> 214 <tr class="memdesc:ad50f0f67b906fad0744f46bcb51e144b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a substring of an immutable string with a maximum length starting at the specified location. <a href="#ad50f0f67b906fad0744f46bcb51e144b">More...</a><br /></td></tr> 215 <tr class="separator:ad50f0f67b906fad0744f46bcb51e144b"><td class="memSeparator" colspan="2">&#160;</td></tr> 216 <tr class="memitem:af80898a0b75955eb2579298c3ae2c481"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">sstrchr</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, int chr)</td></tr> 217 <tr class="memdesc:af80898a0b75955eb2579298c3ae2c481"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a substring starting at the location of the first occurrence of the specified character. <a href="#af80898a0b75955eb2579298c3ae2c481">More...</a><br /></td></tr> 218 <tr class="separator:af80898a0b75955eb2579298c3ae2c481"><td class="memSeparator" colspan="2">&#160;</td></tr> 219 <tr class="memitem:adae3f59957ca328e1da5285cb8b02a72"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">sstrrchr</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, int chr)</td></tr> 220 <tr class="memdesc:adae3f59957ca328e1da5285cb8b02a72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a substring starting at the location of the last occurrence of the specified character. <a href="#adae3f59957ca328e1da5285cb8b02a72">More...</a><br /></td></tr> 221 <tr class="separator:adae3f59957ca328e1da5285cb8b02a72"><td class="memSeparator" colspan="2">&#160;</td></tr> 222 <tr class="memitem:a5836d6a7a744791c35e5c17bdc394a87"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87">scstrchr</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, int chr)</td></tr> 223 <tr class="memdesc:a5836d6a7a744791c35e5c17bdc394a87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an immutable substring starting at the location of the first occurrence of the specified character. <a href="#a5836d6a7a744791c35e5c17bdc394a87">More...</a><br /></td></tr> 224 <tr class="separator:a5836d6a7a744791c35e5c17bdc394a87"><td class="memSeparator" colspan="2">&#160;</td></tr> 225 <tr class="memitem:ae389835b97cd9382e7d6a6a075323376"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae389835b97cd9382e7d6a6a075323376">scstrrchr</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, int chr)</td></tr> 226 <tr class="memdesc:ae389835b97cd9382e7d6a6a075323376"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an immutable substring starting at the location of the last occurrence of the specified character. <a href="#ae389835b97cd9382e7d6a6a075323376">More...</a><br /></td></tr> 227 <tr class="separator:ae389835b97cd9382e7d6a6a075323376"><td class="memSeparator" colspan="2">&#160;</td></tr> 228 <tr class="memitem:aa4362cb36c6629f9d8484739fd827748"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> match)</td></tr> 229 <tr class="memdesc:aa4362cb36c6629f9d8484739fd827748"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a substring starting at the location of the first occurrence of the specified string. <a href="#aa4362cb36c6629f9d8484739fd827748">More...</a><br /></td></tr> 230 <tr class="separator:aa4362cb36c6629f9d8484739fd827748"><td class="memSeparator" colspan="2">&#160;</td></tr> 231 <tr class="memitem:a54f256c3abe811c52d58b4ff1b23f051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> match)</td></tr> 232 <tr class="memdesc:a54f256c3abe811c52d58b4ff1b23f051"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. <a href="#a54f256c3abe811c52d58b4ff1b23f051">More...</a><br /></td></tr> 233 <tr class="separator:a54f256c3abe811c52d58b4ff1b23f051"><td class="memSeparator" colspan="2">&#160;</td></tr> 234 <tr class="memitem:ae71cac352b00230848bde358f0fb05ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> delim, ssize_t *count)</td></tr> 235 <tr class="memdesc:ae71cac352b00230848bde358f0fb05ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Splits a string into parts by using a delimiter string. <a href="#ae71cac352b00230848bde358f0fb05ea">More...</a><br /></td></tr> 236 <tr class="separator:ae71cac352b00230848bde358f0fb05ea"><td class="memSeparator" colspan="2">&#160;</td></tr> 237 <tr class="memitem:a52906455ae530c9cdc6812c8e6d9bdef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> delim, ssize_t *count)</td></tr> 238 <tr class="memdesc:a52906455ae530c9cdc6812c8e6d9bdef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performing <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea" title="Splits a string into parts by using a delimiter string. ">scstrsplit()</a> using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a52906455ae530c9cdc6812c8e6d9bdef">More...</a><br /></td></tr> 239 <tr class="separator:a52906455ae530c9cdc6812c8e6d9bdef"><td class="memSeparator" colspan="2">&#160;</td></tr> 240 <tr class="memitem:af35272a8e5408c88ed3e25a3a98f0a82"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a> (<a class="el" href="structscstr__t.html">scstr_t</a> s1, <a class="el" href="structscstr__t.html">scstr_t</a> s2)</td></tr> 241 <tr class="memdesc:af35272a8e5408c88ed3e25a3a98f0a82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares two UCX strings with standard <code>memcmp()</code>. <a href="#af35272a8e5408c88ed3e25a3a98f0a82">More...</a><br /></td></tr> 242 <tr class="separator:af35272a8e5408c88ed3e25a3a98f0a82"><td class="memSeparator" colspan="2">&#160;</td></tr> 243 <tr class="memitem:aca8142fb823d253054e17c17cfca05e0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a> (<a class="el" href="structscstr__t.html">scstr_t</a> s1, <a class="el" href="structscstr__t.html">scstr_t</a> s2)</td></tr> 244 <tr class="memdesc:aca8142fb823d253054e17c17cfca05e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares two UCX strings ignoring the case. <a href="#aca8142fb823d253054e17c17cfca05e0">More...</a><br /></td></tr> 245 <tr class="separator:aca8142fb823d253054e17c17cfca05e0"><td class="memSeparator" colspan="2">&#160;</td></tr> 246 <tr class="memitem:a97dccce03af419596dbdd592ca46a164"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> 247 <tr class="memdesc:a97dccce03af419596dbdd592ca46a164"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a duplicate of the specified string. <a href="#a97dccce03af419596dbdd592ca46a164">More...</a><br /></td></tr> 248 <tr class="separator:a97dccce03af419596dbdd592ca46a164"><td class="memSeparator" colspan="2">&#160;</td></tr> 249 <tr class="memitem:a8fe58921f51eb1fde038472377e63014"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> 250 <tr class="memdesc:a8fe58921f51eb1fde038472377e63014"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a duplicate of the specified string using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. <a href="#a8fe58921f51eb1fde038472377e63014">More...</a><br /></td></tr> 251 <tr class="separator:a8fe58921f51eb1fde038472377e63014"><td class="memSeparator" colspan="2">&#160;</td></tr> 252 <tr class="memitem:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">sstrtrim</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string)</td></tr> 253 <tr class="memdesc:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Omits leading and trailing spaces. <a href="#ae2d6da564d3fce51f2e0cac580fdbc56">More...</a><br /></td></tr> 254 <tr class="separator:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="memSeparator" colspan="2">&#160;</td></tr> 255 <tr class="memitem:ad374b16eb1be8b48019debad9b9f268c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ad374b16eb1be8b48019debad9b9f268c">scstrtrim</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> 256 <tr class="memdesc:ad374b16eb1be8b48019debad9b9f268c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Omits leading and trailing spaces. <a href="#ad374b16eb1be8b48019debad9b9f268c">More...</a><br /></td></tr> 257 <tr class="separator:ad374b16eb1be8b48019debad9b9f268c"><td class="memSeparator" colspan="2">&#160;</td></tr> 258 <tr class="memitem:a599ddc2f88dd1df68b72eefd91347393"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> prefix)</td></tr> 259 <tr class="memdesc:a599ddc2f88dd1df68b72eefd91347393"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a string has a specific prefix. <a href="#a599ddc2f88dd1df68b72eefd91347393">More...</a><br /></td></tr> 260 <tr class="separator:a599ddc2f88dd1df68b72eefd91347393"><td class="memSeparator" colspan="2">&#160;</td></tr> 261 <tr class="memitem:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> suffix)</td></tr> 262 <tr class="memdesc:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a string has a specific suffix. <a href="#a1f0ae316a2afe85d5b4655e6ece6721a">More...</a><br /></td></tr> 263 <tr class="separator:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="memSeparator" colspan="2">&#160;</td></tr> 264 <tr class="memitem:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> prefix)</td></tr> 265 <tr class="memdesc:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a string has a specific prefix, ignoring the case. <a href="#a3718ef4aa1e86cdb26bda2f07fb585df">More...</a><br /></td></tr> 266 <tr class="separator:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="memSeparator" colspan="2">&#160;</td></tr> 267 <tr class="memitem:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string, <a class="el" href="structscstr__t.html">scstr_t</a> suffix)</td></tr> 268 <tr class="memdesc:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks, if a string has a specific suffix, ignoring the case. <a href="#a6edb4b85f2b9efe79db7ffe6eccd7bc3">More...</a><br /></td></tr> 269 <tr class="separator:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="memSeparator" colspan="2">&#160;</td></tr> 270 <tr class="memitem:abccf198bea3186ff2abb080cc88dcae6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> 271 <tr class="memdesc:abccf198bea3186ff2abb080cc88dcae6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a lower case version of a string. <a href="#abccf198bea3186ff2abb080cc88dcae6">More...</a><br /></td></tr> 272 <tr class="separator:abccf198bea3186ff2abb080cc88dcae6"><td class="memSeparator" colspan="2">&#160;</td></tr> 273 <tr class="memitem:a3cf1e557df7ab58d03c78832c4060276"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> 274 <tr class="memdesc:a3cf1e557df7ab58d03c78832c4060276"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a lower case version of a string. <a href="#a3cf1e557df7ab58d03c78832c4060276">More...</a><br /></td></tr> 275 <tr class="separator:a3cf1e557df7ab58d03c78832c4060276"><td class="memSeparator" colspan="2">&#160;</td></tr> 276 <tr class="memitem:af3dd09ec9d11162fe0075f4e60f41240"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> 277 <tr class="memdesc:af3dd09ec9d11162fe0075f4e60f41240"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a upper case version of a string. <a href="#af3dd09ec9d11162fe0075f4e60f41240">More...</a><br /></td></tr> 278 <tr class="separator:af3dd09ec9d11162fe0075f4e60f41240"><td class="memSeparator" colspan="2">&#160;</td></tr> 279 <tr class="memitem:aea94613eb74668cc05d365803d32bfad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a> (<a class="el" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> 280 <tr class="memdesc:aea94613eb74668cc05d365803d32bfad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a upper case version of a string. <a href="#aea94613eb74668cc05d365803d32bfad">More...</a><br /></td></tr> 281 <tr class="separator:aea94613eb74668cc05d365803d32bfad"><td class="memSeparator" colspan="2">&#160;</td></tr> 282 </table> 283 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> 284 <div class="textblock"><p>Bounded string implementation. </p> 285 <p>The UCX strings (<code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>) provide an alternative to C strings. The main difference to C strings is, that <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code> does <b>not need to be <code>NULL</code>-terminated</b>. Instead the length is stored within the structure.</p> 286 <p>When using <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>, developers must be full aware of what type of string (<code>NULL</code>-terminated) or not) they are using, when accessing the <code>char* ptr</code> directly.</p> 287 <p>The UCX string module provides some common string functions, known from standard libc, working with <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>.</p> 288 <dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> 289 <dd> 290 Olaf Wintermann </dd></dl> 291 </div><h2 class="groupheader">Macro Definition Documentation</h2> 292 <a id="a7d5bc48708405a28b23667e32dfcecae"></a> 293 <h2 class="memtitle"><span class="permalink"><a href="#a7d5bc48708405a28b23667e32dfcecae">&#9670;&nbsp;</a></span>PRIsstr</h2> 294 295 <div class="memitem"> 296 <div class="memproto"> 297 <table class="memname"> 298 <tr> 299 <td class="memname">#define PRIsstr&#160;&#160;&#160;&quot;.*s&quot;</td> 300 </tr> 301 </table> 302 </div><div class="memdoc"> 303 304 <p>Format specifier for a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> or <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. </p> 305 306 </div> 307 </div> 308 <a id="a8fa17c8cf4c36df48f4108c36da8573e"></a> 309 <h2 class="memtitle"><span class="permalink"><a href="#a8fa17c8cf4c36df48f4108c36da8573e">&#9670;&nbsp;</a></span>S</h2> 310 311 <div class="memitem"> 312 <div class="memproto"> 313 <table class="memname"> 314 <tr> 315 <td class="memname">#define S</td> 316 <td>(</td> 317 <td class="paramtype">&#160;</td> 318 <td class="paramname">s</td><td>)</td> 319 <td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>(s, sizeof(s)-1)</td> 320 </tr> 321 </table> 322 </div><div class="memdoc"> 323 324 <p>Shortcut for the conversion of a C string to a <code><a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a></code>. </p> 325 326 </div> 327 </div> 328 <a id="a7d261dd0bc358c957a368bc058c1ce53"></a> 329 <h2 class="memtitle"><span class="permalink"><a href="#a7d261dd0bc358c957a368bc058c1ce53">&#9670;&nbsp;</a></span>SC</h2> 330 331 <div class="memitem"> 332 <div class="memproto"> 333 <table class="memname"> 334 <tr> 335 <td class="memname">#define SC</td> 336 <td>(</td> 337 <td class="paramtype">&#160;</td> 338 <td class="paramname">s</td><td>)</td> 339 <td>&#160;&#160;&#160;<a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a>(s, sizeof(s)-1)</td> 340 </tr> 341 </table> 342 </div><div class="memdoc"> 343 344 <p>Shortcut for the conversion of a C string to a <code><a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a></code>. </p> 345 346 </div> 347 </div> 348 <a id="ad4293350a9b39a23a6546bd0fef2aeed"></a> 349 <h2 class="memtitle"><span class="permalink"><a href="#ad4293350a9b39a23a6546bd0fef2aeed">&#9670;&nbsp;</a></span>SCSTR</h2> 350 351 <div class="memitem"> 352 <div class="memproto"> 353 <table class="memname"> 354 <tr> 355 <td class="memname">#define SCSTR</td> 356 <td>(</td> 357 <td class="paramtype">&#160;</td> 358 <td class="paramname">str</td><td>)</td> 359 <td>&#160;&#160;&#160;<a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a>(str)</td> 360 </tr> 361 </table> 362 </div><div class="memdoc"> 363 364 <p>Converts a UCX string to an immutable UCX string (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>). </p> 365 <dl class="params"><dt>Parameters</dt><dd> 366 <table class="params"> 367 <tr><td class="paramname">str</td><td>some UCX string </td></tr> 368 </table> 369 </dd> 370 </dl> 371 <dl class="section return"><dt>Returns</dt><dd>the an immutable version of the provided string </dd></dl> 372 373 </div> 374 </div> 375 <a id="a23ed51e87385886bb65e8cd19c839362"></a> 376 <h2 class="memtitle"><span class="permalink"><a href="#a23ed51e87385886bb65e8cd19c839362">&#9670;&nbsp;</a></span>SFMT</h2> 377 378 <div class="memitem"> 379 <div class="memproto"> 380 <table class="memname"> 381 <tr> 382 <td class="memname">#define SFMT</td> 383 <td>(</td> 384 <td class="paramtype">&#160;</td> 385 <td class="paramname">s</td><td>)</td> 386 <td>&#160;&#160;&#160;(int) (s).length, (s).ptr</td> 387 </tr> 388 </table> 389 </div><div class="memdoc"> 390 391 <p>Expands a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> or <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> to printf arguments. </p> 392 393 </div> 394 </div> 395 <a id="a81b0f6df794152c2038703d4e9d0ad59"></a> 396 <h2 class="memtitle"><span class="permalink"><a href="#a81b0f6df794152c2038703d4e9d0ad59">&#9670;&nbsp;</a></span>sstrcasecmp</h2> 397 398 <div class="memitem"> 399 <div class="memproto"> 400 <table class="memname"> 401 <tr> 402 <td class="memname">#define sstrcasecmp</td> 403 <td>(</td> 404 <td class="paramtype">&#160;</td> 405 <td class="paramname">s1, </td> 406 </tr> 407 <tr> 408 <td class="paramkey"></td> 409 <td></td> 410 <td class="paramtype">&#160;</td> 411 <td class="paramname">s2&#160;</td> 412 </tr> 413 <tr> 414 <td></td> 415 <td>)</td> 416 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s2))</td> 417 </tr> 418 </table> 419 </div><div class="memdoc"> 420 421 <p>Compares two UCX strings ignoring the case. </p> 422 <p>At first it compares the <a class="el" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229" title="The length of the string. ">sstr_t.length</a> attribute of the two strings. If and only if the lengths match, both strings are compared char by char ignoring the case.</p> 423 <dl class="params"><dt>Parameters</dt><dd> 424 <table class="params"> 425 <tr><td class="paramname">s1</td><td>the first string </td></tr> 426 <tr><td class="paramname">s2</td><td>the second string </td></tr> 427 </table> 428 </dd> 429 </dl> 430 <dl class="section return"><dt>Returns</dt><dd>-1, if the length of s1 is less than the length of s2 or 1, if the length of s1 is greater than the length of s2 or the result of the platform specific string comparison function ignoring the case. </dd></dl> 431 432 </div> 433 </div> 434 <a id="acd3dc64e90db9b4046e14f115a815ff4"></a> 435 <h2 class="memtitle"><span class="permalink"><a href="#acd3dc64e90db9b4046e14f115a815ff4">&#9670;&nbsp;</a></span>sstrcaseprefix</h2> 436 437 <div class="memitem"> 438 <div class="memproto"> 439 <table class="memname"> 440 <tr> 441 <td class="memname">#define sstrcaseprefix</td> 442 <td>(</td> 443 <td class="paramtype">&#160;</td> 444 <td class="paramname">string, </td> 445 </tr> 446 <tr> 447 <td class="paramkey"></td> 448 <td></td> 449 <td class="paramtype">&#160;</td> 450 <td class="paramname">prefix&#160;</td> 451 </tr> 452 <tr> 453 <td></td> 454 <td>)</td> 455 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(prefix))</td> 456 </tr> 457 </table> 458 </div><div class="memdoc"> 459 460 <p>Checks, if a string has a specific prefix, ignoring the case. </p> 461 <dl class="params"><dt>Parameters</dt><dd> 462 <table class="params"> 463 <tr><td class="paramname">string</td><td>the string to check </td></tr> 464 <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> 465 </table> 466 </dd> 467 </dl> 468 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> 469 470 </div> 471 </div> 472 <a id="a57eabd4862d531dd685bbf2feb8468bf"></a> 473 <h2 class="memtitle"><span class="permalink"><a href="#a57eabd4862d531dd685bbf2feb8468bf">&#9670;&nbsp;</a></span>sstrcasesuffix</h2> 474 475 <div class="memitem"> 476 <div class="memproto"> 477 <table class="memname"> 478 <tr> 479 <td class="memname">#define sstrcasesuffix</td> 480 <td>(</td> 481 <td class="paramtype">&#160;</td> 482 <td class="paramname">string, </td> 483 </tr> 484 <tr> 485 <td class="paramkey"></td> 486 <td></td> 487 <td class="paramtype">&#160;</td> 488 <td class="paramname">suffix&#160;</td> 489 </tr> 490 <tr> 491 <td></td> 492 <td>)</td> 493 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(suffix))</td> 494 </tr> 495 </table> 496 </div><div class="memdoc"> 497 498 <p>Checks, if a string has a specific suffix, ignoring the case. </p> 499 <dl class="params"><dt>Parameters</dt><dd> 500 <table class="params"> 501 <tr><td class="paramname">string</td><td>the string to check </td></tr> 502 <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> 503 </table> 504 </dd> 505 </dl> 506 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> 507 508 </div> 509 </div> 510 <a id="a6af8a4c347c7fdb5980d4c4803be2759"></a> 511 <h2 class="memtitle"><span class="permalink"><a href="#a6af8a4c347c7fdb5980d4c4803be2759">&#9670;&nbsp;</a></span>sstrcat</h2> 512 513 <div class="memitem"> 514 <div class="memproto"> 515 <table class="memname"> 516 <tr> 517 <td class="memname">#define sstrcat</td> 518 <td>(</td> 519 <td class="paramtype">&#160;</td> 520 <td class="paramname">count, </td> 521 </tr> 522 <tr> 523 <td class="paramkey"></td> 524 <td></td> 525 <td class="paramtype">&#160;</td> 526 <td class="paramname">s1, </td> 527 </tr> 528 <tr> 529 <td class="paramkey"></td> 530 <td></td> 531 <td class="paramtype">&#160;</td> 532 <td class="paramname"><em>...</em>&#160;</td> 533 </tr> 534 <tr> 535 <td></td> 536 <td>)</td> 537 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a>(count, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), __VA_ARGS__)</td> 538 </tr> 539 </table> 540 </div><div class="memdoc"> 541 542 <p>Concatenates two or more strings. </p> 543 <p>The resulting string will be allocated by standard <code>malloc()</code>. So developers <b>MUST</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> to <code>free()</code>.</p> 544 <p>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> 545 <dl class="params"><dt>Parameters</dt><dd> 546 <table class="params"> 547 <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> 548 <tr><td class="paramname">s1</td><td>first string </td></tr> 549 <tr><td class="paramname">...</td><td>all remaining strings </td></tr> 550 </table> 551 </dd> 552 </dl> 553 <dl class="section return"><dt>Returns</dt><dd>the concatenated string </dd></dl> 554 555 </div> 556 </div> 557 <a id="a6068d460f9bc05962666a917d26568b3"></a> 558 <h2 class="memtitle"><span class="permalink"><a href="#a6068d460f9bc05962666a917d26568b3">&#9670;&nbsp;</a></span>sstrcat_a</h2> 559 560 <div class="memitem"> 561 <div class="memproto"> 562 <table class="memname"> 563 <tr> 564 <td class="memname">#define sstrcat_a</td> 565 <td>(</td> 566 <td class="paramtype">&#160;</td> 567 <td class="paramname">alloc, </td> 568 </tr> 569 <tr> 570 <td class="paramkey"></td> 571 <td></td> 572 <td class="paramtype">&#160;</td> 573 <td class="paramname">count, </td> 574 </tr> 575 <tr> 576 <td class="paramkey"></td> 577 <td></td> 578 <td class="paramtype">&#160;</td> 579 <td class="paramname">s1, </td> 580 </tr> 581 <tr> 582 <td class="paramkey"></td> 583 <td></td> 584 <td class="paramtype">&#160;</td> 585 <td class="paramname"><em>...</em>&#160;</td> 586 </tr> 587 <tr> 588 <td></td> 589 <td>)</td> 590 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a>(alloc, count, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), __VA_ARGS__)</td> 591 </tr> 592 </table> 593 </div><div class="memdoc"> 594 595 <p>Concatenates two or more strings using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> 596 <p>The resulting string must be freed by the allocators <code>free()</code> implementation.</p> 597 <p>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> 598 <dl class="params"><dt>Parameters</dt><dd> 599 <table class="params"> 600 <tr><td class="paramname">alloc</td><td>the allocator to use </td></tr> 601 <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> 602 <tr><td class="paramname">s1</td><td>first string </td></tr> 603 <tr><td class="paramname">...</td><td>all remaining strings </td></tr> 604 </table> 605 </dd> 606 </dl> 607 <dl class="section return"><dt>Returns</dt><dd>the concatenated string</dd></dl> 608 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759" title="Concatenates two or more strings. ">sstrcat()</a> </dd></dl> 609 610 </div> 611 </div> 612 <a id="a7ae7156c8de57454ca38d306100b8160"></a> 613 <h2 class="memtitle"><span class="permalink"><a href="#a7ae7156c8de57454ca38d306100b8160">&#9670;&nbsp;</a></span>sstrcmp</h2> 614 615 <div class="memitem"> 616 <div class="memproto"> 617 <table class="memname"> 618 <tr> 619 <td class="memname">#define sstrcmp</td> 620 <td>(</td> 621 <td class="paramtype">&#160;</td> 622 <td class="paramname">s1, </td> 623 </tr> 624 <tr> 625 <td class="paramkey"></td> 626 <td></td> 627 <td class="paramtype">&#160;</td> 628 <td class="paramname">s2&#160;</td> 629 </tr> 630 <tr> 631 <td></td> 632 <td>)</td> 633 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s1), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(s2))</td> 634 </tr> 635 </table> 636 </div><div class="memdoc"> 637 638 <p>Compares two UCX strings with standard <code>memcmp()</code>. </p> 639 <p>At first it compares the <a class="el" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229" title="The length of the string. ">sstr_t.length</a> attribute of the two strings. The <code>memcmp()</code> function is called, if and only if the lengths match.</p> 640 <dl class="params"><dt>Parameters</dt><dd> 641 <table class="params"> 642 <tr><td class="paramname">s1</td><td>the first string </td></tr> 643 <tr><td class="paramname">s2</td><td>the second string </td></tr> 644 </table> 645 </dd> 646 </dl> 647 <dl class="section return"><dt>Returns</dt><dd>-1, if the length of s1 is less than the length of s2 or 1, if the length of s1 is greater than the length of s2 or the result of <code>memcmp()</code> otherwise (i.e. 0 if the strings match) </dd></dl> 648 649 </div> 650 </div> 651 <a id="accbfd2b459a028d7af9fb7df6f977d80"></a> 652 <h2 class="memtitle"><span class="permalink"><a href="#accbfd2b459a028d7af9fb7df6f977d80">&#9670;&nbsp;</a></span>sstrdup</h2> 653 654 <div class="memitem"> 655 <div class="memproto"> 656 <table class="memname"> 657 <tr> 658 <td class="memname">#define sstrdup</td> 659 <td>(</td> 660 <td class="paramtype">&#160;</td> 661 <td class="paramname">string</td><td>)</td> 662 <td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> 663 </tr> 664 </table> 665 </div><div class="memdoc"> 666 667 <p>Creates a duplicate of the specified string. </p> 668 <p>The new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will contain a copy allocated by standard <code>malloc()</code>. So developers <b>MUST</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> to <code>free()</code>.</p> 669 <p>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, regardless of the argument.</p> 670 <dl class="params"><dt>Parameters</dt><dd> 671 <table class="params"> 672 <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> 673 </table> 674 </dd> 675 </dl> 676 <dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> 677 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007" title="Creates a duplicate of the specified string using a UcxAllocator. ">sstrdup_a()</a> </dd></dl> 678 679 </div> 680 </div> 681 <a id="a8d098baada4ea9ad5d8b6343b5aec007"></a> 682 <h2 class="memtitle"><span class="permalink"><a href="#a8d098baada4ea9ad5d8b6343b5aec007">&#9670;&nbsp;</a></span>sstrdup_a</h2> 683 684 <div class="memitem"> 685 <div class="memproto"> 686 <table class="memname"> 687 <tr> 688 <td class="memname">#define sstrdup_a</td> 689 <td>(</td> 690 <td class="paramtype">&#160;</td> 691 <td class="paramname">allocator, </td> 692 </tr> 693 <tr> 694 <td class="paramkey"></td> 695 <td></td> 696 <td class="paramtype">&#160;</td> 697 <td class="paramname">string&#160;</td> 698 </tr> 699 <tr> 700 <td></td> 701 <td>)</td> 702 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> 703 </tr> 704 </table> 705 </div><div class="memdoc"> 706 707 <p>Creates a duplicate of the specified string using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> 708 <p>The new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will contain a copy allocated by the allocators <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">UcxAllocator.malloc()</a> function. So it is implementation depended, whether 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="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f" title="The free() function for this allocator. ">UcxAllocator.free()</a> function manually.</p> 709 <p>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, regardless of the argument.</p> 710 <dl class="params"><dt>Parameters</dt><dd> 711 <table class="params"> 712 <tr><td class="paramname">allocator</td><td>a valid instance of a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> </td></tr> 713 <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> 714 </table> 715 </dd> 716 </dl> 717 <dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> 718 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> </dd></dl> 719 720 </div> 721 </div> 722 <a id="a89343ea3e719f00ee802b557db57b769"></a> 723 <h2 class="memtitle"><span class="permalink"><a href="#a89343ea3e719f00ee802b557db57b769">&#9670;&nbsp;</a></span>sstrlower</h2> 724 725 <div class="memitem"> 726 <div class="memproto"> 727 <table class="memname"> 728 <tr> 729 <td class="memname">#define sstrlower</td> 730 <td>(</td> 731 <td class="paramtype">&#160;</td> 732 <td class="paramname">string</td><td>)</td> 733 <td>&#160;&#160;&#160;<a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> 734 </tr> 735 </table> 736 </div><div class="memdoc"> 737 738 <p>Returns a lower case version of a string. </p> 739 <p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a>).</p> 740 <dl class="params"><dt>Parameters</dt><dd> 741 <table class="params"> 742 <tr><td class="paramname">string</td><td>the input string </td></tr> 743 </table> 744 </dd> 745 </dl> 746 <dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> 747 748 </div> 749 </div> 750 <a id="a4bb4742fe71115f493991d307cb22b23"></a> 751 <h2 class="memtitle"><span class="permalink"><a href="#a4bb4742fe71115f493991d307cb22b23">&#9670;&nbsp;</a></span>sstrlower_a</h2> 752 753 <div class="memitem"> 754 <div class="memproto"> 755 <table class="memname"> 756 <tr> 757 <td class="memname">#define sstrlower_a</td> 758 <td>(</td> 759 <td class="paramtype">&#160;</td> 760 <td class="paramname">allocator, </td> 761 </tr> 762 <tr> 763 <td class="paramkey"></td> 764 <td></td> 765 <td class="paramtype">&#160;</td> 766 <td class="paramname">string&#160;</td> 767 </tr> 768 <tr> 769 <td></td> 770 <td>)</td> 771 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> 772 </tr> 773 </table> 774 </div><div class="memdoc"> 775 776 <p>Returns a lower case version of a string. </p> 777 <p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007" title="Creates a duplicate of the specified string using a UcxAllocator. ">sstrdup_a()</a>).</p> 778 <dl class="params"><dt>Parameters</dt><dd> 779 <table class="params"> 780 <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> 781 <tr><td class="paramname">string</td><td>the input string </td></tr> 782 </table> 783 </dd> 784 </dl> 785 <dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> 786 787 </div> 788 </div> 789 <a id="a33fa945acc5ac2ce962e5ef13cf1638c"></a> 790 <h2 class="memtitle"><span class="permalink"><a href="#a33fa945acc5ac2ce962e5ef13cf1638c">&#9670;&nbsp;</a></span>sstrnlen</h2> 791 792 <div class="memitem"> 793 <div class="memproto"> 794 <table class="memname"> 795 <tr> 796 <td class="memname">#define sstrnlen</td> 797 <td>(</td> 798 <td class="paramtype">&#160;</td> 799 <td class="paramname">count, </td> 800 </tr> 801 <tr> 802 <td class="paramkey"></td> 803 <td></td> 804 <td class="paramtype">&#160;</td> 805 <td class="paramname"><em>...</em>&#160;</td> 806 </tr> 807 <tr> 808 <td></td> 809 <td>)</td> 810 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a>(count, __VA_ARGS__)</td> 811 </tr> 812 </table> 813 </div><div class="memdoc"> 814 815 <p>Returns the accumulated length of all specified strings. </p> 816 <p><b>Attention:</b> if the count argument is larger than the count of the specified strings, the behavior is undefined.</p> 817 <dl class="params"><dt>Parameters</dt><dd> 818 <table class="params"> 819 <tr><td class="paramname">count</td><td>the total number of specified strings </td></tr> 820 <tr><td class="paramname">...</td><td>all strings </td></tr> 821 </table> 822 </dd> 823 </dl> 824 <dl class="section return"><dt>Returns</dt><dd>the cumulated length of all strings </dd></dl> 825 826 </div> 827 </div> 828 <a id="a7d73b66256384b26927e787318fdefa2"></a> 829 <h2 class="memtitle"><span class="permalink"><a href="#a7d73b66256384b26927e787318fdefa2">&#9670;&nbsp;</a></span>sstrprefix</h2> 830 831 <div class="memitem"> 832 <div class="memproto"> 833 <table class="memname"> 834 <tr> 835 <td class="memname">#define sstrprefix</td> 836 <td>(</td> 837 <td class="paramtype">&#160;</td> 838 <td class="paramname">string, </td> 839 </tr> 840 <tr> 841 <td class="paramkey"></td> 842 <td></td> 843 <td class="paramtype">&#160;</td> 844 <td class="paramname">prefix&#160;</td> 845 </tr> 846 <tr> 847 <td></td> 848 <td>)</td> 849 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(prefix))</td> 850 </tr> 851 </table> 852 </div><div class="memdoc"> 853 854 <p>Checks, if a string has a specific prefix. </p> 855 <dl class="params"><dt>Parameters</dt><dd> 856 <table class="params"> 857 <tr><td class="paramname">string</td><td>the string to check </td></tr> 858 <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> 859 </table> 860 </dd> 861 </dl> 862 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> 863 864 </div> 865 </div> 866 <a id="aa696932213265e10f864678686f4ccde"></a> 867 <h2 class="memtitle"><span class="permalink"><a href="#aa696932213265e10f864678686f4ccde">&#9670;&nbsp;</a></span>sstrscstr</h2> 868 869 <div class="memitem"> 870 <div class="memproto"> 871 <table class="memname"> 872 <tr> 873 <td class="memname">#define sstrscstr</td> 874 <td>(</td> 875 <td class="paramtype">&#160;</td> 876 <td class="paramname">string, </td> 877 </tr> 878 <tr> 879 <td class="paramkey"></td> 880 <td></td> 881 <td class="paramtype">&#160;</td> 882 <td class="paramname">match&#160;</td> 883 </tr> 884 <tr> 885 <td></td> 886 <td>)</td> 887 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td> 888 </tr> 889 </table> 890 </div><div class="memdoc"> 891 892 <p>Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. </p> 893 <p>If the string does not contain the other string, an empty string is returned.</p> 894 <p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> 895 <dl class="params"><dt>Parameters</dt><dd> 896 <table class="params"> 897 <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> 898 <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> 899 </table> 900 </dd> 901 </dl> 902 <dl class="section return"><dt>Returns</dt><dd>a substring starting at the first occurrence of <code>match</code>, or an empty string, if the sequence is not present in <code>string</code> </dd></dl> 903 904 </div> 905 </div> 906 <a id="aa929984004c3576bfafb95031aca8eb7"></a> 907 <h2 class="memtitle"><span class="permalink"><a href="#aa929984004c3576bfafb95031aca8eb7">&#9670;&nbsp;</a></span>sstrsplit</h2> 908 909 <div class="memitem"> 910 <div class="memproto"> 911 <table class="memname"> 912 <tr> 913 <td class="memname">#define sstrsplit</td> 914 <td>(</td> 915 <td class="paramtype">&#160;</td> 916 <td class="paramname">string, </td> 917 </tr> 918 <tr> 919 <td class="paramkey"></td> 920 <td></td> 921 <td class="paramtype">&#160;</td> 922 <td class="paramname">delim, </td> 923 </tr> 924 <tr> 925 <td class="paramkey"></td> 926 <td></td> 927 <td class="paramtype">&#160;</td> 928 <td class="paramname">count&#160;</td> 929 </tr> 930 <tr> 931 <td></td> 932 <td>)</td> 933 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(delim), count)</td> 934 </tr> 935 </table> 936 </div><div class="memdoc"> 937 938 <p>Splits a string into parts by using a delimiter string. </p> 939 <p>This function will return <code>NULL</code>, if one of the following happens: </p><ul> 940 <li> 941 the string length is zero </li> 942 <li> 943 the delimeter length is zero </li> 944 <li> 945 the string equals the delimeter </li> 946 <li> 947 memory allocation fails </li> 948 </ul> 949 <p>The integer referenced by <code>count</code> is used as input and determines the maximum size of the resulting array, i.e. the maximum count of splits to perform + 1.</p> 950 <p>The integer referenced by <code>count</code> is also used as output and is set to </p><ul> 951 <li> 952 -2, on memory allocation errors </li> 953 <li> 954 -1, if either the string or the delimiter is an empty string </li> 955 <li> 956 0, if the string equals the delimiter </li> 957 <li> 958 1, if the string does not contain the delimiter </li> 959 <li> 960 the count of array items, otherwise </li> 961 </ul> 962 <p>If the string starts with the delimiter, the first item of the resulting array will be an empty string.</p> 963 <p>If the string ends with the delimiter and the maximum list size is not exceeded, the last array item will be an empty string. In case the list size would be exceeded, the last array item will be the remaining string after the last split, <em>including</em> the terminating delimiter.</p> 964 <p><b>Attention:</b> The array pointer <b>AND</b> all <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the array items must be manually passed to <code>free()</code>. Use <a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601" title="Performing sstrsplit() using a UcxAllocator. ">sstrsplit_a()</a> with an allocator to managed memory, to avoid this.</p> 965 <dl class="params"><dt>Parameters</dt><dd> 966 <table class="params"> 967 <tr><td class="paramname">string</td><td>the string to split </td></tr> 968 <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> 969 <tr><td class="paramname">count</td><td>IN: the maximum size of the resulting array (0 = no limit), OUT: the actual size of the array </td></tr> 970 </table> 971 </dd> 972 </dl> 973 <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> 974 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601" title="Performing sstrsplit() using a UcxAllocator. ">sstrsplit_a()</a> </dd></dl> 975 976 </div> 977 </div> 978 <a id="ac9f69fa3a17e26a3a5f9d985b5844601"></a> 979 <h2 class="memtitle"><span class="permalink"><a href="#ac9f69fa3a17e26a3a5f9d985b5844601">&#9670;&nbsp;</a></span>sstrsplit_a</h2> 980 981 <div class="memitem"> 982 <div class="memproto"> 983 <table class="memname"> 984 <tr> 985 <td class="memname">#define sstrsplit_a</td> 986 <td>(</td> 987 <td class="paramtype">&#160;</td> 988 <td class="paramname">allocator, </td> 989 </tr> 990 <tr> 991 <td class="paramkey"></td> 992 <td></td> 993 <td class="paramtype">&#160;</td> 994 <td class="paramname">string, </td> 995 </tr> 996 <tr> 997 <td class="paramkey"></td> 998 <td></td> 999 <td class="paramtype">&#160;</td> 1000 <td class="paramname">delim, </td> 1001 </tr> 1002 <tr> 1003 <td class="paramkey"></td> 1004 <td></td> 1005 <td class="paramtype">&#160;</td> 1006 <td class="paramname">count&#160;</td> 1007 </tr> 1008 <tr> 1009 <td></td> 1010 <td>)</td> 1011 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a>(allocator, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(delim), count)</td> 1012 </tr> 1013 </table> 1014 </div><div class="memdoc"> 1015 1016 <p>Performing <a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7" title="Splits a string into parts by using a delimiter string. ">sstrsplit()</a> using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> 1017 <p><em>Read the description of <a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7" title="Splits a string into parts by using a delimiter string. ">sstrsplit()</a> for details.</em></p> 1018 <p>The memory for the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointers of the array items and the memory for the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array itself are allocated by using the <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">UcxAllocator.malloc()</a> function.</p> 1019 <dl class="params"><dt>Parameters</dt><dd> 1020 <table class="params"> 1021 <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 memory </td></tr> 1022 <tr><td class="paramname">string</td><td>the string to split </td></tr> 1023 <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> 1024 <tr><td class="paramname">count</td><td>IN: the maximum size of the resulting array (0 = no limit), OUT: the actual size of the array </td></tr> 1025 </table> 1026 </dd> 1027 </dl> 1028 <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> 1029 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7" title="Splits a string into parts by using a delimiter string. ">sstrsplit()</a> </dd></dl> 1030 1031 </div> 1032 </div> 1033 <a id="a9d03be026afa9447c52bb34b9e3b895a"></a> 1034 <h2 class="memtitle"><span class="permalink"><a href="#a9d03be026afa9447c52bb34b9e3b895a">&#9670;&nbsp;</a></span>sstrstr</h2> 1035 1036 <div class="memitem"> 1037 <div class="memproto"> 1038 <table class="memname"> 1039 <tr> 1040 <td class="memname">#define sstrstr</td> 1041 <td>(</td> 1042 <td class="paramtype">&#160;</td> 1043 <td class="paramname">string, </td> 1044 </tr> 1045 <tr> 1046 <td class="paramkey"></td> 1047 <td></td> 1048 <td class="paramtype">&#160;</td> 1049 <td class="paramname">match&#160;</td> 1050 </tr> 1051 <tr> 1052 <td></td> 1053 <td>)</td> 1054 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td> 1055 </tr> 1056 </table> 1057 </div><div class="memdoc"> 1058 1059 <p>Returns a substring starting at the location of the first occurrence of the specified string. </p> 1060 <p>If the string does not contain the other string, an empty string is returned.</p> 1061 <p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> 1062 <dl class="params"><dt>Parameters</dt><dd> 1063 <table class="params"> 1064 <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> 1065 <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> 1066 </table> 1067 </dd> 1068 </dl> 1069 <dl class="section return"><dt>Returns</dt><dd>a substring starting at the first occurrence of <code>match</code>, or an empty string, if the sequence is not present in <code>string</code> </dd></dl> 1070 1071 </div> 1072 </div> 1073 <a id="ac6a5246f26be2e8a5f34d8995b7ec14e"></a> 1074 <h2 class="memtitle"><span class="permalink"><a href="#ac6a5246f26be2e8a5f34d8995b7ec14e">&#9670;&nbsp;</a></span>sstrsuffix</h2> 1075 1076 <div class="memitem"> 1077 <div class="memproto"> 1078 <table class="memname"> 1079 <tr> 1080 <td class="memname">#define sstrsuffix</td> 1081 <td>(</td> 1082 <td class="paramtype">&#160;</td> 1083 <td class="paramname">string, </td> 1084 </tr> 1085 <tr> 1086 <td class="paramkey"></td> 1087 <td></td> 1088 <td class="paramtype">&#160;</td> 1089 <td class="paramname">suffix&#160;</td> 1090 </tr> 1091 <tr> 1092 <td></td> 1093 <td>)</td> 1094 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string), <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(suffix))</td> 1095 </tr> 1096 </table> 1097 </div><div class="memdoc"> 1098 1099 <p>Checks, if a string has a specific suffix. </p> 1100 <dl class="params"><dt>Parameters</dt><dd> 1101 <table class="params"> 1102 <tr><td class="paramname">string</td><td>the string to check </td></tr> 1103 <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> 1104 </table> 1105 </dd> 1106 </dl> 1107 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> 1108 1109 </div> 1110 </div> 1111 <a id="a084fe5a3a90d6fb6b15ecda03bb30824"></a> 1112 <h2 class="memtitle"><span class="permalink"><a href="#a084fe5a3a90d6fb6b15ecda03bb30824">&#9670;&nbsp;</a></span>sstrupper</h2> 1113 1114 <div class="memitem"> 1115 <div class="memproto"> 1116 <table class="memname"> 1117 <tr> 1118 <td class="memname">#define sstrupper</td> 1119 <td>(</td> 1120 <td class="paramtype">&#160;</td> 1121 <td class="paramname">string</td><td>)</td> 1122 <td>&#160;&#160;&#160;<a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> 1123 </tr> 1124 </table> 1125 </div><div class="memdoc"> 1126 1127 <p>Returns a upper case version of a string. </p> 1128 <p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a>).</p> 1129 <dl class="params"><dt>Parameters</dt><dd> 1130 <table class="params"> 1131 <tr><td class="paramname">string</td><td>the input string </td></tr> 1132 </table> 1133 </dd> 1134 </dl> 1135 <dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> 1136 1137 </div> 1138 </div> 1139 <a id="a5f0dd83c0176b812fb428004b2877a34"></a> 1140 <h2 class="memtitle"><span class="permalink"><a href="#a5f0dd83c0176b812fb428004b2877a34">&#9670;&nbsp;</a></span>sstrupper_a</h2> 1141 1142 <div class="memitem"> 1143 <div class="memproto"> 1144 <table class="memname"> 1145 <tr> 1146 <td class="memname">#define sstrupper_a</td> 1147 <td>(</td> 1148 <td class="paramtype">&#160;</td> 1149 <td class="paramname">allocator, </td> 1150 </tr> 1151 <tr> 1152 <td class="paramkey"></td> 1153 <td></td> 1154 <td class="paramtype">&#160;</td> 1155 <td class="paramname">string&#160;</td> 1156 </tr> 1157 <tr> 1158 <td></td> 1159 <td>)</td> 1160 <td></td><td>&#160;&#160;&#160;<a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a>(allocator, string)</td> 1161 </tr> 1162 </table> 1163 </div><div class="memdoc"> 1164 1165 <p>Returns a upper case version of a string. </p> 1166 <p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007" title="Creates a duplicate of the specified string using a UcxAllocator. ">sstrdup_a()</a>).</p> 1167 <dl class="params"><dt>Parameters</dt><dd> 1168 <table class="params"> 1169 <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> 1170 <tr><td class="paramname">string</td><td>the input string </td></tr> 1171 </table> 1172 </dd> 1173 </dl> 1174 <dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> 1175 1176 </div> 1177 </div> 1178 <h2 class="groupheader">Function Documentation</h2> 1179 <a id="a2b1d6f1eca1c1549f37107b9c026c5a6"></a> 1180 <h2 class="memtitle"><span class="permalink"><a href="#a2b1d6f1eca1c1549f37107b9c026c5a6">&#9670;&nbsp;</a></span>scstr()</h2> 1181 1182 <div class="memitem"> 1183 <div class="memproto"> 1184 <table class="memname"> 1185 <tr> 1186 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstr </td> 1187 <td>(</td> 1188 <td class="paramtype">const char *&#160;</td> 1189 <td class="paramname"><em>cstring</em></td><td>)</td> 1190 <td></td> 1191 </tr> 1192 </table> 1193 </div><div class="memdoc"> 1194 1195 <p>Creates a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> based on a constant C string. </p> 1196 <p>The length is implicitly inferred by using a call to <code>strlen()</code>.</p> 1197 <p><b>Note:</b> the <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> will share the specified pointer to the C string. If you do want a copy, use <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> on the return value of this function.</p> 1198 <dl class="params"><dt>Parameters</dt><dd> 1199 <table class="params"> 1200 <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> 1201 </table> 1202 </dd> 1203 </dl> 1204 <dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> containing the C string</dd></dl> 1205 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d" title="Creates a new scstr_t of the specified length based on a constant C string. ">scstrn()</a> </dd></dl> 1206 1207 </div> 1208 </div> 1209 <a id="aca8142fb823d253054e17c17cfca05e0"></a> 1210 <h2 class="memtitle"><span class="permalink"><a href="#aca8142fb823d253054e17c17cfca05e0">&#9670;&nbsp;</a></span>scstrcasecmp()</h2> 1211 1212 <div class="memitem"> 1213 <div class="memproto"> 1214 <table class="memname"> 1215 <tr> 1216 <td class="memname">int scstrcasecmp </td> 1217 <td>(</td> 1218 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1219 <td class="paramname"><em>s1</em>, </td> 1220 </tr> 1221 <tr> 1222 <td class="paramkey"></td> 1223 <td></td> 1224 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1225 <td class="paramname"><em>s2</em>&#160;</td> 1226 </tr> 1227 <tr> 1228 <td></td> 1229 <td>)</td> 1230 <td></td><td></td> 1231 </tr> 1232 </table> 1233 </div><div class="memdoc"> 1234 1235 <p>Compares two UCX strings ignoring the case. </p> 1236 <p>At first it compares the <a class="el" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172" title="The length of the string. ">scstr_t.length</a> attribute of the two strings. If and only if the lengths match, both strings are compared char by char ignoring the case.</p> 1237 <dl class="params"><dt>Parameters</dt><dd> 1238 <table class="params"> 1239 <tr><td class="paramname">s1</td><td>the first string </td></tr> 1240 <tr><td class="paramname">s2</td><td>the second string </td></tr> 1241 </table> 1242 </dd> 1243 </dl> 1244 <dl class="section return"><dt>Returns</dt><dd>-1, if the length of s1 is less than the length of s2 or 1, if the length of s1 is greater than the length of s2 or the result of the platform specific string comparison function ignoring the case. </dd></dl> 1245 1246 </div> 1247 </div> 1248 <a id="a3718ef4aa1e86cdb26bda2f07fb585df"></a> 1249 <h2 class="memtitle"><span class="permalink"><a href="#a3718ef4aa1e86cdb26bda2f07fb585df">&#9670;&nbsp;</a></span>scstrcaseprefix()</h2> 1250 1251 <div class="memitem"> 1252 <div class="memproto"> 1253 <table class="memname"> 1254 <tr> 1255 <td class="memname">int scstrcaseprefix </td> 1256 <td>(</td> 1257 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1258 <td class="paramname"><em>string</em>, </td> 1259 </tr> 1260 <tr> 1261 <td class="paramkey"></td> 1262 <td></td> 1263 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1264 <td class="paramname"><em>prefix</em>&#160;</td> 1265 </tr> 1266 <tr> 1267 <td></td> 1268 <td>)</td> 1269 <td></td><td></td> 1270 </tr> 1271 </table> 1272 </div><div class="memdoc"> 1273 1274 <p>Checks, if a string has a specific prefix, ignoring the case. </p> 1275 <dl class="params"><dt>Parameters</dt><dd> 1276 <table class="params"> 1277 <tr><td class="paramname">string</td><td>the string to check </td></tr> 1278 <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> 1279 </table> 1280 </dd> 1281 </dl> 1282 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> 1283 1284 </div> 1285 </div> 1286 <a id="a6edb4b85f2b9efe79db7ffe6eccd7bc3"></a> 1287 <h2 class="memtitle"><span class="permalink"><a href="#a6edb4b85f2b9efe79db7ffe6eccd7bc3">&#9670;&nbsp;</a></span>scstrcasesuffix()</h2> 1288 1289 <div class="memitem"> 1290 <div class="memproto"> 1291 <table class="memname"> 1292 <tr> 1293 <td class="memname">int scstrcasesuffix </td> 1294 <td>(</td> 1295 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1296 <td class="paramname"><em>string</em>, </td> 1297 </tr> 1298 <tr> 1299 <td class="paramkey"></td> 1300 <td></td> 1301 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1302 <td class="paramname"><em>suffix</em>&#160;</td> 1303 </tr> 1304 <tr> 1305 <td></td> 1306 <td>)</td> 1307 <td></td><td></td> 1308 </tr> 1309 </table> 1310 </div><div class="memdoc"> 1311 1312 <p>Checks, if a string has a specific suffix, ignoring the case. </p> 1313 <dl class="params"><dt>Parameters</dt><dd> 1314 <table class="params"> 1315 <tr><td class="paramname">string</td><td>the string to check </td></tr> 1316 <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> 1317 </table> 1318 </dd> 1319 </dl> 1320 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> 1321 1322 </div> 1323 </div> 1324 <a id="a7376842c19e954b49215da81ef76ac0c"></a> 1325 <h2 class="memtitle"><span class="permalink"><a href="#a7376842c19e954b49215da81ef76ac0c">&#9670;&nbsp;</a></span>scstrcat()</h2> 1326 1327 <div class="memitem"> 1328 <div class="memproto"> 1329 <table class="memname"> 1330 <tr> 1331 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrcat </td> 1332 <td>(</td> 1333 <td class="paramtype">size_t&#160;</td> 1334 <td class="paramname"><em>count</em>, </td> 1335 </tr> 1336 <tr> 1337 <td class="paramkey"></td> 1338 <td></td> 1339 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1340 <td class="paramname"><em>s1</em>, </td> 1341 </tr> 1342 <tr> 1343 <td class="paramkey"></td> 1344 <td></td> 1345 <td class="paramtype">&#160;</td> 1346 <td class="paramname"><em>...</em>&#160;</td> 1347 </tr> 1348 <tr> 1349 <td></td> 1350 <td>)</td> 1351 <td></td><td></td> 1352 </tr> 1353 </table> 1354 </div><div class="memdoc"> 1355 1356 <p>Concatenates two or more strings. </p> 1357 <p>The resulting string will be allocated by standard <code>malloc()</code>. So developers <b>MUST</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> to <code>free()</code>.</p> 1358 <p>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> 1359 <dl class="params"><dt>Parameters</dt><dd> 1360 <table class="params"> 1361 <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> 1362 <tr><td class="paramname">s1</td><td>first string </td></tr> 1363 <tr><td class="paramname">...</td><td>all remaining strings </td></tr> 1364 </table> 1365 </dd> 1366 </dl> 1367 <dl class="section return"><dt>Returns</dt><dd>the concatenated string </dd></dl> 1368 1369 </div> 1370 </div> 1371 <a id="abacce4cbd6f70fcb6453904ef08b02e9"></a> 1372 <h2 class="memtitle"><span class="permalink"><a href="#abacce4cbd6f70fcb6453904ef08b02e9">&#9670;&nbsp;</a></span>scstrcat_a()</h2> 1373 1374 <div class="memitem"> 1375 <div class="memproto"> 1376 <table class="memname"> 1377 <tr> 1378 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrcat_a </td> 1379 <td>(</td> 1380 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td> 1381 <td class="paramname"><em>alloc</em>, </td> 1382 </tr> 1383 <tr> 1384 <td class="paramkey"></td> 1385 <td></td> 1386 <td class="paramtype">size_t&#160;</td> 1387 <td class="paramname"><em>count</em>, </td> 1388 </tr> 1389 <tr> 1390 <td class="paramkey"></td> 1391 <td></td> 1392 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1393 <td class="paramname"><em>s1</em>, </td> 1394 </tr> 1395 <tr> 1396 <td class="paramkey"></td> 1397 <td></td> 1398 <td class="paramtype">&#160;</td> 1399 <td class="paramname"><em>...</em>&#160;</td> 1400 </tr> 1401 <tr> 1402 <td></td> 1403 <td>)</td> 1404 <td></td><td></td> 1405 </tr> 1406 </table> 1407 </div><div class="memdoc"> 1408 1409 <p>Concatenates two or more strings using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> 1410 <p>The resulting string must be freed by the allocators <code>free()</code> implementation.</p> 1411 <p>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> 1412 <dl class="params"><dt>Parameters</dt><dd> 1413 <table class="params"> 1414 <tr><td class="paramname">alloc</td><td>the allocator to use </td></tr> 1415 <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> 1416 <tr><td class="paramname">s1</td><td>first string </td></tr> 1417 <tr><td class="paramname">...</td><td>all remaining strings </td></tr> 1418 </table> 1419 </dd> 1420 </dl> 1421 <dl class="section return"><dt>Returns</dt><dd>the concatenated string</dd></dl> 1422 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c" title="Concatenates two or more strings. ">scstrcat()</a> </dd></dl> 1423 1424 </div> 1425 </div> 1426 <a id="a5836d6a7a744791c35e5c17bdc394a87"></a> 1427 <h2 class="memtitle"><span class="permalink"><a href="#a5836d6a7a744791c35e5c17bdc394a87">&#9670;&nbsp;</a></span>scstrchr()</h2> 1428 1429 <div class="memitem"> 1430 <div class="memproto"> 1431 <table class="memname"> 1432 <tr> 1433 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrchr </td> 1434 <td>(</td> 1435 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1436 <td class="paramname"><em>string</em>, </td> 1437 </tr> 1438 <tr> 1439 <td class="paramkey"></td> 1440 <td></td> 1441 <td class="paramtype">int&#160;</td> 1442 <td class="paramname"><em>chr</em>&#160;</td> 1443 </tr> 1444 <tr> 1445 <td></td> 1446 <td>)</td> 1447 <td></td><td></td> 1448 </tr> 1449 </table> 1450 </div><div class="memdoc"> 1451 1452 <p>Returns an immutable substring starting at the location of the first occurrence of the specified character. </p> 1453 <p>If the string does not contain the character, an empty string is returned.</p> 1454 <dl class="params"><dt>Parameters</dt><dd> 1455 <table class="params"> 1456 <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> 1457 <tr><td class="paramname">chr</td><td>the character to locate </td></tr> 1458 </table> 1459 </dd> 1460 </dl> 1461 <dl class="section return"><dt>Returns</dt><dd>a substring starting at the first location of <code>chr</code></dd></dl> 1462 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060" title="Returns a substring of an immutable string starting at the specified location. ">scstrsubs()</a> </dd></dl> 1463 1464 </div> 1465 </div> 1466 <a id="af35272a8e5408c88ed3e25a3a98f0a82"></a> 1467 <h2 class="memtitle"><span class="permalink"><a href="#af35272a8e5408c88ed3e25a3a98f0a82">&#9670;&nbsp;</a></span>scstrcmp()</h2> 1468 1469 <div class="memitem"> 1470 <div class="memproto"> 1471 <table class="memname"> 1472 <tr> 1473 <td class="memname">int scstrcmp </td> 1474 <td>(</td> 1475 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1476 <td class="paramname"><em>s1</em>, </td> 1477 </tr> 1478 <tr> 1479 <td class="paramkey"></td> 1480 <td></td> 1481 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1482 <td class="paramname"><em>s2</em>&#160;</td> 1483 </tr> 1484 <tr> 1485 <td></td> 1486 <td>)</td> 1487 <td></td><td></td> 1488 </tr> 1489 </table> 1490 </div><div class="memdoc"> 1491 1492 <p>Compares two UCX strings with standard <code>memcmp()</code>. </p> 1493 <p>At first it compares the <a class="el" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172" title="The length of the string. ">scstr_t.length</a> attribute of the two strings. The <code>memcmp()</code> function is called, if and only if the lengths match.</p> 1494 <dl class="params"><dt>Parameters</dt><dd> 1495 <table class="params"> 1496 <tr><td class="paramname">s1</td><td>the first string </td></tr> 1497 <tr><td class="paramname">s2</td><td>the second string </td></tr> 1498 </table> 1499 </dd> 1500 </dl> 1501 <dl class="section return"><dt>Returns</dt><dd>-1, if the length of s1 is less than the length of s2 or 1, if the length of s1 is greater than the length of s2 or the result of <code>memcmp()</code> otherwise (i.e. 0 if the strings match) </dd></dl> 1502 1503 </div> 1504 </div> 1505 <a id="a97dccce03af419596dbdd592ca46a164"></a> 1506 <h2 class="memtitle"><span class="permalink"><a href="#a97dccce03af419596dbdd592ca46a164">&#9670;&nbsp;</a></span>scstrdup()</h2> 1507 1508 <div class="memitem"> 1509 <div class="memproto"> 1510 <table class="memname"> 1511 <tr> 1512 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrdup </td> 1513 <td>(</td> 1514 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1515 <td class="paramname"><em>string</em></td><td>)</td> 1516 <td></td> 1517 </tr> 1518 </table> 1519 </div><div class="memdoc"> 1520 1521 <p>Creates a duplicate of the specified string. </p> 1522 <p>The new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will contain a copy allocated by standard <code>malloc()</code>. So developers <b>MUST</b> pass the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> to <code>free()</code>.</p> 1523 <p>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 and mutable, regardless of the argument.</p> 1524 <dl class="params"><dt>Parameters</dt><dd> 1525 <table class="params"> 1526 <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> 1527 </table> 1528 </dd> 1529 </dl> 1530 <dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> 1531 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a> </dd></dl> 1532 1533 </div> 1534 </div> 1535 <a id="a8fe58921f51eb1fde038472377e63014"></a> 1536 <h2 class="memtitle"><span class="permalink"><a href="#a8fe58921f51eb1fde038472377e63014">&#9670;&nbsp;</a></span>scstrdup_a()</h2> 1537 1538 <div class="memitem"> 1539 <div class="memproto"> 1540 <table class="memname"> 1541 <tr> 1542 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrdup_a </td> 1543 <td>(</td> 1544 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td> 1545 <td class="paramname"><em>allocator</em>, </td> 1546 </tr> 1547 <tr> 1548 <td class="paramkey"></td> 1549 <td></td> 1550 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1551 <td class="paramname"><em>string</em>&#160;</td> 1552 </tr> 1553 <tr> 1554 <td></td> 1555 <td>)</td> 1556 <td></td><td></td> 1557 </tr> 1558 </table> 1559 </div><div class="memdoc"> 1560 1561 <p>Creates a duplicate of the specified string using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> 1562 <p>The new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will contain a copy allocated by the allocators <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">UcxAllocator.malloc()</a> function. So it is implementation depended, whether 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="structUcxAllocator.html#aecce1840378ed53f1002190f4f87026f" title="The free() function for this allocator. ">UcxAllocator.free()</a> function manually.</p> 1563 <p>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 and mutable, regardless of the argument.</p> 1564 <dl class="params"><dt>Parameters</dt><dd> 1565 <table class="params"> 1566 <tr><td class="paramname">allocator</td><td>a valid instance of a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> </td></tr> 1567 <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> 1568 </table> 1569 </dd> 1570 </dl> 1571 <dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> 1572 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> </dd></dl> 1573 1574 </div> 1575 </div> 1576 <a id="abccf198bea3186ff2abb080cc88dcae6"></a> 1577 <h2 class="memtitle"><span class="permalink"><a href="#abccf198bea3186ff2abb080cc88dcae6">&#9670;&nbsp;</a></span>scstrlower()</h2> 1578 1579 <div class="memitem"> 1580 <div class="memproto"> 1581 <table class="memname"> 1582 <tr> 1583 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrlower </td> 1584 <td>(</td> 1585 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1586 <td class="paramname"><em>string</em></td><td>)</td> 1587 <td></td> 1588 </tr> 1589 </table> 1590 </div><div class="memdoc"> 1591 1592 <p>Returns a lower case version of a string. </p> 1593 <p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a>).</p> 1594 <dl class="params"><dt>Parameters</dt><dd> 1595 <table class="params"> 1596 <tr><td class="paramname">string</td><td>the input string </td></tr> 1597 </table> 1598 </dd> 1599 </dl> 1600 <dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> 1601 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> </dd></dl> 1602 1603 </div> 1604 </div> 1605 <a id="a3cf1e557df7ab58d03c78832c4060276"></a> 1606 <h2 class="memtitle"><span class="permalink"><a href="#a3cf1e557df7ab58d03c78832c4060276">&#9670;&nbsp;</a></span>scstrlower_a()</h2> 1607 1608 <div class="memitem"> 1609 <div class="memproto"> 1610 <table class="memname"> 1611 <tr> 1612 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrlower_a </td> 1613 <td>(</td> 1614 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td> 1615 <td class="paramname"><em>allocator</em>, </td> 1616 </tr> 1617 <tr> 1618 <td class="paramkey"></td> 1619 <td></td> 1620 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1621 <td class="paramname"><em>string</em>&#160;</td> 1622 </tr> 1623 <tr> 1624 <td></td> 1625 <td>)</td> 1626 <td></td><td></td> 1627 </tr> 1628 </table> 1629 </div><div class="memdoc"> 1630 1631 <p>Returns a lower case version of a string. </p> 1632 <p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a>).</p> 1633 <dl class="params"><dt>Parameters</dt><dd> 1634 <table class="params"> 1635 <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> 1636 <tr><td class="paramname">string</td><td>the input string </td></tr> 1637 </table> 1638 </dd> 1639 </dl> 1640 <dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> 1641 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a> </dd></dl> 1642 1643 </div> 1644 </div> 1645 <a id="ae594f6e222ea394cef6a26c0dfad000d"></a> 1646 <h2 class="memtitle"><span class="permalink"><a href="#ae594f6e222ea394cef6a26c0dfad000d">&#9670;&nbsp;</a></span>scstrn()</h2> 1647 1648 <div class="memitem"> 1649 <div class="memproto"> 1650 <table class="memname"> 1651 <tr> 1652 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrn </td> 1653 <td>(</td> 1654 <td class="paramtype">const char *&#160;</td> 1655 <td class="paramname"><em>cstring</em>, </td> 1656 </tr> 1657 <tr> 1658 <td class="paramkey"></td> 1659 <td></td> 1660 <td class="paramtype">size_t&#160;</td> 1661 <td class="paramname"><em>length</em>&#160;</td> 1662 </tr> 1663 <tr> 1664 <td></td> 1665 <td>)</td> 1666 <td></td><td></td> 1667 </tr> 1668 </table> 1669 </div><div class="memdoc"> 1670 1671 <p>Creates a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> of the specified length based on a constant C string. </p> 1672 <p><b>Note:</b> the <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> will share the specified pointer to the C string. If you do want a copy, use <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> on the return value of this function. *</p> 1673 <dl class="params"><dt>Parameters</dt><dd> 1674 <table class="params"> 1675 <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> 1676 <tr><td class="paramname">length</td><td>the length of the string </td></tr> 1677 </table> 1678 </dd> 1679 </dl> 1680 <dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> containing the C string</dd></dl> 1681 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6" title="Creates a new scstr_t based on a constant C string. ">scstr()</a> </dd></dl> 1682 1683 </div> 1684 </div> 1685 <a id="ac1b000030d6d197eec48c15a182055d5"></a> 1686 <h2 class="memtitle"><span class="permalink"><a href="#ac1b000030d6d197eec48c15a182055d5">&#9670;&nbsp;</a></span>scstrnlen()</h2> 1687 1688 <div class="memitem"> 1689 <div class="memproto"> 1690 <table class="memname"> 1691 <tr> 1692 <td class="memname">size_t scstrnlen </td> 1693 <td>(</td> 1694 <td class="paramtype">size_t&#160;</td> 1695 <td class="paramname"><em>count</em>, </td> 1696 </tr> 1697 <tr> 1698 <td class="paramkey"></td> 1699 <td></td> 1700 <td class="paramtype">&#160;</td> 1701 <td class="paramname"><em>...</em>&#160;</td> 1702 </tr> 1703 <tr> 1704 <td></td> 1705 <td>)</td> 1706 <td></td><td></td> 1707 </tr> 1708 </table> 1709 </div><div class="memdoc"> 1710 1711 <p>Returns the accumulated length of all specified strings. </p> 1712 <p><b>Attention:</b> if the count argument is larger than the count of the specified strings, the behavior is undefined.</p> 1713 <dl class="params"><dt>Parameters</dt><dd> 1714 <table class="params"> 1715 <tr><td class="paramname">count</td><td>the total number of specified strings </td></tr> 1716 <tr><td class="paramname">...</td><td>all strings </td></tr> 1717 </table> 1718 </dd> 1719 </dl> 1720 <dl class="section return"><dt>Returns</dt><dd>the accumulated length of all strings </dd></dl> 1721 1722 </div> 1723 </div> 1724 <a id="a599ddc2f88dd1df68b72eefd91347393"></a> 1725 <h2 class="memtitle"><span class="permalink"><a href="#a599ddc2f88dd1df68b72eefd91347393">&#9670;&nbsp;</a></span>scstrprefix()</h2> 1726 1727 <div class="memitem"> 1728 <div class="memproto"> 1729 <table class="memname"> 1730 <tr> 1731 <td class="memname">int scstrprefix </td> 1732 <td>(</td> 1733 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1734 <td class="paramname"><em>string</em>, </td> 1735 </tr> 1736 <tr> 1737 <td class="paramkey"></td> 1738 <td></td> 1739 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1740 <td class="paramname"><em>prefix</em>&#160;</td> 1741 </tr> 1742 <tr> 1743 <td></td> 1744 <td>)</td> 1745 <td></td><td></td> 1746 </tr> 1747 </table> 1748 </div><div class="memdoc"> 1749 1750 <p>Checks, if a string has a specific prefix. </p> 1751 <dl class="params"><dt>Parameters</dt><dd> 1752 <table class="params"> 1753 <tr><td class="paramname">string</td><td>the string to check </td></tr> 1754 <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> 1755 </table> 1756 </dd> 1757 </dl> 1758 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> 1759 1760 </div> 1761 </div> 1762 <a id="ae389835b97cd9382e7d6a6a075323376"></a> 1763 <h2 class="memtitle"><span class="permalink"><a href="#ae389835b97cd9382e7d6a6a075323376">&#9670;&nbsp;</a></span>scstrrchr()</h2> 1764 1765 <div class="memitem"> 1766 <div class="memproto"> 1767 <table class="memname"> 1768 <tr> 1769 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrrchr </td> 1770 <td>(</td> 1771 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1772 <td class="paramname"><em>string</em>, </td> 1773 </tr> 1774 <tr> 1775 <td class="paramkey"></td> 1776 <td></td> 1777 <td class="paramtype">int&#160;</td> 1778 <td class="paramname"><em>chr</em>&#160;</td> 1779 </tr> 1780 <tr> 1781 <td></td> 1782 <td>)</td> 1783 <td></td><td></td> 1784 </tr> 1785 </table> 1786 </div><div class="memdoc"> 1787 1788 <p>Returns an immutable substring starting at the location of the last occurrence of the specified character. </p> 1789 <p>If the string does not contain the character, an empty string is returned.</p> 1790 <dl class="params"><dt>Parameters</dt><dd> 1791 <table class="params"> 1792 <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> 1793 <tr><td class="paramname">chr</td><td>the character to locate </td></tr> 1794 </table> 1795 </dd> 1796 </dl> 1797 <dl class="section return"><dt>Returns</dt><dd>a substring starting at the last location of <code>chr</code></dd></dl> 1798 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060" title="Returns a substring of an immutable string starting at the specified location. ">scstrsubs()</a> </dd></dl> 1799 1800 </div> 1801 </div> 1802 <a id="a54f256c3abe811c52d58b4ff1b23f051"></a> 1803 <h2 class="memtitle"><span class="permalink"><a href="#a54f256c3abe811c52d58b4ff1b23f051">&#9670;&nbsp;</a></span>scstrscstr()</h2> 1804 1805 <div class="memitem"> 1806 <div class="memproto"> 1807 <table class="memname"> 1808 <tr> 1809 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrscstr </td> 1810 <td>(</td> 1811 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1812 <td class="paramname"><em>string</em>, </td> 1813 </tr> 1814 <tr> 1815 <td class="paramkey"></td> 1816 <td></td> 1817 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1818 <td class="paramname"><em>match</em>&#160;</td> 1819 </tr> 1820 <tr> 1821 <td></td> 1822 <td>)</td> 1823 <td></td><td></td> 1824 </tr> 1825 </table> 1826 </div><div class="memdoc"> 1827 1828 <p>Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. </p> 1829 <p>If the string does not contain the other string, an empty string is returned.</p> 1830 <p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> 1831 <dl class="params"><dt>Parameters</dt><dd> 1832 <table class="params"> 1833 <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> 1834 <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> 1835 </table> 1836 </dd> 1837 </dl> 1838 <dl class="section return"><dt>Returns</dt><dd>a substring starting at the first occurrence of <code>match</code>, or an empty string, if the sequence is not present in <code>string</code> </dd></dl> 1839 1840 </div> 1841 </div> 1842 <a id="ae71cac352b00230848bde358f0fb05ea"></a> 1843 <h2 class="memtitle"><span class="permalink"><a href="#ae71cac352b00230848bde358f0fb05ea">&#9670;&nbsp;</a></span>scstrsplit()</h2> 1844 1845 <div class="memitem"> 1846 <div class="memproto"> 1847 <table class="memname"> 1848 <tr> 1849 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a>* scstrsplit </td> 1850 <td>(</td> 1851 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1852 <td class="paramname"><em>string</em>, </td> 1853 </tr> 1854 <tr> 1855 <td class="paramkey"></td> 1856 <td></td> 1857 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1858 <td class="paramname"><em>delim</em>, </td> 1859 </tr> 1860 <tr> 1861 <td class="paramkey"></td> 1862 <td></td> 1863 <td class="paramtype">ssize_t *&#160;</td> 1864 <td class="paramname"><em>count</em>&#160;</td> 1865 </tr> 1866 <tr> 1867 <td></td> 1868 <td>)</td> 1869 <td></td><td></td> 1870 </tr> 1871 </table> 1872 </div><div class="memdoc"> 1873 1874 <p>Splits a string into parts by using a delimiter string. </p> 1875 <p>This function will return <code>NULL</code>, if one of the following happens: </p><ul> 1876 <li> 1877 the string length is zero </li> 1878 <li> 1879 the delimeter length is zero </li> 1880 <li> 1881 the string equals the delimeter </li> 1882 <li> 1883 memory allocation fails </li> 1884 </ul> 1885 <p>The integer referenced by <code>count</code> is used as input and determines the maximum size of the resulting array, i.e. the maximum count of splits to perform + 1.</p> 1886 <p>The integer referenced by <code>count</code> is also used as output and is set to </p><ul> 1887 <li> 1888 -2, on memory allocation errors </li> 1889 <li> 1890 -1, if either the string or the delimiter is an empty string </li> 1891 <li> 1892 0, if the string equals the delimiter </li> 1893 <li> 1894 1, if the string does not contain the delimiter </li> 1895 <li> 1896 the count of array items, otherwise </li> 1897 </ul> 1898 <p>If the string starts with the delimiter, the first item of the resulting array will be an empty string.</p> 1899 <p>If the string ends with the delimiter and the maximum list size is not exceeded, the last array item will be an empty string. In case the list size would be exceeded, the last array item will be the remaining string after the last split, <em>including</em> the terminating delimiter.</p> 1900 <p><b>Attention:</b> The array pointer <b>AND</b> all <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> of the array items must be manually passed to <code>free()</code>. Use <a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef" title="Performing scstrsplit() using a UcxAllocator. ">scstrsplit_a()</a> with an allocator to managed memory, to avoid this.</p> 1901 <dl class="params"><dt>Parameters</dt><dd> 1902 <table class="params"> 1903 <tr><td class="paramname">string</td><td>the string to split </td></tr> 1904 <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> 1905 <tr><td class="paramname">count</td><td>IN: the maximum size of the resulting array (0 = no limit), OUT: the actual size of the array </td></tr> 1906 </table> 1907 </dd> 1908 </dl> 1909 <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> 1910 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef" title="Performing scstrsplit() using a UcxAllocator. ">scstrsplit_a()</a> </dd></dl> 1911 1912 </div> 1913 </div> 1914 <a id="a52906455ae530c9cdc6812c8e6d9bdef"></a> 1915 <h2 class="memtitle"><span class="permalink"><a href="#a52906455ae530c9cdc6812c8e6d9bdef">&#9670;&nbsp;</a></span>scstrsplit_a()</h2> 1916 1917 <div class="memitem"> 1918 <div class="memproto"> 1919 <table class="memname"> 1920 <tr> 1921 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a>* scstrsplit_a </td> 1922 <td>(</td> 1923 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td> 1924 <td class="paramname"><em>allocator</em>, </td> 1925 </tr> 1926 <tr> 1927 <td class="paramkey"></td> 1928 <td></td> 1929 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1930 <td class="paramname"><em>string</em>, </td> 1931 </tr> 1932 <tr> 1933 <td class="paramkey"></td> 1934 <td></td> 1935 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1936 <td class="paramname"><em>delim</em>, </td> 1937 </tr> 1938 <tr> 1939 <td class="paramkey"></td> 1940 <td></td> 1941 <td class="paramtype">ssize_t *&#160;</td> 1942 <td class="paramname"><em>count</em>&#160;</td> 1943 </tr> 1944 <tr> 1945 <td></td> 1946 <td>)</td> 1947 <td></td><td></td> 1948 </tr> 1949 </table> 1950 </div><div class="memdoc"> 1951 1952 <p>Performing <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea" title="Splits a string into parts by using a delimiter string. ">scstrsplit()</a> using a <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a>. </p> 1953 <p><em>Read the description of <a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea" title="Splits a string into parts by using a delimiter string. ">scstrsplit()</a> for details.</em></p> 1954 <p>The memory for the <a class="el" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0" title="A pointer to the string (not necessarily NULL-terminated) ">sstr_t.ptr</a> pointers of the array items and the memory for the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array itself are allocated by using the <a class="el" href="structUcxAllocator.html#a013376172be39ed54f77c4be6898845a" title="The malloc() function for this allocator. ">UcxAllocator.malloc()</a> function.</p> 1955 <dl class="params"><dt>Parameters</dt><dd> 1956 <table class="params"> 1957 <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 memory </td></tr> 1958 <tr><td class="paramname">string</td><td>the string to split </td></tr> 1959 <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> 1960 <tr><td class="paramname">count</td><td>IN: the maximum size of the resulting array (0 = no limit), OUT: the actual size of the array </td></tr> 1961 </table> 1962 </dd> 1963 </dl> 1964 <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> 1965 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea" title="Splits a string into parts by using a delimiter string. ">scstrsplit()</a> </dd></dl> 1966 1967 </div> 1968 </div> 1969 <a id="aa4362cb36c6629f9d8484739fd827748"></a> 1970 <h2 class="memtitle"><span class="permalink"><a href="#aa4362cb36c6629f9d8484739fd827748">&#9670;&nbsp;</a></span>scstrsstr()</h2> 1971 1972 <div class="memitem"> 1973 <div class="memproto"> 1974 <table class="memname"> 1975 <tr> 1976 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrsstr </td> 1977 <td>(</td> 1978 <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td> 1979 <td class="paramname"><em>string</em>, </td> 1980 </tr> 1981 <tr> 1982 <td class="paramkey"></td> 1983 <td></td> 1984 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 1985 <td class="paramname"><em>match</em>&#160;</td> 1986 </tr> 1987 <tr> 1988 <td></td> 1989 <td>)</td> 1990 <td></td><td></td> 1991 </tr> 1992 </table> 1993 </div><div class="memdoc"> 1994 1995 <p>Returns a substring starting at the location of the first occurrence of the specified string. </p> 1996 <p>If the string does not contain the other string, an empty string is returned.</p> 1997 <p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> 1998 <dl class="params"><dt>Parameters</dt><dd> 1999 <table class="params"> 2000 <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> 2001 <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> 2002 </table> 2003 </dd> 2004 </dl> 2005 <dl class="section return"><dt>Returns</dt><dd>a substring starting at the first occurrence of <code>match</code>, or an empty string, if the sequence is not present in <code>string</code> </dd></dl> 2006 2007 </div> 2008 </div> 2009 <a id="a9a6c8d8db0dda0037c3c852cce1a5060"></a> 2010 <h2 class="memtitle"><span class="permalink"><a href="#a9a6c8d8db0dda0037c3c852cce1a5060">&#9670;&nbsp;</a></span>scstrsubs()</h2> 2011 2012 <div class="memitem"> 2013 <div class="memproto"> 2014 <table class="memname"> 2015 <tr> 2016 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrsubs </td> 2017 <td>(</td> 2018 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 2019 <td class="paramname"><em>string</em>, </td> 2020 </tr> 2021 <tr> 2022 <td class="paramkey"></td> 2023 <td></td> 2024 <td class="paramtype">size_t&#160;</td> 2025 <td class="paramname"><em>start</em>&#160;</td> 2026 </tr> 2027 <tr> 2028 <td></td> 2029 <td>)</td> 2030 <td></td><td></td> 2031 </tr> 2032 </table> 2033 </div><div class="memdoc"> 2034 2035 <p>Returns a substring of an immutable string starting at the specified location. </p> 2036 <p><b>Attention:</b> the new string references the same memory area as the input string and is <b>NOT</b> required to be <code>NULL</code>-terminated. Use <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> to get a copy.</p> 2037 <dl class="params"><dt>Parameters</dt><dd> 2038 <table class="params"> 2039 <tr><td class="paramname">string</td><td>input string </td></tr> 2040 <tr><td class="paramname">start</td><td>start location of the substring </td></tr> 2041 </table> 2042 </dd> 2043 </dl> 2044 <dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code></dd></dl> 2045 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b" title="Returns a substring of an immutable string with a maximum length starting at the specified location...">scstrsubsl()</a> </dd> 2046 <dd> 2047 <a class="el" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87" title="Returns an immutable substring starting at the location of the first occurrence of the specified char...">scstrchr()</a> </dd></dl> 2048 2049 </div> 2050 </div> 2051 <a id="ad50f0f67b906fad0744f46bcb51e144b"></a> 2052 <h2 class="memtitle"><span class="permalink"><a href="#ad50f0f67b906fad0744f46bcb51e144b">&#9670;&nbsp;</a></span>scstrsubsl()</h2> 2053 2054 <div class="memitem"> 2055 <div class="memproto"> 2056 <table class="memname"> 2057 <tr> 2058 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrsubsl </td> 2059 <td>(</td> 2060 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 2061 <td class="paramname"><em>string</em>, </td> 2062 </tr> 2063 <tr> 2064 <td class="paramkey"></td> 2065 <td></td> 2066 <td class="paramtype">size_t&#160;</td> 2067 <td class="paramname"><em>start</em>, </td> 2068 </tr> 2069 <tr> 2070 <td class="paramkey"></td> 2071 <td></td> 2072 <td class="paramtype">size_t&#160;</td> 2073 <td class="paramname"><em>length</em>&#160;</td> 2074 </tr> 2075 <tr> 2076 <td></td> 2077 <td>)</td> 2078 <td></td><td></td> 2079 </tr> 2080 </table> 2081 </div><div class="memdoc"> 2082 2083 <p>Returns a substring of an immutable string with a maximum length starting at the specified location. </p> 2084 <p><b>Attention:</b> the new string references the same memory area as the input string and is <b>NOT</b> required to be <code>NULL</code>-terminated. Use <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> to get a copy.</p> 2085 <dl class="params"><dt>Parameters</dt><dd> 2086 <table class="params"> 2087 <tr><td class="paramname">string</td><td>input string </td></tr> 2088 <tr><td class="paramname">start</td><td>start location of the substring </td></tr> 2089 <tr><td class="paramname">length</td><td>the maximum length of the substring </td></tr> 2090 </table> 2091 </dd> 2092 </dl> 2093 <dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code> with a maximum length of <code>length</code></dd></dl> 2094 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060" title="Returns a substring of an immutable string starting at the specified location. ">scstrsubs()</a> </dd> 2095 <dd> 2096 <a class="el" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87" title="Returns an immutable substring starting at the location of the first occurrence of the specified char...">scstrchr()</a> </dd></dl> 2097 2098 </div> 2099 </div> 2100 <a id="a1f0ae316a2afe85d5b4655e6ece6721a"></a> 2101 <h2 class="memtitle"><span class="permalink"><a href="#a1f0ae316a2afe85d5b4655e6ece6721a">&#9670;&nbsp;</a></span>scstrsuffix()</h2> 2102 2103 <div class="memitem"> 2104 <div class="memproto"> 2105 <table class="memname"> 2106 <tr> 2107 <td class="memname">int scstrsuffix </td> 2108 <td>(</td> 2109 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 2110 <td class="paramname"><em>string</em>, </td> 2111 </tr> 2112 <tr> 2113 <td class="paramkey"></td> 2114 <td></td> 2115 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 2116 <td class="paramname"><em>suffix</em>&#160;</td> 2117 </tr> 2118 <tr> 2119 <td></td> 2120 <td>)</td> 2121 <td></td><td></td> 2122 </tr> 2123 </table> 2124 </div><div class="memdoc"> 2125 2126 <p>Checks, if a string has a specific suffix. </p> 2127 <dl class="params"><dt>Parameters</dt><dd> 2128 <table class="params"> 2129 <tr><td class="paramname">string</td><td>the string to check </td></tr> 2130 <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> 2131 </table> 2132 </dd> 2133 </dl> 2134 <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> 2135 2136 </div> 2137 </div> 2138 <a id="ad374b16eb1be8b48019debad9b9f268c"></a> 2139 <h2 class="memtitle"><span class="permalink"><a href="#ad374b16eb1be8b48019debad9b9f268c">&#9670;&nbsp;</a></span>scstrtrim()</h2> 2140 2141 <div class="memitem"> 2142 <div class="memproto"> 2143 <table class="memname"> 2144 <tr> 2145 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrtrim </td> 2146 <td>(</td> 2147 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 2148 <td class="paramname"><em>string</em></td><td>)</td> 2149 <td></td> 2150 </tr> 2151 </table> 2152 </div><div class="memdoc"> 2153 2154 <p>Omits leading and trailing spaces. </p> 2155 <p>This function returns a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> containing a trimmed version of the specified string.</p> 2156 <p><b>Note:</b> the new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> references the same memory, thus you <b>MUST NOT</b> pass the <a class="el" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391" title="A constant pointer to the immutable string (not necessarily NULL-terminated) ">scstr_t.ptr</a> of the return value to <code>free()</code>. It is also highly recommended to avoid assignments like <code>mystr = scstrtrim(mystr);</code> as you lose the reference to the source string. Assignments of this type are only permitted, if the <a class="el" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391" title="A constant pointer to the immutable string (not necessarily NULL-terminated) ">scstr_t.ptr</a> of the source string does not need to be freed or if another reference to the source string exists.</p> 2157 <dl class="params"><dt>Parameters</dt><dd> 2158 <table class="params"> 2159 <tr><td class="paramname">string</td><td>the string that shall be trimmed </td></tr> 2160 </table> 2161 </dd> 2162 </dl> 2163 <dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> containing the trimmed string </dd></dl> 2164 2165 </div> 2166 </div> 2167 <a id="af3dd09ec9d11162fe0075f4e60f41240"></a> 2168 <h2 class="memtitle"><span class="permalink"><a href="#af3dd09ec9d11162fe0075f4e60f41240">&#9670;&nbsp;</a></span>scstrupper()</h2> 2169 2170 <div class="memitem"> 2171 <div class="memproto"> 2172 <table class="memname"> 2173 <tr> 2174 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrupper </td> 2175 <td>(</td> 2176 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 2177 <td class="paramname"><em>string</em></td><td>)</td> 2178 <td></td> 2179 </tr> 2180 </table> 2181 </div><div class="memdoc"> 2182 2183 <p>Returns a upper case version of a string. </p> 2184 <p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a>).</p> 2185 <dl class="params"><dt>Parameters</dt><dd> 2186 <table class="params"> 2187 <tr><td class="paramname">string</td><td>the input string </td></tr> 2188 </table> 2189 </dd> 2190 </dl> 2191 <dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> 2192 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164" title="Creates a duplicate of the specified string. ">scstrdup()</a> </dd></dl> 2193 2194 </div> 2195 </div> 2196 <a id="aea94613eb74668cc05d365803d32bfad"></a> 2197 <h2 class="memtitle"><span class="permalink"><a href="#aea94613eb74668cc05d365803d32bfad">&#9670;&nbsp;</a></span>scstrupper_a()</h2> 2198 2199 <div class="memitem"> 2200 <div class="memproto"> 2201 <table class="memname"> 2202 <tr> 2203 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrupper_a </td> 2204 <td>(</td> 2205 <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> *&#160;</td> 2206 <td class="paramname"><em>allocator</em>, </td> 2207 </tr> 2208 <tr> 2209 <td class="paramkey"></td> 2210 <td></td> 2211 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 2212 <td class="paramname"><em>string</em>&#160;</td> 2213 </tr> 2214 <tr> 2215 <td></td> 2216 <td>)</td> 2217 <td></td><td></td> 2218 </tr> 2219 </table> 2220 </div><div class="memdoc"> 2221 2222 <p>Returns a upper case version of a string. </p> 2223 <p>This function creates a duplicate of the input string, first (see <a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a>).</p> 2224 <dl class="params"><dt>Parameters</dt><dd> 2225 <table class="params"> 2226 <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> 2227 <tr><td class="paramname">string</td><td>the input string </td></tr> 2228 </table> 2229 </dd> 2230 </dl> 2231 <dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> 2232 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a8fe58921f51eb1fde038472377e63014" title="Creates a duplicate of the specified string using a UcxAllocator. ">scstrdup_a()</a> </dd></dl> 2233 2234 </div> 2235 </div> 2236 <a id="a539eb7059251a051ee5d179526a23e9a"></a> 2237 <h2 class="memtitle"><span class="permalink"><a href="#a539eb7059251a051ee5d179526a23e9a">&#9670;&nbsp;</a></span>sstr()</h2> 2238 2239 <div class="memitem"> 2240 <div class="memproto"> 2241 <table class="memname"> 2242 <tr> 2243 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstr </td> 2244 <td>(</td> 2245 <td class="paramtype">char *&#160;</td> 2246 <td class="paramname"><em>cstring</em></td><td>)</td> 2247 <td></td> 2248 </tr> 2249 </table> 2250 </div><div class="memdoc"> 2251 2252 <p>Creates a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> based on a C string. </p> 2253 <p>The length is implicitly inferred by using a call to <code>strlen()</code>.</p> 2254 <p><b>Note:</b> the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will share the specified pointer to the C string. If you do want a copy, use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> on the return value of this function.</p> 2255 <p>If you need to wrap a constant string, use <a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6" title="Creates a new scstr_t based on a constant C string. ">scstr()</a>.</p> 2256 <dl class="params"><dt>Parameters</dt><dd> 2257 <table class="params"> 2258 <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> 2259 </table> 2260 </dd> 2261 </dl> 2262 <dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the C string</dd></dl> 2263 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c" title="Creates a new sstr_t of the specified length based on a C string. ">sstrn()</a> </dd></dl> 2264 2265 </div> 2266 </div> 2267 <a id="af80898a0b75955eb2579298c3ae2c481"></a> 2268 <h2 class="memtitle"><span class="permalink"><a href="#af80898a0b75955eb2579298c3ae2c481">&#9670;&nbsp;</a></span>sstrchr()</h2> 2269 2270 <div class="memitem"> 2271 <div class="memproto"> 2272 <table class="memname"> 2273 <tr> 2274 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrchr </td> 2275 <td>(</td> 2276 <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td> 2277 <td class="paramname"><em>string</em>, </td> 2278 </tr> 2279 <tr> 2280 <td class="paramkey"></td> 2281 <td></td> 2282 <td class="paramtype">int&#160;</td> 2283 <td class="paramname"><em>chr</em>&#160;</td> 2284 </tr> 2285 <tr> 2286 <td></td> 2287 <td>)</td> 2288 <td></td><td></td> 2289 </tr> 2290 </table> 2291 </div><div class="memdoc"> 2292 2293 <p>Returns a substring starting at the location of the first occurrence of the specified character. </p> 2294 <p>If the string does not contain the character, an empty string is returned.</p> 2295 <dl class="params"><dt>Parameters</dt><dd> 2296 <table class="params"> 2297 <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> 2298 <tr><td class="paramname">chr</td><td>the character to locate </td></tr> 2299 </table> 2300 </dd> 2301 </dl> 2302 <dl class="section return"><dt>Returns</dt><dd>a substring starting at the first location of <code>chr</code></dd></dl> 2303 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258" title="Returns a substring starting at the specified location. ">sstrsubs()</a> </dd></dl> 2304 2305 </div> 2306 </div> 2307 <a id="a2744c38ac44abf3e01fa059056dcf36c"></a> 2308 <h2 class="memtitle"><span class="permalink"><a href="#a2744c38ac44abf3e01fa059056dcf36c">&#9670;&nbsp;</a></span>sstrn()</h2> 2309 2310 <div class="memitem"> 2311 <div class="memproto"> 2312 <table class="memname"> 2313 <tr> 2314 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrn </td> 2315 <td>(</td> 2316 <td class="paramtype">char *&#160;</td> 2317 <td class="paramname"><em>cstring</em>, </td> 2318 </tr> 2319 <tr> 2320 <td class="paramkey"></td> 2321 <td></td> 2322 <td class="paramtype">size_t&#160;</td> 2323 <td class="paramname"><em>length</em>&#160;</td> 2324 </tr> 2325 <tr> 2326 <td></td> 2327 <td>)</td> 2328 <td></td><td></td> 2329 </tr> 2330 </table> 2331 </div><div class="memdoc"> 2332 2333 <p>Creates a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> of the specified length based on a C string. </p> 2334 <p><b>Note:</b> the <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> will share the specified pointer to the C string. If you do want a copy, use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> on the return value of this function.</p> 2335 <p>If you need to wrap a constant string, use <a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d" title="Creates a new scstr_t of the specified length based on a constant C string. ">scstrn()</a>.</p> 2336 <dl class="params"><dt>Parameters</dt><dd> 2337 <table class="params"> 2338 <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> 2339 <tr><td class="paramname">length</td><td>the length of the string </td></tr> 2340 </table> 2341 </dd> 2342 </dl> 2343 <dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the C string</dd></dl> 2344 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a" title="Creates a new sstr_t based on a C string. ">sstr()</a> </dd> 2345 <dd> 2346 <a class="el" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e" title="Shortcut for the conversion of a C string to a sstr_t. ">S()</a> </dd></dl> 2347 2348 </div> 2349 </div> 2350 <a id="adae3f59957ca328e1da5285cb8b02a72"></a> 2351 <h2 class="memtitle"><span class="permalink"><a href="#adae3f59957ca328e1da5285cb8b02a72">&#9670;&nbsp;</a></span>sstrrchr()</h2> 2352 2353 <div class="memitem"> 2354 <div class="memproto"> 2355 <table class="memname"> 2356 <tr> 2357 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrrchr </td> 2358 <td>(</td> 2359 <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td> 2360 <td class="paramname"><em>string</em>, </td> 2361 </tr> 2362 <tr> 2363 <td class="paramkey"></td> 2364 <td></td> 2365 <td class="paramtype">int&#160;</td> 2366 <td class="paramname"><em>chr</em>&#160;</td> 2367 </tr> 2368 <tr> 2369 <td></td> 2370 <td>)</td> 2371 <td></td><td></td> 2372 </tr> 2373 </table> 2374 </div><div class="memdoc"> 2375 2376 <p>Returns a substring starting at the location of the last occurrence of the specified character. </p> 2377 <p>If the string does not contain the character, an empty string is returned.</p> 2378 <dl class="params"><dt>Parameters</dt><dd> 2379 <table class="params"> 2380 <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> 2381 <tr><td class="paramname">chr</td><td>the character to locate </td></tr> 2382 </table> 2383 </dd> 2384 </dl> 2385 <dl class="section return"><dt>Returns</dt><dd>a substring starting at the last location of <code>chr</code></dd></dl> 2386 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258" title="Returns a substring starting at the specified location. ">sstrsubs()</a> </dd></dl> 2387 2388 </div> 2389 </div> 2390 <a id="a5eb9e0e1f26cf7fbecc038cd90e8b258"></a> 2391 <h2 class="memtitle"><span class="permalink"><a href="#a5eb9e0e1f26cf7fbecc038cd90e8b258">&#9670;&nbsp;</a></span>sstrsubs()</h2> 2392 2393 <div class="memitem"> 2394 <div class="memproto"> 2395 <table class="memname"> 2396 <tr> 2397 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrsubs </td> 2398 <td>(</td> 2399 <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td> 2400 <td class="paramname"><em>string</em>, </td> 2401 </tr> 2402 <tr> 2403 <td class="paramkey"></td> 2404 <td></td> 2405 <td class="paramtype">size_t&#160;</td> 2406 <td class="paramname"><em>start</em>&#160;</td> 2407 </tr> 2408 <tr> 2409 <td></td> 2410 <td>)</td> 2411 <td></td><td></td> 2412 </tr> 2413 </table> 2414 </div><div class="memdoc"> 2415 2416 <p>Returns a substring starting at the specified location. </p> 2417 <p><b>Attention:</b> the new string references the same memory area as the input string and is <b>NOT</b> required to be <code>NULL</code>-terminated. Use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> to get a copy.</p> 2418 <dl class="params"><dt>Parameters</dt><dd> 2419 <table class="params"> 2420 <tr><td class="paramname">string</td><td>input string </td></tr> 2421 <tr><td class="paramname">start</td><td>start location of the substring </td></tr> 2422 </table> 2423 </dd> 2424 </dl> 2425 <dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code></dd></dl> 2426 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a" title="Returns a substring with the given length starting at the specified location. ">sstrsubsl()</a> </dd> 2427 <dd> 2428 <a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481" title="Returns a substring starting at the location of the first occurrence of the specified character...">sstrchr()</a> </dd></dl> 2429 2430 </div> 2431 </div> 2432 <a id="a78925c91af54f23cebd20ff99ef4331a"></a> 2433 <h2 class="memtitle"><span class="permalink"><a href="#a78925c91af54f23cebd20ff99ef4331a">&#9670;&nbsp;</a></span>sstrsubsl()</h2> 2434 2435 <div class="memitem"> 2436 <div class="memproto"> 2437 <table class="memname"> 2438 <tr> 2439 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrsubsl </td> 2440 <td>(</td> 2441 <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td> 2442 <td class="paramname"><em>string</em>, </td> 2443 </tr> 2444 <tr> 2445 <td class="paramkey"></td> 2446 <td></td> 2447 <td class="paramtype">size_t&#160;</td> 2448 <td class="paramname"><em>start</em>, </td> 2449 </tr> 2450 <tr> 2451 <td class="paramkey"></td> 2452 <td></td> 2453 <td class="paramtype">size_t&#160;</td> 2454 <td class="paramname"><em>length</em>&#160;</td> 2455 </tr> 2456 <tr> 2457 <td></td> 2458 <td>)</td> 2459 <td></td><td></td> 2460 </tr> 2461 </table> 2462 </div><div class="memdoc"> 2463 2464 <p>Returns a substring with the given length starting at the specified location. </p> 2465 <p><b>Attention:</b> the new string references the same memory area as the input string and is <b>NOT</b> required to be <code>NULL</code>-terminated. Use <a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80" title="Creates a duplicate of the specified string. ">sstrdup()</a> to get a copy.</p> 2466 <dl class="params"><dt>Parameters</dt><dd> 2467 <table class="params"> 2468 <tr><td class="paramname">string</td><td>input string </td></tr> 2469 <tr><td class="paramname">start</td><td>start location of the substring </td></tr> 2470 <tr><td class="paramname">length</td><td>the maximum length of the substring </td></tr> 2471 </table> 2472 </dd> 2473 </dl> 2474 <dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code> with a maximum length of <code>length</code></dd></dl> 2475 <dl class="section see"><dt>See also</dt><dd><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258" title="Returns a substring starting at the specified location. ">sstrsubs()</a> </dd> 2476 <dd> 2477 <a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481" title="Returns a substring starting at the location of the first occurrence of the specified character...">sstrchr()</a> </dd></dl> 2478 2479 </div> 2480 </div> 2481 <a id="ae2d6da564d3fce51f2e0cac580fdbc56"></a> 2482 <h2 class="memtitle"><span class="permalink"><a href="#ae2d6da564d3fce51f2e0cac580fdbc56">&#9670;&nbsp;</a></span>sstrtrim()</h2> 2483 2484 <div class="memitem"> 2485 <div class="memproto"> 2486 <table class="memname"> 2487 <tr> 2488 <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrtrim </td> 2489 <td>(</td> 2490 <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td> 2491 <td class="paramname"><em>string</em></td><td>)</td> 2492 <td></td> 2493 </tr> 2494 </table> 2495 </div><div class="memdoc"> 2496 2497 <p>Omits leading and trailing spaces. </p> 2498 <p>This function returns a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing a trimmed version of the specified string.</p> 2499 <p><b>Note:</b> the new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> references the same memory, thus you <b>MUST NOT</b> pass 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 to <code>free()</code>. It is also highly recommended to avoid assignments like <code>mystr = sstrtrim(mystr);</code> as you lose the reference to the source string. Assignments of this type are only permitted, if 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 source string does not need to be freed or if another reference to the source string exists.</p> 2500 <dl class="params"><dt>Parameters</dt><dd> 2501 <table class="params"> 2502 <tr><td class="paramname">string</td><td>the string that shall be trimmed </td></tr> 2503 </table> 2504 </dd> 2505 </dl> 2506 <dl class="section return"><dt>Returns</dt><dd>a new <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> containing the trimmed string </dd></dl> 2507 2508 </div> 2509 </div> 2510 <a id="a69d5e3eeec783cc43314df71248768f5"></a> 2511 <h2 class="memtitle"><span class="permalink"><a href="#a69d5e3eeec783cc43314df71248768f5">&#9670;&nbsp;</a></span>ucx_sc2sc()</h2> 2512 2513 <div class="memitem"> 2514 <div class="memproto"> 2515 <table class="memname"> 2516 <tr> 2517 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_sc2sc </td> 2518 <td>(</td> 2519 <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a>&#160;</td> 2520 <td class="paramname"><em>str</em></td><td>)</td> 2521 <td></td> 2522 </tr> 2523 </table> 2524 </div><div class="memdoc"> 2525 2526 <p>One of two type adjustment functions that return an <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. </p> 2527 <p>Used <b>internally</b> to convert a UCX string to an immutable UCX string. This variant is used, when the string is already immutable and no operation needs to be performed.</p> 2528 <p><b>Do not use this function manually.</b></p> 2529 <dl class="params"><dt>Parameters</dt><dd> 2530 <table class="params"> 2531 <tr><td class="paramname">str</td><td>some <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> </td></tr> 2532 </table> 2533 </dd> 2534 </dl> 2535 <dl class="section return"><dt>Returns</dt><dd>the argument itself </dd></dl> 2536 2537 </div> 2538 </div> 2539 <a id="aedeb5d7bddda54116101a8d68af8c56d"></a> 2540 <h2 class="memtitle"><span class="permalink"><a href="#aedeb5d7bddda54116101a8d68af8c56d">&#9670;&nbsp;</a></span>ucx_ss2c_s()</h2> 2541 2542 <div class="memitem"> 2543 <div class="memproto"> 2544 <table class="memname"> 2545 <tr> 2546 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_ss2c_s </td> 2547 <td>(</td> 2548 <td class="paramname"></td><td>)</td> 2549 <td></td> 2550 </tr> 2551 </table> 2552 </div><div class="memdoc"> 2553 2554 <p>Converts a UCX string to an immutable UCX string (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>). </p> 2555 <p>This <b>internal</b> function (ab)uses the C standard an expects one single argument which is then implicitly converted to <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a> without a warning.</p> 2556 <p><b>Do not use this function manually.</b></p> 2557 <dl class="section return"><dt>Returns</dt><dd>the an immutable version of the provided string </dd></dl> 2558 2559 </div> 2560 </div> 2561 <a id="a9ce5ad1b2aa2dbeba204d452c2e64359"></a> 2562 <h2 class="memtitle"><span class="permalink"><a href="#a9ce5ad1b2aa2dbeba204d452c2e64359">&#9670;&nbsp;</a></span>ucx_ss2sc()</h2> 2563 2564 <div class="memitem"> 2565 <div class="memproto"> 2566 <table class="memname"> 2567 <tr> 2568 <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_ss2sc </td> 2569 <td>(</td> 2570 <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a>&#160;</td> 2571 <td class="paramname"><em>str</em></td><td>)</td> 2572 <td></td> 2573 </tr> 2574 </table> 2575 </div><div class="memdoc"> 2576 2577 <p>One of two type adjustment functions that return an <a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>. </p> 2578 <p>Used <b>internally</b> to convert a UCX string to an immutable UCX string.</p> 2579 <p><b>Do not use this function manually.</b></p> 2580 <dl class="params"><dt>Parameters</dt><dd> 2581 <table class="params"> 2582 <tr><td class="paramname">str</td><td>some <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> </td></tr> 2583 </table> 2584 </dd> 2585 </dl> 2586 <dl class="section return"><dt>Returns</dt><dd>an immutable (<a class="el" href="structscstr__t.html" title="The UCX string structure for immutable (constant) strings. ">scstr_t</a>) version of the provided string. </dd></dl> 2587 2588 </div> 2589 </div> 2590 </div><!-- contents --> 2591 <!-- start footer part --> 2592 <hr class="footer"/><address class="footer"><small> 2593 Generated on Thu Dec 19 2019 19:58:24 for ucx by &#160;<a href="http://www.doxygen.org/index.html"> 2594 <img class="footer" src="doxygen.png" alt="doxygen"/> 2595 </a> 1.8.13 2596 </small></address> 2597 </body> 2598 </html> 2599