+#define XBT_CRITICAL(...) \
+ do { \
+ if (_XBT_LOG_ISENABLEDV(*_simgrid_log_category__default, \
+ xbt_log_priority_critical)) { \
+ s_xbt_log_event_t _log_ev; \
+ _log_ev.cat = _simgrid_log_category__default; \
+ _log_ev.priority = xbt_log_priority_critical; \
+ _log_ev.fileName = __FILE__; \
+ _log_ev.functionName = _XBT_FUNCTION; \
+ _log_ev.lineNum = __LINE__; \
+ _xbt_log_event_log(&_log_ev, __VA_ARGS__); \
+ } \
+ } while (0)
+
+#define _XBT_IN_OUT(...) \
+ _XBT_IF_ONE_ARG(_XBT_IN_OUT_ARG1, _XBT_IN_OUT_ARGN, __VA_ARGS__)(__VA_ARGS__)
+#define _XBT_IN_OUT_ARG1(fmt) \
+ XBT_LOG(xbt_log_priority_trace, fmt, _XBT_FUNCTION)
+#define _XBT_IN_OUT_ARGN(fmt, ...) \
+ XBT_LOG(xbt_log_priority_trace, fmt, _XBT_FUNCTION, __VA_ARGS__)