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