Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Avoid to duplicate initialization list.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Thu, 9 Feb 2012 12:10:36 +0000 (13:10 +0100)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Thu, 9 Feb 2012 12:10:36 +0000 (13:10 +0100)
Declare a global that is initialized with XBT_RUNNING_CTX_INITIALIZER,
and take a copy of it in XBT_RUNNING_CTX_INITIALIZE().

include/xbt/ex.h
src/xbt/ex.c

index 77b1967..97e4eea 100644 (file)
@@ -306,33 +306,9 @@ typedef struct {
     { NULL, 0, { /* content */ NULL, unknown_error, 0, \
                  /* throw point*/ 0,NULL, NULL,0, NULL, 0, NULL,\
                  /* backtrace */ 0, NULL, /* bt[] */ } }
-#define XBT_RUNNING_CTX_INITIALIZE(ctx) \
-    do { \
-        (ctx)->ctx_mctx          = NULL; \
-        (ctx)->ctx_caught        = 0;    \
-        (ctx)->exception.msg        = NULL; \
-        (ctx)->exception.category   = 0;    \
-        (ctx)->exception.value      = 0;    \
-        (ctx)->exception.remote     = 0;    \
-        (ctx)->exception.host       = NULL; \
-        (ctx)->exception.procname   = NULL; \
-        (ctx)->exception.pid        = 0;    \
-        (ctx)->exception.file       = NULL; \
-        (ctx)->exception.line       = 0;    \
-        (ctx)->exception.func       = NULL; \
-        (ctx)->exception.bt[0]      = NULL; \
-        (ctx)->exception.bt[1]      = NULL; \
-        (ctx)->exception.bt[2]      = NULL; \
-        (ctx)->exception.bt[3]      = NULL; \
-        (ctx)->exception.bt[4]      = NULL; \
-        (ctx)->exception.bt[5]      = NULL; \
-        (ctx)->exception.bt[6]      = NULL; \
-        (ctx)->exception.bt[7]      = NULL; \
-        (ctx)->exception.bt[8]      = NULL; \
-        (ctx)->exception.bt[9]      = NULL; \
-        (ctx)->exception.used       = 0; \
-        (ctx)->exception.bt_strings = NULL; \
-    } while (0)
+
+XBT_PUBLIC_DATA(const xbt_running_ctx_t) __xbt_ex_ctx_initializer;
+#define XBT_RUNNING_CTX_INITIALIZE(ctx) (*(ctx) = __xbt_ex_ctx_initializer)
 
 /* the exception context */
 typedef xbt_running_ctx_t *(*xbt_running_ctx_fetcher_t) (void);
index 9768d5e..bc84c03 100644 (file)
@@ -65,6 +65,8 @@
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ex, xbt, "Exception mecanism");
 
+XBT_EXPORT_NO_IMPORT(const xbt_running_ctx_t) __xbt_ex_ctx_initializer = XBT_RUNNING_CTX_INITIALIZER;
+
 /* default __ex_ctx callback function */
 xbt_running_ctx_t *__xbt_ex_ctx_default(void)
 {