docs/api-2.1/string_8h_source.html

Mon, 08 Aug 2022 17:12:00 +0200

author
Mike Becker <universe@uap-core.de>
date
Mon, 08 Aug 2022 17:12:00 +0200
changeset 572
f0f99dd06d9f
parent 390
d345541018fa
permissions
-rw-r--r--

#201 - remove dangerous allocator config

There is no plausible use case, except using the testing
allocator in the test case, and having the possibility to
specify any allocator (including another mempool) causes
more harm than good.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ucx: /home/mike/workspace/c/ucx/src/ucx/string.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="uaplogo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">ucx
   </div>
   <div id="projectbrief">UAP Common Extensions</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_69f4ea29401808fe6229564976cde3ce.html">ucx</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">string.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="string_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *   1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *      notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *   2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *      notice, this list of conditions and the following disclaimer in the</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *      documentation and/or other materials provided with the distribution.</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#ifndef UCX_STRING_H</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#define UCX_STRING_H</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ucx_8h.html">ucx.h</a>&quot;</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="allocator_8h.html">allocator.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &lt;stddef.h&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment"> * Use this macro to disable the shortcuts if you experience macro collision.</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#ifndef UCX_NO_SSTR_SHORTCUTS</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="string_8h.html#a9037956cca97a4e84b642f17f3d10378">   63</a></span>&#160;<span class="preprocessor">#define ST(s) { s, sizeof(s)-1 }</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="string_8h.html#a8fa17c8cf4c36df48f4108c36da8573e">   66</a></span>&#160;<span class="preprocessor">#define S(s) sstrn(s, sizeof(s)-1)</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="string_8h.html#a7d261dd0bc358c957a368bc058c1ce53">   69</a></span>&#160;<span class="preprocessor">#define SC(s) scstrn(s, sizeof(s)-1)</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* UCX_NO_SSTR_SHORTCUTS */</span><span class="preprocessor"></span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="comment"> * Use this macro to disable the format macros.</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#ifndef UCX_NO_SSTR_FORMAT_MACROS</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="string_8h.html#a23ed51e87385886bb65e8cd19c839362">   77</a></span>&#160;<span class="preprocessor">#define SFMT(s) (int) (s).length, (s).ptr</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="string_8h.html#a7d5bc48708405a28b23667e32dfcecae">   80</a></span>&#160;<span class="preprocessor">#define PRIsstr &quot;.*s&quot;</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* UCX_NO_SSTR_FORMAT_MACROS */</span><span class="preprocessor"></span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#ifdef  __cplusplus</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="structsstr__t.html">   90</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">   93</a></span>&#160;    <span class="keywordtype">char</span> *<a class="code" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">ptr</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">   95</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">length</a>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;} <a class="code" href="structsstr__t.html">sstr_t</a>;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structscstr__t.html">  101</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">  104</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">ptr</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">  106</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">length</a>;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;} <a class="code" href="structscstr__t.html">scstr_t</a>;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="preprocessor">#ifdef  __cplusplus</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;}</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="keyword">inline</span> <a class="code" href="structscstr__t.html">scstr_t</a> s2scstr(<a class="code" href="structsstr__t.html">sstr_t</a> s) {</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <a class="code" href="structscstr__t.html">scstr_t</a> c;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    c.<a class="code" href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">ptr</a> = s.<a class="code" href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">ptr</a>;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    c.<a class="code" href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">length</a> = s.<a class="code" href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">length</a>;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;}</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="keyword">inline</span> <a class="code" href="structscstr__t.html">scstr_t</a> s2scstr(<a class="code" href="structscstr__t.html">scstr_t</a> str) {</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="keywordflow">return</span> str;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;}</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="preprocessor">#define SCSTR(s) s2scstr(s)</span></div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a69d5e3eeec783cc43314df71248768f5">ucx_sc2sc</a>(<a class="code" href="structscstr__t.html">scstr_t</a> str);</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359">ucx_ss2sc</a>(<a class="code" href="structsstr__t.html">sstr_t</a> str);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="preprocessor">#if __STDC_VERSION__ &gt;= 201112L</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="preprocessor">#define SCSTR(str) _Generic(str, sstr_t: ucx_ss2sc, scstr_t: ucx_sc2sc)(str)</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) || defined(__clang__)</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="preprocessor">#define SCSTR(str) __builtin_choose_expr( \</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="preprocessor">        __builtin_types_compatible_p(typeof(str), sstr_t), \</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="preprocessor">        ucx_ss2sc, \</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="preprocessor">        ucx_sc2sc)(str)</span></div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="preprocessor">#elif defined(__sun)</span></div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="preprocessor">#define SCSTR(str) ({typeof(str) ucx_tmp_var_str = str; \</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="preprocessor">    scstr_t ucx_tmp_var_c; \</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="preprocessor">    ucx_tmp_var_c.ptr = ucx_tmp_var_str.ptr;\</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="preprocessor">    ucx_tmp_var_c.length = ucx_tmp_var_str.length;\</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor">    ucx_tmp_var_c; })</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="preprocessor">#else </span><span class="comment">/* no generics and no builtins */</span><span class="preprocessor"></span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a>();</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="string_8h.html#ad4293350a9b39a23a6546bd0fef2aeed">  233</a></span>&#160;<span class="preprocessor">#define SCSTR(str) ucx_ss2c_s(str)</span></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* C11 feature test */</span><span class="preprocessor"></span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* C++ */</span><span class="preprocessor"></span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="preprocessor">#ifdef  __cplusplus</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">sstr</a>(<span class="keywordtype">char</span> *cstring);</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a>(<span class="keywordtype">char</span> *cstring, <span class="keywordtype">size_t</span> length);</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">scstr</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *cstring);</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *cstring, <span class="keywordtype">size_t</span> length);</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a>(<span class="keywordtype">size_t</span> count, ...);</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="string_8h.html#a33fa945acc5ac2ce962e5ef13cf1638c">  329</a></span>&#160;<span class="preprocessor">#define sstrnlen(count, ...) scstrnlen(count, __VA_ARGS__)</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a>(<span class="keywordtype">size_t</span> count, <a class="code" href="structscstr__t.html">scstr_t</a> s1, ...);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="string_8h.html#a6af8a4c347c7fdb5980d4c4803be2759">  361</a></span>&#160;<span class="preprocessor">#define sstrcat(count, s1, ...) scstrcat(count, SCSTR(s1), __VA_ARGS__)</span></div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *alloc, <span class="keywordtype">size_t</span> count, <a class="code" href="structscstr__t.html">scstr_t</a> s1, ...);</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="string_8h.html#a6068d460f9bc05962666a917d26568b3">  399</a></span>&#160;<span class="preprocessor">#define sstrcat_a(alloc, count, s1, ...) \</span></div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;<span class="preprocessor">    scstrcat_a(alloc, count, SCSTR(s1), __VA_ARGS__)</span></div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">sstrsubs</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">size_t</span> start);</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a">sstrsubsl</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">size_t</span> start, <span class="keywordtype">size_t</span> length);</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060">scstrsubs</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">size_t</span> start);</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b">scstrsubsl</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">size_t</span> start, <span class="keywordtype">size_t</span> length);</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">sstrchr</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">int</span> chr);</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">sstrrchr</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">int</span> chr);</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87">scstrchr</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">int</span> chr);</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#ae389835b97cd9382e7d6a6a075323376">scstrrchr</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <span class="keywordtype">int</span> chr);</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> match);</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="string_8h.html#a9d03be026afa9447c52bb34b9e3b895a">  560</a></span>&#160;<span class="preprocessor">#define sstrstr(string, match) scstrsstr(string, SCSTR(match))</span></div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> match);</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="string_8h.html#aa696932213265e10f864678686f4ccde">  594</a></span>&#160;<span class="preprocessor">#define sstrscstr(string, match) scstrscstr(string, SCSTR(match))</span></div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a>* <a class="code" href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> delim, ssize_t *count);</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="string_8h.html#aa929984004c3576bfafb95031aca8eb7">  692</a></span>&#160;<span class="preprocessor">#define sstrsplit(string, delim, count) \</span></div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;<span class="preprocessor">    scstrsplit(SCSTR(string), SCSTR(delim), count)</span></div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a>* <a class="code" href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> delim,</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;        ssize_t *count);</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="string_8h.html#ac9f69fa3a17e26a3a5f9d985b5844601">  736</a></span>&#160;<span class="preprocessor">#define sstrsplit_a(allocator, string, delim, count) \</span></div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;<span class="preprocessor">    scstrsplit_a(allocator, SCSTR(string), SCSTR(delim), count)</span></div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;<span class="keywordtype">int</span> <a class="code" href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a>(<a class="code" href="structscstr__t.html">scstr_t</a> s1, <a class="code" href="structscstr__t.html">scstr_t</a> s2);</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;</div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="string_8h.html#a7ae7156c8de57454ca38d306100b8160">  765</a></span>&#160;<span class="preprocessor">#define sstrcmp(s1, s2) scstrcmp(SCSTR(s1), SCSTR(s2))</span></div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;<span class="keywordtype">int</span> <a class="code" href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a>(<a class="code" href="structscstr__t.html">scstr_t</a> s1, <a class="code" href="structscstr__t.html">scstr_t</a> s2);</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="string_8h.html#a81b0f6df794152c2038703d4e9d0ad59">  795</a></span>&#160;<span class="preprocessor">#define sstrcasecmp(s1, s2) scstrcasecmp(SCSTR(s1), SCSTR(s2))</span></div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno"><a class="line" href="string_8h.html#accbfd2b459a028d7af9fb7df6f977d80">  827</a></span>&#160;<span class="preprocessor">#define sstrdup(string) scstrdup(SCSTR(string))</span></div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;</div><div class="line"><a name="l00863"></a><span class="lineno"><a class="line" href="string_8h.html#a8d098baada4ea9ad5d8b6343b5aec007">  863</a></span>&#160;<span class="preprocessor">#define sstrdup_a(allocator, string) scstrdup_a(allocator, SCSTR(string))</span></div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">sstrtrim</a>(<a class="code" href="structsstr__t.html">sstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;<a class="code" href="structscstr__t.html">scstr_t</a> <a class="code" href="string_8h.html#ad374b16eb1be8b48019debad9b9f268c">scstrtrim</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;<span class="keywordtype">int</span> <a class="code" href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> prefix);</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;</div><div class="line"><a name="l00920"></a><span class="lineno"><a class="line" href="string_8h.html#a7d73b66256384b26927e787318fdefa2">  920</a></span>&#160;<span class="preprocessor">#define sstrprefix(string, prefix) scstrprefix(SCSTR(string), SCSTR(prefix))</span></div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;<span class="keywordtype">int</span> <a class="code" href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> suffix);</div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;</div><div class="line"><a name="l00938"></a><span class="lineno"><a class="line" href="string_8h.html#ac6a5246f26be2e8a5f34d8995b7ec14e">  938</a></span>&#160;<span class="preprocessor">#define sstrsuffix(string, suffix) scstrsuffix(SCSTR(string), SCSTR(suffix))</span></div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;<span class="keywordtype">int</span> <a class="code" href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> prefix);</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;</div><div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="string_8h.html#acd3dc64e90db9b4046e14f115a815ff4">  956</a></span>&#160;<span class="preprocessor">#define sstrcaseprefix(string, prefix) \</span></div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;<span class="preprocessor">  scstrcaseprefix(SCSTR(string), SCSTR(prefix))</span></div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;<span class="keywordtype">int</span> <a class="code" href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>, <a class="code" href="structscstr__t.html">scstr_t</a> suffix);</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;</div><div class="line"><a name="l00975"></a><span class="lineno"><a class="line" href="string_8h.html#a57eabd4862d531dd685bbf2feb8468bf">  975</a></span>&#160;<span class="preprocessor">#define sstrcasesuffix(string, suffix) \</span></div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;<span class="preprocessor">  scstrcasesuffix(SCSTR(string), SCSTR(suffix))</span></div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;</div><div class="line"><a name="l00999"></a><span class="lineno"><a class="line" href="string_8h.html#a89343ea3e719f00ee802b557db57b769">  999</a></span>&#160;<span class="preprocessor">#define sstrlower(string) scstrlower(SCSTR(string))</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"><a class="line" href="string_8h.html#a4bb4742fe71115f493991d307cb22b23"> 1025</a></span>&#160;<span class="preprocessor">#define sstrlower_a(allocator, string) scstrlower_a(allocator, SCSTR(string))</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a>(<a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;</div><div class="line"><a name="l01048"></a><span class="lineno"><a class="line" href="string_8h.html#a084fe5a3a90d6fb6b15ecda03bb30824"> 1048</a></span>&#160;<span class="preprocessor">#define sstrupper(string) scstrupper(SCSTR(string))</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<a class="code" href="structsstr__t.html">sstr_t</a> <a class="code" href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a>(<a class="code" href="structUcxAllocator.html">UcxAllocator</a> *allocator, <a class="code" href="structscstr__t.html">scstr_t</a> <span class="keywordtype">string</span>);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;</div><div class="line"><a name="l01073"></a><span class="lineno"><a class="line" href="string_8h.html#a5f0dd83c0176b812fb428004b2877a34"> 1073</a></span>&#160;<span class="preprocessor">#define sstrupper_a(allocator, string) scstrupper_a(allocator, string)</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="preprocessor">#ifdef  __cplusplus</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;}</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="preprocessor">#endif  </span><span class="comment">/* UCX_STRING_H */</span><span class="preprocessor"></span></div><div class="ttc" id="string_8h_html_a539eb7059251a051ee5d179526a23e9a"><div class="ttname"><a href="string_8h.html#a539eb7059251a051ee5d179526a23e9a">sstr</a></div><div class="ttdeci">sstr_t sstr(char *cstring)</div><div class="ttdoc">Creates a new sstr_t based on a C string. </div><div class="ttdef"><b>Definition:</b> string.c:43</div></div>
<div class="ttc" id="string_8h_html_a97dccce03af419596dbdd592ca46a164"><div class="ttname"><a href="string_8h.html#a97dccce03af419596dbdd592ca46a164">scstrdup</a></div><div class="ttdeci">sstr_t scstrdup(scstr_t string)</div><div class="ttdoc">Creates a duplicate of the specified string. </div><div class="ttdef"><b>Definition:</b> string.c:520</div></div>
<div class="ttc" id="structsstr__t_html"><div class="ttname"><a href="structsstr__t.html">sstr_t</a></div><div class="ttdoc">The UCX string structure. </div><div class="ttdef"><b>Definition:</b> string.h:90</div></div>
<div class="ttc" id="string_8h_html_abccf198bea3186ff2abb080cc88dcae6"><div class="ttname"><a href="string_8h.html#abccf198bea3186ff2abb080cc88dcae6">scstrlower</a></div><div class="ttdeci">sstr_t scstrlower(scstr_t string)</div><div class="ttdoc">Returns a lower case version of a string. </div><div class="ttdef"><b>Definition:</b> string.c:633</div></div>
<div class="ttc" id="string_8h_html_a78925c91af54f23cebd20ff99ef4331a"><div class="ttname"><a href="string_8h.html#a78925c91af54f23cebd20ff99ef4331a">sstrsubsl</a></div><div class="ttdeci">sstr_t sstrsubsl(sstr_t string, size_t start, size_t length)</div><div class="ttdoc">Returns a substring with the given length starting at the specified location. </div><div class="ttdef"><b>Definition:</b> string.c:201</div></div>
<div class="ttc" id="string_8h_html_ad374b16eb1be8b48019debad9b9f268c"><div class="ttname"><a href="string_8h.html#ad374b16eb1be8b48019debad9b9f268c">scstrtrim</a></div><div class="ttdeci">scstr_t scstrtrim(scstr_t string)</div><div class="ttdoc">Omits leading and trailing spaces. </div><div class="ttdef"><b>Definition:</b> string.c:563</div></div>
<div class="ttc" id="string_8h_html_a52906455ae530c9cdc6812c8e6d9bdef"><div class="ttname"><a href="string_8h.html#a52906455ae530c9cdc6812c8e6d9bdef">scstrsplit_a</a></div><div class="ttdeci">sstr_t * scstrsplit_a(UcxAllocator *allocator, scstr_t string, scstr_t delim, ssize_t *count)</div><div class="ttdoc">Performing scstrsplit() using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> string.c:400</div></div>
<div class="ttc" id="ucx_8h_html"><div class="ttname"><a href="ucx_8h.html">ucx.h</a></div><div class="ttdoc">Main UCX Header providing most common definitions. </div></div>
<div class="ttc" id="string_8h_html_ae389835b97cd9382e7d6a6a075323376"><div class="ttname"><a href="string_8h.html#ae389835b97cd9382e7d6a6a075323376">scstrrchr</a></div><div class="ttdeci">scstr_t scstrrchr(scstr_t string, int chr)</div><div class="ttdoc">Returns an immutable substring starting at the location of the last occurrence of the specified chara...</div><div class="ttdef"><b>Definition:</b> string.c:270</div></div>
<div class="ttc" id="string_8h_html_a69d5e3eeec783cc43314df71248768f5"><div class="ttname"><a href="string_8h.html#a69d5e3eeec783cc43314df71248768f5">ucx_sc2sc</a></div><div class="ttdeci">scstr_t ucx_sc2sc(scstr_t str)</div><div class="ttdoc">One of two type adjustment functions that return an scstr_t. </div><div class="ttdef"><b>Definition:</b> string.c:666</div></div>
<div class="ttc" id="string_8h_html_a599ddc2f88dd1df68b72eefd91347393"><div class="ttname"><a href="string_8h.html#a599ddc2f88dd1df68b72eefd91347393">scstrprefix</a></div><div class="ttdeci">int scstrprefix(scstr_t string, scstr_t prefix)</div><div class="ttdoc">Checks, if a string has a specific prefix. </div><div class="ttdef"><b>Definition:</b> string.c:570</div></div>
<div class="ttc" id="string_8h_html_adae3f59957ca328e1da5285cb8b02a72"><div class="ttname"><a href="string_8h.html#adae3f59957ca328e1da5285cb8b02a72">sstrrchr</a></div><div class="ttdeci">sstr_t sstrrchr(sstr_t string, int chr)</div><div class="ttdoc">Returns a substring starting at the location of the last occurrence of the specified character...</div><div class="ttdef"><b>Definition:</b> string.c:254</div></div>
<div class="ttc" id="string_8h_html_ae2d6da564d3fce51f2e0cac580fdbc56"><div class="ttname"><a href="string_8h.html#ae2d6da564d3fce51f2e0cac580fdbc56">sstrtrim</a></div><div class="ttdeci">sstr_t sstrtrim(sstr_t string)</div><div class="ttdoc">Omits leading and trailing spaces. </div><div class="ttdef"><b>Definition:</b> string.c:556</div></div>
<div class="ttc" id="structscstr__t_html_a305fd48934b474a9bf4a40869030e391"><div class="ttname"><a href="structscstr__t.html#a305fd48934b474a9bf4a40869030e391">scstr_t::ptr</a></div><div class="ttdeci">const char * ptr</div><div class="ttdoc">A constant pointer to the immutable string (not necessarily NULL-terminated) </div><div class="ttdef"><b>Definition:</b> string.h:104</div></div>
<div class="ttc" id="structscstr__t_html"><div class="ttname"><a href="structscstr__t.html">scstr_t</a></div><div class="ttdoc">The UCX string structure for immutable (constant) strings. </div><div class="ttdef"><b>Definition:</b> string.h:101</div></div>
<div class="ttc" id="string_8h_html_ac1b000030d6d197eec48c15a182055d5"><div class="ttname"><a href="string_8h.html#ac1b000030d6d197eec48c15a182055d5">scstrnlen</a></div><div class="ttdeci">size_t scstrnlen(size_t count,...)</div><div class="ttdoc">Returns the accumulated length of all specified strings. </div><div class="ttdef"><b>Definition:</b> string.c:72</div></div>
<div class="ttc" id="string_8h_html_a5eb9e0e1f26cf7fbecc038cd90e8b258"><div class="ttname"><a href="string_8h.html#a5eb9e0e1f26cf7fbecc038cd90e8b258">sstrsubs</a></div><div class="ttdeci">sstr_t sstrsubs(sstr_t string, size_t start)</div><div class="ttdoc">Returns a substring starting at the specified location. </div><div class="ttdef"><b>Definition:</b> string.c:197</div></div>
<div class="ttc" id="string_8h_html_aca8142fb823d253054e17c17cfca05e0"><div class="ttname"><a href="string_8h.html#aca8142fb823d253054e17c17cfca05e0">scstrcasecmp</a></div><div class="ttdeci">int scstrcasecmp(scstr_t s1, scstr_t s2)</div><div class="ttdoc">Compares two UCX strings ignoring the case. </div><div class="ttdef"><b>Definition:</b> string.c:506</div></div>
<div class="ttc" id="string_8h_html_a9ce5ad1b2aa2dbeba204d452c2e64359"><div class="ttname"><a href="string_8h.html#a9ce5ad1b2aa2dbeba204d452c2e64359">ucx_ss2sc</a></div><div class="ttdeci">scstr_t ucx_ss2sc(sstr_t str)</div><div class="ttdoc">One of two type adjustment functions that return an scstr_t. </div><div class="ttdef"><b>Definition:</b> string.c:669</div></div>
<div class="ttc" id="string_8h_html_af35272a8e5408c88ed3e25a3a98f0a82"><div class="ttname"><a href="string_8h.html#af35272a8e5408c88ed3e25a3a98f0a82">scstrcmp</a></div><div class="ttdeci">int scstrcmp(scstr_t s1, scstr_t s2)</div><div class="ttdoc">Compares two UCX strings with standard memcmp(). </div><div class="ttdef"><b>Definition:</b> string.c:496</div></div>
<div class="ttc" id="structsstr__t_html_af8049914efc1e67f7de3ee55ec0611b0"><div class="ttname"><a href="structsstr__t.html#af8049914efc1e67f7de3ee55ec0611b0">sstr_t::ptr</a></div><div class="ttdeci">char * ptr</div><div class="ttdoc">A pointer to the string (not necessarily NULL-terminated) </div><div class="ttdef"><b>Definition:</b> string.h:93</div></div>
<div class="ttc" id="structUcxAllocator_html"><div class="ttname"><a href="structUcxAllocator.html">UcxAllocator</a></div><div class="ttdoc">UCX allocator data structure containing memory management functions. </div><div class="ttdef"><b>Definition:</b> allocator.h:88</div></div>
<div class="ttc" id="string_8h_html_ae71cac352b00230848bde358f0fb05ea"><div class="ttname"><a href="string_8h.html#ae71cac352b00230848bde358f0fb05ea">scstrsplit</a></div><div class="ttdeci">sstr_t * scstrsplit(scstr_t string, scstr_t delim, ssize_t *count)</div><div class="ttdoc">Splits a string into parts by using a delimiter string. </div><div class="ttdef"><b>Definition:</b> string.c:396</div></div>
<div class="ttc" id="string_8h_html_a3cf1e557df7ab58d03c78832c4060276"><div class="ttname"><a href="string_8h.html#a3cf1e557df7ab58d03c78832c4060276">scstrlower_a</a></div><div class="ttdeci">sstr_t scstrlower_a(UcxAllocator *allocator, scstr_t string)</div><div class="ttdoc">Returns a lower case version of a string. </div><div class="ttdef"><b>Definition:</b> string.c:641</div></div>
<div class="ttc" id="structsstr__t_html_a5cf571708cdff92e45f08458f2b98229"><div class="ttname"><a href="structsstr__t.html#a5cf571708cdff92e45f08458f2b98229">sstr_t::length</a></div><div class="ttdeci">size_t length</div><div class="ttdoc">The length of the string. </div><div class="ttdef"><b>Definition:</b> string.h:95</div></div>
<div class="ttc" id="string_8h_html_af80898a0b75955eb2579298c3ae2c481"><div class="ttname"><a href="string_8h.html#af80898a0b75955eb2579298c3ae2c481">sstrchr</a></div><div class="ttdeci">sstr_t sstrchr(sstr_t string, int chr)</div><div class="ttdoc">Returns a substring starting at the location of the first occurrence of the specified character...</div><div class="ttdef"><b>Definition:</b> string.c:246</div></div>
<div class="ttc" id="string_8h_html_a8fe58921f51eb1fde038472377e63014"><div class="ttname"><a href="string_8h.html#a8fe58921f51eb1fde038472377e63014">scstrdup_a</a></div><div class="ttdeci">sstr_t scstrdup_a(UcxAllocator *allocator, scstr_t string)</div><div class="ttdoc">Creates a duplicate of the specified string using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> string.c:524</div></div>
<div class="ttc" id="string_8h_html_ae594f6e222ea394cef6a26c0dfad000d"><div class="ttname"><a href="string_8h.html#ae594f6e222ea394cef6a26c0dfad000d">scstrn</a></div><div class="ttdeci">scstr_t scstrn(const char *cstring, size_t length)</div><div class="ttdoc">Creates a new scstr_t of the specified length based on a constant C string. </div><div class="ttdef"><b>Definition:</b> string.c:64</div></div>
<div class="ttc" id="string_8h_html_aedeb5d7bddda54116101a8d68af8c56d"><div class="ttname"><a href="string_8h.html#aedeb5d7bddda54116101a8d68af8c56d">ucx_ss2c_s</a></div><div class="ttdeci">scstr_t ucx_ss2c_s()</div><div class="ttdoc">Converts a UCX string to an immutable UCX string (scstr_t). </div></div>
<div class="ttc" id="string_8h_html_a1f0ae316a2afe85d5b4655e6ece6721a"><div class="ttname"><a href="string_8h.html#a1f0ae316a2afe85d5b4655e6ece6721a">scstrsuffix</a></div><div class="ttdeci">int scstrsuffix(scstr_t string, scstr_t suffix)</div><div class="ttdoc">Checks, if a string has a specific suffix. </div><div class="ttdef"><b>Definition:</b> string.c:585</div></div>
<div class="ttc" id="string_8h_html_a2b1d6f1eca1c1549f37107b9c026c5a6"><div class="ttname"><a href="string_8h.html#a2b1d6f1eca1c1549f37107b9c026c5a6">scstr</a></div><div class="ttdeci">scstr_t scstr(const char *cstring)</div><div class="ttdoc">Creates a new scstr_t based on a constant C string. </div><div class="ttdef"><b>Definition:</b> string.c:57</div></div>
<div class="ttc" id="allocator_8h_html"><div class="ttname"><a href="allocator_8h.html">allocator.h</a></div><div class="ttdoc">Allocator for custom memory management. </div></div>
<div class="ttc" id="string_8h_html_a54f256c3abe811c52d58b4ff1b23f051"><div class="ttname"><a href="string_8h.html#a54f256c3abe811c52d58b4ff1b23f051">scstrscstr</a></div><div class="ttdeci">scstr_t scstrscstr(scstr_t string, scstr_t match)</div><div class="ttdoc">Returns an immutable substring starting at the location of the first occurrence of the specified immu...</div><div class="ttdef"><b>Definition:</b> string.c:375</div></div>
<div class="ttc" id="string_8h_html_abacce4cbd6f70fcb6453904ef08b02e9"><div class="ttname"><a href="string_8h.html#abacce4cbd6f70fcb6453904ef08b02e9">scstrcat_a</a></div><div class="ttdeci">sstr_t scstrcat_a(UcxAllocator *alloc, size_t count, scstr_t s1,...)</div><div class="ttdoc">Concatenates two or more strings using a UcxAllocator. </div><div class="ttdef"><b>Definition:</b> string.c:167</div></div>
<div class="ttc" id="string_8h_html_a7376842c19e954b49215da81ef76ac0c"><div class="ttname"><a href="string_8h.html#a7376842c19e954b49215da81ef76ac0c">scstrcat</a></div><div class="ttdeci">sstr_t scstrcat(size_t count, scstr_t s1,...)</div><div class="ttdoc">Concatenates two or more strings. </div><div class="ttdef"><b>Definition:</b> string.c:159</div></div>
<div class="ttc" id="string_8h_html_aea94613eb74668cc05d365803d32bfad"><div class="ttname"><a href="string_8h.html#aea94613eb74668cc05d365803d32bfad">scstrupper_a</a></div><div class="ttdeci">sstr_t scstrupper_a(UcxAllocator *allocator, scstr_t string)</div><div class="ttdoc">Returns a upper case version of a string. </div><div class="ttdef"><b>Definition:</b> string.c:657</div></div>
<div class="ttc" id="string_8h_html_af3dd09ec9d11162fe0075f4e60f41240"><div class="ttname"><a href="string_8h.html#af3dd09ec9d11162fe0075f4e60f41240">scstrupper</a></div><div class="ttdeci">sstr_t scstrupper(scstr_t string)</div><div class="ttdoc">Returns a upper case version of a string. </div><div class="ttdef"><b>Definition:</b> string.c:649</div></div>
<div class="ttc" id="string_8h_html_ad50f0f67b906fad0744f46bcb51e144b"><div class="ttname"><a href="string_8h.html#ad50f0f67b906fad0744f46bcb51e144b">scstrsubsl</a></div><div class="ttdeci">scstr_t scstrsubsl(scstr_t string, size_t start, size_t length)</div><div class="ttdoc">Returns a substring of an immutable string with a maximum length starting at the specified location...</div><div class="ttdef"><b>Definition:</b> string.c:214</div></div>
<div class="ttc" id="string_8h_html_a2744c38ac44abf3e01fa059056dcf36c"><div class="ttname"><a href="string_8h.html#a2744c38ac44abf3e01fa059056dcf36c">sstrn</a></div><div class="ttdeci">sstr_t sstrn(char *cstring, size_t length)</div><div class="ttdoc">Creates a new sstr_t of the specified length based on a C string. </div><div class="ttdef"><b>Definition:</b> string.c:50</div></div>
<div class="ttc" id="structscstr__t_html_aaa0229f64f1057b6f65adededaa5a172"><div class="ttname"><a href="structscstr__t.html#aaa0229f64f1057b6f65adededaa5a172">scstr_t::length</a></div><div class="ttdeci">size_t length</div><div class="ttdoc">The length of the string. </div><div class="ttdef"><b>Definition:</b> string.h:106</div></div>
<div class="ttc" id="string_8h_html_a6edb4b85f2b9efe79db7ffe6eccd7bc3"><div class="ttname"><a href="string_8h.html#a6edb4b85f2b9efe79db7ffe6eccd7bc3">scstrcasesuffix</a></div><div class="ttdeci">int scstrcasesuffix(scstr_t string, scstr_t suffix)</div><div class="ttdoc">Checks, if a string has a specific suffix, ignoring the case. </div><div class="ttdef"><b>Definition:</b> string.c:617</div></div>
<div class="ttc" id="string_8h_html_a5836d6a7a744791c35e5c17bdc394a87"><div class="ttname"><a href="string_8h.html#a5836d6a7a744791c35e5c17bdc394a87">scstrchr</a></div><div class="ttdeci">scstr_t scstrchr(scstr_t string, int chr)</div><div class="ttdoc">Returns an immutable substring starting at the location of the first occurrence of the specified char...</div><div class="ttdef"><b>Definition:</b> string.c:262</div></div>
<div class="ttc" id="string_8h_html_a9a6c8d8db0dda0037c3c852cce1a5060"><div class="ttname"><a href="string_8h.html#a9a6c8d8db0dda0037c3c852cce1a5060">scstrsubs</a></div><div class="ttdeci">scstr_t scstrsubs(scstr_t string, size_t start)</div><div class="ttdoc">Returns a substring of an immutable string starting at the specified location. </div><div class="ttdef"><b>Definition:</b> string.c:210</div></div>
<div class="ttc" id="string_8h_html_aa4362cb36c6629f9d8484739fd827748"><div class="ttname"><a href="string_8h.html#aa4362cb36c6629f9d8484739fd827748">scstrsstr</a></div><div class="ttdeci">sstr_t scstrsstr(sstr_t string, scstr_t match)</div><div class="ttdoc">Returns a substring starting at the location of the first occurrence of the specified string...</div><div class="ttdef"><b>Definition:</b> string.c:357</div></div>
<div class="ttc" id="string_8h_html_a3718ef4aa1e86cdb26bda2f07fb585df"><div class="ttname"><a href="string_8h.html#a3718ef4aa1e86cdb26bda2f07fb585df">scstrcaseprefix</a></div><div class="ttdeci">int scstrcaseprefix(scstr_t string, scstr_t prefix)</div><div class="ttdoc">Checks, if a string has a specific prefix, ignoring the case. </div><div class="ttdef"><b>Definition:</b> string.c:601</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Dec 19 2019 19:58:24 for ucx by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

mercurial