home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computerworld 1996 March
/
Computerworld_1996-03_cd.bin
/
idg_cd3
/
grafika
/
fraktaly
/
frasr192
/
port.h
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-21
|
7KB
|
236 lines
/**************************************
**
** PORT.H : Miscellaneous definitions for portability. Please add
** to this file for any new machines/compilers you may have.
**
** XFRACT file "SHARED.H" merged into PORT.H on 3/14/92 by --CWM--
*/
#ifndef PORT_H /* If this is defined, this file has been */
#define PORT_H /* included already in this module. */
#define MSDOS 1
#ifdef XFRACT /* XFRACT forces unix configuration! --CWM-- */
/* CAE added ltoa, overwrite fix for HP-UX v9 26Jan95 */
#ifdef _HPUX_SOURCE
#define ltoa fr_ltoa
#define overwrite fr_overwrite
#endif
#ifdef MSDOS
#undef MSDOS
#endif
#ifdef __MSDOS__
#undef __MSDOS__
#endif
#ifndef unix
#define unix
#endif
#endif /* XFRACT */
#ifdef __TURBOC__
#define __cdecl cdecl
#ifndef __DOS_H
/* dos.h is needed for MK_FP */
#include <dos.h>
#endif
#endif
#ifdef MSDOS /* Microsoft C 5.1 for OS/2 and MSDOS */
/* NOTE: this is always true on DOS! */
/* (MSDOS is defined above) */
#ifdef _MSC_VER /* MSC assert does nothing under MSDOS */
#ifdef assert
#undef assert
#define assert(X)
#endif
#endif
typedef unsigned char U8;
typedef signed char S8;
typedef unsigned short U16;
typedef signed short S16;
typedef unsigned long U32;
typedef signed long S32;
typedef unsigned char BYTE;
typedef unsigned char CHAR;
typedef void *VOIDPTR;
typedef void far *VOIDFARPTR;
typedef void const *VOIDCONSTPTR;
#define CONST const
#define PRINTER "/dev/prn"
#define LOBYTEFIRST 1
#define SLASHC '\\'
#define SLASH "\\"
#define SLASHSLASH "\\\\"
#define SLASHDOT "\\."
#define DOTSLASH ".\\"
#define DOTDOTSLASH "..\\"
#define READMODE "rb" /* Correct DOS text-mode */
#define WRITEMODE "wb" /* file open "feature". */
#define write1(ptr,len,n,stream) fwrite(ptr,len,n,stream)
#define write2(ptr,len,n,stream) fwrite(ptr,len,n,stream)
#define rand15() rand()
#else /* Have to nest because #elif is not portable */
#ifdef AMIGA /* Lattice C 3.02 for Amiga */
typedef UBYTE U8;
typedef BYTE S8;
typedef UWORD U16;
typedef WORD S16;
typedef unsigned int U32;
typedef int S32;
typedef UBYTE BYTE;
typedef UBYTE CHAR;
typedef void *VOIDPTR;
typedef void *VOIDFARPTR;
typedef void *VOIDCONSTPTR;
#define CONST
#define PRINTER "PRT:"
#define LOBYTEFIRST 0
#define SLASHC '/'
#define SLASH "/"
#define SLASHSLASH "//"
#define SLASHDOT "/."
#define DOTSLASH "./"
#define DOTDOTSLASH "../"
#define READMODE "rb"
#define WRITEMODE "wb"
#define write1(ptr,len,n,stream) (fputc(*(ptr),stream),1)
#define write2(ptr,len,n,stream) (fputc((*(ptr))&255,stream),fputc((*(ptr))>>8,stream),1)
#define rand15() (rand()&0x7FFF)
#define BIG_ENDIAN
#define USE_BIGNUM_C_CODE
#else
#ifdef unix /* Unix machine */
typedef unsigned char U8;
typedef char S8;
typedef unsigned short U16;
typedef short S16;
typedef unsigned long U32;
typedef long S32;
typedef unsigned char BYTE;
typedef char CHAR;
#define __cdecl
#ifdef BADVOID
typedef char *VOIDPTR;
typedef char *VOIDFARPTR;
typedef char *VOIDCONSTPTR;
#else
typedef void *VOIDPTR;
typedef void *VOIDFARPTR;
typedef void *VOIDCONSTPTR;
#endif
/* Keep this defined for Unix, even on a little-endian machine */
#define BIG_ENDIAN
#define USE_BIGNUM_C_CODE
# define CONST
# define PRINTER "/dev/lp"
# define SLASHC '/'
# define SLASH "/"
# define SLASHSLASH "//"
# define SLASHDOT "/."
# define DOTSLASH "./"
# define DOTDOTSLASH "../"
# define READMODE "r"
# define WRITEMODE "w"
# define write1(ptr,len,n,stream) (fputc(*(ptr),stream),1)
# define write2(ptr,len,n,stream) (fputc((*(ptr))&255,stream),fputc((*(ptr))>>8,stream),1)
# define rand15() (rand()&0x7FFF)
# include "unix.h"
#endif
#endif
#endif
#ifdef LOBYTEFIRST
#define GET16(c,i) (i) = *((U16*)(&(c)))
#else
#define GET16(c,i) (i) = (*(unsigned char *)&(c))+\
((*((unsigned char*)&(c)+1))<<8)
#endif
/* The following should work regardless of machine type */
#include <float.h>
/* If you want to force the use of doubles, or */
/* if the compiler supports long doubles, but does not allow */
/* scanf("%Lf", &longdoublevar); */
/* to read in a long double, then uncomment this next line */
/* #undef LDBL_DIG */
/* #define USE_BIGNUM_C_CODE */ /* ASM code requires using long double */
/* HP-UX support long doubles and allows them to be read in with */
/* scanf(), but does not support the functions sinl, cosl, fabsl, etc. */
/* CAE added this 26Jan95 so it would compile (not sure how else to fix it) */
#ifdef _HPUX_SOURCE
#undef LDBL_DIG
#endif
#ifdef LDBL_DIG
/* this is what we're hoping for */
#define USE_LONG_DOUBLE
typedef long double LDBL;
#else
/* long double isn't supported */
/* impliment LDBL as double */
typedef double LDBL;
/* just in case */
#undef LDBL_DIG
#undef LDBL_EPSILON
#undef LDBL_MANT_DIG
#undef LDBL_MAX
#undef LDBL_MAX_10_EXP
#undef LDBL_MAX_EXP
#undef LDBL_MIN
#undef LDBL_MIN_10_EXP
#undef LDBL_MIN_EXP
#undef LDBL_RADIX
#undef LDBL_ROUNDS
#define LDBL_DIG DBL_DIG /* # of decimal digits of precision */
#define LDBL_EPSILON DBL_EPSILON /* smallest such that 1.0+LDBL_EPSILON != 1.0 */
#define LDBL_MANT_DIG DBL_MANT_DIG /* # of bits in mantissa */
#define LDBL_MAX DBL_MAX /* max value */
#define LDBL_MAX_10_EXP DBL_MAX_10_EXP /* max decimal exponent */
#define LDBL_MAX_EXP DBL_MAX_EXP /* max binary exponent */
#define LDBL_MIN DBL_MIN /* min positive value */
#define LDBL_MIN_10_EXP DBL_MIN_10_EXP /* min decimal exponent */
#define LDBL_MIN_EXP DBL_MIN_EXP /* min binary exponent */
#define LDBL_RADIX DBL_RADIX /* exponent radix */
#define LDBL_ROUNDS DBL_ROUNDS /* addition rounding: near */
#define sqrtl sqrt
#define logl log
#define log10l log10
#define atanl atan
#define fabsl fabs
#define sinl sin
#define cosl cos
#endif
#endif /* PORT_H */