+
+
+/** @name 3. RAISE macro family
+ *
+ * Return a error code, doing some logs on stderr.
+ *
+ * @todo This should use the logging features, not stderr
+ *
+ * @{
+ */
+
+/** @hideinitializer */
+#define RAISE0(code,fmt) _XBT_ERR_PRE ERROR0(fmt); _XBT_ERR_POST(code)
+/** @hideinitializer */
+#define RAISE1(code,fmt,a1) _XBT_ERR_PRE ERROR1(fmt,a1); _XBT_ERR_POST(code)
+/** @hideinitializer */
+#define RAISE2(code,fmt,a1,a2) _XBT_ERR_PRE ERROR2(fmt,a1,a2); _XBT_ERR_POST(code)
+/** @hideinitializer */
+#define RAISE3(code,fmt,a1,a2,a3) _XBT_ERR_PRE ERROR3(fmt,a1,a2,a3); _XBT_ERR_POST(code)
+/** @hideinitializer */
+#define RAISE4(code,fmt,a1,a2,a3,a4) _XBT_ERR_PRE ERROR4(fmt,a1,a2,a3,a4); _XBT_ERR_POST(code)
+/** @hideinitializer */
+#define RAISE5(code,fmt,a1,a2,a3,a4,a5) _XBT_ERR_PRE ERROR5(fmt,a1,a2,a3,a4,a5); _XBT_ERR_POST(code)
+/** @hideinitializer */
+#define RAISE6(code,fmt,a1,a2,a3,a4,a5,a6) _XBT_ERR_PRE ERROR6(fmt,a1,a2,a3,a4,a5,a6); _XBT_ERR_POST(code)
+
+/** @} */
+/**
+ * \name 4. assert macro familly
+ *
+ * Those are the GRAS version of the good ol' assert macro. You can pass them a format message and
+ * arguments, just as if it where a printf. It is converted to a CRITICALn logging request.
+ *
+ * @{
+ */
+#ifdef NDEBUG
+#define xbt_assert(cond)
+#define xbt_assert0(cond,msg)
+#define xbt_assert1(cond,msg,a)
+#define xbt_assert2(cond,msg,a,b)
+#define xbt_assert3(cond,msg,a,b,c)
+#define xbt_assert4(cond,msg,a,b,c,d)
+#define xbt_assert5(cond,msg,a,b,c,d,e)
+#define xbt_assert6(cond,msg,a,b,c,d,e,f)