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

Private GIT Repository
Rewrite macro ESSE() and get rid of misc::str_nil.
[loba.git] / misc.h
diff --git a/misc.h b/misc.h
index 1decbefd4b27fa6497aa3e0b94c5c70d9a496ac5..72d98abd27ec5c5d7f5fd9d4e78a8bd45c550367 100644 (file)
--- a/misc.h
+++ b/misc.h
@@ -1,6 +1,7 @@
 #ifndef MISC_H
 #define MISC_H
 
 #ifndef MISC_H
 #define MISC_H
 
+#include <functional>
 #include <xbt/log.h>
 
 /* Returns true if the given priority is enabled for the default
 #include <xbt/log.h>
 
 /* Returns true if the given priority is enabled for the default
 #define LOG_ISENABLED(priority) \
     (_XBT_LOG_ISENABLEDV((*_XBT_LOGV(default)), (priority)))
 
 #define LOG_ISENABLED(priority) \
     (_XBT_LOG_ISENABLEDV((*_XBT_LOGV(default)), (priority)))
 
-#define ESSE(n) ((n) > 1 ? "s" : "")
+/* Defines XCLOGn(...) which behave like CLOGn(...), except that the
+ * given category is not passed through _XBT_LOGV before use.
+ */
+#ifdef XBT_CLOG_
+#  define XBT_XCLOG(c, p, ...) XBT_CLOG_((*(c)), p, __VA_ARGS__)
+#  define XCLOG0(...) XBT_XCLOG(__VA_ARGS__)
+#  define XCLOG1(...) XBT_XCLOG(__VA_ARGS__)
+#  define XCLOG2(...) XBT_XCLOG(__VA_ARGS__)
+#  define XCLOG3(...) XBT_XCLOG(__VA_ARGS__)
+#  define XCLOG4(...) XBT_XCLOG(__VA_ARGS__)
+#  define XCLOG5(...) XBT_XCLOG(__VA_ARGS__)
+#  define XCLOG6(...) XBT_XCLOG(__VA_ARGS__)
+#else
+#  define XCLOG0(c, p, f)                   _XBT_LOG_PRE((*(c)),p) ,f _XBT_LOG_POST
+#  define XCLOG1(c, p, f,a1)                _XBT_LOG_PRE((*(c)),p) ,f,a1 _XBT_LOG_POST
+#  define XCLOG2(c, p, f,a1,a2)             _XBT_LOG_PRE((*(c)),p) ,f,a1,a2 _XBT_LOG_POST
+#  define XCLOG3(c, p, f,a1,a2,a3)          _XBT_LOG_PRE((*(c)),p) ,f,a1,a2,a3 _XBT_LOG_POST
+#  define XCLOG4(c, p, f,a1,a2,a3,a4)       _XBT_LOG_PRE((*(c)),p) ,f,a1,a2,a3,a4 _XBT_LOG_POST
+#  define XCLOG5(c, p, f,a1,a2,a3,a4,a5)    _XBT_LOG_PRE((*(c)),p) ,f,a1,a2,a3,a4,a5 _XBT_LOG_POST
+#  define XCLOG6(c, p, f,a1,a2,a3,a4,a5,a6) _XBT_LOG_PRE((*(c)),p) ,f,a1,a2,a3,a4,a5,a6 _XBT_LOG_POST
+#endif
+
+/* Returns c-string "s" if n > 1, empty string "" otherwise. */
+#define ESSE(n) (misc::str_esse + ((n) <= 1))
+
+namespace misc {
+    extern const char str_esse[];
+}
 
 #endif // !MISC_H
 
 
 #endif // !MISC_H