summaryrefslogtreecommitdiff
path: root/src/gypsy-debug.h
blob: 1c2cf53eadc05ddd747791e33c9ba5ebfb0df3dc (plain)
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
#ifndef __GYPSY_DEBUG_H__
#define __GYPSY_DEBUG_H__

#include <glib.h>

G_BEGIN_DECLS

typedef enum {
    GYPSY_DEBUG_NMEA = 1 << 0,
} GypsyDebugFlags;

#define GYPSY_HAS_DEBUG(type) ((gypsy_debug_flags & GYPSY_DEBUG_##type) != FALSE)

extern guint gypsy_debug_flags;

#ifdef __GNUC__

#define GYPSY_NOTE(type,x,a...) G_STMT_START {                    \
        if (G_UNLIKELY (CLUTTER_HAS_DEBUG (type)))                      \
            { _gypsy_message ("[" #type "] " G_STRLOC ": " x, ##a); }   \
    } G_STMT_END

#else /* !__GNUC__ */

#define GYPSY_NOTE(type,...) G_STMT_START { \
        if (G_UNLIKELY (CLUTTER_HAS_DEBUG (type))) {       \
            char *_fmt = g_strdup_printf (__VA_ARGS__);         \
            _gypsy_message ("[" #type "] " G_STRLOC ": %s", _fmt);      \
            g_free (_fmt);                                              \
        }                                                               \
    } G_STMT_END

#endif

void _gypsy_message (const char *format, ...);

G_END_DECLS

#endif /* __GYPSY_DEBUG_H__ */