It is like CATCH but it does not take any argument.
SimGrid (3.7) unstable; urgency=medium
SimGrid (3.7) unstable; urgency=medium
+ XBT
+ * New macro: CATCH_ANONYMOUS, which is like CATCH(e) but without argument.
-- `LC_ALL=C date` Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
-- `LC_ALL=C date` Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
),
# define MAYDAY_CATCH(e) printf("%d %s:%d Catched '%s'\n", \
(*xbt_getpid)(),__FILE__,__LINE__, \
),
# define MAYDAY_CATCH(e) printf("%d %s:%d Catched '%s'\n", \
(*xbt_getpid)(),__FILE__,__LINE__, \
),
#else
# define MAYDAY_SAVE(m)
),
#else
# define MAYDAY_SAVE(m)
* @hideinitializer
*/
#define CATCH(e) \
* @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)) \
else { \
} \
if (!(__ex_cleanup)) \
__xbt_ex_ctx_ptr->ctx_mctx = __ex_mctx_en; \
} \
if ( !(__xbt_running_ctx_fetch()->ctx_caught) \
__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)) { \