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__
12 #include <git2/trace.h>
17 struct git_trace_data
{
18 git_trace_level_t level
;
19 git_trace_cb callback
;
22 extern struct git_trace_data git_trace__data
;
24 GIT_INLINE(void) git_trace__write_fmt(
25 git_trace_level_t level
,
28 git_trace_cb callback
= git_trace__data
.callback
;
29 git_buf message
= GIT_BUF_INIT
;
33 git_buf_vprintf(&message
, fmt
, ap
);
36 callback(level
, git_buf_cstr(&message
));
38 git_buf_dispose(&message
);
41 #define git_trace_level() (git_trace__data.level)
42 #define git_trace(l, ...) { \
43 if (git_trace__data.level >= l && \
44 git_trace__data.callback != NULL) { \
45 git_trace__write_fmt(l, __VA_ARGS__); \
51 GIT_INLINE(void) git_trace__null(
52 git_trace_level_t level
,
59 #define git_trace_level() ((git_trace_level_t)0)
60 #define git_trace git_trace__null