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

325 lines
18 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: Reading and writing hashtables to disk</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><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>Reading and writing hashtables to disk<br>
<small>
[<a class="el" href="group__svn__hash__support.html">Hash table serialization support</a>]</small>
</h1>Reading/writing hashtables to disk.
<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></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__error__t.html">svn_error_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__hash__read__write.html#ge9a87d039f8af716e37f8fcf0b9db61d">svn_hash_read2</a> (apr_hash_t *hash, <a class="el" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af">svn_stream_t</a> *stream, const char *terminator, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a hash table from <em>stream</em>, storing the resultants names and values in <em>hash</em>. <a href="#ge9a87d039f8af716e37f8fcf0b9db61d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__error__t.html">svn_error_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__hash__read__write.html#gcb5bad4c023553ff2be614aeeb54d5db">svn_hash_write2</a> (apr_hash_t *hash, <a class="el" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af">svn_stream_t</a> *stream, const char *terminator, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump <em>hash</em> to <em>stream</em>. <a href="#gcb5bad4c023553ff2be614aeeb54d5db"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__error__t.html">svn_error_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__hash__read__write.html#gc9da036ef903191baaed07e1e5322f9b">svn_hash_read_incremental</a> (apr_hash_t *hash, <a class="el" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af">svn_stream_t</a> *stream, const char *terminator, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Similar to <a class="el" href="group__svn__hash__read__write.html#ge9a87d039f8af716e37f8fcf0b9db61d" title="Read a hash table from stream, storing the resultants names and values in hash.">svn_hash_read2()</a>, but allows <em>stream</em> to contain deletion lines which remove entries from <em>hash</em> as well as adding to it. <a href="#gc9da036ef903191baaed07e1e5322f9b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__error__t.html">svn_error_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__hash__read__write.html#g0781a98240667fc4554195decba66392">svn_hash_write_incremental</a> (apr_hash_t *hash, apr_hash_t *oldhash, <a class="el" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af">svn_stream_t</a> *stream, const char *terminator, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Similar to <a class="el" href="group__svn__hash__read__write.html#gcb5bad4c023553ff2be614aeeb54d5db" title="Dump hash to stream.">svn_hash_write2()</a>, but only writes out entries for keys which differ between <em>hash</em> and <em>oldhash</em>, and also writes out deletion lines for keys which are present in <em>oldhash</em> but not in <em>hash</em>. <a href="#g0781a98240667fc4554195decba66392"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__error__t.html">svn_error_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__hash__read__write.html#gb36785b881d3e6ceb0641c92333ed8ba">svn_hash_read</a> (apr_hash_t *hash, apr_file_t *srcfile, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function behaves like <a class="el" href="group__svn__hash__read__write.html#ge9a87d039f8af716e37f8fcf0b9db61d" title="Read a hash table from stream, storing the resultants names and values in hash.">svn_hash_read2()</a>, but it only works on an apr_file_t input, empty files are accepted, and the hash is expected to be terminated with a line containing "END" or "PROPS-END". <a href="#gb36785b881d3e6ceb0641c92333ed8ba"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structsvn__error__t.html">svn_error_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__svn__hash__read__write.html#g4b5ba45aadf9b26c9ee948484b817d23">svn_hash_write</a> (apr_hash_t *hash, apr_file_t *destfile, apr_pool_t *pool)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This function behaves like <a class="el" href="group__svn__hash__read__write.html#gcb5bad4c023553ff2be614aeeb54d5db" title="Dump hash to stream.">svn_hash_write2()</a>, but it only works on an apr_file_t output, and the terminator is always "END". <a href="#g4b5ba45aadf9b26c9ee948484b817d23"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Reading/writing hashtables to disk.
<p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="gb36785b881d3e6ceb0641c92333ed8ba"></a><!-- doxytag: member="svn_hash.h::svn_hash_read" ref="gb36785b881d3e6ceb0641c92333ed8ba" args="(apr_hash_t *hash, apr_file_t *srcfile, apr_pool_t *pool)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structsvn__error__t.html">svn_error_t</a>* svn_hash_read </td>
<td>(</td>
<td class="paramtype">apr_hash_t *&nbsp;</td>
<td class="paramname"> <em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_file_t *&nbsp;</td>
<td class="paramname"> <em>srcfile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_pool_t *&nbsp;</td>
<td class="paramname"> <em>pool</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
This function behaves like <a class="el" href="group__svn__hash__read__write.html#ge9a87d039f8af716e37f8fcf0b9db61d" title="Read a hash table from stream, storing the resultants names and values in hash.">svn_hash_read2()</a>, but it only works on an apr_file_t input, empty files are accepted, and the hash is expected to be terminated with a line containing "END" or "PROPS-END".
<p>
<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000118">Deprecated:</a></b></dt><dd>Provided for backward compatibility with the 1.0 API. </dd></dl>
</div>
</div><p>
<a class="anchor" name="ge9a87d039f8af716e37f8fcf0b9db61d"></a><!-- doxytag: member="svn_hash.h::svn_hash_read2" ref="ge9a87d039f8af716e37f8fcf0b9db61d" args="(apr_hash_t *hash, svn_stream_t *stream, const char *terminator, apr_pool_t *pool)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structsvn__error__t.html">svn_error_t</a>* svn_hash_read2 </td>
<td>(</td>
<td class="paramtype">apr_hash_t *&nbsp;</td>
<td class="paramname"> <em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af">svn_stream_t</a> *&nbsp;</td>
<td class="paramname"> <em>stream</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>terminator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_pool_t *&nbsp;</td>
<td class="paramname"> <em>pool</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Read a hash table from <em>stream</em>, storing the resultants names and values in <em>hash</em>.
<p>
Use a <em>pool</em> for all allocations. <em>hash</em> will have <code>const char *</code> keys and <code><a class="el" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *</code> values. If <em>terminator</em> is NULL, expect the hash to be terminated by the end of the stream; otherwise, expect the hash to be terminated by a line containing <em>terminator</em>. Pass <code>SVN_HASH_TERMINATOR</code> to use the conventional terminator "END".<p>
<dl class="since" compact><dt><b>Since:</b></dt><dd>New in 1.1. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gc9da036ef903191baaed07e1e5322f9b"></a><!-- doxytag: member="svn_hash.h::svn_hash_read_incremental" ref="gc9da036ef903191baaed07e1e5322f9b" args="(apr_hash_t *hash, svn_stream_t *stream, const char *terminator, apr_pool_t *pool)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structsvn__error__t.html">svn_error_t</a>* svn_hash_read_incremental </td>
<td>(</td>
<td class="paramtype">apr_hash_t *&nbsp;</td>
<td class="paramname"> <em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af">svn_stream_t</a> *&nbsp;</td>
<td class="paramname"> <em>stream</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>terminator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_pool_t *&nbsp;</td>
<td class="paramname"> <em>pool</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Similar to <a class="el" href="group__svn__hash__read__write.html#ge9a87d039f8af716e37f8fcf0b9db61d" title="Read a hash table from stream, storing the resultants names and values in hash.">svn_hash_read2()</a>, but allows <em>stream</em> to contain deletion lines which remove entries from <em>hash</em> as well as adding to it.
<p>
<dl class="since" compact><dt><b>Since:</b></dt><dd>New in 1.1. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g4b5ba45aadf9b26c9ee948484b817d23"></a><!-- doxytag: member="svn_hash.h::svn_hash_write" ref="g4b5ba45aadf9b26c9ee948484b817d23" args="(apr_hash_t *hash, apr_file_t *destfile, apr_pool_t *pool)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structsvn__error__t.html">svn_error_t</a>* svn_hash_write </td>
<td>(</td>
<td class="paramtype">apr_hash_t *&nbsp;</td>
<td class="paramname"> <em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_file_t *&nbsp;</td>
<td class="paramname"> <em>destfile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_pool_t *&nbsp;</td>
<td class="paramname"> <em>pool</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
This function behaves like <a class="el" href="group__svn__hash__read__write.html#gcb5bad4c023553ff2be614aeeb54d5db" title="Dump hash to stream.">svn_hash_write2()</a>, but it only works on an apr_file_t output, and the terminator is always "END".
<p>
<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000119">Deprecated:</a></b></dt><dd>Provided for backward compatibility with the 1.0 API. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gcb5bad4c023553ff2be614aeeb54d5db"></a><!-- doxytag: member="svn_hash.h::svn_hash_write2" ref="gcb5bad4c023553ff2be614aeeb54d5db" args="(apr_hash_t *hash, svn_stream_t *stream, const char *terminator, apr_pool_t *pool)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structsvn__error__t.html">svn_error_t</a>* svn_hash_write2 </td>
<td>(</td>
<td class="paramtype">apr_hash_t *&nbsp;</td>
<td class="paramname"> <em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af">svn_stream_t</a> *&nbsp;</td>
<td class="paramname"> <em>stream</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>terminator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_pool_t *&nbsp;</td>
<td class="paramname"> <em>pool</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Dump <em>hash</em> to <em>stream</em>.
<p>
Use <em>pool</em> for all allocations. <em>hash</em> has <code>const char *</code> keys and <code><a class="el" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *</code> values. If <em>terminator</em> is not NULL, terminate the hash with a line containing <em>terminator</em>.<p>
<dl class="since" compact><dt><b>Since:</b></dt><dd>New in 1.1. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g0781a98240667fc4554195decba66392"></a><!-- doxytag: member="svn_hash.h::svn_hash_write_incremental" ref="g0781a98240667fc4554195decba66392" args="(apr_hash_t *hash, apr_hash_t *oldhash, svn_stream_t *stream, const char *terminator, apr_pool_t *pool)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structsvn__error__t.html">svn_error_t</a>* svn_hash_write_incremental </td>
<td>(</td>
<td class="paramtype">apr_hash_t *&nbsp;</td>
<td class="paramname"> <em>hash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_hash_t *&nbsp;</td>
<td class="paramname"> <em>oldhash</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af">svn_stream_t</a> *&nbsp;</td>
<td class="paramname"> <em>stream</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&nbsp;</td>
<td class="paramname"> <em>terminator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_pool_t *&nbsp;</td>
<td class="paramname"> <em>pool</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Similar to <a class="el" href="group__svn__hash__read__write.html#gcb5bad4c023553ff2be614aeeb54d5db" title="Dump hash to stream.">svn_hash_write2()</a>, but only writes out entries for keys which differ between <em>hash</em> and <em>oldhash</em>, and also writes out deletion lines for keys which are present in <em>oldhash</em> but not in <em>hash</em>.
<p>
<dl class="since" compact><dt><b>Since:</b></dt><dd>New in 1.1. </dd></dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 24 16:18:29 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>