mac-rom/Interfaces/CIncludes/SANE.h
Elliot Nunn 4325cdcc78 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 09:52:23 +08:00

248 lines
6.0 KiB
C

/************************************************************
Created: Wednesday, September 27, 1989 at 2:58 PM
SANE.h
C Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1985-1991
All rights reserved
This file is used in these builds: ROM System
Change History (most recent first):
<4> 2/17/92 MH Move def on extended80 to types.h, and include types.h
<3> 8/8/91 JL Updated copyright
26 Oct 89 - Jon Okada
Removed initialization of IEEEDEFAULTENV for -mc68881 mode
(deferred to CLib881.o); declared IEEEDEFAULTENV extern.
Installed #include of Math.h.
Removed declarations of sqrt, log, exp, tan, cos, sin, and
atan (deferred to Math.h).
Changed declarations of functions power and inf to macro
definitions using pow and __inf.
************************************************************/
#ifndef __SANE__
#define __SANE__
#ifndef __TYPES__
#include <Types.h>
#endif
#ifndef __MATH__
#include <Math.h>
#endif
#ifdef mc68881
/* specific to the MC68881 SANE library */
#define INEXACT ((exception)(8))
#define DIVBYZERO ((exception)(16))
#define UNDERFLOW ((exception)(32))
#define OVERFLOW ((exception)(64))
#define INVALID ((exception)(128))
#define CURINEX1 ((exception)(256))
#define CURINEX2 ((exception)(512))
#define CURDIVBYZERO ((exception)(1024))
#define CURUNDERFLOW ((exception)(2048))
#define CUROVERFLOW ((exception)(4096))
#define CUROPERROR ((exception)(8192))
#define CURSIGNAN ((exception)(16384))
#define CURBSONUNOR ((exception)(32768))
#else
/* specific to the software SANE library */
#define INVALID ((exception)(1))
#define UNDERFLOW ((exception)(2))
#define OVERFLOW ((exception)(4))
#define DIVBYZERO ((exception)(8))
#define INEXACT ((exception)(16))
#define IEEEDEFAULTENV ((environment)(0)) /*IEEE-default floating-point environment*/
#endif /* mc68881 */
/* The common interface to the SANE library */
/* Decimal Representation Constants */
#define SIGDIGLEN 20 /* significant decimal digits */
#define DECSTROUTLEN 80 /* max length for dec2str output */
/* Decimal Formatting Styles */
#define FLOATDECIMAL ((char)(0))
#define FIXEDDECIMAL ((char)(1))
/* Ordering Relations */
#define GREATERTHAN ((relop)(0))
#define LESSTHAN ((relop)(1))
#define EQUALTO ((relop)(2))
#define UNORDERED ((relop)(3))
/* Inquiry Classes */
#define SNAN ((numclass)(0))
#define QNAN ((numclass)(1))
#define INFINITE ((numclass)(2))
#define ZERONUM ((numclass)(3))
#define NORMALNUM ((numclass)(4))
#define DENORMALNUM ((numclass)(5))
/* Rounding Directions */
#define TONEAREST ((rounddir)(0))
#define UPWARD ((rounddir)(1))
#define DOWNWARD ((rounddir)(2))
#define TOWARDZERO ((rounddir)(3))
/* Rounding Precisions */
#define EXTPRECISION ((roundpre)(0))
#define DBLPRECISION ((roundpre)(1))
#define FLOATPRECISION ((roundpre)(2))
#ifdef mc68881
typedef long exception;
struct environment {
long FPCR;
long FPSR;
};
typedef struct environment environment;
extern environment IEEEDEFAULTENV;
struct trapvector {
void (*unordered)();
void (*inexact)();
void (*divbyzero)();
void (*underflow)();
void (*operror)();
void (*overflow)();
void (*signan)();
};
typedef struct trapvector trapvector;
#else
typedef short exception;
typedef short environment;
typedef struct {short w[6];} extended96;
struct mischaltinfo {
unsigned short haltexceptions;
unsigned short pendingCCR;
long pendingD0;
};
typedef struct mischaltinfo mischaltinfo;
typedef pascal void (*haltvector)(mischaltinfo *misc, void *src2, void *src, void *dst, short opcode);
#endif
typedef short relop; /* relational operator */
typedef short numclass; /* inquiry class */
typedef short rounddir; /* rounding direction */
typedef short roundpre; /* rounding precision */
struct decimal {
char sgn; /*sign 0 for +, 1 for -*/
char unused;
short exp; /*decimal exponent*/
struct{
unsigned char length;
unsigned char text[SIGDIGLEN]; /*significant digits */
unsigned char unused;
}sig;
};
typedef struct decimal decimal;
struct decform {
char style; /*FLOATDECIMAL or FIXEDDECIMAL*/
char unused;
short digits;
};
typedef struct decform decform;
#ifdef __cplusplus
extern "C" {
#endif
#ifdef mc68881
struct trapvector gettrapvector(void);
void settrapvector(const trapvector *v);
void x96tox80(const extended *x,extended80 *x80);
void x80tox96(const extended80 *x80,extended *x);
#else
haltvector gethaltvector(void);
void sethaltvector(haltvector v);
void x96tox80(const extended96 *x96,extended *x);
void x80tox96(const extended *x,extended96 *x96);
#endif
void num2dec(const decform *f,extended x,decimal *d);
extended dec2num(const decimal *d);
void dec2str(const decform *f,const decimal *d,char *s);
void str2dec(const char *s,short *ix,decimal *d,short *vp);
extended remainder(extended x,extended y,short *quo);
extended rint(extended x);
extended scalb(short n,extended x);
extended logb(extended x);
extended copysign(extended x,extended y);
extended nextfloat(extended x,extended y);
extended nextdouble(extended x,extended y);
extended nextextended(extended x,extended y);
extended log2(extended x);
extended log1(extended x);
extended exp2(extended x);
extended exp1(extended x);
#define power(x,y) pow(x,y)
extended ipower(extended x,short i);
extended compound(extended r,extended n);
extended annuity(extended r,extended n);
extended randomx(extended *x);
numclass classfloat(extended x);
numclass classdouble(extended x);
numclass classcomp(extended x);
numclass classextended(extended x);
long signnum(extended x);
void setexception(exception e,long s);
long testexception(exception e);
void sethalt(exception e,long s);
long testhalt(exception e);
void setround(rounddir r);
rounddir getround(void);
void setprecision(roundpre p);
roundpre getprecision(void);
void setenvironment(environment e);
void getenvironment(environment *e);
void procentry(environment *e);
void procexit(environment e);
relop relation(extended x,extended y);
extended nan(unsigned char c);
#define inf() __inf()
extended pi(void);
#ifdef __cplusplus
}
#endif
#endif