# include <stdio.h>
#include <errno.h>
# define MAYDAY_SAVE(m) printf("%d %s:%d save %p\n", \
- (*xbt_getpid)(),__FILE__,__LINE__, \
+ xbt_getpid(), __FILE__, __LINE__, \
(m)->jb \
),
# define MAYDAY_RESTORE(m) printf("%d %s:%d restore %p\n", \
- (*xbt_getpid)(),__FILE__,__LINE__, \
+ xbt_getpid(), __FILE__, __LINE__, \
(m)->jb \
),
# define MAYDAY_CATCH(e) printf("%d %s:%d Catched '%s'\n", \
- (*xbt_getpid)(),__FILE__,__LINE__, \
- e.msg \
+ xbt_getpid(), __FILE__, __LINE__, \
+ (e).msg \
),
#else
# define MAYDAY_SAVE(m)
* @hideinitializer
*/
#define CATCH(e) \
+ DO_CATCH((e) = XBT_EX_T_CPLUSPLUSCAST __xbt_running_ctx_fetch()->exception)
+
+/** @brief like CATCH(e) but without argument
+ * @hideinitializer
+ *
+ * Useful if you only want to rethrow the exception caught, and do not want to
+ * bother with an unused variable.
+ */
+#define CATCH_ANONYMOUS DO_CATCH(0)
+
+#define DO_CATCH(_xbt_do_catch_set_e) \
else { \
} \
if (!(__ex_cleanup)) \
__xbt_ex_ctx_ptr->ctx_mctx = __ex_mctx_en; \
} \
if ( !(__xbt_running_ctx_fetch()->ctx_caught) \
- || ((e) = XBT_EX_T_CPLUSPLUSCAST __xbt_running_ctx_fetch()->exception, MAYDAY_CATCH(e) 0)) { \
+ || ((void)(_xbt_do_catch_set_e), \
+ MAYDAY_CATCH(__xbt_running_ctx_fetch()->exception) 0)) { \
} \
else
_throw_ctx->exception.remote = 0; \
_throw_ctx->exception.host = (char*)NULL; \
_throw_ctx->exception.procname = (char*)xbt_procname(); \
- _throw_ctx->exception.pid = (*xbt_getpid)(); \
+ _throw_ctx->exception.pid = xbt_getpid(); \
_throw_ctx->exception.file = (char*)__FILE__; \
_throw_ctx->exception.line = __LINE__; \
_throw_ctx->exception.func = (char*)_XBT_FUNCTION; \
THROWF(unknown_error, 0, "Function %s unimplemented",_XBT_FUNCTION)
#ifndef NDEBUG
-# define DIE_IMPOSSIBLE xbt_assert0(0,"The Impossible Did Happen (yet again)")
+# define DIE_IMPOSSIBLE xbt_assert(0,"The Impossible Did Happen (yet again)")
#else
# define DIE_IMPOSSIBLE exit(1);
#endif
/** @brief Display a previously captured backtrace */
XBT_PUBLIC(void) xbt_backtrace_display(xbt_ex_t * e);
-#if 1 || defined(XBT_USE_DEPRECATED)
+#ifdef XBT_USE_DEPRECATED
/* Kept for backward compatibility. */