X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6917eb22496286d1fad6bf22b2a0747d1d72fafe..3ae39088350ad665caa35db1731009d9e3f1bda2:/include/xbt/log.h diff --git a/include/xbt/log.h b/include/xbt/log.h index bbfb46ef04..3d8eba3629 100644 --- a/include/xbt/log.h +++ b/include/xbt/log.h @@ -98,7 +98,7 @@ typedef enum { * to avoid an extra declaration of root when XBT_LOG_NEW_SUBCATEGORY is called by * XBT_LOG_NEW_CATEGORY */ #define XBT_LOG_NEW_SUBCATEGORY_helper(catName, parent, desc) \ - s_xbt_log_category_t _XBT_LOGV(catName) = { \ + XBT_EXPORT_NO_IMPORT(s_xbt_log_category_t) _XBT_LOGV(catName) = { \ &_XBT_LOGV(parent), 0, 0, \ #catName, xbt_log_priority_uninitialized, 1, \ 0, 1 \ @@ -113,7 +113,7 @@ typedef enum { * Defines a new subcategory of the parent. */ #define XBT_LOG_NEW_SUBCATEGORY(catName, parent, desc) \ - extern s_xbt_log_category_t _XBT_LOGV(parent); \ + extern s_xbt_log_category_t _XBT_LOGV(parent); \ XBT_LOG_NEW_SUBCATEGORY_helper(catName, parent, desc) \ /** @@ -124,7 +124,17 @@ typedef enum { * * Creates a new subcategory of the root category. */ -#define XBT_LOG_NEW_CATEGORY(catName,desc) XBT_LOG_NEW_SUBCATEGORY_helper(catName, XBT_LOG_ROOT_CAT, desc) + +#if (defined(_WIN32) && !defined(DLL_STATIC)) +# define XBT_LOG_NEW_CATEGORY(catName,desc) \ + XBT_EXPORT_NO_IMPORT(s_xbt_log_category_t) _XBT_LOGV(catName) = { \ + 0, 0, 0, \ + #catName, xbt_log_priority_uninitialized, 1, \ + 0, 1 \ + } +#else +# define XBT_LOG_NEW_CATEGORY(catName,desc) XBT_LOG_NEW_SUBCATEGORY_helper(catName, XBT_LOG_ROOT_CAT, desc) +#endif /** * \ingroup XBT_log @@ -150,9 +160,26 @@ typedef enum { * Creates a new subcategory of the root category and makes it the default * (used by macros that don't explicitly specify a category). */ -#define XBT_LOG_NEW_DEFAULT_CATEGORY(cname,desc) \ + +#if (defined(_WIN32) && !defined(DLL_STATIC)) +# define XBT_LOG_NEW_ROOT_SUBCATEGORY(cname,desc) \ + XBT_EXPORT_NO_IMPORT(s_xbt_log_category_t) _XBT_LOGV(cname) = { \ + 0, 0, 0, \ + #cname, xbt_log_priority_uninitialized, 1, \ + 0, 1 \ + } + +# define XBT_LOG_NEW_DEFAULT_CATEGORY(cname,desc) \ + XBT_LOG_NEW_ROOT_SUBCATEGORY(cname,desc); \ + XBT_LOG_DEFAULT_CATEGORY(cname) + +#else +# define XBT_LOG_NEW_DEFAULT_CATEGORY(cname,desc) \ XBT_LOG_NEW_CATEGORY(cname,desc); \ - XBT_LOG_DEFAULT_CATEGORY(cname) + XBT_LOG_DEFAULT_CATEGORY(cname) +#endif + + /** * \ingroup XBT_log @@ -194,7 +221,7 @@ typedef enum { /* Functions you may call */ -extern void xbt_log_control_set(const char* cs); +XBT_PUBLIC(void) xbt_log_control_set(const char* cs); /* Forward declarations */ typedef struct xbt_log_appender_s s_xbt_log_appender_t,*xbt_log_appender_t; @@ -212,7 +239,7 @@ struct xbt_log_category_s { int threshold; int isThreshInherited; /*@null@*/ xbt_log_appender_t appender; - int willLogToParent; + int willLogToParent; /* TODO: Formats? */ }; @@ -238,7 +265,7 @@ struct xbt_log_event_s { * * Programatically alters a category's threshold priority (don't use). */ -extern void xbt_log_threshold_set(xbt_log_category_t cat, +XBT_PUBLIC(void) xbt_log_threshold_set(xbt_log_category_t cat, e_xbt_log_priority_t thresholdPriority); /** @@ -248,7 +275,7 @@ extern void xbt_log_threshold_set(xbt_log_category_t cat, * * Programatically alter a category's parent (don't use). */ -extern void xbt_log_parent_set(xbt_log_category_t cat, +XBT_PUBLIC(void) xbt_log_parent_set(xbt_log_category_t cat, xbt_log_category_t parent); /** @@ -258,20 +285,22 @@ extern void xbt_log_parent_set(xbt_log_category_t cat, * * Programatically sets the category's appender (don't use). */ -extern void xbt_log_appender_set(xbt_log_category_t cat, +XBT_PUBLIC(void) xbt_log_appender_set(xbt_log_category_t cat, xbt_log_appender_t app); /* Functions that you shouldn't call. */ -extern void _xbt_log_event_log(xbt_log_event_t ev, +XBT_PUBLIC(void) _xbt_log_event_log(xbt_log_event_t ev, const char *fmt, ...) _XBT_GNUC_PRINTF(2,3); -extern int _xbt_log_cat_init(e_xbt_log_priority_t priority, +XBT_PUBLIC(int) _xbt_log_cat_init(e_xbt_log_priority_t priority, xbt_log_category_t category); -extern s_xbt_log_category_t _XBT_LOGV(XBT_LOG_ROOT_CAT); +extern XBT_IMPORT_NO_EXPORT(s_xbt_log_category_t) _XBT_LOGV(XBT_LOG_ROOT_CAT); + XBT_LOG_EXTERNAL_CATEGORY(GRAS); + extern xbt_log_appender_t xbt_log_default_appender; /** @@ -314,11 +343,13 @@ extern xbt_log_appender_t xbt_log_default_appender; * Setting the LogEvent's valist member is done inside _log_logEvent. */ -#define _XBT_LOG_PRE(catv, priority) do { \ - if (_XBT_LOG_ISENABLEDV(catv, priority)) { \ - s_xbt_log_event_t _log_ev = \ - {&(catv),priority,__FILE__,_XBT_FUNCTION,__LINE__}; \ - _xbt_log_event_log(&_log_ev +#define _XBT_LOG_PRE(catv, priority) do { \ + if (_XBT_LOG_ISENABLEDV(catv, priority)) { \ + s_xbt_log_event_t _log_ev = \ + {NULL,priority,__FILE__,_XBT_FUNCTION,__LINE__}; \ + _log_ev.cat = &(catv); \ + _xbt_log_event_log(&_log_ev \ + #define _XBT_LOG_POST \ ); \ @@ -581,6 +612,8 @@ extern xbt_log_appender_t xbt_log_default_appender; * @brief Log at TRACE priority a message indicating that we reached that point. */ #define XBT_HERE LOG0(xbt_log_priority_trace, "-- was here") + + SG_END_DECL() #endif /* ! _XBT_LOG_H_ */