home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************
- *
- * Copyright (C) 1991 Kendall Bennett.
- * All rights reserved.
- *
- * Filename: $RCSfile: debug.h $
- * Version: $Revision: 1.6 $
- *
- * Language: ANSI C
- * Environment: any
- *
- * Description: General header file for portable code.
- *
- * $Id: debug.h 1.6 92/03/15 12:51:48 kjb Exp $
- *
- * Revision History:
- * -----------------
- *
- * $Log: debug.h $
- * Revision 1.6 92/03/15 12:51:48 kjb
- * Added MK_FP macro and ushort typedef.
- *
- * Revision 1.5 91/10/28 03:17:33 kjb
- * Ported to the Iris.
- *
- * Revision 1.4 91/09/26 15:29:02 kjb
- * Added stuff for the SGI Iris 4D.
- *
- * Revision 1.3 91/09/26 10:07:04 kjb
- * Added general typedef stuff.
- *
- * Revision 1.2 91/09/03 18:19:14 ROOT_DOS
- * Added a few defines that are supplied by <dir.h> for UNIX compatibility.
- *
- * Revision 1.1 91/08/16 13:19:06 ROOT_DOS
- * Initial revision
- *
- ****************************************************************************/
-
- #ifndef __DEBUG_H
- #define __DEBUG_H
-
- #ifdef DEBUG
- # define D(x) x
- #else
- # define D(x)
- #endif
-
- #define PRIVATE static
- #define PUBLIC
-
- #ifdef __MSDOS__ /* Compiling for MSDOS */
- # define MS(x) x
- # define UX(x)
- # define IR(x)
- # define _8086 /* We know we have an 8086 type processor */
- #if defined(__COMPACT__) || defined(__LARGE__) || defined(__HUGE__)
- # define LDATA
- # define NULL 0L
- #else
- # define NULL 0
- #endif
- #else __MSDOS__
- #ifdef __IRIS4D__ /* Compiling for the SGI Iris 4D */
- # define MS(x)
- # define UX(x) x /* The Iris is a UNIX machine */
- # define IR(x) x
- # define O_BINARY 0 /* no binary input mode in UNIX open() */
- # define MAXFILE 255 /* These are defined in <dir.h>, but */
- # define MAXDIR 255 /* on UNIX machines, we just define */
- # define MAXPATH 255 /* them all to be the same size */
- # define far /* Near and far do not exist under */
- # define near /* UNIX or the Iris. */
- # define NULL ((void *)0)
- #else __IRIS4D__ /* Assume UNIX compilation */
- # define MS(x)
- # define UX(x) x
- # define IR(x)
- # define O_BINARY 0 /* no binary input mode in UNIX open() */
- # define MAXFILE 255 /* These are defined in <dir.h>, but */
- # define MAXDIR 255 /* on UNIX machines, we just define */
- # define MAXPATH 255 /* them all to be the same size */
- # define far /* Near and far do not exist under */
- # define near /* UNIX or the Iris. */
- # define NULL ((void *)0)
- #endif __IRIS4D__
- #endif __MSDOS__
-
- /****************************************************************************
- *
- * SEG(p) Evaluates to the segment portion of an 8086 address.
- * OFF(p) Evaluates to the offset portion of an 8086 address.
- * FP(s,o) Creates a far pointer given a segment offset pair.
- * PHYS(p) Evaluates to a long holding a physical address
- *
- ****************************************************************************/
-
- #ifdef _8086
- # define SEG(p) ( ((unsigned *)&(void far *)(p))[1] )
- # define OFF(p) ( (unsigned)(p) )
- # define FP(s,o) ( (void far *)( ((unsigned long)s << 16) + \
- (unsigned long)o ))
- # define PHYS(p) ( (unsigned long)OFF(p) + \
- ((unsigned long)SEG(p) << 4))
- #else
- # define PHYS(p) (p)
- #endif _8086
-
- /****************************************************************************
- *
- * NUMELE(array) Evaluates to the array size in elements
- * LASTELE(array) Evaluates to a pointer to the last element
- * INBOUNDS(array,p) Evaluates to true if p points into the array
- * RANGE(a,b,c) Evaluates to true if a <= b <= c
- * max(a,b) Evaluates to a or b, whichever is larger
- * min(a,b) Evaluates to a or b, whichever is smaller
- * ABS(a) Evaluates to the absolute value of a
- * NBITS(type) Returns the number of bits in a variable of the
- * indicated type
- * MAXINT Evaluates to the value of the largest signed integer
- *
- ****************************************************************************/
-
- #define NUMELE(a) (sizeof(a)/sizeof(*(a)))
- #define LASTELE(a) ((a) + (NUMELE(a)-1))
- #ifdef LDATA
- #define TOOHIGH(a,p) ((long)PHYS(p) - (long)PHYS(a) > (long)(NUMELE(a)-1))
- #define TOOLOW(a,p) ((long)PHYS(p) - (long)PHYS(a) < 0)
- #else
- #define TOOHIGH(a,p) ((long)(p) - (long)(a) > (long)(NUMELE(a)-1))
- #define TOOLOW(a,p) ((long)(p) - (long)(a) < 0)
- #endif
- #define INBOUNDS(a,p) ( ! (TOOHIGH(a,p) || TOOLOW(a,p)) )
-
- #define _IS(t,x) (((t)1 << (x)) != 0) /* Evaluates true if the width of */
- /* variable of type t is < x. */
- /* The != 0 assures that the */
- /* answer is 1 or 0 */
-
- #define NBITS(t) (4 * (1 + _IS(t,4) + _IS(t,8) + _IS(t,12) + _IS(t,16) \
- + _IS(t,20) + _IS(t,24) + _IS(t,28) + _IS(t,32)))
-
- #define MAXINT (((unsigned)~0) >> 1)
-
- #ifndef MAX
- # define MAX(a,b) ( ((a) > (b)) ? (a) : (b))
- #endif
- #ifndef MIN
- # define MIN(a,b) ( ((a) < (b)) ? (a) : (b))
- #endif
- #ifndef ABS
- # define ABS(a) ((a) >= 0 ? (a) : -(a))
- #endif
-
- #define RANGE(a,b,c) ( (a) <= (b) && (b) <= (c) )
-
- /* General typedefs */
-
- #ifndef __GENDEFS
- #define __GENDEFS
- typedef void *ptr;
- typedef void near *nearptr;
- typedef void far *farptr;
- typedef unsigned char uchar;
- typedef unsigned short ushort;
- typedef unsigned int uint;
- typedef unsigned long ulong;
- typedef int bool;
- #endif __GENDEFS
-
- /* Boolean truth values */
-
- #define false 0
- #define true 1
- #define FALSE 0
- #define TRUE 1
- #define NO 0
- #define YES 1
-
- #endif __DEBUG_H
-