gth, apr_off_t modified_start, apr_off_t modified_length, apr_off_t latest_start, apr_off_t latest_length); /** An identical data range was discovered between the "modified" and * "latest" datasources, but this conflicts with a range in the * "original" datasource. */ svn_error_t *(*output_diff_common)(void *output_baton, apr_off_t original_start, apr_off_t original_length, apr_off_t modified_start, apr_off_t modified_length, apr_off_t latest_start, apr_off_t latest_length); /** All three datasources have conflicting data ranges. The range * @a latest_start, @a latest_length in the "latest" datasource conflicts * with the range @a original_start, @a original_length in the "original" * datasource, and also conflicts with the range @a modified_start, * @a modified_length in the "modified" datasource. * If there are common ranges in the "modified" and "latest" datasources * in this conflicting range, @a resolved_diff will contain a diff * which can be used to retrieve the common and conflicting ranges. */ svn_error_t *(*output_conflict)(void *output_baton, apr_off_t original_start, apr_off_t original_length, apr_off_t modified_start, apr_off_t modified_length, apr_off_t latest_start, apr_off_t latest_length, svn_diff_t *resolved_diff); } svn_diff_output_fns_t; /** Style for displaying conflicts during diff3 output. * * @since New in 1.6. */ typedef enum svn_diff_conflict_display_style_t { /** Display modified and latest, with conflict markers. */ svn_diff_conflict_display_modified_latest, /** Like svn_diff_conflict_display_modified_latest, but with an extra effort to identify common sequences between modified and latest. */ svn_diff_conflict_display_resolved_modified_latest, /** Display modified, original, and latest, with conflict markers. */ svn_diff_conflict_display_modified_original_latest, /** Just display modified, with no markers. */ svn_diff_conflict_display_modified, /** Just display latest, with no markers. */ svn_diff_conflict_display_latest, /** Like svn_diff_conflict_display_modified_original_latest, but *only* showing conflicts. */ svn_diff_conflict_display_only_conflicts /* IMPORTANT: If you extend this enum note that it is mapped in tools/diff/diff3.c. */ } svn_diff_conflict_display_style_t; /** Given a vtable of @a output_fns/@a output_baton for consuming * differences, output the differences in @a diff. * * If not @c NULL, call @a cancel_func with @a cancel_baton once or multiple * times while processing larger diffs. * * @since New in 1.9. */ svn_error_t * svn_diff_output2(svn_diff_t *diff, void *output_baton, const svn_diff_output_fns_t *output_fns, svn_cancel_func_t cancel_func, void *cancel_baton); /** Similar to svn_diff_output2(), but without cancel support. * * @deprecated Provided for backwards compatibility with the 1.8 API. */ SVN_DEPRECATED svn_error_t * svn_diff_output(svn_diff_t *diff, void *output_baton, const svn_diff_output_fns_t *output_fns);