do not check order sequence if option /order was not used
[mono.git] / mono / utils / mono-logger-internal.h
1 #ifndef __MONO_LOGGER_INTERNAL_H__
2 #define __MONO_LOGGER_INTERNAL_H__
3
4 #include <glib.h>
5 #include "mono-logger.h"
6
7 G_BEGIN_DECLS
8
9 typedef enum {
10         MONO_TRACE_ASSEMBLY             = (1<<0),
11         MONO_TRACE_TYPE                 = (1<<1),
12         MONO_TRACE_DLLIMPORT            = (1<<2),
13         MONO_TRACE_GC                   = (1<<3),
14         MONO_TRACE_CONFIG               = (1<<4),
15         MONO_TRACE_AOT                  = (1<<5),
16         MONO_TRACE_SECURITY             = (1<<6),
17         MONO_TRACE_ALL                  = MONO_TRACE_ASSEMBLY |
18                                           MONO_TRACE_TYPE |
19                                           MONO_TRACE_DLLIMPORT |
20                                           MONO_TRACE_GC |
21                                           MONO_TRACE_CONFIG |
22                                           MONO_TRACE_AOT |
23                                           MONO_TRACE_SECURITY
24 } MonoTraceMask;
25
26 void 
27 mono_trace_cleanup (void) MONO_INTERNAL;
28
29 void 
30 mono_trace (GLogLevelFlags level, MonoTraceMask mask, const char *format, ...) MONO_INTERNAL;
31
32 void 
33 mono_tracev (GLogLevelFlags level, MonoTraceMask mask, const char *format, va_list args) MONO_INTERNAL;
34
35 void 
36 mono_trace_set_level (GLogLevelFlags level) MONO_INTERNAL;
37
38 void 
39 mono_trace_set_mask (MonoTraceMask mask) MONO_INTERNAL;
40
41 void 
42 mono_trace_push (GLogLevelFlags level, MonoTraceMask mask) MONO_INTERNAL;
43
44 void 
45 mono_trace_pop (void) MONO_INTERNAL;
46
47 gboolean
48 mono_trace_is_traced (GLogLevelFlags level, MonoTraceMask mask) MONO_INTERNAL;
49
50 #ifdef G_HAVE_ISO_VARARGS
51 #define mono_trace_error(...)   mono_trace(G_LOG_LEVEL_ERROR, \
52                                                                                         __VA_ARGS__)
53 #define mono_trace_warning(...) mono_trace(G_LOG_LEVEL_WARNING, \
54                                                                                         __VA_ARGS__)
55 #define mono_trace_message(...) mono_trace(G_LOG_LEVEL_MESSAGE, \
56                                                                                         __VA_ARGS__)
57 #elif defined(G_HAVE_GNUC_VARARGS)
58 #define mono_trace_error(format...)     mono_trace(G_LOG_LEVEL_ERROR, \
59                                                                                         format)
60 #define mono_trace_warning(format...) mono_trace(G_LOG_LEVEL_WARNING, \
61                                                                                         format)
62 #define mono_trace_message(format...) mono_trace(G_LOG_LEVEL_MESSAGE, \
63                                                                                         format)
64 #else /* no varargs macros */
65 G_GNUC_UNUSED static void
66 mono_trace_error(MonoTraceMask mask, const char *format, ...)
67 {
68         va_list args;
69         va_start (args, format);
70         mono_tracev(G_LOG_LEVEL_ERROR, mask, format, args);
71         va_end (args);
72 }
73
74 G_GNUC_UNUSED static void
75 mono_trace_warning(MonoTraceMask mask, const char *format, ...)
76 {
77         va_list args;
78         va_start (args, format);
79         mono_tracev(G_LOG_LEVEL_WARNING, mask, format, args);
80         va_end (args);
81 }
82
83 G_GNUC_UNUSED static void
84 mono_trace_message(MonoTraceMask mask, const char *format, ...)
85 {
86         va_list args;
87         va_start (args, format);
88         mono_tracev(G_LOG_LEVEL_MESSAGE, mask, format, args);
89         va_end (args);
90 }
91
92 #endif /* !__GNUC__ */
93
94 G_END_DECLS
95
96 #endif /* __MONO_LOGGER_INTERNAL_H__ */