1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * Copyright (C) 2003 Imendio AB
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public License as
7 * published by the Free Software Foundation; either version 2 of the
8 * License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this program; if not, see <https://www.gnu.org/licenses>
17 */
18
19 #ifndef __LM_DEBUG_H__
20 #define __LM_DEBUG_H__
21
22 #include <glib.h>
23
24 #define LM_LOG_LEVEL_VERBOSE (1 << (G_LOG_LEVEL_USER_SHIFT))
25 #define LM_LOG_LEVEL_NET (1 << (G_LOG_LEVEL_USER_SHIFT + 1))
26 #define LM_LOG_LEVEL_PARSER (1 << (G_LOG_LEVEL_USER_SHIFT + 2))
27 #define LM_LOG_LEVEL_SSL (1 << (G_LOG_LEVEL_USER_SHIFT + 3))
28 #define LM_LOG_LEVEL_SASL (1 << (G_LOG_LEVEL_USER_SHIFT + 4))
29 #define LM_LOG_LEVEL_ALL (LM_LOG_LEVEL_NET | \
30 LM_LOG_LEVEL_VERBOSE | \
31 LM_LOG_LEVEL_PARSER | \
32 LM_LOG_LEVEL_SSL | \
33 LM_LOG_LEVEL_SASL)
34 typedef GLogLevelFlags LmLogLevelFlags;
35
36 #ifndef LM_LOG_DOMAIN
37 # define LM_LOG_DOMAIN "LM"
38 #endif
39
40 #ifdef G_HAVE_ISO_VARARGS
41 # ifdef LM_NO_DEBUG
42 # define lm_verbose(...)
43 # else
44 # define lm_verbose(...) \
45 g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_VERBOSE, __VA_ARGS__)
46 # endif
47 #elif defined(G_HAVE_GNUC_VARARGS)
48 # if LM_NO_DEBUG
49 # define lm_verbose(fmt...)
50 # else
51 # define lm_verbose(fmt...) \
52 g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_VERBOSE, fmt)
53 # endif
54 #else
55 # if LM_NO_DEBUG
56 # define lm_verbose(const gchar *format, ...) {};
57 # else
58 static void
lm_verbose(const gchar * format,...)59 lm_verbose (const gchar *format, ...)
60 {
61 va_list args;
62 va_start (args, format);
63 g_logv (LM_LOG_DOMAIN, LM_LOG_LEVEL_VERBOSE, format, args);
64 va_end (args);
65 }
66 # endif
67 #endif
68
69 void lm_debug_init (void);
70
71 #endif /* __LM_DEBUG_H__ */
72
73