X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/12323b05439d211235c524631170e7534abe4268..1e2351434a8b17b631dfe2775b455d8b2b5b8b0b:/include/xbt/log.h diff --git a/include/xbt/log.h b/include/xbt/log.h index ad7e612225..26fdf6fb20 100644 --- a/include/xbt/log.h +++ b/include/xbt/log.h @@ -113,10 +113,20 @@ typedef enum { */ #if defined(_MSC_VER) # define _XBT_LOG_PARENT_INITIALIZER(parent) NULL -# define XBT_LOG_CONNECT(parent_cat,child) _XBT_LOGV(child).parent = &_XBT_LOGV(parent_cat) +# define XBT_LOG_CONNECT(child, parent_cat) \ + if (1) { \ + XBT_LOG_EXTERNAL_CATEGORY(child); \ + XBT_LOG_EXTERNAL_CATEGORY(parent_cat); \ + _XBT_LOGV(child).parent = &_XBT_LOGV(parent_cat); \ + } else ((void)0) #else # define _XBT_LOG_PARENT_INITIALIZER(parent) &_XBT_LOGV(parent) -# define XBT_LOG_CONNECT(parent_cat,child) /* xbt_assert(_XBT_LOGV(child).parent == &_XBT_LOGV(parent_cat)) */ +# define XBT_LOG_CONNECT(child, parent_cat) \ + if (1) { \ + XBT_LOG_EXTERNAL_CATEGORY(child); \ + XBT_LOG_EXTERNAL_CATEGORY(parent_cat); \ + xbt_assert(_XBT_LOGV(child).parent == &_XBT_LOGV(parent_cat)); \ + } else ((void)0) #endif /* XBT_LOG_NEW_SUBCATEGORY_helper: @@ -129,6 +139,7 @@ typedef enum { NULL /* firstChild */, \ NULL /* nextSibling */, \ #catName, \ + 0 /*initialized */, \ xbt_log_priority_uninitialized /* threshold */, \ 1 /* isThreshInherited */, \ NULL /* appender */, \ @@ -247,6 +258,7 @@ struct xbt_log_category_s { xbt_log_category_t firstChild; xbt_log_category_t nextSibling; const char *name; + int initialized; int threshold; int isThreshInherited; xbt_log_appender_t appender; @@ -342,6 +354,13 @@ extern xbt_log_layout_t xbt_log_default_layout; /* Public functions again */ /* ********************** */ +/** + * \ingroup XBT_log + * + * Prints some help about using the logging infrastructure. + */ +XBT_PUBLIC(void) xbt_log_help(void); + /** * \ingroup XBT_log * \param catName name of the category @@ -361,12 +380,11 @@ extern xbt_log_layout_t xbt_log_default_layout; * * NOTES * First part is a compile-time constant. - * Call to _log_initCat only happens once. + * Call to xbt_log_cat_init only happens once. */ #define _XBT_LOG_ISENABLEDV(catv, priority) \ (priority >= XBT_LOG_STATIC_THRESHOLD \ - && (catv.threshold != xbt_log_priority_uninitialized \ - || _xbt_log_cat_init(&catv, priority)) \ + && (catv.initialized || _xbt_log_cat_init(&catv, priority)) \ && priority >= catv.threshold) /*