]> rtime.felk.cvut.cz Git - ulut.git/commitdiff
Added helper macro for log domain registration function building.
authorppisa <ppisa>
Mon, 25 May 2009 17:42:12 +0000 (17:42 +0000)
committerppisa <ppisa>
Mon, 25 May 2009 17:42:12 +0000 (17:42 +0000)
ulut/ul_logreg.h

index 9a25b83745856a45dd6972ab07f317e0673ed474..a9a85964975a3d1d9815aed291d45021eab1f8d8 100644 (file)
@@ -22,6 +22,7 @@
  *******************************************************************/
 
 #include <ul_logbase.h>
+#include <ul_utdefs.h>
 
 #ifndef _UL_LOGREG_H
 #define _UL_LOGREG_H
@@ -37,6 +38,22 @@ int ul_logreg_domain(ul_log_domain_t *domain);
 int ul_logreg_domains_static(ul_log_domain_t *const *domains, int count);
 int ul_log_domain_arg2levels(const char *arg);
 
+#define UL_LOGREG_DOMAINS_INIT_FUNCTION(function_name, array_name) \
+int function_name(void) \
+{ \
+  int ret; \
+  static int domains_registered = 0; \
+  if (domains_registered) \
+    return 0; \
+  ret = ul_logreg_domains_static(array_name, \
+           sizeof(array_name)/sizeof(array_name[0])); \
+  if (ret >= 0) \
+    domains_registered = 1; \
+  return ret; \
+} \
+static void function_name##_on_init(void) UL_ATTR_CONSTRUCTOR; \
+static void function_name##_on_init(void) { function_name(); }
+
 #ifdef __cplusplus
 } /* extern "C"*/
 #endif