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