From b23b112dfe8eceb39eaaea2d5e60d971c4371aa0 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Tue, 29 Apr 2014 11:29:49 -0700 Subject: Add payloads, bitmaps to trace API This is a proposed adjustment to the trace APIs. This makes the trace levels into a bitmask so that they can be selectively enabled and adds a callback-level payload, plus a message-level payload. This makes it easier for me to a GIT_TRACE_PERF callbacks that are simply bypassed if the PERF level is not set. --- tests/diff/diff_helpers.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests/diff/diff_helpers.c') diff --git a/tests/diff/diff_helpers.c b/tests/diff/diff_helpers.c index 279cb20c5..5de9834ba 100644 --- a/tests/diff/diff_helpers.c +++ b/tests/diff/diff_helpers.c @@ -229,3 +229,22 @@ void diff_print_raw(FILE *fp, git_diff *diff) git_diff_print(diff, GIT_DIFF_FORMAT_RAW, git_diff_print_callback__to_file_handle, fp ? fp : stderr)); } + +void diff_perf_track_stats( + git_trace_level_t level, + void *cb_payload, + void *msg_payload, + const char *msg) +{ + diff_perf *data = cb_payload; + + if (!(level & GIT_TRACE_PERF)) + return; + + if (!strcmp("stat", msg)) + data->stat_calls += msg_payload ? *((size_t *)msg_payload) : 1; + else if (!strcmp("submodule_lookup", msg)) + data->submodule_lookups++; + else if (!strcmp("oid_calculation", msg)) + data->oid_calcs++; +} -- cgit v1.2.1