Hash :
22d2062d
Author :
Date :
2019-01-09T18:25:10
Introduce GIT_CALLBACK macro to enforce cdecl Since we now always build the library with cdecl calling conventions, our callbacks should be decorated as such so that users will not be able to provide callbacks defined with other calling conventions. The `GIT_CALLBACK` macro will inject the `__cdecl` attribute as appropriate.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
/*
* Copyright (C) the libgit2 contributors. All rights reserved.
*
* This file is part of libgit2, distributed under the GNU GPL v2 with
* a Linking Exception. For full terms see the included COPYING file.
*/
#ifndef INCLUDE_git_trace_h__
#define INCLUDE_git_trace_h__
#include "common.h"
#include "types.h"
/**
* @file git2/trace.h
* @brief Git tracing configuration routines
* @defgroup git_trace Git tracing configuration routines
* @ingroup Git
* @{
*/
GIT_BEGIN_DECL
/**
* Available tracing levels. When tracing is set to a particular level,
* callers will be provided tracing at the given level and all lower levels.
*/
typedef enum {
/** No tracing will be performed. */
GIT_TRACE_NONE = 0,
/** Severe errors that may impact the program's execution */
GIT_TRACE_FATAL = 1,
/** Errors that do not impact the program's execution */
GIT_TRACE_ERROR = 2,
/** Warnings that suggest abnormal data */
GIT_TRACE_WARN = 3,
/** Informational messages about program execution */
GIT_TRACE_INFO = 4,
/** Detailed data that allows for debugging */
GIT_TRACE_DEBUG = 5,
/** Exceptionally detailed debugging data */
GIT_TRACE_TRACE = 6
} git_trace_level_t;
/**
* An instance for a tracing function
*/
typedef void GIT_CALLBACK(git_trace_callback)(git_trace_level_t level, const char *msg);
/**
* Sets the system tracing configuration to the specified level with the
* specified callback. When system events occur at a level equal to, or
* lower than, the given level they will be reported to the given callback.
*
* @param level Level to set tracing to
* @param cb Function to call with trace data
* @return 0 or an error code
*/
GIT_EXTERN(int) git_trace_set(git_trace_level_t level, git_trace_callback cb);
/** @} */
GIT_END_DECL
#endif