OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * LibXDiff by Davide Libenzi ( File Differential Library ) |
| 3 * Copyright (C) 2003 Davide Libenzi |
| 4 * |
| 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Lesser General Public |
| 7 * License as published by the Free Software Foundation; either |
| 8 * version 2.1 of the License, or (at your option) any later version. |
| 9 * |
| 10 * This library is distributed in the hope that it will be useful, |
| 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 13 * Lesser General Public License for more details. |
| 14 * |
| 15 * You should have received a copy of the GNU Lesser General Public |
| 16 * License along with this library; if not, write to the Free Software |
| 17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 18 * |
| 19 * Davide Libenzi <davidel@xmailserver.org> |
| 20 * |
| 21 */ |
| 22 |
| 23 #if !defined(XDIFF_H) |
| 24 #define XDIFF_H |
| 25 |
| 26 #ifdef __cplusplus |
| 27 extern "C" { |
| 28 #endif /* #ifdef __cplusplus */ |
| 29 |
| 30 |
| 31 #define XDF_NEED_MINIMAL (1 << 1) |
| 32 #define XDF_IGNORE_WHITESPACE (1 << 2) |
| 33 #define XDF_IGNORE_WHITESPACE_CHANGE (1 << 3) |
| 34 #define XDF_IGNORE_WHITESPACE_AT_EOL (1 << 4) |
| 35 #define XDF_WHITESPACE_FLAGS (XDF_IGNORE_WHITESPACE | XDF_IGNORE_WHITESPACE_CHAN
GE | XDF_IGNORE_WHITESPACE_AT_EOL) |
| 36 |
| 37 #define XDF_PATIENCE_DIFF (1 << 5) |
| 38 #define XDF_HISTOGRAM_DIFF (1 << 6) |
| 39 #define XDF_DIFF_ALGORITHM_MASK (XDF_PATIENCE_DIFF | XDF_HISTOGRAM_DIFF) |
| 40 #define XDF_DIFF_ALG(x) ((x) & XDF_DIFF_ALGORITHM_MASK) |
| 41 |
| 42 #define XDF_IGNORE_BLANK_LINES (1 << 7) |
| 43 |
| 44 #define XDL_EMIT_FUNCNAMES (1 << 0) |
| 45 #define XDL_EMIT_FUNCCONTEXT (1 << 2) |
| 46 |
| 47 #define XDL_MMB_READONLY (1 << 0) |
| 48 |
| 49 #define XDL_MMF_ATOMIC (1 << 0) |
| 50 |
| 51 #define XDL_BDOP_INS 1 |
| 52 #define XDL_BDOP_CPY 2 |
| 53 #define XDL_BDOP_INSB 3 |
| 54 |
| 55 /* merge simplification levels */ |
| 56 #define XDL_MERGE_MINIMAL 0 |
| 57 #define XDL_MERGE_EAGER 1 |
| 58 #define XDL_MERGE_ZEALOUS 2 |
| 59 #define XDL_MERGE_ZEALOUS_ALNUM 3 |
| 60 |
| 61 /* merge favor modes */ |
| 62 #define XDL_MERGE_FAVOR_OURS 1 |
| 63 #define XDL_MERGE_FAVOR_THEIRS 2 |
| 64 #define XDL_MERGE_FAVOR_UNION 3 |
| 65 |
| 66 /* merge output styles */ |
| 67 #define XDL_MERGE_DIFF3 1 |
| 68 |
| 69 typedef struct s_mmfile { |
| 70 char *ptr; |
| 71 long size; |
| 72 } mmfile_t; |
| 73 |
| 74 typedef struct s_mmbuffer { |
| 75 char *ptr; |
| 76 long size; |
| 77 } mmbuffer_t; |
| 78 |
| 79 typedef struct s_xpparam { |
| 80 unsigned long flags; |
| 81 } xpparam_t; |
| 82 |
| 83 typedef struct s_xdemitcb { |
| 84 void *priv; |
| 85 int (*outf)(void *, mmbuffer_t *, int); |
| 86 } xdemitcb_t; |
| 87 |
| 88 typedef long (*find_func_t)(const char *line, long line_len, char *buffer, long
buffer_size, void *priv); |
| 89 |
| 90 typedef int (*xdl_emit_hunk_consume_func_t)(long start_a, long count_a, |
| 91 long start_b, long count_b, |
| 92 void *cb_data); |
| 93 |
| 94 typedef struct s_xdemitconf { |
| 95 long ctxlen; |
| 96 long interhunkctxlen; |
| 97 unsigned long flags; |
| 98 find_func_t find_func; |
| 99 void *find_func_priv; |
| 100 xdl_emit_hunk_consume_func_t hunk_func; |
| 101 } xdemitconf_t; |
| 102 |
| 103 typedef struct s_bdiffparam { |
| 104 long bsize; |
| 105 } bdiffparam_t; |
| 106 |
| 107 |
| 108 #define xdl_malloc(x) malloc(x) |
| 109 #define xdl_free(ptr) free(ptr) |
| 110 #define xdl_realloc(ptr,x) realloc(ptr,x) |
| 111 |
| 112 void *xdl_mmfile_first(mmfile_t *mmf, long *size); |
| 113 long xdl_mmfile_size(mmfile_t *mmf); |
| 114 |
| 115 int xdl_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp, |
| 116 xdemitconf_t const *xecfg, xdemitcb_t *ecb); |
| 117 |
| 118 typedef struct s_xmparam { |
| 119 xpparam_t xpp; |
| 120 int marker_size; |
| 121 int level; |
| 122 int favor; |
| 123 int style; |
| 124 const char *ancestor; /* label for orig */ |
| 125 const char *file1; /* label for mf1 */ |
| 126 const char *file2; /* label for mf2 */ |
| 127 } xmparam_t; |
| 128 |
| 129 #define DEFAULT_CONFLICT_MARKER_SIZE 7 |
| 130 |
| 131 int xdl_merge(mmfile_t *orig, mmfile_t *mf1, mmfile_t *mf2, |
| 132 xmparam_t const *xmp, mmbuffer_t *result); |
| 133 |
| 134 #ifdef __cplusplus |
| 135 } |
| 136 #endif /* #ifdef __cplusplus */ |
| 137 |
| 138 #endif /* #if !defined(XDIFF_H) */ |
OLD | NEW |