home *** CD-ROM | disk | FTP | other *** search
- /* NAME:
- * trace.h - definitions for a simple trace facility
- *
- * SYNOPSIS:
- * #include "trace.h"
- *
- * DESCRIPTION:
- * Defines the macro _TRACE().
- * Also declares Trace_log and Trace_level.
- *
- * SEE ALSO:
- *
- *
- * AMENDED:
- * 91/11/22 22:53:58 (sjg)
- *
- * RELEASED:
- * 91/11/22 22:54:18 v1.2
- *
- * SCCSID:
- * @(#)trace.h 1.2 91/11/22 22:53:58 (sjg)
- *
- * @(#)Copyright (c) 1990 Simon J. Gerraty.
- */
-
- /* some useful #defines */
- #ifndef EXTERN
- # define EXTERN extern
- # define EXTERN_DEFINED
- #endif
-
- #ifndef TRUE
- # define TRUE 1
- # define FALSE 0
- #endif
- #ifndef ARGS
- # if defined(__STDC__) || defined(PROTO)
- # define ARGS(p) p
- # else
- # define ARGS(p) ()
- # endif
- #endif
-
- /*
- * this garbage is sometimes needed when mixing
- * langauges or calling conventions under DOS.
- */
- #ifndef _CDECL
- # if defined(MSDOS) || defined(MSC)
- # ifndef NO_EXT_KEYS
- # define _CDECL cdecl
- # define _NEAR near
- # else
- # define _CDECL
- # define _NEAR
- # endif
- # else /* not DrOS */
- # define _CDECL
- # define _NEAR
- # endif /* DOS */
- #endif /* _CDECL */
-
- /* manifest constants */
-
- /* struct / union */
-
- /* macros */
-
-
- #ifdef USE_TRACE
- EXTERN char * _CDECL Trace_log;
- EXTERN int _CDECL Trace_level;
-
- void _CDECL checkpoint ARGS((char *fmt, ...));
-
- /*
- * This macro takes a variabel number of args.
- * examples:
- * _TRACE(5, ("The current Debug level is %d\n", Debug));
- * Note that if more than two args are provided, all but the
- * first (which should be an integer indicating the Trace-level
- * required for this message to be printed) must be enclosed in
- * parenthesis.
- */
- # define _TRACE(lev, args) if (Trace_level >= lev) checkpoint args
- #else /* don't USE_TRACE */
- /*
- * this macro evaluates to a harmless no entry
- * loop that most optimizers will remove all together.
- */
- # define _TRACE(l, args) while (0)
- #endif /* USE_TRACE */
-
-
- /* This lot goes at the END */
- /* be sure not to interfere with anyone else's idea about EXTERN */
- #ifdef EXTERN_DEFINED
- # undef EXTERN_DEFINED
- # undef EXTERN
- #endif
- /*
- * Local Variables:
- * version-control:t
- * comment-column:40
- * End:
- */
-