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

684 lines
80 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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_diff.h Source File</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>
<h1>svn_diff.h</h1><a href="svn__diff_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/**</span>
<a name="l00002"></a>00002 <span class="comment"> * @copyright</span>
<a name="l00003"></a>00003 <span class="comment"> * ====================================================================</span>
<a name="l00004"></a>00004 <span class="comment"> * Copyright (c) 2000-2007 CollabNet. All rights reserved.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> * This software is licensed as described in the file COPYING, which</span>
<a name="l00007"></a>00007 <span class="comment"> * you should have received as part of this distribution. The terms</span>
<a name="l00008"></a>00008 <span class="comment"> * are also available at http://subversion.tigris.org/license-1.html.</span>
<a name="l00009"></a>00009 <span class="comment"> * If newer versions of this license are posted there, you may use a</span>
<a name="l00010"></a>00010 <span class="comment"> * newer version instead, at your option.</span>
<a name="l00011"></a>00011 <span class="comment"> *</span>
<a name="l00012"></a>00012 <span class="comment"> * This software consists of voluntary contributions made by many</span>
<a name="l00013"></a>00013 <span class="comment"> * individuals. For exact contribution history, see the revision</span>
<a name="l00014"></a>00014 <span class="comment"> * history and logs, available at http://subversion.tigris.org/.</span>
<a name="l00015"></a>00015 <span class="comment"> * ====================================================================</span>
<a name="l00016"></a>00016 <span class="comment"> * @endcopyright</span>
<a name="l00017"></a>00017 <span class="comment"> *</span>
<a name="l00018"></a>00018 <span class="comment"> * @file svn_diff.h</span>
<a name="l00019"></a>00019 <span class="comment"> * @brief Contextual diffing.</span>
<a name="l00020"></a>00020 <span class="comment"> *</span>
<a name="l00021"></a>00021 <span class="comment"> * This is an internalized library for performing contextual diffs</span>
<a name="l00022"></a>00022 <span class="comment"> * between sources of data.</span>
<a name="l00023"></a>00023 <span class="comment"> *</span>
<a name="l00024"></a>00024 <span class="comment"> * @note This is different than Subversion's binary-diffing engine.</span>
<a name="l00025"></a>00025 <span class="comment"> * That API lives in @c svn_delta.h -- see the "text deltas" section. A</span>
<a name="l00026"></a>00026 <span class="comment"> * "text delta" is way of representing precise binary diffs between</span>
<a name="l00027"></a>00027 <span class="comment"> * strings of data. The Subversion client and server send text deltas</span>
<a name="l00028"></a>00028 <span class="comment"> * to one another during updates and commits.</span>
<a name="l00029"></a>00029 <span class="comment"> *</span>
<a name="l00030"></a>00030 <span class="comment"> * This API, however, is (or will be) used for performing *contextual*</span>
<a name="l00031"></a>00031 <span class="comment"> * merges between files in the working copy. During an update or</span>
<a name="l00032"></a>00032 <span class="comment"> * merge, 3-way file merging is needed. And 'svn diff' needs to show</span>
<a name="l00033"></a>00033 <span class="comment"> * the differences between 2 files.</span>
<a name="l00034"></a>00034 <span class="comment"> *</span>
<a name="l00035"></a>00035 <span class="comment"> * The nice thing about this API is that it's very general. It</span>
<a name="l00036"></a>00036 <span class="comment"> * operates on any source of data (a "datasource") and calculates</span>
<a name="l00037"></a>00037 <span class="comment"> * contextual differences on "tokens" within the data. In our</span>
<a name="l00038"></a>00038 <span class="comment"> * particular usage, the datasources are files and the tokens are</span>
<a name="l00039"></a>00039 <span class="comment"> * lines. But the possibilities are endless.</span>
<a name="l00040"></a>00040 <span class="comment"> */</span>
<a name="l00041"></a>00041
<a name="l00042"></a>00042
<a name="l00043"></a>00043 <span class="preprocessor">#ifndef SVN_DIFF_H</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#define SVN_DIFF_H</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span>
<a name="l00046"></a>00046 <span class="preprocessor">#include &lt;apr.h&gt;</span>
<a name="l00047"></a>00047 <span class="preprocessor">#include &lt;apr_pools.h&gt;</span>
<a name="l00048"></a>00048 <span class="preprocessor">#include &lt;apr_file_io.h&gt;</span>
<a name="l00049"></a>00049
<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="svn__types_8h.html" title="Subversion&amp;#39;s data types.">svn_types.h</a>"</span>
<a name="l00051"></a>00051 <span class="preprocessor">#include "<a class="code" href="svn__error_8h.html" title="Common exception handling for Subversion.">svn_error.h</a>"</span>
<a name="l00052"></a>00052 <span class="preprocessor">#include "<a class="code" href="svn__io_8h.html" title="General file I/O for Subversion.">svn_io.h</a>"</span>
<a name="l00053"></a>00053 <span class="preprocessor">#include "<a class="code" href="svn__version_8h.html" title="Version information.">svn_version.h</a>"</span>
<a name="l00054"></a>00054
<a name="l00055"></a>00055 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00057"></a>00057 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
<a name="l00058"></a>00058
<a name="l00059"></a>00059
<a name="l00060"></a>00060 <span class="comment"></span>
<a name="l00061"></a>00061 <span class="comment">/**</span>
<a name="l00062"></a>00062 <span class="comment"> * Get libsvn_diff version information.</span>
<a name="l00063"></a>00063 <span class="comment"> *</span>
<a name="l00064"></a>00064 <span class="comment"> * @since New in 1.1.</span>
<a name="l00065"></a>00065 <span class="comment"> */</span>
<a name="l00066"></a>00066 <span class="keyword">const</span> <a class="code" href="structsvn__version__t.html" title="Version information.">svn_version_t</a> *<a class="code" href="svn__diff_8h.html#5a58195c4a4f8cac78ed0c1f0a3d4975" title="Get libsvn_diff version information.">svn_diff_version</a>(<span class="keywordtype">void</span>);
<a name="l00067"></a>00067
<a name="l00068"></a>00068
<a name="l00069"></a>00069 <span class="comment">/* Diffs. */</span>
<a name="l00070"></a>00070 <span class="comment"></span>
<a name="l00071"></a>00071 <span class="comment">/** An opaque type that represents a difference between either two or</span>
<a name="l00072"></a>00072 <span class="comment"> * three datasources. This object is returned by svn_diff_diff(),</span>
<a name="l00073"></a>00073 <span class="comment"> * svn_diff_diff3() and svn_diff_diff4(), and consumed by a number of</span>
<a name="l00074"></a>00074 <span class="comment"> * other routines.</span>
<a name="l00075"></a>00075 <span class="comment"> */</span>
<a name="l00076"></a><a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3">00076</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> <a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a>;
<a name="l00077"></a>00077 <span class="comment"></span>
<a name="l00078"></a>00078 <span class="comment">/**</span>
<a name="l00079"></a>00079 <span class="comment"> * There are four types of datasources. In GNU diff3 terminology,</span>
<a name="l00080"></a>00080 <span class="comment"> * the first three types correspond to the phrases "older", "mine",</span>
<a name="l00081"></a>00081 <span class="comment"> * and "yours".</span>
<a name="l00082"></a>00082 <span class="comment"> */</span>
<a name="l00083"></a><a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e1">00083</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e1" title="There are four types of datasources.">svn_diff_datasource_e</a>
<a name="l00084"></a>00084 {<span class="comment"></span>
<a name="l00085"></a>00085 <span class="comment"> /** The oldest form of the data. */</span>
<a name="l00086"></a><a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e12c93024afeed0db34a49efe068bfe971">00086</a> <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e12c93024afeed0db34a49efe068bfe971" title="The oldest form of the data.">svn_diff_datasource_original</a>,
<a name="l00087"></a>00087 <span class="comment"></span>
<a name="l00088"></a>00088 <span class="comment"> /** The same data, but potentially changed by the user. */</span>
<a name="l00089"></a><a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e19b7f628adc881587defb639c58dfbe3b">00089</a> <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e19b7f628adc881587defb639c58dfbe3b" title="The same data, but potentially changed by the user.">svn_diff_datasource_modified</a>,
<a name="l00090"></a>00090 <span class="comment"></span>
<a name="l00091"></a>00091 <span class="comment"> /** The latest version of the data, possibly different than the</span>
<a name="l00092"></a>00092 <span class="comment"> * user's modified version.</span>
<a name="l00093"></a>00093 <span class="comment"> */</span>
<a name="l00094"></a><a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e1378abbd6e8fd3b09ced12f164dcbe96c">00094</a> <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e1378abbd6e8fd3b09ced12f164dcbe96c" title="The latest version of the data, possibly different than the user&amp;#39;s modified version...">svn_diff_datasource_latest</a>,
<a name="l00095"></a>00095 <span class="comment"></span>
<a name="l00096"></a>00096 <span class="comment"> /** The common ancestor of original and modified. */</span>
<a name="l00097"></a><a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e133aa2f311918f0bab2834760e2344c13">00097</a> <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e133aa2f311918f0bab2834760e2344c13" title="The common ancestor of original and modified.">svn_diff_datasource_ancestor</a>
<a name="l00098"></a>00098
<a name="l00099"></a>00099 } <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e1" title="There are four types of datasources.">svn_diff_datasource_e</a>;
<a name="l00100"></a>00100
<a name="l00101"></a>00101 <span class="comment"></span>
<a name="l00102"></a>00102 <span class="comment">/** A vtable for reading data from the three datasources. */</span>
<a name="l00103"></a><a class="code" href="structsvn__diff__fns__t.html">00103</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__diff__fns__t.html" title="A vtable for reading data from the three datasources.">svn_diff_fns_t</a>
<a name="l00104"></a>00104 {<span class="comment"></span>
<a name="l00105"></a>00105 <span class="comment"> /** Open the datasource of type @a datasource. */</span>
<a name="l00106"></a>00106 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*datasource_open)(<span class="keywordtype">void</span> *diff_baton,
<a name="l00107"></a>00107 <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e1" title="There are four types of datasources.">svn_diff_datasource_e</a> datasource);
<a name="l00108"></a>00108 <span class="comment"></span>
<a name="l00109"></a>00109 <span class="comment"> /** Close the datasource of type @a datasource. */</span>
<a name="l00110"></a>00110 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*datasource_close)(<span class="keywordtype">void</span> *diff_baton,
<a name="l00111"></a>00111 <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e1" title="There are four types of datasources.">svn_diff_datasource_e</a> datasource);
<a name="l00112"></a>00112 <span class="comment"></span>
<a name="l00113"></a>00113 <span class="comment"> /** Get the next "token" from the datasource of type @a datasource.</span>
<a name="l00114"></a>00114 <span class="comment"> * Return a "token" in @a *token. Return a hash of "token" in @a *hash.</span>
<a name="l00115"></a>00115 <span class="comment"> * Leave @a token and @a hash untouched when the datasource is exhausted.</span>
<a name="l00116"></a>00116 <span class="comment"> */</span>
<a name="l00117"></a>00117 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*datasource_get_next_token)(apr_uint32_t *hash, <span class="keywordtype">void</span> **token,
<a name="l00118"></a>00118 <span class="keywordtype">void</span> *diff_baton,
<a name="l00119"></a>00119 <a class="code" href="svn__diff_8h.html#8821c640a150d0ddead17596dabc26e1" title="There are four types of datasources.">svn_diff_datasource_e</a> datasource);
<a name="l00120"></a>00120 <span class="comment"></span>
<a name="l00121"></a>00121 <span class="comment"> /** A function for ordering the tokens, resembling 'strcmp' in functionality.</span>
<a name="l00122"></a>00122 <span class="comment"> * @a compare should contain the return value of the comparison:</span>
<a name="l00123"></a>00123 <span class="comment"> * If @a ltoken and @a rtoken are "equal", return 0. If @a ltoken is</span>
<a name="l00124"></a>00124 <span class="comment"> * "less than" @a rtoken, return a number &lt; 0. If @a ltoken is</span>
<a name="l00125"></a>00125 <span class="comment"> * "greater than" @a rtoken, return a number &gt; 0.</span>
<a name="l00126"></a>00126 <span class="comment"> */</span>
<a name="l00127"></a>00127 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*token_compare)(<span class="keywordtype">void</span> *diff_baton,
<a name="l00128"></a>00128 <span class="keywordtype">void</span> *ltoken,
<a name="l00129"></a>00129 <span class="keywordtype">void</span> *rtoken,
<a name="l00130"></a>00130 <span class="keywordtype">int</span> *compare);
<a name="l00131"></a>00131 <span class="comment"></span>
<a name="l00132"></a>00132 <span class="comment"> /** Free @a token from memory, the diff algorithm is done with it. */</span>
<a name="l00133"></a>00133 void (*<a class="code" href="structsvn__diff__fns__t.html#80562558b08b804e92ef907e2e05ee3f" title="Free token from memory, the diff algorithm is done with it.">token_discard</a>)(<span class="keywordtype">void</span> *diff_baton,
<a name="l00134"></a>00134 <span class="keywordtype">void</span> *token);
<a name="l00135"></a>00135 <span class="comment"></span>
<a name="l00136"></a>00136 <span class="comment"> /** Free *all* tokens from memory, they're no longer needed. */</span>
<a name="l00137"></a>00137 void (*<a class="code" href="structsvn__diff__fns__t.html#8e666d5c46e91374629e69142909b2db" title="Free *all* tokens from memory, they&amp;#39;re no longer needed.">token_discard_all</a>)(<span class="keywordtype">void</span> *diff_baton);
<a name="l00138"></a>00138 } <a class="code" href="structsvn__diff__fns__t.html" title="A vtable for reading data from the three datasources.">svn_diff_fns_t</a>;
<a name="l00139"></a>00139
<a name="l00140"></a>00140
<a name="l00141"></a>00141 <span class="comment">/* The Main Events */</span>
<a name="l00142"></a>00142 <span class="comment"></span>
<a name="l00143"></a>00143 <span class="comment">/** Given a vtable of @a diff_fns/@a diff_baton for reading datasources,</span>
<a name="l00144"></a>00144 <span class="comment"> * return a diff object in @a *diff that represents a difference between</span>
<a name="l00145"></a>00145 <span class="comment"> * an "original" and "modified" datasource. Do all allocation in @a pool.</span>
<a name="l00146"></a>00146 <span class="comment"> */</span>
<a name="l00147"></a>00147 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *<a class="code" href="svn__diff_8h.html#3fae3c023184611010ad555b68e4a4d6" title="Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object...">svn_diff_diff</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00148"></a>00148 <span class="keywordtype">void</span> *diff_baton,
<a name="l00149"></a>00149 <span class="keyword">const</span> <a class="code" href="structsvn__diff__fns__t.html" title="A vtable for reading data from the three datasources.">svn_diff_fns_t</a> *diff_fns,
<a name="l00150"></a>00150 apr_pool_t *pool);
<a name="l00151"></a>00151 <span class="comment"></span>
<a name="l00152"></a>00152 <span class="comment">/** Given a vtable of @a diff_fns/@a diff_baton for reading datasources,</span>
<a name="l00153"></a>00153 <span class="comment"> * return a diff object in @a *diff that represents a difference between</span>
<a name="l00154"></a>00154 <span class="comment"> * three datasources: "original", "modified", and "latest". Do all</span>
<a name="l00155"></a>00155 <span class="comment"> * allocation in @a pool.</span>
<a name="l00156"></a>00156 <span class="comment"> */</span>
<a name="l00157"></a>00157 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *<a class="code" href="svn__diff_8h.html#073245ac36a026c2c69b3ca156652894" title="Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object...">svn_diff_diff3</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00158"></a>00158 <span class="keywordtype">void</span> *diff_baton,
<a name="l00159"></a>00159 <span class="keyword">const</span> <a class="code" href="structsvn__diff__fns__t.html" title="A vtable for reading data from the three datasources.">svn_diff_fns_t</a> *diff_fns,
<a name="l00160"></a>00160 apr_pool_t *pool);
<a name="l00161"></a>00161 <span class="comment"></span>
<a name="l00162"></a>00162 <span class="comment">/** Given a vtable of @a diff_fns/@a diff_baton for reading datasources,</span>
<a name="l00163"></a>00163 <span class="comment"> * return a diff object in @a *diff that represents a difference between</span>
<a name="l00164"></a>00164 <span class="comment"> * two datasources: "original" and "latest", adjusted to become a full</span>
<a name="l00165"></a>00165 <span class="comment"> * difference between "original", "modified" and "latest" using "ancestor".</span>
<a name="l00166"></a>00166 <span class="comment"> * Do all allocation in @a pool.</span>
<a name="l00167"></a>00167 <span class="comment"> */</span>
<a name="l00168"></a>00168 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *<a class="code" href="svn__diff_8h.html#f0081fa1853b30f374a59df8412fae44" title="Given a vtable of diff_fns/diff_baton for reading datasources, return a diff object...">svn_diff_diff4</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00169"></a>00169 <span class="keywordtype">void</span> *diff_baton,
<a name="l00170"></a>00170 <span class="keyword">const</span> <a class="code" href="structsvn__diff__fns__t.html" title="A vtable for reading data from the three datasources.">svn_diff_fns_t</a> *diff_fns,
<a name="l00171"></a>00171 apr_pool_t *pool);
<a name="l00172"></a>00172
<a name="l00173"></a>00173
<a name="l00174"></a>00174 <span class="comment">/* Utility functions */</span>
<a name="l00175"></a>00175 <span class="comment"></span>
<a name="l00176"></a>00176 <span class="comment">/** Determine if a diff object contains conflicts. If it does, return</span>
<a name="l00177"></a>00177 <span class="comment"> * @c TRUE, else return @c FALSE.</span>
<a name="l00178"></a>00178 <span class="comment"> */</span>
<a name="l00179"></a>00179 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a>
<a name="l00180"></a>00180 <a class="code" href="svn__diff_8h.html#d85bfdef30f7ff1e340aeaa51a40ac31" title="Determine if a diff object contains conflicts.">svn_diff_contains_conflicts</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff);
<a name="l00181"></a>00181
<a name="l00182"></a>00182 <span class="comment"></span>
<a name="l00183"></a>00183 <span class="comment">/** Determine if a diff object contains actual differences between the</span>
<a name="l00184"></a>00184 <span class="comment"> * datasources. If so, return @c TRUE, else return @c FALSE.</span>
<a name="l00185"></a>00185 <span class="comment"> */</span>
<a name="l00186"></a>00186 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a>
<a name="l00187"></a>00187 <a class="code" href="svn__diff_8h.html#77596c94cc8567ddc31988482ebde563" title="Determine if a diff object contains actual differences between the datasources.">svn_diff_contains_diffs</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff);
<a name="l00188"></a>00188
<a name="l00189"></a>00189
<a name="l00190"></a>00190
<a name="l00191"></a>00191
<a name="l00192"></a>00192 <span class="comment">/* Displaying Diffs */</span>
<a name="l00193"></a>00193 <span class="comment"></span>
<a name="l00194"></a>00194 <span class="comment">/** A vtable for displaying (or consuming) differences between datasources.</span>
<a name="l00195"></a>00195 <span class="comment"> *</span>
<a name="l00196"></a>00196 <span class="comment"> * Differences, similarities, and conflicts are described by lining up</span>
<a name="l00197"></a>00197 <span class="comment"> * "ranges" of data.</span>
<a name="l00198"></a>00198 <span class="comment"> *</span>
<a name="l00199"></a>00199 <span class="comment"> * @note These callbacks describe data ranges in units of "tokens".</span>
<a name="l00200"></a>00200 <span class="comment"> * A "token" is whatever you've defined it to be in your datasource</span>
<a name="l00201"></a>00201 <span class="comment"> * @c svn_diff_fns_t vtable.</span>
<a name="l00202"></a>00202 <span class="comment"> */</span>
<a name="l00203"></a><a class="code" href="structsvn__diff__output__fns__t.html">00203</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__diff__output__fns__t.html" title="A vtable for displaying (or consuming) differences between datasources.">svn_diff_output_fns_t</a>
<a name="l00204"></a>00204 {
<a name="l00205"></a>00205 <span class="comment">/* Two-way and three-way diffs both call the first two output functions: */</span>
<a name="l00206"></a>00206 <span class="comment"></span>
<a name="l00207"></a>00207 <span class="comment"> /**</span>
<a name="l00208"></a>00208 <span class="comment"> * If doing a two-way diff, then an *identical* data range was found</span>
<a name="l00209"></a>00209 <span class="comment"> * between the "original" and "modified" datasources. Specifically,</span>
<a name="l00210"></a>00210 <span class="comment"> * the match starts at @a original_start and goes for @a original_length</span>
<a name="l00211"></a>00211 <span class="comment"> * tokens in the original data, and at @a modified_start for</span>
<a name="l00212"></a>00212 <span class="comment"> * @a modified_length tokens in the modified data.</span>
<a name="l00213"></a>00213 <span class="comment"> *</span>
<a name="l00214"></a>00214 <span class="comment"> * If doing a three-way diff, then all three datasources have</span>
<a name="l00215"></a>00215 <span class="comment"> * matching data ranges. The range @a latest_start, @a latest_length in</span>
<a name="l00216"></a>00216 <span class="comment"> * the "latest" datasource is identical to the range @a original_start,</span>
<a name="l00217"></a>00217 <span class="comment"> * @a original_length in the original data, and is also identical to</span>
<a name="l00218"></a>00218 <span class="comment"> * the range @a modified_start, @a modified_length in the modified data.</span>
<a name="l00219"></a>00219 <span class="comment"> */</span>
<a name="l00220"></a>00220 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*output_common)(<span class="keywordtype">void</span> *output_baton,
<a name="l00221"></a>00221 apr_off_t original_start,
<a name="l00222"></a>00222 apr_off_t original_length,
<a name="l00223"></a>00223 apr_off_t modified_start,
<a name="l00224"></a>00224 apr_off_t modified_length,
<a name="l00225"></a>00225 apr_off_t latest_start,
<a name="l00226"></a>00226 apr_off_t latest_length);
<a name="l00227"></a>00227 <span class="comment"></span>
<a name="l00228"></a>00228 <span class="comment"> /**</span>
<a name="l00229"></a>00229 <span class="comment"> * If doing a two-way diff, then an *conflicting* data range was found</span>
<a name="l00230"></a>00230 <span class="comment"> * between the "original" and "modified" datasources. Specifically,</span>
<a name="l00231"></a>00231 <span class="comment"> * the conflict starts at @a original_start and goes for @a original_length</span>
<a name="l00232"></a>00232 <span class="comment"> * tokens in the original data, and at @a modified_start for</span>
<a name="l00233"></a>00233 <span class="comment"> * @a modified_length tokens in the modified data.</span>
<a name="l00234"></a>00234 <span class="comment"> *</span>
<a name="l00235"></a>00235 <span class="comment"> * If doing a three-way diff, then an identical data range was discovered</span>
<a name="l00236"></a>00236 <span class="comment"> * between the "original" and "latest" datasources, but this conflicts with</span>
<a name="l00237"></a>00237 <span class="comment"> * a range in the "modified" datasource.</span>
<a name="l00238"></a>00238 <span class="comment"> */</span>
<a name="l00239"></a>00239 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*output_diff_modified)(<span class="keywordtype">void</span> *output_baton,
<a name="l00240"></a>00240 apr_off_t original_start,
<a name="l00241"></a>00241 apr_off_t original_length,
<a name="l00242"></a>00242 apr_off_t modified_start,
<a name="l00243"></a>00243 apr_off_t modified_length,
<a name="l00244"></a>00244 apr_off_t latest_start,
<a name="l00245"></a>00245 apr_off_t latest_length);
<a name="l00246"></a>00246
<a name="l00247"></a>00247 <span class="comment">/* ------ The following callbacks are used by three-way diffs only --- */</span>
<a name="l00248"></a>00248 <span class="comment"></span>
<a name="l00249"></a>00249 <span class="comment"> /** An identical data range was discovered between the "original" and</span>
<a name="l00250"></a>00250 <span class="comment"> * "modified" datasources, but this conflicts with a range in the</span>
<a name="l00251"></a>00251 <span class="comment"> * "latest" datasource.</span>
<a name="l00252"></a>00252 <span class="comment"> */</span>
<a name="l00253"></a>00253 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*output_diff_latest)(<span class="keywordtype">void</span> *output_baton,
<a name="l00254"></a>00254 apr_off_t original_start,
<a name="l00255"></a>00255 apr_off_t original_length,
<a name="l00256"></a>00256 apr_off_t modified_start,
<a name="l00257"></a>00257 apr_off_t modified_length,
<a name="l00258"></a>00258 apr_off_t latest_start,
<a name="l00259"></a>00259 apr_off_t latest_length);
<a name="l00260"></a>00260 <span class="comment"></span>
<a name="l00261"></a>00261 <span class="comment"> /** An identical data range was discovered between the "modified" and</span>
<a name="l00262"></a>00262 <span class="comment"> * "latest" datasources, but this conflicts with a range in the</span>
<a name="l00263"></a>00263 <span class="comment"> * "original" datasource.</span>
<a name="l00264"></a>00264 <span class="comment"> */</span>
<a name="l00265"></a>00265 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*output_diff_common)(<span class="keywordtype">void</span> *output_baton,
<a name="l00266"></a>00266 apr_off_t original_start,
<a name="l00267"></a>00267 apr_off_t original_length,
<a name="l00268"></a>00268 apr_off_t modified_start,
<a name="l00269"></a>00269 apr_off_t modified_length,
<a name="l00270"></a>00270 apr_off_t latest_start,
<a name="l00271"></a>00271 apr_off_t latest_length);
<a name="l00272"></a>00272 <span class="comment"></span>
<a name="l00273"></a>00273 <span class="comment"> /** All three datasources have conflicting data ranges. The range</span>
<a name="l00274"></a>00274 <span class="comment"> * @a latest_start, @a latest_length in the "latest" datasource conflicts</span>
<a name="l00275"></a>00275 <span class="comment"> * with the range @a original_start, @a original_length in the "original"</span>
<a name="l00276"></a>00276 <span class="comment"> * datasource, and also conflicts with the range @a modified_start,</span>
<a name="l00277"></a>00277 <span class="comment"> * @a modified_length in the "modified" datasource.</span>
<a name="l00278"></a>00278 <span class="comment"> * If there are common ranges in the "modified" and "latest" datasources</span>
<a name="l00279"></a>00279 <span class="comment"> * in this conflicting range, @a resolved_diff will contain a diff</span>
<a name="l00280"></a>00280 <span class="comment"> * which can be used to retrieve the common and conflicting ranges.</span>
<a name="l00281"></a>00281 <span class="comment"> */</span>
<a name="l00282"></a>00282 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*output_conflict)(<span class="keywordtype">void</span> *output_baton,
<a name="l00283"></a>00283 apr_off_t original_start,
<a name="l00284"></a>00284 apr_off_t original_length,
<a name="l00285"></a>00285 apr_off_t modified_start,
<a name="l00286"></a>00286 apr_off_t modified_length,
<a name="l00287"></a>00287 apr_off_t latest_start,
<a name="l00288"></a>00288 apr_off_t latest_length,
<a name="l00289"></a>00289 <a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *resolved_diff);
<a name="l00290"></a>00290 } <a class="code" href="structsvn__diff__output__fns__t.html" title="A vtable for displaying (or consuming) differences between datasources.">svn_diff_output_fns_t</a>;
<a name="l00291"></a>00291
<a name="l00292"></a>00292 <span class="comment"></span>
<a name="l00293"></a>00293 <span class="comment">/** Given a vtable of @a output_fns/@a output_baton for consuming</span>
<a name="l00294"></a>00294 <span class="comment"> * differences, output the differences in @a diff.</span>
<a name="l00295"></a>00295 <span class="comment"> */</span>
<a name="l00296"></a>00296 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00297"></a>00297 <a class="code" href="svn__diff_8h.html#5d7485d61ab944a9a994eb18d8c9a9c5" title="Given a vtable of output_fns/output_baton for consuming differences, output the differences...">svn_diff_output</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff,
<a name="l00298"></a>00298 <span class="keywordtype">void</span> *output_baton,
<a name="l00299"></a>00299 <span class="keyword">const</span> <a class="code" href="structsvn__diff__output__fns__t.html" title="A vtable for displaying (or consuming) differences between datasources.">svn_diff_output_fns_t</a> *output_fns);
<a name="l00300"></a>00300
<a name="l00301"></a>00301
<a name="l00302"></a>00302
<a name="l00303"></a>00303 <span class="comment">/* Diffs on files */</span>
<a name="l00304"></a>00304 <span class="comment"></span>
<a name="l00305"></a>00305 <span class="comment">/** To what extent whitespace should be ignored when comparing lines.</span>
<a name="l00306"></a>00306 <span class="comment"> *</span>
<a name="l00307"></a>00307 <span class="comment"> * @since New in 1.4.</span>
<a name="l00308"></a>00308 <span class="comment"> */</span>
<a name="l00309"></a><a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f65">00309</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f65" title="To what extent whitespace should be ignored when comparing lines.">svn_diff_file_ignore_space_t</a>
<a name="l00310"></a>00310 {<span class="comment"></span>
<a name="l00311"></a>00311 <span class="comment"> /** Ignore no whitespace. */</span>
<a name="l00312"></a><a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f656f0057c381650cd32dbb062e40dbcba5">00312</a> <a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f656f0057c381650cd32dbb062e40dbcba5" title="Ignore no whitespace.">svn_diff_file_ignore_space_none</a>,
<a name="l00313"></a>00313 <span class="comment"></span>
<a name="l00314"></a>00314 <span class="comment"> /** Ignore changes in sequences of whitespace characters, treating each</span>
<a name="l00315"></a>00315 <span class="comment"> * sequence of whitespace characters as a single space. */</span>
<a name="l00316"></a><a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f65d2a384001d7174e6767d1978e7429d8b">00316</a> <a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f65d2a384001d7174e6767d1978e7429d8b" title="Ignore changes in sequences of whitespace characters, treating each sequence of whitespace...">svn_diff_file_ignore_space_change</a>,
<a name="l00317"></a>00317 <span class="comment"></span>
<a name="l00318"></a>00318 <span class="comment"> /** Ignore all whitespace characters. */</span>
<a name="l00319"></a><a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f654579ba57b0e155e1a973ab20b6803134">00319</a> <a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f654579ba57b0e155e1a973ab20b6803134" title="Ignore all whitespace characters.">svn_diff_file_ignore_space_all</a>
<a name="l00320"></a>00320 } <a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f65" title="To what extent whitespace should be ignored when comparing lines.">svn_diff_file_ignore_space_t</a>;
<a name="l00321"></a>00321 <span class="comment"></span>
<a name="l00322"></a>00322 <span class="comment">/** Options to control the behaviour of the file diff routines.</span>
<a name="l00323"></a>00323 <span class="comment"> *</span>
<a name="l00324"></a>00324 <span class="comment"> * @since New in 1.4.</span>
<a name="l00325"></a>00325 <span class="comment"> *</span>
<a name="l00326"></a>00326 <span class="comment"> * @note This structure may be extended in the future, so to preserve binary</span>
<a name="l00327"></a>00327 <span class="comment"> * compatibility, users must not allocate structs of this type themselves.</span>
<a name="l00328"></a>00328 <span class="comment"> * @see svn_diff_file_options_create().</span>
<a name="l00329"></a>00329 <span class="comment"> *</span>
<a name="l00330"></a>00330 <span class="comment"> * @note Although its name suggests otherwise, this structure is used to</span>
<a name="l00331"></a>00331 <span class="comment"> * pass options to file as well as in-memory diff functions.</span>
<a name="l00332"></a>00332 <span class="comment"> */</span>
<a name="l00333"></a><a class="code" href="structsvn__diff__file__options__t.html">00333</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a>
<a name="l00334"></a>00334 {<span class="comment"></span>
<a name="l00335"></a>00335 <span class="comment"> /** To what extent whitespace should be ignored when comparing lines.</span>
<a name="l00336"></a>00336 <span class="comment"> * The default is @c svn_diff_file_ignore_space_none. */</span>
<a name="l00337"></a><a class="code" href="structsvn__diff__file__options__t.html#a9af536942cd066b86c468239abe4c4f">00337</a> <a class="code" href="svn__diff_8h.html#89e4b15ecac2afd0b42cb3f1988b1f65" title="To what extent whitespace should be ignored when comparing lines.">svn_diff_file_ignore_space_t</a> <a class="code" href="structsvn__diff__file__options__t.html#a9af536942cd066b86c468239abe4c4f" title="To what extent whitespace should be ignored when comparing lines.">ignore_space</a>;<span class="comment"></span>
<a name="l00338"></a>00338 <span class="comment"> /** Whether to treat all end-of-line markers the same when comparing lines.</span>
<a name="l00339"></a>00339 <span class="comment"> * The default is @c FALSE. */</span>
<a name="l00340"></a><a class="code" href="structsvn__diff__file__options__t.html#a64547c47939b23c2718632d725bd129">00340</a> <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> <a class="code" href="structsvn__diff__file__options__t.html#a64547c47939b23c2718632d725bd129" title="Whether to treat all end-of-line markers the same when comparing lines.">ignore_eol_style</a>;<span class="comment"></span>
<a name="l00341"></a>00341 <span class="comment"> /** Whether the '@@' lines of the unified diff output should include a prefix</span>
<a name="l00342"></a>00342 <span class="comment"> * of the nearest preceding line that starts with a character that might be</span>
<a name="l00343"></a>00343 <span class="comment"> * the initial character of a C language identifier. The default is</span>
<a name="l00344"></a>00344 <span class="comment"> * @c FALSE.</span>
<a name="l00345"></a>00345 <span class="comment"> */</span>
<a name="l00346"></a><a class="code" href="structsvn__diff__file__options__t.html#42238327bc9f1d3c1d8db495d60dedc1">00346</a> <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> <a class="code" href="structsvn__diff__file__options__t.html#42238327bc9f1d3c1d8db495d60dedc1" title="Whether the &amp;#39;@&amp;#39; lines of the unified diff output should include a prefix...">show_c_function</a>;
<a name="l00347"></a>00347 } <a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a>;
<a name="l00348"></a>00348 <span class="comment"></span>
<a name="l00349"></a>00349 <span class="comment">/** Allocate a @c svn_diff_file_options_t structure in @a pool, initializing</span>
<a name="l00350"></a>00350 <span class="comment"> * it with default values.</span>
<a name="l00351"></a>00351 <span class="comment"> *</span>
<a name="l00352"></a>00352 <span class="comment"> * @since New in 1.4.</span>
<a name="l00353"></a>00353 <span class="comment"> */</span>
<a name="l00354"></a>00354 <a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a> *
<a name="l00355"></a>00355 <a class="code" href="svn__diff_8h.html#796298bb5b2498c8812061b3d014266c" title="Allocate a svn_diff_file_options_t structure in pool, initializing it with default...">svn_diff_file_options_create</a>(apr_pool_t *pool);
<a name="l00356"></a>00356 <span class="comment"></span>
<a name="l00357"></a>00357 <span class="comment">/**</span>
<a name="l00358"></a>00358 <span class="comment"> * Parse @a args, an array of &lt;tt&gt;const char *&lt;/tt&gt; command line switches</span>
<a name="l00359"></a>00359 <span class="comment"> * and adjust @a options accordingly. @a options is assumed to be initialized</span>
<a name="l00360"></a>00360 <span class="comment"> * with default values. @a pool is used for temporary allocation.</span>
<a name="l00361"></a>00361 <span class="comment"> *</span>
<a name="l00362"></a>00362 <span class="comment"> * @since New in 1.4.</span>
<a name="l00363"></a>00363 <span class="comment"> *</span>
<a name="l00364"></a>00364 <span class="comment"> * The following options are supported:</span>
<a name="l00365"></a>00365 <span class="comment"> * - --ignore-space-change, -b</span>
<a name="l00366"></a>00366 <span class="comment"> * - --ignore-all-space, -w</span>
<a name="l00367"></a>00367 <span class="comment"> * - --ignore-eol-style</span>
<a name="l00368"></a>00368 <span class="comment"> * - --unified, -u (for compatibility, does nothing).</span>
<a name="l00369"></a>00369 <span class="comment"> */</span>
<a name="l00370"></a>00370 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00371"></a>00371 <a class="code" href="svn__diff_8h.html#212d408eee817f2193737fa4e8307a9e" title="Parse args, an array of const char * command line switches and adjust options accordingly...">svn_diff_file_options_parse</a>(<a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a> *options,
<a name="l00372"></a>00372 <span class="keyword">const</span> apr_array_header_t *args,
<a name="l00373"></a>00373 apr_pool_t *pool);
<a name="l00374"></a>00374
<a name="l00375"></a>00375 <span class="comment"></span>
<a name="l00376"></a>00376 <span class="comment">/** A convenience function to produce a diff between two files.</span>
<a name="l00377"></a>00377 <span class="comment"> *</span>
<a name="l00378"></a>00378 <span class="comment"> * @since New in 1.4.</span>
<a name="l00379"></a>00379 <span class="comment"> *</span>
<a name="l00380"></a>00380 <span class="comment"> * Return a diff object in @a *diff (allocated from @a pool) that represents</span>
<a name="l00381"></a>00381 <span class="comment"> * the difference between an @a original file and @a modified file.</span>
<a name="l00382"></a>00382 <span class="comment"> * (The file arguments must be full paths to the files.)</span>
<a name="l00383"></a>00383 <span class="comment"> *</span>
<a name="l00384"></a>00384 <span class="comment"> * Compare lines according to the relevant fields of @a options.</span>
<a name="l00385"></a>00385 <span class="comment"> */</span>
<a name="l00386"></a>00386 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00387"></a>00387 <a class="code" href="svn__diff_8h.html#1b7edd26b59f2a43436d53573526ca8f" title="A convenience function to produce a diff between two files.">svn_diff_file_diff_2</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00388"></a>00388 <span class="keyword">const</span> <span class="keywordtype">char</span> *original,
<a name="l00389"></a>00389 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified,
<a name="l00390"></a>00390 <span class="keyword">const</span> <a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a> *options,
<a name="l00391"></a>00391 apr_pool_t *pool);
<a name="l00392"></a>00392 <span class="comment"></span>
<a name="l00393"></a>00393 <span class="comment">/** Similar to svn_file_diff_2(), but with @a options set to a struct with</span>
<a name="l00394"></a>00394 <span class="comment"> * default options.</span>
<a name="l00395"></a>00395 <span class="comment"> *</span>
<a name="l00396"></a>00396 <span class="comment"> * @deprecated Provided for backwards compatibility with the 1.3 API.</span>
<a name="l00397"></a>00397 <span class="comment"> */</span>
<a name="l00398"></a>00398 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00399"></a>00399 <a class="code" href="svn__diff_8h.html#553e2f229b56443b1f95a2590a3fb106" title="Similar to svn_file_diff_2(), but with options set to a struct with default options...">svn_diff_file_diff</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00400"></a>00400 <span class="keyword">const</span> <span class="keywordtype">char</span> *original,
<a name="l00401"></a>00401 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified,
<a name="l00402"></a>00402 apr_pool_t *pool);
<a name="l00403"></a>00403 <span class="comment"></span>
<a name="l00404"></a>00404 <span class="comment">/** A convenience function to produce a diff between three files.</span>
<a name="l00405"></a>00405 <span class="comment"> *</span>
<a name="l00406"></a>00406 <span class="comment"> * @since New in 1.4.</span>
<a name="l00407"></a>00407 <span class="comment"> *</span>
<a name="l00408"></a>00408 <span class="comment"> * Return a diff object in @a *diff (allocated from @a pool) that represents</span>
<a name="l00409"></a>00409 <span class="comment"> * the difference between an @a original file, @a modified file, and @a latest</span>
<a name="l00410"></a>00410 <span class="comment"> * file.</span>
<a name="l00411"></a>00411 <span class="comment"> *</span>
<a name="l00412"></a>00412 <span class="comment"> * Compare lines according to the relevant fields of @a options.</span>
<a name="l00413"></a>00413 <span class="comment"> */</span>
<a name="l00414"></a>00414 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00415"></a>00415 <a class="code" href="svn__diff_8h.html#d62b844109d8db86b08fdf12714e818e" title="A convenience function to produce a diff between three files.">svn_diff_file_diff3_2</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00416"></a>00416 <span class="keyword">const</span> <span class="keywordtype">char</span> *original,
<a name="l00417"></a>00417 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified,
<a name="l00418"></a>00418 <span class="keyword">const</span> <span class="keywordtype">char</span> *latest,
<a name="l00419"></a>00419 <span class="keyword">const</span> <a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a> *options,
<a name="l00420"></a>00420 apr_pool_t *pool);
<a name="l00421"></a>00421 <span class="comment"></span>
<a name="l00422"></a>00422 <span class="comment">/** Similar to svn_diff_file_diff3_2(), but with @a options set to a struct</span>
<a name="l00423"></a>00423 <span class="comment"> * with default options.</span>
<a name="l00424"></a>00424 <span class="comment"> *</span>
<a name="l00425"></a>00425 <span class="comment"> * @deprecated Provided for backwards compatibility with the 1.3 API.</span>
<a name="l00426"></a>00426 <span class="comment"> */</span>
<a name="l00427"></a>00427 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00428"></a>00428 <a class="code" href="svn__diff_8h.html#f012ea2f88946fdf414a44e3be7ea01a" title="Similar to svn_diff_file_diff3_2(), but with options set to a struct with default...">svn_diff_file_diff3</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00429"></a>00429 <span class="keyword">const</span> <span class="keywordtype">char</span> *original,
<a name="l00430"></a>00430 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified,
<a name="l00431"></a>00431 <span class="keyword">const</span> <span class="keywordtype">char</span> *latest,
<a name="l00432"></a>00432 apr_pool_t *pool);
<a name="l00433"></a>00433 <span class="comment"></span>
<a name="l00434"></a>00434 <span class="comment">/** A convenience function to produce a diff between four files.</span>
<a name="l00435"></a>00435 <span class="comment"> *</span>
<a name="l00436"></a>00436 <span class="comment"> * @since New in 1.4.</span>
<a name="l00437"></a>00437 <span class="comment"> *</span>
<a name="l00438"></a>00438 <span class="comment"> * Return a diff object in @a *diff (allocated from @a pool) that represents</span>
<a name="l00439"></a>00439 <span class="comment"> * the difference between an @a original file, @a modified file, @a latest</span>
<a name="l00440"></a>00440 <span class="comment"> * and @a ancestor file. (The file arguments must be full paths to the files.)</span>
<a name="l00441"></a>00441 <span class="comment"> *</span>
<a name="l00442"></a>00442 <span class="comment"> * Compare lines according to the relevant fields of @a options.</span>
<a name="l00443"></a>00443 <span class="comment"> */</span>
<a name="l00444"></a>00444 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00445"></a>00445 <a class="code" href="svn__diff_8h.html#2186ee46804624aa3713e1c883192ad4" title="A convenience function to produce a diff between four files.">svn_diff_file_diff4_2</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00446"></a>00446 <span class="keyword">const</span> <span class="keywordtype">char</span> *original,
<a name="l00447"></a>00447 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified,
<a name="l00448"></a>00448 <span class="keyword">const</span> <span class="keywordtype">char</span> *latest,
<a name="l00449"></a>00449 <span class="keyword">const</span> <span class="keywordtype">char</span> *ancestor,
<a name="l00450"></a>00450 <span class="keyword">const</span> <a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a> *options,
<a name="l00451"></a>00451 apr_pool_t *pool);
<a name="l00452"></a>00452 <span class="comment"></span>
<a name="l00453"></a>00453 <span class="comment">/** Simliar to svn_file_diff4_2(), but with @a options set to a struct with</span>
<a name="l00454"></a>00454 <span class="comment"> * default options.</span>
<a name="l00455"></a>00455 <span class="comment"> *</span>
<a name="l00456"></a>00456 <span class="comment"> * @deprecated Provided for backwards compatibility with the 1.3 API.</span>
<a name="l00457"></a>00457 <span class="comment"> */</span>
<a name="l00458"></a>00458 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00459"></a>00459 <a class="code" href="svn__diff_8h.html#68fa15b2ab1fe6ef680704510615dfd1" title="Simliar to svn_file_diff4_2(), but with options set to a struct with default options...">svn_diff_file_diff4</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00460"></a>00460 <span class="keyword">const</span> <span class="keywordtype">char</span> *original,
<a name="l00461"></a>00461 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified,
<a name="l00462"></a>00462 <span class="keyword">const</span> <span class="keywordtype">char</span> *latest,
<a name="l00463"></a>00463 <span class="keyword">const</span> <span class="keywordtype">char</span> *ancestor,
<a name="l00464"></a>00464 apr_pool_t *pool);
<a name="l00465"></a>00465 <span class="comment"></span>
<a name="l00466"></a>00466 <span class="comment">/** A convenience function to produce unified diff output from the</span>
<a name="l00467"></a>00467 <span class="comment"> * diff generated by svn_diff_file_diff().</span>
<a name="l00468"></a>00468 <span class="comment"> *</span>
<a name="l00469"></a>00469 <span class="comment"> * @since New in 1.5.</span>
<a name="l00470"></a>00470 <span class="comment"> *</span>
<a name="l00471"></a>00471 <span class="comment"> * Output a @a diff between @a original_path and @a modified_path in unified</span>
<a name="l00472"></a>00472 <span class="comment"> * context diff format to @a output_stream. Optionally supply</span>
<a name="l00473"></a>00473 <span class="comment"> * @a original_header and/or @a modified_header to be displayed in the header</span>
<a name="l00474"></a>00474 <span class="comment"> * of the output. If @a original_header or @a modified_header is @c NULL, a</span>
<a name="l00475"></a>00475 <span class="comment"> * default header will be displayed, consisting of path and last modified time.</span>
<a name="l00476"></a>00476 <span class="comment"> * Output all headers and markers in @a header_encoding. If @a relative_to_dir</span>
<a name="l00477"></a>00477 <span class="comment"> * is not @c NULL, the @a original_path and @a modified_path will have the</span>
<a name="l00478"></a>00478 <span class="comment"> * @a relative_to_dir stripped from the front of the respective paths. If</span>
<a name="l00479"></a>00479 <span class="comment"> * @a relative_to_dir is @c NULL, paths will be not be modified. If</span>
<a name="l00480"></a>00480 <span class="comment"> * @a relative_to_dir is not @c NULL but @a relative_to_dir is not a parent</span>
<a name="l00481"></a>00481 <span class="comment"> * path of the target, an error is returned. Finally, if @a relative_to_dir</span>
<a name="l00482"></a>00482 <span class="comment"> * is a URL, an error will be returned.</span>
<a name="l00483"></a>00483 <span class="comment"> */</span>
<a name="l00484"></a>00484 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00485"></a>00485 <a class="code" href="svn__diff_8h.html#968422a5b6476ff9af8bbdbcd823b5e6" title="A convenience function to produce unified diff output from the diff generated by...">svn_diff_file_output_unified3</a>(<a class="code" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af" title="An abstract stream of bytes--either incoming or outgoing or both.">svn_stream_t</a> *output_stream,
<a name="l00486"></a>00486 <a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff,
<a name="l00487"></a>00487 <span class="keyword">const</span> <span class="keywordtype">char</span> *original_path,
<a name="l00488"></a>00488 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified_path,
<a name="l00489"></a>00489 <span class="keyword">const</span> <span class="keywordtype">char</span> *original_header,
<a name="l00490"></a>00490 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified_header,
<a name="l00491"></a>00491 <span class="keyword">const</span> <span class="keywordtype">char</span> *header_encoding,
<a name="l00492"></a>00492 <span class="keyword">const</span> <span class="keywordtype">char</span> *relative_to_dir,
<a name="l00493"></a>00493 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> show_c_function,
<a name="l00494"></a>00494 apr_pool_t *pool);
<a name="l00495"></a>00495 <span class="comment"></span>
<a name="l00496"></a>00496 <span class="comment">/** Similar to svn_diff_file_output_unified3(), but with @a relative_to_dir</span>
<a name="l00497"></a>00497 <span class="comment"> * set to NULL and @a show_c_function to false.</span>
<a name="l00498"></a>00498 <span class="comment"> *</span>
<a name="l00499"></a>00499 <span class="comment"> * @deprecated Provided for backwards compatibility with the 1.3 API.</span>
<a name="l00500"></a>00500 <span class="comment"> */</span>
<a name="l00501"></a>00501 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00502"></a>00502 <a class="code" href="svn__diff_8h.html#5f1c4c2f8079afd3318693d56491c76c" title="Similar to svn_diff_file_output_unified3(), but with relative_to_dir set to NULL...">svn_diff_file_output_unified2</a>(<a class="code" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af" title="An abstract stream of bytes--either incoming or outgoing or both.">svn_stream_t</a> *output_stream,
<a name="l00503"></a>00503 <a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff,
<a name="l00504"></a>00504 <span class="keyword">const</span> <span class="keywordtype">char</span> *original_path,
<a name="l00505"></a>00505 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified_path,
<a name="l00506"></a>00506 <span class="keyword">const</span> <span class="keywordtype">char</span> *original_header,
<a name="l00507"></a>00507 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified_header,
<a name="l00508"></a>00508 <span class="keyword">const</span> <span class="keywordtype">char</span> *header_encoding,
<a name="l00509"></a>00509 apr_pool_t *pool);
<a name="l00510"></a>00510 <span class="comment"></span>
<a name="l00511"></a>00511 <span class="comment">/** Similar to svn_diff_file_output_unified2(), but with @a header_encoding</span>
<a name="l00512"></a>00512 <span class="comment"> * set to @c APR_LOCALE_CHARSET.</span>
<a name="l00513"></a>00513 <span class="comment"> *</span>
<a name="l00514"></a>00514 <span class="comment"> * @deprecated Provided for backward compatibility with the 1.2 API.</span>
<a name="l00515"></a>00515 <span class="comment"> */</span>
<a name="l00516"></a>00516 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00517"></a>00517 <a class="code" href="svn__diff_8h.html#251f5e2150be81e24b6e27eebd66c6d8" title="Similar to svn_diff_file_output_unified2(), but with header_encoding set to APR_LOCALE_CHARSET...">svn_diff_file_output_unified</a>(<a class="code" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af" title="An abstract stream of bytes--either incoming or outgoing or both.">svn_stream_t</a> *output_stream,
<a name="l00518"></a>00518 <a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff,
<a name="l00519"></a>00519 <span class="keyword">const</span> <span class="keywordtype">char</span> *original_path,
<a name="l00520"></a>00520 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified_path,
<a name="l00521"></a>00521 <span class="keyword">const</span> <span class="keywordtype">char</span> *original_header,
<a name="l00522"></a>00522 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified_header,
<a name="l00523"></a>00523 apr_pool_t *pool);
<a name="l00524"></a>00524
<a name="l00525"></a>00525 <span class="comment"></span>
<a name="l00526"></a>00526 <span class="comment">/** A convenience function to produce diff3 output from the</span>
<a name="l00527"></a>00527 <span class="comment"> * diff generated by svn_diff_file_diff3().</span>
<a name="l00528"></a>00528 <span class="comment"> *</span>
<a name="l00529"></a>00529 <span class="comment"> * Output a @a diff between @a original_path, @a modified_path and</span>
<a name="l00530"></a>00530 <span class="comment"> * @a latest_path in merged format to @a output_stream. Optionally supply</span>
<a name="l00531"></a>00531 <span class="comment"> * @a conflict_modified, @a conflict_original, @a conflict_separator and/or</span>
<a name="l00532"></a>00532 <span class="comment"> * @a conflict_latest to be displayed as conflict markers in the output.</span>
<a name="l00533"></a>00533 <span class="comment"> * If @a conflict_original, @a conflict_modified, @a conflict_latest and/or</span>
<a name="l00534"></a>00534 <span class="comment"> * @a conflict_separator is @c NULL, a default marker will be displayed.</span>
<a name="l00535"></a>00535 <span class="comment"> * Set @a display_original_in_conflict and @a display_resolved_conflicts</span>
<a name="l00536"></a>00536 <span class="comment"> * as desired. Note that these options are mutually exclusive.</span>
<a name="l00537"></a>00537 <span class="comment"> */</span>
<a name="l00538"></a>00538 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00539"></a>00539 <a class="code" href="svn__diff_8h.html#35d61f33b5756908d3fe16a88ba1b660" title="A convenience function to produce diff3 output from the diff generated by svn_diff_file_diff3()...">svn_diff_file_output_merge</a>(<a class="code" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af" title="An abstract stream of bytes--either incoming or outgoing or both.">svn_stream_t</a> *output_stream,
<a name="l00540"></a>00540 <a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff,
<a name="l00541"></a>00541 <span class="keyword">const</span> <span class="keywordtype">char</span> *original_path,
<a name="l00542"></a>00542 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified_path,
<a name="l00543"></a>00543 <span class="keyword">const</span> <span class="keywordtype">char</span> *latest_path,
<a name="l00544"></a>00544 <span class="keyword">const</span> <span class="keywordtype">char</span> *conflict_original,
<a name="l00545"></a>00545 <span class="keyword">const</span> <span class="keywordtype">char</span> *conflict_modified,
<a name="l00546"></a>00546 <span class="keyword">const</span> <span class="keywordtype">char</span> *conflict_latest,
<a name="l00547"></a>00547 <span class="keyword">const</span> <span class="keywordtype">char</span> *conflict_separator,
<a name="l00548"></a>00548 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> display_original_in_conflict,
<a name="l00549"></a>00549 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> display_resolved_conflicts,
<a name="l00550"></a>00550 apr_pool_t *pool);
<a name="l00551"></a>00551
<a name="l00552"></a>00552
<a name="l00553"></a>00553
<a name="l00554"></a>00554 <span class="comment">/* Diffs on in-memory structures */</span>
<a name="l00555"></a>00555 <span class="comment"></span>
<a name="l00556"></a>00556 <span class="comment">/** Generate @a diff output from the @a original and @a modified</span>
<a name="l00557"></a>00557 <span class="comment"> * in-memory strings. @a diff will be allocated from @a pool.</span>
<a name="l00558"></a>00558 <span class="comment"> *</span>
<a name="l00559"></a>00559 <span class="comment"> * @since New in 1.5.</span>
<a name="l00560"></a>00560 <span class="comment"> */</span>
<a name="l00561"></a>00561 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00562"></a>00562 <a class="code" href="svn__diff_8h.html#273f5960c32443cdb304f4cc5dedf9ca" title="Generate diff output from the original and modified in-memory strings.">svn_diff_mem_string_diff</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00563"></a>00563 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *original,
<a name="l00564"></a>00564 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *modified,
<a name="l00565"></a>00565 <span class="keyword">const</span> <a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a> *options,
<a name="l00566"></a>00566 apr_pool_t *pool);
<a name="l00567"></a>00567
<a name="l00568"></a>00568 <span class="comment"></span>
<a name="l00569"></a>00569 <span class="comment">/** Generate @a diff output from the @a orginal, @a modified and @a latest</span>
<a name="l00570"></a>00570 <span class="comment"> * in-memory strings. @a diff will be allocated in @a pool.</span>
<a name="l00571"></a>00571 <span class="comment"> *</span>
<a name="l00572"></a>00572 <span class="comment"> * @since New in 1.5.</span>
<a name="l00573"></a>00573 <span class="comment"> */</span>
<a name="l00574"></a>00574 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00575"></a>00575 <a class="code" href="svn__diff_8h.html#6b9c514fb18f22f7aee96f4b1f065bac" title="Generate diff output from the orginal, modified and latest in-memory strings.">svn_diff_mem_string_diff3</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00576"></a>00576 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *original,
<a name="l00577"></a>00577 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *modified,
<a name="l00578"></a>00578 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *latest,
<a name="l00579"></a>00579 <span class="keyword">const</span> <a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a> *options,
<a name="l00580"></a>00580 apr_pool_t *pool);
<a name="l00581"></a>00581
<a name="l00582"></a>00582 <span class="comment"></span>
<a name="l00583"></a>00583 <span class="comment">/** Generate @a diff output from the @a original, @a modified and @a latest</span>
<a name="l00584"></a>00584 <span class="comment"> * in-memory strings, using @a ancestor. @a diff will be allocated in @a pool.</span>
<a name="l00585"></a>00585 <span class="comment"> *</span>
<a name="l00586"></a>00586 <span class="comment"> * @since New in 1.5.</span>
<a name="l00587"></a>00587 <span class="comment"> */</span>
<a name="l00588"></a>00588 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00589"></a>00589 <a class="code" href="svn__diff_8h.html#503bbc1503bbc8d657ee30e1b7cb0ffa" title="Generate diff output from the original, modified and latest in-memory strings, using...">svn_diff_mem_string_diff4</a>(<a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> **diff,
<a name="l00590"></a>00590 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *original,
<a name="l00591"></a>00591 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *modified,
<a name="l00592"></a>00592 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *latest,
<a name="l00593"></a>00593 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *ancestor,
<a name="l00594"></a>00594 <span class="keyword">const</span> <a class="code" href="structsvn__diff__file__options__t.html" title="Options to control the behaviour of the file diff routines.">svn_diff_file_options_t</a> *options,
<a name="l00595"></a>00595 apr_pool_t *pool);
<a name="l00596"></a>00596
<a name="l00597"></a>00597 <span class="comment"></span>
<a name="l00598"></a>00598 <span class="comment">/** Outputs the @a diff object generated by svn_diff_mem_string_diff()</span>
<a name="l00599"></a>00599 <span class="comment"> * in unified diff format on @a output_stream, using @a original</span>
<a name="l00600"></a>00600 <span class="comment"> * and @a modified for the text in the output.</span>
<a name="l00601"></a>00601 <span class="comment"> * Outputs the header and markers in @a header_encoding.</span>
<a name="l00602"></a>00602 <span class="comment"> *</span>
<a name="l00603"></a>00603 <span class="comment"> * @a original_header and @a modified header are</span>
<a name="l00604"></a>00604 <span class="comment"> * used to fill the field after the "---" and "+++" header markers.</span>
<a name="l00605"></a>00605 <span class="comment"> *</span>
<a name="l00606"></a>00606 <span class="comment"> * @since New in 1.5.</span>
<a name="l00607"></a>00607 <span class="comment"> */</span>
<a name="l00608"></a>00608 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00609"></a>00609 <a class="code" href="svn__diff_8h.html#e2ba9764f3ef6d9d87b13f16ab9b1f43" title="Outputs the diff object generated by svn_diff_mem_string_diff() in unified diff format...">svn_diff_mem_string_output_unified</a>(<a class="code" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af" title="An abstract stream of bytes--either incoming or outgoing or both.">svn_stream_t</a> *output_stream,
<a name="l00610"></a>00610 <a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff,
<a name="l00611"></a>00611 <span class="keyword">const</span> <span class="keywordtype">char</span> *original_header,
<a name="l00612"></a>00612 <span class="keyword">const</span> <span class="keywordtype">char</span> *modified_header,
<a name="l00613"></a>00613 <span class="keyword">const</span> <span class="keywordtype">char</span> *header_encoding,
<a name="l00614"></a>00614 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *original,
<a name="l00615"></a>00615 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *modified,
<a name="l00616"></a>00616 apr_pool_t *pool);
<a name="l00617"></a>00617 <span class="comment"></span>
<a name="l00618"></a>00618 <span class="comment">/** Output the @a diff generated by svn_diff_mem_string_diff3() in diff3</span>
<a name="l00619"></a>00619 <span class="comment"> * format on @a output_stream, using @a original, @a modified and @a latest</span>
<a name="l00620"></a>00620 <span class="comment"> * for content changes.</span>
<a name="l00621"></a>00621 <span class="comment"> *</span>
<a name="l00622"></a>00622 <span class="comment"> * Use the conflict markers @a conflict_original, @a conflict_modified,</span>
<a name="l00623"></a>00623 <span class="comment"> * @a conflict_latest and @a conflict_separator or the default one for</span>
<a name="l00624"></a>00624 <span class="comment"> * each of these if @c NULL is passed.</span>
<a name="l00625"></a>00625 <span class="comment"> *</span>
<a name="l00626"></a>00626 <span class="comment"> * Insert the original in the output if @a display_original_in_conflict</span>
<a name="l00627"></a>00627 <span class="comment"> * is @c TRUE.</span>
<a name="l00628"></a>00628 <span class="comment"> *</span>
<a name="l00629"></a>00629 <span class="comment"> * @note @a display_original_in_conflict and @a display_resolved_conflicts</span>
<a name="l00630"></a>00630 <span class="comment"> * are mutually exclusive.</span>
<a name="l00631"></a>00631 <span class="comment"> */</span>
<a name="l00632"></a>00632 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *
<a name="l00633"></a>00633 <a class="code" href="svn__diff_8h.html#c473496b2d0a5334c518bafeb4966e59" title="Output the diff generated by svn_diff_mem_string_diff3() in diff3 format on output_stream...">svn_diff_mem_string_output_merge</a>(<a class="code" href="group__svn__io__byte__streams.html#g06d6291c397e63f895deb92a2c14e6af" title="An abstract stream of bytes--either incoming or outgoing or both.">svn_stream_t</a> *output_stream,
<a name="l00634"></a>00634 <a class="code" href="svn__diff_8h.html#b43107714d2128d68a2dac688b8dc4d3" title="An opaque type that represents a difference between either two or three datasources...">svn_diff_t</a> *diff,
<a name="l00635"></a>00635 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *original,
<a name="l00636"></a>00636 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *modified,
<a name="l00637"></a>00637 <span class="keyword">const</span> <a class="code" href="structsvn__string__t.html" title="A simple counted string.">svn_string_t</a> *latest,
<a name="l00638"></a>00638 <span class="keyword">const</span> <span class="keywordtype">char</span> *conflict_original,
<a name="l00639"></a>00639 <span class="keyword">const</span> <span class="keywordtype">char</span> *conflict_modified,
<a name="l00640"></a>00640 <span class="keyword">const</span> <span class="keywordtype">char</span> *conflict_latest,
<a name="l00641"></a>00641 <span class="keyword">const</span> <span class="keywordtype">char</span> *conflict_separator,
<a name="l00642"></a>00642 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> display_original_in_conflict,
<a name="l00643"></a>00643 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> display_resolved_conflicts,
<a name="l00644"></a>00644 apr_pool_t *pool);
<a name="l00645"></a>00645
<a name="l00646"></a>00646
<a name="l00647"></a>00647 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00648"></a>00648 <span class="preprocessor"></span>}
<a name="l00649"></a>00649 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
<a name="l00650"></a>00650
<a name="l00651"></a>00651 <span class="preprocessor">#endif </span><span class="comment">/* SVN_DIFF_H */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 24 16:18:25 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>