Thu, 19 Dec 2024 12:00:20 +0100
add CHANGELOG entry for issue #431
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.13"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>ucx: /home/mike/workspace/c/ucx/src/ucx/string.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">ucx </div> <div id="projectbrief">UAP Common Extensions</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.13 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); </script> <div id="main-nav"></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Macros</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">string.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Bounded string implementation. <a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="ucx_8h_source.html">ucx.h</a>"</code><br /> <code>#include "<a class="el" href="allocator_8h_source.html">allocator.h</a>"</code><br /> <code>#include <stddef.h></code><br /> </div> <p><a href="string_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structsstr__t.html">sstr_t</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The UCX string structure. <a href="structsstr__t.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structscstr__t.html">scstr_t</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The UCX string structure for immutable (constant) strings. <a href="structscstr__t.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a9037956cca97a4e84b642f17f3d10378"><td class="memItemLeft" align="right" valign="top"><a id="a9037956cca97a4e84b642f17f3d10378"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9037956cca97a4e84b642f17f3d10378">ST</a>(s)   { s, sizeof(s)-1 }</td></tr> <tr class="memdesc:a9037956cca97a4e84b642f17f3d10378"><td class="mdescLeft"> </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> <tr class="separator:a9037956cca97a4e84b642f17f3d10378"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8fa17c8cf4c36df48f4108c36da8573e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e">S</a>(s)   <a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>(s, sizeof(s)-1)</td></tr> <tr class="memdesc:a8fa17c8cf4c36df48f4108c36da8573e"><td class="mdescLeft"> </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> <tr class="separator:a8fa17c8cf4c36df48f4108c36da8573e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7d261dd0bc358c957a368bc058c1ce53"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d261dd0bc358c957a368bc058c1ce53">SC</a>(s)   <a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a>(s, sizeof(s)-1)</td></tr> <tr class="memdesc:a7d261dd0bc358c957a368bc058c1ce53"><td class="mdescLeft"> </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> <tr class="separator:a7d261dd0bc358c957a368bc058c1ce53"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a23ed51e87385886bb65e8cd19c839362"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a23ed51e87385886bb65e8cd19c839362">SFMT</a>(s)   (int) (s).length, (s).ptr</td></tr> <tr class="memdesc:a23ed51e87385886bb65e8cd19c839362"><td class="mdescLeft"> </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> <tr class="separator:a23ed51e87385886bb65e8cd19c839362"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7d5bc48708405a28b23667e32dfcecae"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d5bc48708405a28b23667e32dfcecae">PRIsstr</a>   ".*s"</td></tr> <tr class="memdesc:a7d5bc48708405a28b23667e32dfcecae"><td class="mdescLeft"> </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> <tr class="separator:a7d5bc48708405a28b23667e32dfcecae"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad4293350a9b39a23a6546bd0fef2aeed"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(str)   <a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a>(str)</td></tr> <tr class="memdesc:ad4293350a9b39a23a6546bd0fef2aeed"><td class="mdescLeft"> </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> <tr class="separator:ad4293350a9b39a23a6546bd0fef2aeed"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c">sstrnlen</a>(count, ...)   <a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a>(count, __VA_ARGS__)</td></tr> <tr class="memdesc:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="mdescLeft"> </td><td class="mdescRight">Returns the accumulated length of all specified strings. <a href="#a33fa945acc5ac2ce962e5ef13cf1638c">More...</a><br /></td></tr> <tr class="separator:a33fa945acc5ac2ce962e5ef13cf1638c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6af8a4c347c7fdb5980d4c4803be2759"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759">sstrcat</a>(count, s1, ...)   <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> <tr class="memdesc:a6af8a4c347c7fdb5980d4c4803be2759"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two or more strings. <a href="#a6af8a4c347c7fdb5980d4c4803be2759">More...</a><br /></td></tr> <tr class="separator:a6af8a4c347c7fdb5980d4c4803be2759"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6068d460f9bc05962666a917d26568b3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a6068d460f9bc05962666a917d26568b3">sstrcat_a</a>(alloc, count, s1, ...)   <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> <tr class="memdesc:a6068d460f9bc05962666a917d26568b3"><td class="mdescLeft"> </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> <tr class="separator:a6068d460f9bc05962666a917d26568b3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9d03be026afa9447c52bb34b9e3b895a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a9d03be026afa9447c52bb34b9e3b895a">sstrstr</a>(string, match)   <a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td></tr> <tr class="memdesc:a9d03be026afa9447c52bb34b9e3b895a"><td class="mdescLeft"> </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> <tr class="separator:a9d03be026afa9447c52bb34b9e3b895a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa696932213265e10f864678686f4ccde"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aa696932213265e10f864678686f4ccde">sstrscstr</a>(string, match)   <a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td></tr> <tr class="memdesc:aa696932213265e10f864678686f4ccde"><td class="mdescLeft"> </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> <tr class="separator:aa696932213265e10f864678686f4ccde"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa929984004c3576bfafb95031aca8eb7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7">sstrsplit</a>(string, delim, count)   <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> <tr class="memdesc:aa929984004c3576bfafb95031aca8eb7"><td class="mdescLeft"> </td><td class="mdescRight">Splits a string into parts by using a delimiter string. <a href="#aa929984004c3576bfafb95031aca8eb7">More...</a><br /></td></tr> <tr class="separator:aa929984004c3576bfafb95031aca8eb7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601">sstrsplit_a</a>(allocator, string, delim, count)   <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> <tr class="memdesc:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="mdescLeft"> </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> <tr class="separator:ac9f69fa3a17e26a3a5f9d985b5844601"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7ae7156c8de57454ca38d306100b8160"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160">sstrcmp</a>(s1, s2)   <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> <tr class="memdesc:a7ae7156c8de57454ca38d306100b8160"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX strings with standard <code>memcmp()</code>. <a href="#a7ae7156c8de57454ca38d306100b8160">More...</a><br /></td></tr> <tr class="separator:a7ae7156c8de57454ca38d306100b8160"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a81b0f6df794152c2038703d4e9d0ad59"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a81b0f6df794152c2038703d4e9d0ad59">sstrcasecmp</a>(s1, s2)   <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> <tr class="memdesc:a81b0f6df794152c2038703d4e9d0ad59"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX strings ignoring the case. <a href="#a81b0f6df794152c2038703d4e9d0ad59">More...</a><br /></td></tr> <tr class="separator:a81b0f6df794152c2038703d4e9d0ad59"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:accbfd2b459a028d7af9fb7df6f977d80"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80">sstrdup</a>(string)   <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> <tr class="memdesc:accbfd2b459a028d7af9fb7df6f977d80"><td class="mdescLeft"> </td><td class="mdescRight">Creates a duplicate of the specified string. <a href="#accbfd2b459a028d7af9fb7df6f977d80">More...</a><br /></td></tr> <tr class="separator:accbfd2b459a028d7af9fb7df6f977d80"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8d098baada4ea9ad5d8b6343b5aec007"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007">sstrdup_a</a>(allocator, string)   <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> <tr class="memdesc:a8d098baada4ea9ad5d8b6343b5aec007"><td class="mdescLeft"> </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> <tr class="separator:a8d098baada4ea9ad5d8b6343b5aec007"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7d73b66256384b26927e787318fdefa2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7d73b66256384b26927e787318fdefa2">sstrprefix</a>(string, prefix)   <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> <tr class="memdesc:a7d73b66256384b26927e787318fdefa2"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific prefix. <a href="#a7d73b66256384b26927e787318fdefa2">More...</a><br /></td></tr> <tr class="separator:a7d73b66256384b26927e787318fdefa2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e">sstrsuffix</a>(string, suffix)   <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> <tr class="memdesc:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific suffix. <a href="#ac6a5246f26be2e8a5f34d8995b7ec14e">More...</a><br /></td></tr> <tr class="separator:ac6a5246f26be2e8a5f34d8995b7ec14e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acd3dc64e90db9b4046e14f115a815ff4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#acd3dc64e90db9b4046e14f115a815ff4">sstrcaseprefix</a>(string, prefix)   <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> <tr class="memdesc:acd3dc64e90db9b4046e14f115a815ff4"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific prefix, ignoring the case. <a href="#acd3dc64e90db9b4046e14f115a815ff4">More...</a><br /></td></tr> <tr class="separator:acd3dc64e90db9b4046e14f115a815ff4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a57eabd4862d531dd685bbf2feb8468bf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a57eabd4862d531dd685bbf2feb8468bf">sstrcasesuffix</a>(string, suffix)   <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> <tr class="memdesc:a57eabd4862d531dd685bbf2feb8468bf"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific suffix, ignoring the case. <a href="#a57eabd4862d531dd685bbf2feb8468bf">More...</a><br /></td></tr> <tr class="separator:a57eabd4862d531dd685bbf2feb8468bf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a89343ea3e719f00ee802b557db57b769"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a89343ea3e719f00ee802b557db57b769">sstrlower</a>(string)   <a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> <tr class="memdesc:a89343ea3e719f00ee802b557db57b769"><td class="mdescLeft"> </td><td class="mdescRight">Returns a lower case version of a string. <a href="#a89343ea3e719f00ee802b557db57b769">More...</a><br /></td></tr> <tr class="separator:a89343ea3e719f00ee802b557db57b769"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4bb4742fe71115f493991d307cb22b23"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a4bb4742fe71115f493991d307cb22b23">sstrlower_a</a>(allocator, string)   <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> <tr class="memdesc:a4bb4742fe71115f493991d307cb22b23"><td class="mdescLeft"> </td><td class="mdescRight">Returns a lower case version of a string. <a href="#a4bb4742fe71115f493991d307cb22b23">More...</a><br /></td></tr> <tr class="separator:a4bb4742fe71115f493991d307cb22b23"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824">sstrupper</a>(string)   <a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td></tr> <tr class="memdesc:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="mdescLeft"> </td><td class="mdescRight">Returns a upper case version of a string. <a href="#a084fe5a3a90d6fb6b15ecda03bb30824">More...</a><br /></td></tr> <tr class="separator:a084fe5a3a90d6fb6b15ecda03bb30824"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5f0dd83c0176b812fb428004b2877a34"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a5f0dd83c0176b812fb428004b2877a34">sstrupper_a</a>(allocator, string)   <a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a>(allocator, string)</td></tr> <tr class="memdesc:a5f0dd83c0176b812fb428004b2877a34"><td class="mdescLeft"> </td><td class="mdescRight">Returns a upper case version of a string. <a href="#a5f0dd83c0176b812fb428004b2877a34">More...</a><br /></td></tr> <tr class="separator:a5f0dd83c0176b812fb428004b2877a34"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:a69d5e3eeec783cc43314df71248768f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </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> <tr class="memdesc:a69d5e3eeec783cc43314df71248768f5"><td class="mdescLeft"> </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> <tr class="separator:a69d5e3eeec783cc43314df71248768f5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </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> <tr class="memdesc:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="mdescLeft"> </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> <tr class="separator:a9ce5ad1b2aa2dbeba204d452c2e64359"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aedeb5d7bddda54116101a8d68af8c56d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a> ()</td></tr> <tr class="memdesc:aedeb5d7bddda54116101a8d68af8c56d"><td class="mdescLeft"> </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> <tr class="separator:aedeb5d7bddda54116101a8d68af8c56d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a539eb7059251a051ee5d179526a23e9a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">sstr</a> (char *cstring)</td></tr> <tr class="memdesc:a539eb7059251a051ee5d179526a23e9a"><td class="mdescLeft"> </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> <tr class="separator:a539eb7059251a051ee5d179526a23e9a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2744c38ac44abf3e01fa059056dcf36c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a> (char *cstring, size_t length)</td></tr> <tr class="memdesc:a2744c38ac44abf3e01fa059056dcf36c"><td class="mdescLeft"> </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> <tr class="separator:a2744c38ac44abf3e01fa059056dcf36c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">scstr</a> (const char *cstring)</td></tr> <tr class="memdesc:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="mdescLeft"> </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> <tr class="separator:a2b1d6f1eca1c1549f37107b9c026c5a6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae594f6e222ea394cef6a26c0dfad000d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a> (const char *cstring, size_t length)</td></tr> <tr class="memdesc:ae594f6e222ea394cef6a26c0dfad000d"><td class="mdescLeft"> </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> <tr class="separator:ae594f6e222ea394cef6a26c0dfad000d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac1b000030d6d197eec48c15a182055d5"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a> (size_t count,...)</td></tr> <tr class="memdesc:ac1b000030d6d197eec48c15a182055d5"><td class="mdescLeft"> </td><td class="mdescRight">Returns the accumulated length of all specified strings. <a href="#ac1b000030d6d197eec48c15a182055d5">More...</a><br /></td></tr> <tr class="separator:ac1b000030d6d197eec48c15a182055d5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7376842c19e954b49215da81ef76ac0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a> (size_t count, <a class="el" href="structscstr__t.html">scstr_t</a> s1,...)</td></tr> <tr class="memdesc:a7376842c19e954b49215da81ef76ac0c"><td class="mdescLeft"> </td><td class="mdescRight">Concatenates two or more strings. <a href="#a7376842c19e954b49215da81ef76ac0c">More...</a><br /></td></tr> <tr class="separator:a7376842c19e954b49215da81ef76ac0c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abacce4cbd6f70fcb6453904ef08b02e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="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> <tr class="memdesc:abacce4cbd6f70fcb6453904ef08b02e9"><td class="mdescLeft"> </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> <tr class="separator:abacce4cbd6f70fcb6453904ef08b02e9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">sstrsubs</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, size_t start)</td></tr> <tr class="memdesc:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring starting at the specified location. <a href="#a5eb9e0e1f26cf7fbecc038cd90e8b258">More...</a><br /></td></tr> <tr class="separator:a5eb9e0e1f26cf7fbecc038cd90e8b258"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a78925c91af54f23cebd20ff99ef4331a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="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> <tr class="memdesc:a78925c91af54f23cebd20ff99ef4331a"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring with the given length starting at the specified location. <a href="#a78925c91af54f23cebd20ff99ef4331a">More...</a><br /></td></tr> <tr class="separator:a78925c91af54f23cebd20ff99ef4331a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </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> <tr class="memdesc:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="mdescLeft"> </td><td class="mdescRight">Returns a substring of an immutable string starting at the specified location. <a href="#a9a6c8d8db0dda0037c3c852cce1a5060">More...</a><br /></td></tr> <tr class="separator:a9a6c8d8db0dda0037c3c852cce1a5060"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad50f0f67b906fad0744f46bcb51e144b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </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> <tr class="memdesc:ad50f0f67b906fad0744f46bcb51e144b"><td class="mdescLeft"> </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> <tr class="separator:ad50f0f67b906fad0744f46bcb51e144b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af80898a0b75955eb2579298c3ae2c481"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">sstrchr</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, int chr)</td></tr> <tr class="memdesc:af80898a0b75955eb2579298c3ae2c481"><td class="mdescLeft"> </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> <tr class="separator:af80898a0b75955eb2579298c3ae2c481"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adae3f59957ca328e1da5285cb8b02a72"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">sstrrchr</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string, int chr)</td></tr> <tr class="memdesc:adae3f59957ca328e1da5285cb8b02a72"><td class="mdescLeft"> </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> <tr class="separator:adae3f59957ca328e1da5285cb8b02a72"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5836d6a7a744791c35e5c17bdc394a87"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </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> <tr class="memdesc:a5836d6a7a744791c35e5c17bdc394a87"><td class="mdescLeft"> </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> <tr class="separator:a5836d6a7a744791c35e5c17bdc394a87"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae389835b97cd9382e7d6a6a075323376"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </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> <tr class="memdesc:ae389835b97cd9382e7d6a6a075323376"><td class="mdescLeft"> </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> <tr class="separator:ae389835b97cd9382e7d6a6a075323376"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa4362cb36c6629f9d8484739fd827748"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="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> <tr class="memdesc:aa4362cb36c6629f9d8484739fd827748"><td class="mdescLeft"> </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> <tr class="separator:aa4362cb36c6629f9d8484739fd827748"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a54f256c3abe811c52d58b4ff1b23f051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </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> <tr class="memdesc:a54f256c3abe811c52d58b4ff1b23f051"><td class="mdescLeft"> </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> <tr class="separator:a54f256c3abe811c52d58b4ff1b23f051"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae71cac352b00230848bde358f0fb05ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="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> <tr class="memdesc:ae71cac352b00230848bde358f0fb05ea"><td class="mdescLeft"> </td><td class="mdescRight">Splits a string into parts by using a delimiter string. <a href="#ae71cac352b00230848bde358f0fb05ea">More...</a><br /></td></tr> <tr class="separator:ae71cac352b00230848bde358f0fb05ea"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a52906455ae530c9cdc6812c8e6d9bdef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="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> <tr class="memdesc:a52906455ae530c9cdc6812c8e6d9bdef"><td class="mdescLeft"> </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> <tr class="separator:a52906455ae530c9cdc6812c8e6d9bdef"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af35272a8e5408c88ed3e25a3a98f0a82"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:af35272a8e5408c88ed3e25a3a98f0a82"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX strings with standard <code>memcmp()</code>. <a href="#af35272a8e5408c88ed3e25a3a98f0a82">More...</a><br /></td></tr> <tr class="separator:af35272a8e5408c88ed3e25a3a98f0a82"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aca8142fb823d253054e17c17cfca05e0"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:aca8142fb823d253054e17c17cfca05e0"><td class="mdescLeft"> </td><td class="mdescRight">Compares two UCX strings ignoring the case. <a href="#aca8142fb823d253054e17c17cfca05e0">More...</a><br /></td></tr> <tr class="separator:aca8142fb823d253054e17c17cfca05e0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a97dccce03af419596dbdd592ca46a164"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> <tr class="memdesc:a97dccce03af419596dbdd592ca46a164"><td class="mdescLeft"> </td><td class="mdescRight">Creates a duplicate of the specified string. <a href="#a97dccce03af419596dbdd592ca46a164">More...</a><br /></td></tr> <tr class="separator:a97dccce03af419596dbdd592ca46a164"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8fe58921f51eb1fde038472377e63014"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="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> <tr class="memdesc:a8fe58921f51eb1fde038472377e63014"><td class="mdescLeft"> </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> <tr class="separator:a8fe58921f51eb1fde038472377e63014"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">sstrtrim</a> (<a class="el" href="structsstr__t.html">sstr_t</a> string)</td></tr> <tr class="memdesc:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="mdescLeft"> </td><td class="mdescRight">Omits leading and trailing spaces. <a href="#ae2d6da564d3fce51f2e0cac580fdbc56">More...</a><br /></td></tr> <tr class="separator:ae2d6da564d3fce51f2e0cac580fdbc56"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad374b16eb1be8b48019debad9b9f268c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structscstr__t.html">scstr_t</a> </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> <tr class="memdesc:ad374b16eb1be8b48019debad9b9f268c"><td class="mdescLeft"> </td><td class="mdescRight">Omits leading and trailing spaces. <a href="#ad374b16eb1be8b48019debad9b9f268c">More...</a><br /></td></tr> <tr class="separator:ad374b16eb1be8b48019debad9b9f268c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a599ddc2f88dd1df68b72eefd91347393"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:a599ddc2f88dd1df68b72eefd91347393"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific prefix. <a href="#a599ddc2f88dd1df68b72eefd91347393">More...</a><br /></td></tr> <tr class="separator:a599ddc2f88dd1df68b72eefd91347393"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific suffix. <a href="#a1f0ae316a2afe85d5b4655e6ece6721a">More...</a><br /></td></tr> <tr class="separator:a1f0ae316a2afe85d5b4655e6ece6721a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific prefix, ignoring the case. <a href="#a3718ef4aa1e86cdb26bda2f07fb585df">More...</a><br /></td></tr> <tr class="separator:a3718ef4aa1e86cdb26bda2f07fb585df"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="memItemLeft" align="right" valign="top">int </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> <tr class="memdesc:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="mdescLeft"> </td><td class="mdescRight">Checks, if a string has a specific suffix, ignoring the case. <a href="#a6edb4b85f2b9efe79db7ffe6eccd7bc3">More...</a><br /></td></tr> <tr class="separator:a6edb4b85f2b9efe79db7ffe6eccd7bc3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abccf198bea3186ff2abb080cc88dcae6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> <tr class="memdesc:abccf198bea3186ff2abb080cc88dcae6"><td class="mdescLeft"> </td><td class="mdescRight">Returns a lower case version of a string. <a href="#abccf198bea3186ff2abb080cc88dcae6">More...</a><br /></td></tr> <tr class="separator:abccf198bea3186ff2abb080cc88dcae6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3cf1e557df7ab58d03c78832c4060276"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="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> <tr class="memdesc:a3cf1e557df7ab58d03c78832c4060276"><td class="mdescLeft"> </td><td class="mdescRight">Returns a lower case version of a string. <a href="#a3cf1e557df7ab58d03c78832c4060276">More...</a><br /></td></tr> <tr class="separator:a3cf1e557df7ab58d03c78832c4060276"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af3dd09ec9d11162fe0075f4e60f41240"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a> (<a class="el" href="structscstr__t.html">scstr_t</a> string)</td></tr> <tr class="memdesc:af3dd09ec9d11162fe0075f4e60f41240"><td class="mdescLeft"> </td><td class="mdescRight">Returns a upper case version of a string. <a href="#af3dd09ec9d11162fe0075f4e60f41240">More...</a><br /></td></tr> <tr class="separator:af3dd09ec9d11162fe0075f4e60f41240"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aea94613eb74668cc05d365803d32bfad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structsstr__t.html">sstr_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="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> <tr class="memdesc:aea94613eb74668cc05d365803d32bfad"><td class="mdescLeft"> </td><td class="mdescRight">Returns a upper case version of a string. <a href="#aea94613eb74668cc05d365803d32bfad">More...</a><br /></td></tr> <tr class="separator:aea94613eb74668cc05d365803d32bfad"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Bounded string implementation. </p> <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> <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> <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> <dl class="section author"><dt>Author</dt><dd>Mike Becker </dd> <dd> Olaf Wintermann </dd></dl> </div><h2 class="groupheader">Macro Definition Documentation</h2> <a id="a7d5bc48708405a28b23667e32dfcecae"></a> <h2 class="memtitle"><span class="permalink"><a href="#a7d5bc48708405a28b23667e32dfcecae">◆ </a></span>PRIsstr</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define PRIsstr   ".*s"</td> </tr> </table> </div><div class="memdoc"> <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> </div> </div> <a id="a8fa17c8cf4c36df48f4108c36da8573e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8fa17c8cf4c36df48f4108c36da8573e">◆ </a></span>S</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define S</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">s</td><td>)</td> <td>   <a class="el" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>(s, sizeof(s)-1)</td> </tr> </table> </div><div class="memdoc"> <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> </div> </div> <a id="a7d261dd0bc358c957a368bc058c1ce53"></a> <h2 class="memtitle"><span class="permalink"><a href="#a7d261dd0bc358c957a368bc058c1ce53">◆ </a></span>SC</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SC</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">s</td><td>)</td> <td>   <a class="el" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a>(s, sizeof(s)-1)</td> </tr> </table> </div><div class="memdoc"> <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> </div> </div> <a id="ad4293350a9b39a23a6546bd0fef2aeed"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad4293350a9b39a23a6546bd0fef2aeed">◆ </a></span>SCSTR</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SCSTR</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">str</td><td>)</td> <td>   <a class="el" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a>(str)</td> </tr> </table> </div><div class="memdoc"> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">str</td><td>some UCX string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the an immutable version of the provided string </dd></dl> </div> </div> <a id="a23ed51e87385886bb65e8cd19c839362"></a> <h2 class="memtitle"><span class="permalink"><a href="#a23ed51e87385886bb65e8cd19c839362">◆ </a></span>SFMT</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SFMT</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">s</td><td>)</td> <td>   (int) (s).length, (s).ptr</td> </tr> </table> </div><div class="memdoc"> <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> </div> </div> <a id="a81b0f6df794152c2038703d4e9d0ad59"></a> <h2 class="memtitle"><span class="permalink"><a href="#a81b0f6df794152c2038703d4e9d0ad59">◆ </a></span>sstrcasecmp</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrcasecmp</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">s1, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">s2 </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Compares two UCX strings ignoring the case. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">s1</td><td>the first string </td></tr> <tr><td class="paramname">s2</td><td>the second string </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="acd3dc64e90db9b4046e14f115a815ff4"></a> <h2 class="memtitle"><span class="permalink"><a href="#acd3dc64e90db9b4046e14f115a815ff4">◆ </a></span>sstrcaseprefix</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrcaseprefix</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">prefix </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Checks, if a string has a specific prefix, ignoring the case. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to check </td></tr> <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> </div> </div> <a id="a57eabd4862d531dd685bbf2feb8468bf"></a> <h2 class="memtitle"><span class="permalink"><a href="#a57eabd4862d531dd685bbf2feb8468bf">◆ </a></span>sstrcasesuffix</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrcasesuffix</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">suffix </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Checks, if a string has a specific suffix, ignoring the case. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to check </td></tr> <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> </div> </div> <a id="a6af8a4c347c7fdb5980d4c4803be2759"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6af8a4c347c7fdb5980d4c4803be2759">◆ </a></span>sstrcat</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrcat</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">count, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">s1, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Concatenates two or more strings. </p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> <tr><td class="paramname">s1</td><td>first string </td></tr> <tr><td class="paramname">...</td><td>all remaining strings </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the concatenated string </dd></dl> </div> </div> <a id="a6068d460f9bc05962666a917d26568b3"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6068d460f9bc05962666a917d26568b3">◆ </a></span>sstrcat_a</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrcat_a</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">alloc, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">count, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">s1, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <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> <p>The resulting string must be freed by the allocators <code>free()</code> implementation.</p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">alloc</td><td>the allocator to use </td></tr> <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> <tr><td class="paramname">s1</td><td>first string </td></tr> <tr><td class="paramname">...</td><td>all remaining strings </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the concatenated string</dd></dl> <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> </div> </div> <a id="a7ae7156c8de57454ca38d306100b8160"></a> <h2 class="memtitle"><span class="permalink"><a href="#a7ae7156c8de57454ca38d306100b8160">◆ </a></span>sstrcmp</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrcmp</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">s1, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">s2 </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Compares two UCX strings with standard <code>memcmp()</code>. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">s1</td><td>the first string </td></tr> <tr><td class="paramname">s2</td><td>the second string </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="accbfd2b459a028d7af9fb7df6f977d80"></a> <h2 class="memtitle"><span class="permalink"><a href="#accbfd2b459a028d7af9fb7df6f977d80">◆ </a></span>sstrdup</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrdup</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string</td><td>)</td> <td>   <a class="el" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> </tr> </table> </div><div class="memdoc"> <p>Creates a duplicate of the specified string. </p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> <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> </div> </div> <a id="a8d098baada4ea9ad5d8b6343b5aec007"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8d098baada4ea9ad5d8b6343b5aec007">◆ </a></span>sstrdup_a</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrdup_a</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">allocator, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">string </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <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> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <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> <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> <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> </div> </div> <a id="a89343ea3e719f00ee802b557db57b769"></a> <h2 class="memtitle"><span class="permalink"><a href="#a89343ea3e719f00ee802b557db57b769">◆ </a></span>sstrlower</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrlower</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string</td><td>)</td> <td>   <a class="el" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> </tr> </table> </div><div class="memdoc"> <p>Returns a lower case version of a string. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the input string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> </div> </div> <a id="a4bb4742fe71115f493991d307cb22b23"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4bb4742fe71115f493991d307cb22b23">◆ </a></span>sstrlower_a</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrlower_a</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">allocator, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">string </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Returns a lower case version of a string. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> <tr><td class="paramname">string</td><td>the input string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> </div> </div> <a id="a33fa945acc5ac2ce962e5ef13cf1638c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a33fa945acc5ac2ce962e5ef13cf1638c">◆ </a></span>sstrnlen</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrnlen</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">count, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <a class="el" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a>(count, __VA_ARGS__)</td> </tr> </table> </div><div class="memdoc"> <p>Returns the accumulated length of all specified strings. </p> <p><b>Attention:</b> if the count argument is larger than the count of the specified strings, the behavior is undefined.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">count</td><td>the total number of specified strings </td></tr> <tr><td class="paramname">...</td><td>all strings </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the cumulated length of all strings </dd></dl> </div> </div> <a id="a7d73b66256384b26927e787318fdefa2"></a> <h2 class="memtitle"><span class="permalink"><a href="#a7d73b66256384b26927e787318fdefa2">◆ </a></span>sstrprefix</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrprefix</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">prefix </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Checks, if a string has a specific prefix. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to check </td></tr> <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> </div> </div> <a id="aa696932213265e10f864678686f4ccde"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa696932213265e10f864678686f4ccde">◆ </a></span>sstrscstr</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrscstr</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">match </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <a class="el" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td> </tr> </table> </div><div class="memdoc"> <p>Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. </p> <p>If the string does not contain the other string, an empty string is returned.</p> <p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="aa929984004c3576bfafb95031aca8eb7"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa929984004c3576bfafb95031aca8eb7">◆ </a></span>sstrsplit</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrsplit</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">delim, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">count </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Splits a string into parts by using a delimiter string. </p> <p>This function will return <code>NULL</code>, if one of the following happens: </p><ul> <li> the string length is zero </li> <li> the delimeter length is zero </li> <li> the string equals the delimeter </li> <li> memory allocation fails </li> </ul> <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> <p>The integer referenced by <code>count</code> is also used as output and is set to </p><ul> <li> -2, on memory allocation errors </li> <li> -1, if either the string or the delimiter is an empty string </li> <li> 0, if the string equals the delimiter </li> <li> 1, if the string does not contain the delimiter </li> <li> the count of array items, otherwise </li> </ul> <p>If the string starts with the delimiter, the first item of the resulting array will be an empty string.</p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to split </td></tr> <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> <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> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> <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> </div> </div> <a id="ac9f69fa3a17e26a3a5f9d985b5844601"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac9f69fa3a17e26a3a5f9d985b5844601">◆ </a></span>sstrsplit_a</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrsplit_a</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">allocator, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">string, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">delim, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">count </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <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> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> used for allocating memory </td></tr> <tr><td class="paramname">string</td><td>the string to split </td></tr> <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> <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> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> <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> </div> </div> <a id="a9d03be026afa9447c52bb34b9e3b895a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9d03be026afa9447c52bb34b9e3b895a">◆ </a></span>sstrstr</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrstr</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">match </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <a class="el" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a>(string, <a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(match))</td> </tr> </table> </div><div class="memdoc"> <p>Returns a substring starting at the location of the first occurrence of the specified string. </p> <p>If the string does not contain the other string, an empty string is returned.</p> <p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="ac6a5246f26be2e8a5f34d8995b7ec14e"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac6a5246f26be2e8a5f34d8995b7ec14e">◆ </a></span>sstrsuffix</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrsuffix</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">suffix </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <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> </table> </div><div class="memdoc"> <p>Checks, if a string has a specific suffix. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to check </td></tr> <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> </div> </div> <a id="a084fe5a3a90d6fb6b15ecda03bb30824"></a> <h2 class="memtitle"><span class="permalink"><a href="#a084fe5a3a90d6fb6b15ecda03bb30824">◆ </a></span>sstrupper</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrupper</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">string</td><td>)</td> <td>   <a class="el" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a>(<a class="el" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">SCSTR</a>(string))</td> </tr> </table> </div><div class="memdoc"> <p>Returns a upper case version of a string. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the input string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> </div> </div> <a id="a5f0dd83c0176b812fb428004b2877a34"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5f0dd83c0176b812fb428004b2877a34">◆ </a></span>sstrupper_a</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define sstrupper_a</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">allocator, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">string </td> </tr> <tr> <td></td> <td>)</td> <td></td><td>   <a class="el" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a>(allocator, string)</td> </tr> </table> </div><div class="memdoc"> <p>Returns a upper case version of a string. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> <tr><td class="paramname">string</td><td>the input string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a id="a2b1d6f1eca1c1549f37107b9c026c5a6"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2b1d6f1eca1c1549f37107b9c026c5a6">◆ </a></span>scstr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstr </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>cstring</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <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> <p>The length is implicitly inferred by using a call to <code>strlen()</code>.</p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> </table> </dd> </dl> <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> <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> </div> </div> <a id="aca8142fb823d253054e17c17cfca05e0"></a> <h2 class="memtitle"><span class="permalink"><a href="#aca8142fb823d253054e17c17cfca05e0">◆ </a></span>scstrcasecmp()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int scstrcasecmp </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>s1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>s2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two UCX strings ignoring the case. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">s1</td><td>the first string </td></tr> <tr><td class="paramname">s2</td><td>the second string </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="a3718ef4aa1e86cdb26bda2f07fb585df"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3718ef4aa1e86cdb26bda2f07fb585df">◆ </a></span>scstrcaseprefix()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int scstrcaseprefix </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>prefix</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Checks, if a string has a specific prefix, ignoring the case. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to check </td></tr> <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> </div> </div> <a id="a6edb4b85f2b9efe79db7ffe6eccd7bc3"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6edb4b85f2b9efe79db7ffe6eccd7bc3">◆ </a></span>scstrcasesuffix()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int scstrcasesuffix </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>suffix</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Checks, if a string has a specific suffix, ignoring the case. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to check </td></tr> <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> </div> </div> <a id="a7376842c19e954b49215da81ef76ac0c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a7376842c19e954b49215da81ef76ac0c">◆ </a></span>scstrcat()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrcat </td> <td>(</td> <td class="paramtype">size_t </td> <td class="paramname"><em>count</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>s1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Concatenates two or more strings. </p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> <tr><td class="paramname">s1</td><td>first string </td></tr> <tr><td class="paramname">...</td><td>all remaining strings </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the concatenated string </dd></dl> </div> </div> <a id="abacce4cbd6f70fcb6453904ef08b02e9"></a> <h2 class="memtitle"><span class="permalink"><a href="#abacce4cbd6f70fcb6453904ef08b02e9">◆ </a></span>scstrcat_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrcat_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>alloc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>count</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>s1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>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> <p>The resulting string must be freed by the allocators <code>free()</code> implementation.</p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">alloc</td><td>the allocator to use </td></tr> <tr><td class="paramname">count</td><td>the total number of strings to concatenate </td></tr> <tr><td class="paramname">s1</td><td>first string </td></tr> <tr><td class="paramname">...</td><td>all remaining strings </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the concatenated string</dd></dl> <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> </div> </div> <a id="a5836d6a7a744791c35e5c17bdc394a87"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5836d6a7a744791c35e5c17bdc394a87">◆ </a></span>scstrchr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrchr </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>chr</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns an immutable substring starting at the location of the first occurrence of the specified character. </p> <p>If the string does not contain the character, an empty string is returned.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> <tr><td class="paramname">chr</td><td>the character to locate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a substring starting at the first location of <code>chr</code></dd></dl> <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> </div> </div> <a id="af35272a8e5408c88ed3e25a3a98f0a82"></a> <h2 class="memtitle"><span class="permalink"><a href="#af35272a8e5408c88ed3e25a3a98f0a82">◆ </a></span>scstrcmp()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int scstrcmp </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>s1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>s2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compares two UCX strings with standard <code>memcmp()</code>. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">s1</td><td>the first string </td></tr> <tr><td class="paramname">s2</td><td>the second string </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="a97dccce03af419596dbdd592ca46a164"></a> <h2 class="memtitle"><span class="permalink"><a href="#a97dccce03af419596dbdd592ca46a164">◆ </a></span>scstrdup()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrdup </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Creates a duplicate of the specified string. </p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> <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> </div> </div> <a id="a8fe58921f51eb1fde038472377e63014"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8fe58921f51eb1fde038472377e63014">◆ </a></span>scstrdup_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrdup_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <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> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <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> <tr><td class="paramname">string</td><td>the string to duplicate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a duplicate of the string </dd></dl> <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> </div> </div> <a id="abccf198bea3186ff2abb080cc88dcae6"></a> <h2 class="memtitle"><span class="permalink"><a href="#abccf198bea3186ff2abb080cc88dcae6">◆ </a></span>scstrlower()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrlower </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a lower case version of a string. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the input string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> <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> </div> </div> <a id="a3cf1e557df7ab58d03c78832c4060276"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3cf1e557df7ab58d03c78832c4060276">◆ </a></span>scstrlower_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrlower_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a lower case version of a string. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> <tr><td class="paramname">string</td><td>the input string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the resulting lower case string </dd></dl> <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> </div> </div> <a id="ae594f6e222ea394cef6a26c0dfad000d"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae594f6e222ea394cef6a26c0dfad000d">◆ </a></span>scstrn()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrn </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>cstring</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>length</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> <tr><td class="paramname">length</td><td>the length of the string </td></tr> </table> </dd> </dl> <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> <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> </div> </div> <a id="ac1b000030d6d197eec48c15a182055d5"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac1b000030d6d197eec48c15a182055d5">◆ </a></span>scstrnlen()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">size_t scstrnlen </td> <td>(</td> <td class="paramtype">size_t </td> <td class="paramname"><em>count</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the accumulated length of all specified strings. </p> <p><b>Attention:</b> if the count argument is larger than the count of the specified strings, the behavior is undefined.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">count</td><td>the total number of specified strings </td></tr> <tr><td class="paramname">...</td><td>all strings </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the accumulated length of all strings </dd></dl> </div> </div> <a id="a599ddc2f88dd1df68b72eefd91347393"></a> <h2 class="memtitle"><span class="permalink"><a href="#a599ddc2f88dd1df68b72eefd91347393">◆ </a></span>scstrprefix()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int scstrprefix </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>prefix</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Checks, if a string has a specific prefix. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to check </td></tr> <tr><td class="paramname">prefix</td><td>the prefix the string should have </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified prefix, 0 otherwise </dd></dl> </div> </div> <a id="ae389835b97cd9382e7d6a6a075323376"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae389835b97cd9382e7d6a6a075323376">◆ </a></span>scstrrchr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrrchr </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>chr</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns an immutable substring starting at the location of the last occurrence of the specified character. </p> <p>If the string does not contain the character, an empty string is returned.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> <tr><td class="paramname">chr</td><td>the character to locate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a substring starting at the last location of <code>chr</code></dd></dl> <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> </div> </div> <a id="a54f256c3abe811c52d58b4ff1b23f051"></a> <h2 class="memtitle"><span class="permalink"><a href="#a54f256c3abe811c52d58b4ff1b23f051">◆ </a></span>scstrscstr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrscstr </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>match</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns an immutable substring starting at the location of the first occurrence of the specified immutable string. </p> <p>If the string does not contain the other string, an empty string is returned.</p> <p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="ae71cac352b00230848bde358f0fb05ea"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae71cac352b00230848bde358f0fb05ea">◆ </a></span>scstrsplit()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a>* scstrsplit </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>delim</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">ssize_t * </td> <td class="paramname"><em>count</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Splits a string into parts by using a delimiter string. </p> <p>This function will return <code>NULL</code>, if one of the following happens: </p><ul> <li> the string length is zero </li> <li> the delimeter length is zero </li> <li> the string equals the delimeter </li> <li> memory allocation fails </li> </ul> <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> <p>The integer referenced by <code>count</code> is also used as output and is set to </p><ul> <li> -2, on memory allocation errors </li> <li> -1, if either the string or the delimiter is an empty string </li> <li> 0, if the string equals the delimiter </li> <li> 1, if the string does not contain the delimiter </li> <li> the count of array items, otherwise </li> </ul> <p>If the string starts with the delimiter, the first item of the resulting array will be an empty string.</p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to split </td></tr> <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> <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> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> <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> </div> </div> <a id="a52906455ae530c9cdc6812c8e6d9bdef"></a> <h2 class="memtitle"><span class="permalink"><a href="#a52906455ae530c9cdc6812c8e6d9bdef">◆ </a></span>scstrsplit_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a>* scstrsplit_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>delim</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">ssize_t * </td> <td class="paramname"><em>count</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <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> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the <a class="el" href="structUcxAllocator.html" title="UCX allocator data structure containing memory management functions. ">UcxAllocator</a> used for allocating memory </td></tr> <tr><td class="paramname">string</td><td>the string to split </td></tr> <tr><td class="paramname">delim</td><td>the delimiter string </td></tr> <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> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="structsstr__t.html" title="The UCX string structure. ">sstr_t</a> array containing the split strings or <code>NULL</code> on error</dd></dl> <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> </div> </div> <a id="aa4362cb36c6629f9d8484739fd827748"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa4362cb36c6629f9d8484739fd827748">◆ </a></span>scstrsstr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrsstr </td> <td>(</td> <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>match</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a substring starting at the location of the first occurrence of the specified string. </p> <p>If the string does not contain the other string, an empty string is returned.</p> <p>If <code>match</code> is an empty string, the complete <code>string</code> is returned.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to be scanned </td></tr> <tr><td class="paramname">match</td><td>string containing the sequence of characters to match </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="a9a6c8d8db0dda0037c3c852cce1a5060"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9a6c8d8db0dda0037c3c852cce1a5060">◆ </a></span>scstrsubs()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrsubs </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>start</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a substring of an immutable string starting at the specified location. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>input string </td></tr> <tr><td class="paramname">start</td><td>start location of the substring </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code></dd></dl> <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> <dd> <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> </div> </div> <a id="ad50f0f67b906fad0744f46bcb51e144b"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad50f0f67b906fad0744f46bcb51e144b">◆ </a></span>scstrsubsl()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrsubsl </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>length</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a substring of an immutable string with a maximum length starting at the specified location. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>input string </td></tr> <tr><td class="paramname">start</td><td>start location of the substring </td></tr> <tr><td class="paramname">length</td><td>the maximum length of the substring </td></tr> </table> </dd> </dl> <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> <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> <dd> <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> </div> </div> <a id="a1f0ae316a2afe85d5b4655e6ece6721a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1f0ae316a2afe85d5b4655e6ece6721a">◆ </a></span>scstrsuffix()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int scstrsuffix </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>suffix</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Checks, if a string has a specific suffix. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string to check </td></tr> <tr><td class="paramname">suffix</td><td>the suffix the string should have </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1, if and only if the string has the specified suffix, 0 otherwise </dd></dl> </div> </div> <a id="ad374b16eb1be8b48019debad9b9f268c"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad374b16eb1be8b48019debad9b9f268c">◆ </a></span>scstrtrim()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> scstrtrim </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Omits leading and trailing spaces. </p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string that shall be trimmed </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="af3dd09ec9d11162fe0075f4e60f41240"></a> <h2 class="memtitle"><span class="permalink"><a href="#af3dd09ec9d11162fe0075f4e60f41240">◆ </a></span>scstrupper()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrupper </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a upper case version of a string. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the input string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> <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> </div> </div> <a id="aea94613eb74668cc05d365803d32bfad"></a> <h2 class="memtitle"><span class="permalink"><a href="#aea94613eb74668cc05d365803d32bfad">◆ </a></span>scstrupper_a()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> scstrupper_a </td> <td>(</td> <td class="paramtype"><a class="el" href="structUcxAllocator.html">UcxAllocator</a> * </td> <td class="paramname"><em>allocator</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>string</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a upper case version of a string. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">allocator</td><td>the allocator used for duplicating the string </td></tr> <tr><td class="paramname">string</td><td>the input string </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the resulting upper case string </dd></dl> <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> </div> </div> <a id="a539eb7059251a051ee5d179526a23e9a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a539eb7059251a051ee5d179526a23e9a">◆ </a></span>sstr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstr </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"><em>cstring</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <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> <p>The length is implicitly inferred by using a call to <code>strlen()</code>.</p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> </table> </dd> </dl> <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> <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> </div> </div> <a id="af80898a0b75955eb2579298c3ae2c481"></a> <h2 class="memtitle"><span class="permalink"><a href="#af80898a0b75955eb2579298c3ae2c481">◆ </a></span>sstrchr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrchr </td> <td>(</td> <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>chr</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a substring starting at the location of the first occurrence of the specified character. </p> <p>If the string does not contain the character, an empty string is returned.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> <tr><td class="paramname">chr</td><td>the character to locate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a substring starting at the first location of <code>chr</code></dd></dl> <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> </div> </div> <a id="a2744c38ac44abf3e01fa059056dcf36c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2744c38ac44abf3e01fa059056dcf36c">◆ </a></span>sstrn()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrn </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"><em>cstring</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>length</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <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> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">cstring</td><td>the C string to wrap </td></tr> <tr><td class="paramname">length</td><td>the length of the string </td></tr> </table> </dd> </dl> <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> <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> <dd> <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> </div> </div> <a id="adae3f59957ca328e1da5285cb8b02a72"></a> <h2 class="memtitle"><span class="permalink"><a href="#adae3f59957ca328e1da5285cb8b02a72">◆ </a></span>sstrrchr()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrrchr </td> <td>(</td> <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>chr</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a substring starting at the location of the last occurrence of the specified character. </p> <p>If the string does not contain the character, an empty string is returned.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string where to locate the character </td></tr> <tr><td class="paramname">chr</td><td>the character to locate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a substring starting at the last location of <code>chr</code></dd></dl> <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> </div> </div> <a id="a5eb9e0e1f26cf7fbecc038cd90e8b258"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5eb9e0e1f26cf7fbecc038cd90e8b258">◆ </a></span>sstrsubs()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrsubs </td> <td>(</td> <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>start</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a substring starting at the specified location. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>input string </td></tr> <tr><td class="paramname">start</td><td>start location of the substring </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a substring of <code>string</code> starting at <code>start</code></dd></dl> <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> <dd> <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> </div> </div> <a id="a78925c91af54f23cebd20ff99ef4331a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a78925c91af54f23cebd20ff99ef4331a">◆ </a></span>sstrsubsl()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrsubsl </td> <td>(</td> <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> <td class="paramname"><em>string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>length</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a substring with the given length starting at the specified location. </p> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>input string </td></tr> <tr><td class="paramname">start</td><td>start location of the substring </td></tr> <tr><td class="paramname">length</td><td>the maximum length of the substring </td></tr> </table> </dd> </dl> <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> <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> <dd> <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> </div> </div> <a id="ae2d6da564d3fce51f2e0cac580fdbc56"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae2d6da564d3fce51f2e0cac580fdbc56">◆ </a></span>sstrtrim()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structsstr__t.html">sstr_t</a> sstrtrim </td> <td>(</td> <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> <td class="paramname"><em>string</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Omits leading and trailing spaces. </p> <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> <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> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">string</td><td>the string that shall be trimmed </td></tr> </table> </dd> </dl> <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> </div> </div> <a id="a69d5e3eeec783cc43314df71248768f5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a69d5e3eeec783cc43314df71248768f5">◆ </a></span>ucx_sc2sc()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_sc2sc </td> <td>(</td> <td class="paramtype"><a class="el" href="structscstr__t.html">scstr_t</a> </td> <td class="paramname"><em>str</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <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> <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> <p><b>Do not use this function manually.</b></p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <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> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the argument itself </dd></dl> </div> </div> <a id="aedeb5d7bddda54116101a8d68af8c56d"></a> <h2 class="memtitle"><span class="permalink"><a href="#aedeb5d7bddda54116101a8d68af8c56d">◆ </a></span>ucx_ss2c_s()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_ss2c_s </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <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> <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> <p><b>Do not use this function manually.</b></p> <dl class="section return"><dt>Returns</dt><dd>the an immutable version of the provided string </dd></dl> </div> </div> <a id="a9ce5ad1b2aa2dbeba204d452c2e64359"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9ce5ad1b2aa2dbeba204d452c2e64359">◆ </a></span>ucx_ss2sc()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structscstr__t.html">scstr_t</a> ucx_ss2sc </td> <td>(</td> <td class="paramtype"><a class="el" href="structsstr__t.html">sstr_t</a> </td> <td class="paramname"><em>str</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <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> <p>Used <b>internally</b> to convert a UCX string to an immutable UCX string.</p> <p><b>Do not use this function manually.</b></p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <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> </table> </dd> </dl> <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> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Thu Dec 19 2019 19:58:24 for ucx by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.13 </small></address> </body> </html>