From a8996f9da4e77c7ac717a476cf3856d02f00f648 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=B6tz=20Lindenmaier?= Date: Thu, 1 Mar 2001 10:58:25 +0000 Subject: [PATCH] Moved here from ../debug/ [r96] --- ir/adt/Makefile | 2 +- ir/adt/debug.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++++ ir/adt/debug.h | 36 +++++++++++++++++++ 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 ir/adt/debug.c create mode 100644 ir/adt/debug.h diff --git a/ir/adt/Makefile b/ir/adt/Makefile index 80a7600a7..f9a857d96 100644 --- a/ir/adt/Makefile +++ b/ir/adt/Makefile @@ -20,7 +20,7 @@ X_INCLUDES = SHELL = /bin/sh MAKE = /usr/bin/make -MEMBERS = array.m pdeq.m set.m +MEMBERS = array.m pdeq.m set.m debug.m CFILES = $(MEMBERS:.m=.c) CFIMES += xmalloc.c diff --git a/ir/adt/debug.c b/ir/adt/debug.c new file mode 100644 index 000000000..00740db4e --- /dev/null +++ b/ir/adt/debug.c @@ -0,0 +1,91 @@ +/* Debug --- run time debug level management + Copyright (C) 1995, 1996 Christian von Roques + All rights reserved. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include "debug.h" +#include "misc.h" + + +int +(d_) (int flag, unsigned level) +{ + return d_ (flag, level); +} + + +int +(d_level) (int flag) +{ + return d_level (flag); +} + + +int +(d_set_level) (int flag, unsigned level) +{ + return d_set_level (flag, level); +} + + +#ifdef DEBUG +int nflags; +unsigned char *d_vec; +#endif + + +/* + * Set debug flags according to the following syntax: + * number ["-" number] ["." number] + * 1st number is number of first flag to set. + * 2nd number is number of last flag to set. [defaults to 1st number] + * 3rd number is level to set the flags to. [defaults to 1] + */ +void +(d_parse) (const char *s) +{ +#ifdef DEBUG + long first, last, level; + char *end; + + first = strtol(s, &end, 10); + last = (s != end) ? first : nflags-1; + + s = end; + if (*s == '-') { + ++s; + last = strtol(s, &end, 10); + if (end == s) last = nflags-1; /* 3- ==> 3..nflags-1 */ + } + + s = end; + if (*s == '.') { + ++s; + level = strtol(s, &end, 10); + /* . with no number gives level 0 */ + } else { + level = 1; + } + + if (first<0) first=0; + if (last>=nflags) last = nflags-1; + + while (first<=last) d_vec[first++] = level; +#endif /* DEBUG */ +} + + +void +(d_init) (int n) +{ +#ifdef DEBUG + nflags = n; + d_vec = xmalloc (sizeof (unsigned char) * n); + memset(d_vec, 0, sizeof (unsigned char) * n); +#endif +} diff --git a/ir/adt/debug.h b/ir/adt/debug.h new file mode 100644 index 000000000..cb49dd380 --- /dev/null +++ b/ir/adt/debug.h @@ -0,0 +1,36 @@ +/* Declarations for debug + Copyright (C) 1995, 1996 Christian von Roques + All rights reserved. */ + +#ifndef _DEBUG_H_ +#define _DEBUG_H_ + +void d_init (int nflags); +int d_ (int flag, unsigned level); +int d_level (int flag); +int d_set_level (int flag, unsigned level); +void d_parse (const char *s); + +#ifdef DEBUG + +#include "deflag.h" + +extern unsigned char *d_vec; + +# define d_init(n) (d_init) ((n)) +# define d_(flag, level) (d_vec[(flag)] >= (level)) +# define d_level(flag) (d_vec[(flag)]) +# define d_set_level(flag, level) (d_vec[(flag)] = (level)) +# define d_parse(s) (d_parse) ((s)) + +#else /* !DEBUG */ + +# define d_init(n) ((void)0) +# define d_(flag, level) 0 +# define d_level(flag) 0 +# define d_set_level(flag, level) (level) +# define d_parse(s) ((void)0) + +#endif /* !DEBUG */ + +#endif -- 2.20.1