lightweight DB() macro added
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Wed, 25 Jan 2006 13:08:28 +0000 (13:08 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Wed, 25 Jan 2006 13:08:28 +0000 (13:08 +0000)
[r7272]

ir/common/debug.c
ir/common/debug.h

index 6956495..37f7432 100644 (file)
@@ -44,93 +44,107 @@ static struct obstack dbg_obst;
 static set *module_set;
 
 struct _firm_dbg_module_t {
-       unsigned mask;
-       const char *name;
-       FILE *file;
+  unsigned mask;
+  const char *name;
+  FILE *file;
 };
 
 static int module_cmp(const void *p1, const void *p2, size_t size)
 {
-       const firm_dbg_module_t *m1 = p1;
-       const firm_dbg_module_t *m2 = p2;
-       return strcmp(m1->name, m2->name);
+  const firm_dbg_module_t *m1 = p1;
+  const firm_dbg_module_t *m2 = p2;
+  return strcmp(m1->name, m2->name);
 }
 
 static void firm_dbg_init(void)
 {
-       obstack_init(&dbg_obst);
-       module_set = new_set(module_cmp, 16);
+  obstack_init(&dbg_obst);
+  module_set = new_set(module_cmp, 16);
 }
 
 firm_dbg_module_t *firm_dbg_register(const char *name)
 {
-       firm_dbg_module_t mod;
-       mod.mask = 0;
-       mod.name = name;
-       mod.file = stderr;
+  firm_dbg_module_t mod;
+  mod.mask = 0;
+  mod.name = name;
+  mod.file = stderr;
 
-       if(!module_set)
-               firm_dbg_init();
+  if(!module_set)
+    firm_dbg_init();
 
-       return set_insert(module_set, &mod, sizeof(mod), HASH_STR(name, strlen(name)));
+  return set_insert(module_set, &mod, sizeof(mod), HASH_STR(name, strlen(name)));
 }
 
 void firm_dbg_set_mask(firm_dbg_module_t *module, unsigned mask)
 {
-       module->mask = mask;
+  module->mask = mask;
 }
 
 unsigned firm_dbg_get_mask(const firm_dbg_module_t *module)
 {
-       return module->mask;
+  return module->mask;
 }
 
 void firm_dbg_set_file(firm_dbg_module_t *module, FILE *file)
 {
-       module->file = file;
+  module->file = file;
 }
 
 typedef struct _msg_info_t {
-       const char *msg;
-       const firm_dbg_module_t *mod;
+  const char *msg;
+  const firm_dbg_module_t *mod;
 } msg_info_t;
 
 static void *make_msg_info(const firm_dbg_module_t *mod, const char *fmt, va_list args)
 {
-       static const char msg_header[] = "%s(%d) %s: ";
-       msg_info_t *res = obstack_alloc(&dbg_obst, sizeof(*res));
+  static const char msg_header[] = "%s(%d) %s: ";
+  msg_info_t *res = obstack_alloc(&dbg_obst, sizeof(*res));
 
-       obstack_grow(&dbg_obst, msg_header, sizeof(msg_header) - 1);
-       ir_obst_vprintf(&dbg_obst, fmt, args);
-       obstack_1grow(&dbg_obst, '\0');
+  obstack_grow(&dbg_obst, msg_header, sizeof(msg_header) - 1);
+  ir_obst_vprintf(&dbg_obst, fmt, args);
+  obstack_1grow(&dbg_obst, '\0');
 
-       res->msg = obstack_finish(&dbg_obst);
-       res->mod = mod;
-       return res;
+  res->msg = obstack_finish(&dbg_obst);
+  res->mod = mod;
+  return res;
 }
 
 void *_firm_dbg_make_msg(const firm_dbg_module_t *mod, unsigned mask, const char *fmt, ...)
 {
-       void *res = NULL;
+  void *res = NULL;
 
-       if(mask == 0 || (mod->mask & mask)) {
-               va_list args;
-               va_start(args, fmt);
-               res = make_msg_info(mod, fmt, args);
-               va_end(args);
-       }
+  if(mask == 0 || (mod->mask & mask)) {
+    va_list args;
+    va_start(args, fmt);
+    res = make_msg_info(mod, fmt, args);
+    va_end(args);
+  }
 
-       return res;
+  return res;
 }
 
 void _firm_dbg_print_msg(const char *filename, int line, const char *func, void *mi_ptr)
 {
-       msg_info_t *mi = mi_ptr;
-       if(mi) {
-               fprintf(mi->mod->file, mi->msg, filename, line, func);
-               obstack_free(&dbg_obst, mi);
-       }
+  msg_info_t *mi = mi_ptr;
+  if(mi) {
+    fprintf(mi->mod->file, mi->msg, filename, line, func);
+    obstack_free(&dbg_obst, mi);
+  }
 }
 
+void _firm_dbg_print(const firm_dbg_module_t *mod, unsigned mask, const char *fmt, ...)
+{
+  if(mask == 0 || (mod->mask & mask)) {
+    va_list args;
+    char *res;
+    va_start(args, fmt);
+    ir_obst_vprintf(&dbg_obst, fmt, args);
+    obstack_1grow(&dbg_obst, '\0');
+    res = obstack_finish(&dbg_obst);
+    fprintf(mod->file, res);
+    obstack_free(&dbg_obst, res);
+    va_end(args);
+  }
+}
 
 #endif /* WITH_LIBCORE */
index f362f52..1effc7f 100644 (file)
@@ -14,6 +14,7 @@
 #ifdef WITH_LIBCORE
 
 #define DBG(x) _LC_DBG(x)
+#define DB(x)  _LC_DB(x)
 #include <libcore/lc_debug.h>
 
 /* use the newer debug implementation in libcore */
@@ -69,6 +70,9 @@ void *_firm_dbg_make_msg(const firm_dbg_module_t *mod, unsigned mask, const char
 /* Internal function to the debug module. */
 void _firm_dbg_print_msg(const char *filename, int line, const char *func, void *data);
 
+/* Internal function to the debug module. */
+void _firm_dbg_print(const firm_dbg_module_t *mod, unsigned mask, const char *fmt, ...);
+
 /**
  * Register a module to the firm debug facility.
  * If the module has already been registered, no new module is allocated
@@ -115,15 +119,18 @@ void firm_dbg_set_file(firm_dbg_module_t *module, FILE *file);
 
 /* Else go without the name of the calling function. */
 #define _DBG(args)     _DBG_MAIN("", args)
-#endif
+#endif  /* __GNUC__ */
 #endif
 
+#define _DB(args) _firm_dbg_print args
+
 /**
  * Debug messages issued with this macro are always printed, even in
  * retail versions.
  * @see DBG()
  */
 #define DBG_RETAIL(args)               _DBG(args)
+#define DB_RETAIL(args)                  _DB(args)
 
 #ifdef DEBUG_libfirm
 
@@ -151,10 +158,12 @@ void firm_dbg_set_file(firm_dbg_module_t *module, FILE *file);
  * @endcode
  */
 #define DBG(args)                                      _DBG(args)
+#define DB(args)                                         _DB(args)
 
 #else
 #define DBG(args)
-#endif
+#define DB(args)
+#endif /* DEBUG_libfirm */
 
 #endif /* WITH_LIBCORE */