2 * Copyright (C) the libgit2 contributors. All rights reserved.
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
7 #ifndef INCLUDE_trace_h__
8 #define INCLUDE_trace_h__
10 #include <git2/trace.h>
15 struct git_trace_data
{
16 git_trace_level_t level
;
17 git_trace_callback callback
;
18 void *callback_payload
;
21 extern struct git_trace_data git_trace__data
;
23 GIT_INLINE(void) git_trace__write_fmt(
24 git_trace_level_t level
,
25 void *message_payload
,
29 git_trace_callback callback
= git_trace__data
.callback
;
30 git_buf message
= GIT_BUF_INIT
;
34 git_buf_vprintf(&message
, fmt
, ap
);
38 level
, git_trace__data
.callback_payload
, message_payload
,
39 git_buf_cstr(&message
));
41 git_buf_free(&message
);
44 #define git_trace_level() (git_trace__data.level)
45 #define git_trace(l, p, ...) do { \
46 if ((git_trace__data.level & (l)) != 0 && git_trace__data.callback) { \
47 git_trace__write_fmt((l), (p), __VA_ARGS__); \
52 #define git_trace_level() ((void)0)
53 #define git_trace(lvl, ...) ((void)0)