[PATCH 0/5] xdiff: replace emit_func() with type-safe
- From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
- Date
- May 9, 2012, 20:19 UTC
- Message-ID
- <4FAAD13E.8030806@lsrfire.ath.cx>
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