xdiff-interface: hide the whole "xdiff_emit_state" business from the caller
This further enhances xdi_diff_outf() interface so that it takes two common parameters: the callback function that processes one line at a time, and a pointer to its application specific callback data structure. xdi_diff_outf() creates its own "xdiff_emit_state" structure and stashes these two away inside it, which is used by the lowest level output function in the xdiff_outf() callchain, consume_one(), to call back to the application layer. With this restructuring, we lift the requirement that the caller supplied callback data structure embeds xdiff_emit_state structure as its first member. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@ -465,7 +465,6 @@ struct patch {
|
||||
};
|
||||
|
||||
struct blame_diff_state {
|
||||
struct xdiff_emit_state xm;
|
||||
struct patch *ret;
|
||||
unsigned hunk_post_context;
|
||||
unsigned hunk_in_pre_context : 1;
|
||||
@ -529,12 +528,11 @@ static struct patch *compare_buffer(mmfile_t *file_p, mmfile_t *file_o,
|
||||
memset(&xecfg, 0, sizeof(xecfg));
|
||||
xecfg.ctxlen = context;
|
||||
memset(&state, 0, sizeof(state));
|
||||
state.xm.consume = process_u_diff;
|
||||
state.ret = xmalloc(sizeof(struct patch));
|
||||
state.ret->chunks = NULL;
|
||||
state.ret->num = 0;
|
||||
|
||||
xdi_diff_outf(file_p, file_o, &state.xm, &xpp, &xecfg, &ecb);
|
||||
xdi_diff_outf(file_p, file_o, process_u_diff, &state, &xpp, &xecfg, &ecb);
|
||||
|
||||
if (state.ret->num) {
|
||||
struct chunk *chunk;
|
||||
|
||||
Reference in New Issue
Block a user