Commit ef2e62fe added the ability to bypass the creation of textual diffs and to access diff data directly, through the added emit_func member of xdemitconf_t. This function pointer has a type of "void (*)()", because "int (*)(xdfenv_t *, xdchange_t *, xdemitcb_t *, xdemitconf_t const *)" (its real type) would be difficult to export due to the many internal types in that signature. This feature is currently used twice in git blame, through the function xdi_diff_hunks(). Both cases only need to know which lines are affected by the different hunks of a diff, i.e. the numbers shown in hunk headers of unified diffs. This patch series adds a simpler mechanism to accommodate these two callers, in a type-safe way, without exporting too many internal types of libxdiff. The last patch removes the old functions. xdiff: add hunk_func() blame: use hunk_func(), part 1 blame: use hunk_func(), part 2 blame: factor out helper for calling xdi_diff() xdiff: remove emit_func() and xdi_diff_hunks() builtin/blame.c | 53 +++++++++++++++++++++++++++++++---------------------- xdiff-interface.c | 44 -------------------------------------------- xdiff-interface.h | 4 ---- xdiff/xdiff.h | 6 +++++- xdiff/xdiffi.c | 17 +++++++++++++++-- 5 files changed, 51 insertions(+), 73 deletions(-) -- 1.7.10.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html