]> AND Private Git Repository - loba.git/blob - misc.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Update TODO.
[loba.git] / misc.h
1 #ifndef MISC_H
2 #define MISC_H
3
4 #include <functional>
5 #include <xbt/log.h>
6
7 /* Returns c-string "s" if n > 1, empty string "" otherwise. */
8 #define ESSE(n) (misc::str_esse + ((n) <= 1))
9
10 namespace misc {
11     extern const char str_esse[];
12 }
13
14 /* Returns true if the given priority is enabled for the default
15  * category.  Priority is xbt_log_priority_SUFFIX, where SUFFIX may
16  * be: trace, debug, verbose, info, warning, error, critical.
17  */
18 #define LOG_ISENABLED(priority) \
19     (_XBT_LOG_ISENABLEDV((*_XBT_LOGV(default)), (priority)))
20
21 #ifndef XBT_CLOG
22 #  define XBT_CLOG_(catv, prio, ...)                                    \
23     do {                                                                \
24         if (_XBT_LOG_ISENABLEDV(catv, prio)) {                          \
25             s_xbt_log_event_t _log_ev;                                  \
26             _log_ev.cat = &(catv);                                      \
27             _log_ev.priority = (prio);                                  \
28             _log_ev.fileName = __FILE__;                                \
29             _log_ev.functionName = _XBT_FUNCTION;                       \
30             _log_ev.lineNum = __LINE__;                                 \
31             memset(_log_ev.buffer, 0, XBT_LOG_BUFF_SIZE);               \
32             _xbt_log_event_log(&_log_ev, __VA_ARGS__);                  \
33         }                                                               \
34     }  while (0)
35 #  define XBT_CLOG(c, p, ...) XBT_CLOG_(_XBT_LOGV(c), p, __VA_ARGS__)
36 #  define XBT_CDEBUG(c, ...) XBT_CLOG(c, xbt_log_priority_debug, __VA_ARGS__)
37 #  define XBT_CVERB(c, ...) XBT_CLOG(c, xbt_log_priority_verbose, __VA_ARGS__)
38 #  define XBT_CINFO(c, ...) XBT_CLOG(c, xbt_log_priority_info, __VA_ARGS__)
39 #  define XBT_CWARN(c, ...) XBT_CLOG(c, xbt_log_priority_warning, __VA_ARGS__)
40 #  define XBT_CERROR(c, ...) XBT_CLOG(c, xbt_log_priority_error, __VA_ARGS__)
41 #  define XBT_CCRITICAL(c, ...) XBT_CLOG(c, xbt_log_priority_critical, __VA_ARGS__)
42 #  define XBT_LOG(...) XBT_CLOG_((*_XBT_LOGV(default)), __VA_ARGS__)
43 #  define XBT_DEBUG(...) XBT_LOG(xbt_log_priority_debug, __VA_ARGS__)
44 #  define XBT_VERB(...) XBT_LOG(xbt_log_priority_verbose, __VA_ARGS__)
45 #  define XBT_INFO(...) XBT_LOG(xbt_log_priority_info, __VA_ARGS__)
46 #  define XBT_WARN(...) XBT_LOG(xbt_log_priority_warning, __VA_ARGS__)
47 #  define XBT_ERROR(...) XBT_LOG(xbt_log_priority_error, __VA_ARGS__)
48 #  define XBT_CRITICAL(...) XBT_LOG(xbt_log_priority_critical, __VA_ARGS__)
49 #endif
50
51 /* Defines XBT_XCLOG(...) which behave like XBT_CLOG(...), except that the
52  * given category is not passed through _XBT_LOGV before use.
53  */
54 #define XBT_XCLOG(c, p, ...) XBT_CLOG_((*(c)), p, __VA_ARGS__)
55
56 #endif // !MISC_H
57
58 // Local variables:
59 // mode: c++
60 // End: