DragonNest/Common/SVNLib/doc/svn__string_8h.html
2024-12-19 09:48:26 +08:00

193 lines
30 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Subversion: svn_string.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<form action="search.php" method="get">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
<td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
</tr>
</table>
</form>
</li>
</ul>
</div>
</div>
<div class="contents">
<h1>svn_string.h File Reference</h1>Counted-length strings for Subversion, plus some C string goodies. <a href="#_details">More...</a>
<p>
<code>#include &lt;apr.h&gt;</code><br>
<code>#include &lt;apr_tables.h&gt;</code><br>
<code>#include &lt;apr_pools.h&gt;</code><br>
<code>#include &lt;apr_strings.h&gt;</code><br>
<code>#include &quot;<a class="el" href="svn__types_8h-source.html">svn_types.h</a>&quot;</code><br>
<p>
<a href="svn__string_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsvn__string__t.html">svn_string_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A simple counted string. <a href="structsvn__string__t.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A buffered string, capable of appending without an allocation and copy for each append. <a href="structsvn__stringbuf__t.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__string__t.html">svn_string_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#gd95dc9d38e6bdc84747f3ef9d3e35fe0">svn_string_create</a> (const char *cstring, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new bytestring containing a C string (NULL-terminated). <a href="group__svn__string__svn__string__t.html#gd95dc9d38e6bdc84747f3ef9d3e35fe0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc3d86b18881673a058d2436abc4f3b3d"></a><!-- doxytag: member="svn_string.h::svn_string_ncreate" ref="gc3d86b18881673a058d2436abc4f3b3d" args="(const char *bytes, apr_size_t size, apr_pool_t *pool)" -->
<a class="el" href="structsvn__string__t.html">svn_string_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#gc3d86b18881673a058d2436abc4f3b3d">svn_string_ncreate</a> (const char *bytes, apr_size_t size, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new bytestring containing a generic string of bytes (NOT NULL-terminated). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge371a744fa00e25cb91e326b628c0d58"></a><!-- doxytag: member="svn_string.h::svn_string_create_from_buf" ref="ge371a744fa00e25cb91e326b628c0d58" args="(const svn_stringbuf_t *strbuf, apr_pool_t *pool)" -->
<a class="el" href="structsvn__string__t.html">svn_string_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#ge371a744fa00e25cb91e326b628c0d58">svn_string_create_from_buf</a> (const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *strbuf, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new string with the contents of the given stringbuf. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5b482947bdf2b1a1cbb3a1a9aaf011e5"></a><!-- doxytag: member="svn_string.h::svn_string_createf" ref="g5b482947bdf2b1a1cbb3a1a9aaf011e5" args="(apr_pool_t *pool, const char *fmt,...)" -->
<a class="el" href="structsvn__string__t.html">svn_string_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#g5b482947bdf2b1a1cbb3a1a9aaf011e5">svn_string_createf</a> (apr_pool_t *pool, const char *fmt,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new bytestring by formatting <em>cstring</em> (NULL-terminated) from varargs, which are as appropriate for apr_psprintf(). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4f022a5854556fd0295c48e8fa981bf2"></a><!-- doxytag: member="svn_string.h::svn_string_createv" ref="g4f022a5854556fd0295c48e8fa981bf2" args="(apr_pool_t *pool, const char *fmt, va_list ap)" -->
<a class="el" href="structsvn__string__t.html">svn_string_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#g4f022a5854556fd0295c48e8fa981bf2">svn_string_createv</a> (apr_pool_t *pool, const char *fmt, va_list ap)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new bytestring by formatting <em>cstring</em> (NULL-terminated) from a <code>va_list</code> (see <a class="el" href="group__svn__string__svn__stringbuf__t.html#g0b1ed3183852be19b758ff0dbd743ef2" title="Create a new bytestring by formatting cstring (NULL-terminated) from varargs, which...">svn_stringbuf_createf()</a>). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024">svn_boolean_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#g2891cd984b7ae945c9a91ba79d1d378a">svn_string_isempty</a> (const <a class="el" href="structsvn__string__t.html">svn_string_t</a> *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return TRUE if a bytestring is empty (has length zero). <a href="group__svn__string__svn__string__t.html#g2891cd984b7ae945c9a91ba79d1d378a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__string__t.html">svn_string_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#gfbbbff4a252b2cc528f17d908a05f63e">svn_string_dup</a> (const <a class="el" href="structsvn__string__t.html">svn_string_t</a> *original_string, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a duplicate of <em>original_string</em>. <a href="group__svn__string__svn__string__t.html#gfbbbff4a252b2cc528f17d908a05f63e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024">svn_boolean_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#gdb0c115b0e43071290450146585701d4">svn_string_compare</a> (const <a class="el" href="structsvn__string__t.html">svn_string_t</a> *str1, const <a class="el" href="structsvn__string__t.html">svn_string_t</a> *str2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return <code>TRUE</code> iff <em>str1</em> and <em>str2</em> have identical length and data. <a href="group__svn__string__svn__string__t.html#gdb0c115b0e43071290450146585701d4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gef03ff9a4a6164c224ab26cb89088f98"></a><!-- doxytag: member="svn_string.h::svn_string_first_non_whitespace" ref="gef03ff9a4a6164c224ab26cb89088f98" args="(const svn_string_t *str)" -->
apr_size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#gef03ff9a4a6164c224ab26cb89088f98">svn_string_first_non_whitespace</a> (const <a class="el" href="structsvn__string__t.html">svn_string_t</a> *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return offset of first non-whitespace character in <em>str</em>, or return <em>str-&gt;len</em> if none. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g60d959ad747d999baf4cc0582f1ecfa0"></a><!-- doxytag: member="svn_string.h::svn_string_find_char_backward" ref="g60d959ad747d999baf4cc0582f1ecfa0" args="(const svn_string_t *str, char ch)" -->
apr_size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__string__t.html#g60d959ad747d999baf4cc0582f1ecfa0">svn_string_find_char_backward</a> (const <a class="el" href="structsvn__string__t.html">svn_string_t</a> *str, char ch)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return position of last occurrence of <em>ch</em> in <em>str</em>, or return <em>str-&gt;len</em> if no occurrence. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g8601f093a616a8e02037dc8e8a90f91a">svn_stringbuf_create</a> (const char *cstring, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new bytestring containing a C string (NULL-terminated). <a href="group__svn__string__svn__stringbuf__t.html#g8601f093a616a8e02037dc8e8a90f91a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g52aff4fcf51690403e493bb35ac87991"></a><!-- doxytag: member="svn_string.h::svn_stringbuf_ncreate" ref="g52aff4fcf51690403e493bb35ac87991" args="(const char *bytes, apr_size_t size, apr_pool_t *pool)" -->
<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g52aff4fcf51690403e493bb35ac87991">svn_stringbuf_ncreate</a> (const char *bytes, apr_size_t size, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new bytestring containing a generic string of bytes (NON-NULL-terminated). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga7d76a0ae1245b7695b290b91cda4947"></a><!-- doxytag: member="svn_string.h::svn_stringbuf_create_from_string" ref="ga7d76a0ae1245b7695b290b91cda4947" args="(const svn_string_t *str, apr_pool_t *pool)" -->
<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#ga7d76a0ae1245b7695b290b91cda4947">svn_stringbuf_create_from_string</a> (const <a class="el" href="structsvn__string__t.html">svn_string_t</a> *str, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new stringbuf with the contents of the given string. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0b1ed3183852be19b758ff0dbd743ef2"></a><!-- doxytag: member="svn_string.h::svn_stringbuf_createf" ref="g0b1ed3183852be19b758ff0dbd743ef2" args="(apr_pool_t *pool, const char *fmt,...)" -->
<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g0b1ed3183852be19b758ff0dbd743ef2">svn_stringbuf_createf</a> (apr_pool_t *pool, const char *fmt,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new bytestring by formatting <em>cstring</em> (NULL-terminated) from varargs, which are as appropriate for apr_psprintf(). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc220c36f36b2aff8ec230e947a343a0c"></a><!-- doxytag: member="svn_string.h::svn_stringbuf_createv" ref="gc220c36f36b2aff8ec230e947a343a0c" args="(apr_pool_t *pool, const char *fmt, va_list ap)" -->
<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#gc220c36f36b2aff8ec230e947a343a0c">svn_stringbuf_createv</a> (apr_pool_t *pool, const char *fmt, va_list ap)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new bytestring by formatting <em>cstring</em> (NULL-terminated) from a <code>va_list</code> (see <a class="el" href="group__svn__string__svn__stringbuf__t.html#g0b1ed3183852be19b758ff0dbd743ef2" title="Create a new bytestring by formatting cstring (NULL-terminated) from varargs, which...">svn_stringbuf_createf()</a>). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g647abffad5b778d01557d7fba6551f64">svn_stringbuf_ensure</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str, apr_size_t minimum_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Make sure that the string <em>str</em> has at least <em>minimum_size</em> bytes of space available in the memory block. <a href="group__svn__string__svn__stringbuf__t.html#g647abffad5b778d01557d7fba6551f64"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g026d3c9d0850c9b3131dcb37400de532"></a><!-- doxytag: member="svn_string.h::svn_stringbuf_set" ref="g026d3c9d0850c9b3131dcb37400de532" args="(svn_stringbuf_t *str, const char *value)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g026d3c9d0850c9b3131dcb37400de532">svn_stringbuf_set</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str, const char *value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a bytestring <em>str</em> to <em>value</em>. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#gb83a676f045b8661689f04a59e0efce9">svn_stringbuf_setempty</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a bytestring <em>str</em> to empty (0 length). <a href="group__svn__string__svn__stringbuf__t.html#gb83a676f045b8661689f04a59e0efce9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024">svn_boolean_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g40f3e623c857983b4b56e603431a00fa">svn_stringbuf_isempty</a> (const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return <code>TRUE</code> if a bytestring is empty (has length zero). <a href="group__svn__string__svn__stringbuf__t.html#g40f3e623c857983b4b56e603431a00fa"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g49dc0be31e13c8264575723cf4695c68">svn_stringbuf_chop</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str, apr_size_t nbytes)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Chop <em>nbytes</em> bytes off end of <em>str</em>, but not more than <em>str-&gt;len</em>. <a href="group__svn__string__svn__stringbuf__t.html#g49dc0be31e13c8264575723cf4695c68"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g4373bb2fae064fb648344f49f24fc96c">svn_stringbuf_fillchar</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str, unsigned char c)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fill bytestring <em>str</em> with character <em>c</em>. <a href="group__svn__string__svn__stringbuf__t.html#g4373bb2fae064fb648344f49f24fc96c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g1c60f08eaa9f01d244072291f4cf42d0">svn_stringbuf_appendbytes</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *targetstr, const char *bytes, apr_size_t count)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append an array of bytes onto <em>targetstr</em>. <a href="group__svn__string__svn__stringbuf__t.html#g1c60f08eaa9f01d244072291f4cf42d0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g670edcdb88bcbfc421f06b58683a5efb">svn_stringbuf_appendstr</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *targetstr, const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *appendstr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append an <code><a class="el" href="structsvn__stringbuf__t.html" title="A buffered string, capable of appending without an allocation and copy for each append...">svn_stringbuf_t</a></code> onto <em>targetstr</em>. <a href="group__svn__string__svn__stringbuf__t.html#g670edcdb88bcbfc421f06b58683a5efb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g21e883d584131b35082f23d27fe877ea">svn_stringbuf_appendcstr</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *targetstr, const char *cstr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append a C string onto <em>targetstr</em>. <a href="group__svn__string__svn__stringbuf__t.html#g21e883d584131b35082f23d27fe877ea"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#gd96ee402d1430439779f7e19159ecd78">svn_stringbuf_dup</a> (const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *original_string, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a duplicate of <em>original_string</em>. <a href="group__svn__string__svn__stringbuf__t.html#gd96ee402d1430439779f7e19159ecd78"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024">svn_boolean_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g58bf192fb1bab3755a3cb9699ab472c4">svn_stringbuf_compare</a> (const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str1, const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return <code>TRUE</code> iff <em>str1</em> and <em>str2</em> have identical length and data. <a href="group__svn__string__svn__stringbuf__t.html#g58bf192fb1bab3755a3cb9699ab472c4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4fc22d2b21e2e8d4bcd1d71f3ed662e8"></a><!-- doxytag: member="svn_string.h::svn_stringbuf_first_non_whitespace" ref="g4fc22d2b21e2e8d4bcd1d71f3ed662e8" args="(const svn_stringbuf_t *str)" -->
apr_size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g4fc22d2b21e2e8d4bcd1d71f3ed662e8">svn_stringbuf_first_non_whitespace</a> (const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return offset of first non-whitespace character in <em>str</em>, or return <em>str-&gt;len</em> if none. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g6509ce58676a3f404250ea8653034a20">svn_stringbuf_strip_whitespace</a> (<a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Strip whitespace from both sides of <em>str</em> (modified in place). <a href="group__svn__string__svn__stringbuf__t.html#g6509ce58676a3f404250ea8653034a20"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga277b724082d592ac403a3c14a1f8636"></a><!-- doxytag: member="svn_string.h::svn_stringbuf_find_char_backward" ref="ga277b724082d592ac403a3c14a1f8636" args="(const svn_stringbuf_t *str, char ch)" -->
apr_size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#ga277b724082d592ac403a3c14a1f8636">svn_stringbuf_find_char_backward</a> (const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str, char ch)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return position of last occurrence of <em>ch</em> in <em>str</em>, or return <em>str-&gt;len</em> if no occurrence. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024">svn_boolean_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__svn__stringbuf__t.html#g7fd0407b0fd66e903255e2b8ad61a9cc">svn_string_compare_stringbuf</a> (const <a class="el" href="structsvn__string__t.html">svn_string_t</a> *str1, const <a class="el" href="structsvn__stringbuf__t.html">svn_stringbuf_t</a> *str2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return <code>TRUE</code> iff <em>str1</em> and <em>str2</em> have identical length and data. <a href="group__svn__string__svn__stringbuf__t.html#g7fd0407b0fd66e903255e2b8ad61a9cc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">apr_array_header_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__cstrings.html#g1af9bdcdb39027b11107088fd02cad9b">svn_cstring_split</a> (const char *input, const char *sep_chars, <a class="el" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024">svn_boolean_t</a> chop_whitespace, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Divide <em>input</em> into substrings along <em>sep_chars</em> boundaries, return an array of copies of those substrings, allocating both the array and the copies in <em>pool</em>. <a href="group__svn__string__cstrings.html#g1af9bdcdb39027b11107088fd02cad9b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__cstrings.html#gbb4be8497dbc9b869bcabefe93a08f83">svn_cstring_split_append</a> (apr_array_header_t *array, const char *input, const char *sep_chars, <a class="el" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024">svn_boolean_t</a> chop_whitespace, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Like <a class="el" href="group__svn__string__cstrings.html#g1af9bdcdb39027b11107088fd02cad9b" title="Divide input into substrings along sep_chars boundaries, return an array of copies...">svn_cstring_split()</a>, but append to existing <em>array</em> instead of creating a new one. <a href="group__svn__string__cstrings.html#gbb4be8497dbc9b869bcabefe93a08f83"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g550544d34961e2cbd9b50364f1b200fe"></a><!-- doxytag: member="svn_string.h::svn_cstring_match_glob_list" ref="g550544d34961e2cbd9b50364f1b200fe" args="(const char *str, apr_array_header_t *list)" -->
<a class="el" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024">svn_boolean_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__cstrings.html#g550544d34961e2cbd9b50364f1b200fe">svn_cstring_match_glob_list</a> (const char *str, apr_array_header_t *list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return <code>TRUE</code> iff <em>str</em> matches any of the elements of <em>list</em>, a list of zero or more glob patterns. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__cstrings.html#g842ab6a90aecda5498232ad7dc5a3365">svn_cstring_count_newlines</a> (const char *msg)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the number of line breaks in <em>msg</em>, allowing any kind of newline termination (CR, LF, CRLF, or LFCR), even inconsistent. <a href="group__svn__string__cstrings.html#g842ab6a90aecda5498232ad7dc5a3365"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__cstrings.html#g76a5c28609bad95cf55ecb816f5831a0">svn_cstring_join</a> (apr_array_header_t *strings, const char *separator, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a cstring which is the concatenation of <em>strings</em> (an array of char *) each followed by <em>separator</em> (that is, <em>separator</em> will also end the resulting string). <a href="group__svn__string__cstrings.html#g76a5c28609bad95cf55ecb816f5831a0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__string__cstrings.html#g33a5b549150b10cc9dae66e96062f077">svn_cstring_casecmp</a> (const char *str1, const char *str2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare two strings <em>atr1</em> and <em>atr2</em>, treating case-equivalent unaccented Latin (ASCII subset) letters as equal. <a href="group__svn__string__cstrings.html#g33a5b549150b10cc9dae66e96062f077"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Counted-length strings for Subversion, plus some C string goodies.
<p>
There are two string datatypes: <code><a class="el" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a></code> and <code><a class="el" href="structsvn__stringbuf__t.html" title="A buffered string, capable of appending without an allocation and copy for each append...">svn_stringbuf_t</a></code>. The former is a simple pointer/length pair useful for passing around strings (or arbitrary bytes) with a counted length. <code><a class="el" href="structsvn__stringbuf__t.html" title="A buffered string, capable of appending without an allocation and copy for each append...">svn_stringbuf_t</a></code> is buffered to enable efficient appending of strings without an allocation and copy for each append operation.<p>
<code><a class="el" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a></code> contains a <code>const char *</code> for its data, so it is most appropriate for constant data and for functions which expect constant, counted data. Functions should generally use <code>const <code><a class="el" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a></code> *</code> as their parameter to indicate they are expecting a constant, counted string.<p>
<code><a class="el" href="structsvn__stringbuf__t.html" title="A buffered string, capable of appending without an allocation and copy for each append...">svn_stringbuf_t</a></code> uses a plain <code>char *</code> for its data, so it is most appropriate for modifiable data.<p>
<h3>Invariants</h3>
<p>
1. Null termination:<p>
Both structures maintain a significant invariant:<p>
<code>s-&gt;data[s-&gt;len] == '\0'</code><p>
The functions defined within this header file will maintain the invariant (which does imply that memory is allocated/defined as <code>len+1</code> bytes). If code outside of the <code><a class="el" href="svn__string_8h.html" title="Counted-length strings for Subversion, plus some C string goodies.">svn_string.h</a></code> functions manually builds these structures, then they must enforce this invariant.<p>
Note that an <code>svn_string(buf)_t</code> may contain binary data, which means that strlen(s-&gt;data) does not have to equal <code>s-&gt;len</code>. The NULL terminator is provided to make it easier to pass <code>s-&gt;data</code> to C string interfaces.<p>
2. Non-NULL input:<p>
All the functions assume their input data is non-NULL, unless otherwise documented, and may seg fault if passed NULL. The input data may *contain* null bytes, of course, just the data pointer itself must not be NULL.
<p>Definition in file <a class="el" href="svn__string_8h-source.html">svn_string.h</a>.</p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 24 16:18:28 2008 for Subversion by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>