* 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) \
- XBT_EXPORT 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 \
* 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) \
/**
*
* 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
* 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
/* 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;
int threshold;
int isThreshInherited;
/*@null@*/ xbt_log_appender_t appender;
- int willLogToParent;
+ int willLogToParent;
/* TODO: Formats? */
};
*
* 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);
/**
*
* 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);
/**
*
* 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;
/**
* 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 \
); \
* @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_ */