Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
snake_case kernel::activity::ExecImpl
[simgrid.git] / include / xbt / log.h
index 4edbfed..b518d99 100644 (file)
@@ -28,9 +28,9 @@
 #ifndef XBT_LOG_H
 #define XBT_LOG_H
 
-#include "xbt/misc.h"
 #include <stdarg.h>
-#include <stddef.h>             /* NULL */
+#include <stddef.h> /* NULL */
+#include <xbt/misc.h>
 SG_BEGIN_DECL()
 /**\brief Log priorities
  * \ingroup XBT_log
@@ -94,21 +94,10 @@ typedef enum {
  * This is normally done at the first use of the category.
  *
  * It is however necessary to make this connections as early as possible, if we want the category to be listed by
- * --help-log-categories.
- *
- * When possible, the initializations takes place automatically before the start of main().  It's the case when
- * compiling with gcc.
- *
- * For the other cases, you can use the XBT_LOG_CONNECT(cat) macro to force early initialization.  See, for example,
- * in xbt/log.c, the function xbt_log_connect_categories().
+ * --help-log-categories. We use constructor attributes for these initializations to take place automatically before the
+ * start of main().
  */
 
-#define XBT_LOG_CONNECT(cat)                    \
-  if (1) {                                      \
-    extern void _XBT_LOGV_CTOR(cat)(void);      \
-    _XBT_LOGV_CTOR(cat)();                      \
-  } else ((void)0)
-
 /* XBT_LOG_NEW_SUBCATEGORY_helper:
  * Implementation of XBT_LOG_NEW_SUBCATEGORY, which must declare "extern parent" in addition to avoid an extra
  * declaration of root when XBT_LOG_NEW_SUBCATEGORY is called by XBT_LOG_NEW_CATEGORY */
@@ -123,8 +112,7 @@ typedef enum {
     }                                                                                                                  \
   }                                                                                                                    \
   SG_END_DECL()                                                                                                        \
-  XBT_EXPORT_NO_IMPORT(s_xbt_log_category_t)                                                                           \
-  _XBT_LOGV(catName) = {                                                                                               \
+  XBT_EXPORT_NO_IMPORT s_xbt_log_category_t _XBT_LOGV(catName) = {                                                     \
       &_XBT_LOGV(parent),                                                                                              \
       NULL /* firstChild */,                                                                                           \
       NULL /* nextSibling */,                                                                                          \
@@ -229,17 +217,17 @@ typedef enum {
 
 /* Functions you may call */
 
-XBT_PUBLIC(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;
-typedef struct xbt_log_appender_s* xbt_log_appender_t;
+typedef s_xbt_log_appender_t* xbt_log_appender_t;
 typedef struct xbt_log_layout_s  s_xbt_log_layout_t;
-typedef struct xbt_log_layout_s* xbt_log_layout_t;
+typedef s_xbt_log_layout_t* xbt_log_layout_t;
 typedef struct xbt_log_event_s  s_xbt_log_event_t;
-typedef struct xbt_log_event_s* xbt_log_event_t;
+typedef s_xbt_log_event_t* xbt_log_event_t;
 typedef struct xbt_log_category_s  s_xbt_log_category_t;
-typedef struct xbt_log_category_s* xbt_log_category_t;
+typedef s_xbt_log_category_t* xbt_log_category_t;
 
 /* Do NOT access any members of this structure directly. FIXME: move to private? */
 
@@ -275,7 +263,7 @@ struct xbt_log_event_s {
  *
  * Programatically alters a category's threshold priority (don't use).
  */
-XBT_PUBLIC(void) xbt_log_threshold_set(xbt_log_category_t cat, e_xbt_log_priority_t thresholdPriority);
+XBT_PUBLIC void xbt_log_threshold_set(xbt_log_category_t cat, e_xbt_log_priority_t thresholdPriority);
 
 /**
  * \ingroup XBT_log_implem
@@ -284,7 +272,7 @@ XBT_PUBLIC(void) xbt_log_threshold_set(xbt_log_category_t cat, e_xbt_log_priorit
  *
  * Programatically sets the category's appender. (the preferred interface is through xbt_log_control_set())
  */
-XBT_PUBLIC(void) xbt_log_appender_set(xbt_log_category_t cat, xbt_log_appender_t app);
+XBT_PUBLIC void xbt_log_appender_set(xbt_log_category_t cat, xbt_log_appender_t app);
 /**
  * \ingroup XBT_log_implem
  * \param cat the category (not only its name, but the variable)
@@ -292,7 +280,7 @@ XBT_PUBLIC(void) xbt_log_appender_set(xbt_log_category_t cat, xbt_log_appender_t
  *
  * Programatically sets the category's layout. (the preferred interface is through xbt_log_control_set())
  */
-XBT_PUBLIC(void) xbt_log_layout_set(xbt_log_category_t cat, xbt_log_layout_t lay);
+XBT_PUBLIC void xbt_log_layout_set(xbt_log_category_t cat, xbt_log_layout_t lay);
 
 /**
  * \ingroup XBT_log_implem
@@ -302,26 +290,26 @@ XBT_PUBLIC(void) xbt_log_layout_set(xbt_log_category_t cat, xbt_log_layout_t lay
  * Programatically sets whether the logging actions must be passed to the parent category.
  * (the preferred interface is through xbt_log_control_set())
  */
-XBT_PUBLIC(void) xbt_log_additivity_set(xbt_log_category_t cat, int additivity);
+XBT_PUBLIC void xbt_log_additivity_set(xbt_log_category_t cat, int additivity);
 
 /** @brief create a new simple layout
  *
  * This layout is not as flexible as the pattern one
  */
-XBT_PUBLIC(xbt_log_layout_t) xbt_log_layout_simple_new(char *arg);
-XBT_PUBLIC(xbt_log_layout_t) xbt_log_layout_format_new(char *arg);
-XBT_PUBLIC(xbt_log_appender_t) xbt_log_appender_file_new(char *arg);
-XBT_PUBLIC(xbt_log_appender_t) xbt_log_appender2_file_new(char *arg,int roll);
+XBT_PUBLIC xbt_log_layout_t xbt_log_layout_simple_new(char* arg);
+XBT_PUBLIC xbt_log_layout_t xbt_log_layout_format_new(char* arg);
+XBT_PUBLIC xbt_log_appender_t xbt_log_appender_file_new(char* arg);
+XBT_PUBLIC xbt_log_appender_t xbt_log_appender2_file_new(char* arg, int roll);
 
 /* ********************************** */
 /* Functions that you shouldn't call  */
 /* ********************************** */
-XBT_PUBLIC(void) xbt_log_init(int *argc, char **argv);
-XBT_PUBLIC(void) _xbt_log_event_log(xbt_log_event_t ev, const char *fmt, ...) XBT_ATTRIB_PRINTF(2, 3);
-XBT_PUBLIC(int) _xbt_log_cat_init(xbt_log_category_t category, e_xbt_log_priority_t priority);
+XBT_PUBLIC void xbt_log_init(int* argc, char** argv);
+XBT_PUBLIC void _xbt_log_event_log(xbt_log_event_t ev, const char* fmt, ...) XBT_ATTRIB_PRINTF(2, 3);
+XBT_PUBLIC int _xbt_log_cat_init(xbt_log_category_t category, e_xbt_log_priority_t priority);
 
 #ifdef DLL_EXPORT
-XBT_PUBLIC_DATA(s_xbt_log_category_t) _XBT_LOGV(XBT_LOG_ROOT_CAT);
+XBT_PUBLIC_DATA s_xbt_log_category_t _XBT_LOGV(XBT_LOG_ROOT_CAT);
 #else
 // If we `dllexport` the root log category, MinGW does not want us to take its address with the error:
 // > initializer element is not constant