/* * $Id: assert.h,v 1.1 2004-03-26 21:08:47 obarthel Exp $ * * :ts=8 * * Copyright © 2001 by Olaf Barthel. All Rights Reserved. */ /****************************************************************************/ /* IMPORTANT: If DEBUG is redefined, it must happen only here. This * will cause all modules to depend upon it to be rebuilt * by the smakefile (that is, provided the smakefile has * all the necessary dependency lines in place). */ /*#define DEBUG*/ /****************************************************************************/ #ifdef ASSERT #undef ASSERT #endif /* ASSERT */ #define PUSH_ASSERTS() PUSHDEBUGLEVEL(0) #define PUSH_REPORTS() PUSHDEBUGLEVEL(1) #define PUSH_CALLS() PUSHDEBUGLEVEL(2) #define PUSH_ALL() PUSHDEBUGLEVEL(2) #define POP() POPDEBUGLEVEL() #if defined(DEBUG) && defined(__SASC) void _ASSERT(int x,const char *xs,const char *file,int line,const char *function); void _SHOWVALUE(unsigned long value,int size,const char *name,const char *file,int line); void _SHOWPOINTER(void *p,const char *name,const char *file,int line); void _SHOWSTRING(const char *string,const char *name,const char *file,int line); void _SHOWMSG(const char *msg,const char *file,int line); void _ENTER(const char *file,int line,const char *function); void _LEAVE(const char *file,int line,const char *function); void _RETURN(const char *file,int line,const char *function,unsigned long result); void _DPRINTF_HEADER(const char *file,int line); void _DPRINTF(const char *format,...); void _DLOG(const char *format,...); int _SETDEBUGLEVEL(int level); void _PUSHDEBUGLEVEL(int level); void _POPDEBUGLEVEL(void); int _GETDEBUGLEVEL(void); void _SETPROGRAMNAME(char *name); #define ASSERT(x) _ASSERT((int)(x),#x,__FILE__,__LINE__,__FUNC__) #define ENTER() _ENTER(__FILE__,__LINE__,__FUNC__) #define LEAVE() _LEAVE(__FILE__,__LINE__,__FUNC__) #define RETURN(r) _RETURN(__FILE__,__LINE__,__FUNC__,(unsigned long)r) #define SHOWVALUE(v) _SHOWVALUE(v,sizeof(v),#v,__FILE__,__LINE__) #define SHOWPOINTER(p) _SHOWPOINTER(p,#p,__FILE__,__LINE__) #define SHOWSTRING(s) _SHOWSTRING(s,#s,__FILE__,__LINE__) #define SHOWMSG(s) _SHOWMSG(s,__FILE__,__LINE__) #define D(s) do { _DPRINTF_HEADER(__FILE__,__LINE__); _DPRINTF s; } while(0) #define PRINTHEADER() _DPRINTF_HEADER(__FILE__,__LINE__) #define PRINTF(s) _DLOG s #define LOG(s) do { _DPRINTF_HEADER(__FILE__,__LINE__); _DLOG("<%s()>:",__FUNC__); _DLOG s; } while(0) #define SETDEBUGLEVEL(l) _SETDEBUGLEVEL(l) #define PUSHDEBUGLEVEL(l) _PUSHDEBUGLEVEL(l) #define POPDEBUGLEVEL() _POPDEBUGLEVEL() #define SETPROGRAMNAME(n) _SETPROGRAMNAME(n) #define GETDEBUGLEVEL() _GETDEBUGLEVEL() #undef DEBUG #define DEBUG 1 #else #define ASSERT(x) ((void)0) #define ENTER() ((void)0) #define LEAVE() ((void)0) #define RETURN(r) ((void)0) #define SHOWVALUE(v) ((void)0) #define SHOWPOINTER(p) ((void)0) #define SHOWSTRING(s) ((void)0) #define SHOWMSG(s) ((void)0) #define D(s) ((void)0) #define PRINTHEADER() ((void)0) #define PRINTF(s) ((void)0) #define LOG(s) ((void)0) #define SETDEBUGLEVEL(l) ((void)0) #define PUSHDEBUGLEVEL(l) ((void)0) #define POPDEBUGLEVEL() ((void)0) #define SETPROGRAMNAME(n) ((void)0) #define GETDEBUGLEVEL() (0) #ifdef DEBUG #undef DEBUG #endif /* DEBUG */ #define DEBUG 0 #endif /* DEBUG */ /****************************************************************************/