1*24470Sdonn /* 2*24470Sdonn * Copyright (c) 1980 Regents of the University of California. 3*24470Sdonn * All rights reserved. The Berkeley software License Agreement 4*24470Sdonn * specifies the terms and conditions for redistribution. 5*24470Sdonn * 6*24470Sdonn * @(#)defines.h 5.1 (Berkeley) 08/28/85 7*24470Sdonn */ 8*24470Sdonn 9*24470Sdonn #define INTERDATA 2 10*24470Sdonn #define GCOS 3 11*24470Sdonn #define PDP11 4 12*24470Sdonn #define IBM 5 13*24470Sdonn #define CMACH 6 14*24470Sdonn #define VAX 7 15*24470Sdonn 16*24470Sdonn #define DMR 2 17*24470Sdonn #define PCC 3 18*24470Sdonn 19*24470Sdonn #ifndef FAMILY 20*24470Sdonn FAMILY NOT DEFINED !!! 21*24470Sdonn Family = FAMILY 22*24470Sdonn #endif 23*24470Sdonn 24*24470Sdonn #ifndef HERE 25*24470Sdonn HERE NOT DEFINED !!!! 26*24470Sdonn Here = HERE 27*24470Sdonn #endif 28*24470Sdonn 29*24470Sdonn #define M(x) (1<<x) 30*24470Sdonn #define ALLOC(x) (struct x *) ckalloc(sizeof(struct x)) 31*24470Sdonn #define ALLOCN(n,x) (struct x *) ckalloc(n*sizeof(struct x)) 32*24470Sdonn #define ALLEXPR (expptr) ckalloc( sizeof(union Expression) ) 33*24470Sdonn typedef int *ptr; 34*24470Sdonn typedef char *charptr; 35*24470Sdonn typedef FILE *FILEP; 36*24470Sdonn typedef short flag; 37*24470Sdonn typedef char field; /* actually need only 4 bits */ 38*24470Sdonn typedef long int ftnint; 39*24470Sdonn #define LOCAL static 40*24470Sdonn 41*24470Sdonn #define NO 0 42*24470Sdonn #define YES 1 43*24470Sdonn 44*24470Sdonn #define CNULL (char *) 0 45*24470Sdonn #define PNULL (ptr) 0 46*24470Sdonn #define CHNULL (chainp) 0 47*24470Sdonn #define ENULL (expptr) 0 48*24470Sdonn 49*24470Sdonn 50*24470Sdonn 51*24470Sdonn /* block tag values */ 52*24470Sdonn 53*24470Sdonn #define TNAME 1 54*24470Sdonn #define TCONST 2 55*24470Sdonn #define TEXPR 3 56*24470Sdonn #define TADDR 4 57*24470Sdonn #define TTEMP 5 58*24470Sdonn #define TPRIM 6 59*24470Sdonn #define TLIST 7 60*24470Sdonn #define TIMPLDO 8 61*24470Sdonn #define TERROR 9 62*24470Sdonn 63*24470Sdonn 64*24470Sdonn /* parser states */ 65*24470Sdonn 66*24470Sdonn #define OUTSIDE 0 67*24470Sdonn #define INSIDE 1 68*24470Sdonn #define INDCL 2 69*24470Sdonn #define INDATA 3 70*24470Sdonn #define INEXEC 4 71*24470Sdonn 72*24470Sdonn /* procedure classes */ 73*24470Sdonn 74*24470Sdonn #define PROCMAIN 1 75*24470Sdonn #define PROCBLOCK 2 76*24470Sdonn #define PROCSUBR 3 77*24470Sdonn #define PROCFUNCT 4 78*24470Sdonn 79*24470Sdonn 80*24470Sdonn /* storage classes -- vstg values */ 81*24470Sdonn 82*24470Sdonn #define STGUNKNOWN 0 83*24470Sdonn #define STGARG 1 84*24470Sdonn #define STGAUTO 2 85*24470Sdonn #define STGBSS 3 86*24470Sdonn #define STGINIT 4 87*24470Sdonn #define STGCONST 5 88*24470Sdonn #define STGEXT 6 89*24470Sdonn #define STGINTR 7 90*24470Sdonn #define STGSTFUNCT 8 91*24470Sdonn #define STGCOMMON 9 92*24470Sdonn #define STGEQUIV 10 93*24470Sdonn #define STGREG 11 94*24470Sdonn #define STGLENG 12 95*24470Sdonn #define STGNULL 13 96*24470Sdonn #define STGPREG 14 97*24470Sdonn 98*24470Sdonn /* name classes -- vclass values */ 99*24470Sdonn 100*24470Sdonn #define CLUNKNOWN 0 101*24470Sdonn #define CLPARAM 1 102*24470Sdonn #define CLVAR 2 103*24470Sdonn #define CLENTRY 3 104*24470Sdonn #define CLMAIN 4 105*24470Sdonn #define CLBLOCK 5 106*24470Sdonn #define CLPROC 6 107*24470Sdonn #define CLNAMELIST 7 108*24470Sdonn 109*24470Sdonn 110*24470Sdonn /* vprocclass values */ 111*24470Sdonn 112*24470Sdonn #define PUNKNOWN 0 113*24470Sdonn #define PEXTERNAL 1 114*24470Sdonn #define PINTRINSIC 2 115*24470Sdonn #define PSTFUNCT 3 116*24470Sdonn #define PTHISPROC 4 117*24470Sdonn 118*24470Sdonn /* control stack codes */ 119*24470Sdonn 120*24470Sdonn #define CTLDO 1 121*24470Sdonn #define CTLIF 2 122*24470Sdonn #define CTLELSE 3 123*24470Sdonn 124*24470Sdonn 125*24470Sdonn /* operators -- see also arrays 'ops' and 'ops2' in put.c */ 126*24470Sdonn 127*24470Sdonn #define OPPLUS 1 128*24470Sdonn #define OPMINUS 2 129*24470Sdonn #define OPSTAR 3 130*24470Sdonn #define OPSLASH 4 131*24470Sdonn #define OPPOWER 5 132*24470Sdonn #define OPNEG 6 133*24470Sdonn #define OPOR 7 134*24470Sdonn #define OPAND 8 135*24470Sdonn #define OPEQV 9 136*24470Sdonn #define OPNEQV 10 137*24470Sdonn #define OPNOT 11 138*24470Sdonn #define OPCONCAT 12 139*24470Sdonn #define OPLT 13 140*24470Sdonn #define OPEQ 14 141*24470Sdonn #define OPGT 15 142*24470Sdonn #define OPLE 16 143*24470Sdonn #define OPNE 17 144*24470Sdonn #define OPGE 18 145*24470Sdonn #define OPCALL 19 146*24470Sdonn #define OPCCALL 20 147*24470Sdonn #define OPASSIGN 21 148*24470Sdonn #define OPPLUSEQ 22 149*24470Sdonn #define OPSTAREQ 23 150*24470Sdonn #define OPCONV 24 151*24470Sdonn #define OPLSHIFT 25 152*24470Sdonn #define OPMOD 26 153*24470Sdonn #define OPCOMMA 27 154*24470Sdonn #define OPQUEST 28 155*24470Sdonn #define OPCOLON 29 156*24470Sdonn #define OPABS 30 157*24470Sdonn #define OPMIN 31 158*24470Sdonn #define OPMAX 32 159*24470Sdonn #define OPADDR 33 160*24470Sdonn #define OPINDIRECT 34 161*24470Sdonn #define OPBITOR 35 162*24470Sdonn #define OPBITAND 36 163*24470Sdonn #define OPBITXOR 37 164*24470Sdonn #define OPBITNOT 38 165*24470Sdonn #define OPRSHIFT 39 166*24470Sdonn #define OPPAREN 40 167*24470Sdonn #define OPUNARYPLUS 41 168*24470Sdonn 169*24470Sdonn 170*24470Sdonn /* label type codes */ 171*24470Sdonn 172*24470Sdonn #define LABUNKNOWN 0 173*24470Sdonn #define LABEXEC 1 174*24470Sdonn #define LABFORMAT 2 175*24470Sdonn #define LABOTHER 3 176*24470Sdonn 177*24470Sdonn 178*24470Sdonn /* INTRINSIC function codes*/ 179*24470Sdonn 180*24470Sdonn #define INTREND 0 181*24470Sdonn #define INTRCONV 1 182*24470Sdonn #define INTRMIN 2 183*24470Sdonn #define INTRMAX 3 184*24470Sdonn #define INTRGEN 4 185*24470Sdonn #define INTRSPEC 5 186*24470Sdonn #define INTRBOOL 6 187*24470Sdonn #define INTRCNST 7 188*24470Sdonn 189*24470Sdonn 190*24470Sdonn /* I/O statement codes */ 191*24470Sdonn 192*24470Sdonn #define IOSTDIN ICON(5) 193*24470Sdonn #define IOSTDOUT ICON(6) 194*24470Sdonn #define IOSTDERR ICON(0) 195*24470Sdonn 196*24470Sdonn #define IOSBAD (-1) 197*24470Sdonn #define IOSPOSITIONAL 0 198*24470Sdonn #define IOSUNIT 1 199*24470Sdonn #define IOSFMT 2 200*24470Sdonn 201*24470Sdonn #define IOINQUIRE 1 202*24470Sdonn #define IOOPEN 2 203*24470Sdonn #define IOCLOSE 3 204*24470Sdonn #define IOREWIND 4 205*24470Sdonn #define IOBACKSPACE 5 206*24470Sdonn #define IOENDFILE 6 207*24470Sdonn #define IOREAD 7 208*24470Sdonn #define IOWRITE 8 209*24470Sdonn 210*24470Sdonn 211*24470Sdonn /* type masks */ 212*24470Sdonn 213*24470Sdonn #define MSKLOGICAL M(TYLOGICAL) 214*24470Sdonn #define MSKADDR M(TYADDR) 215*24470Sdonn #define MSKCHAR M(TYCHAR) 216*24470Sdonn #define MSKINT M(TYSHORT)|M(TYLONG) 217*24470Sdonn #define MSKREAL M(TYREAL)|M(TYDREAL) 218*24470Sdonn #define MSKCOMPLEX M(TYCOMPLEX)|M(TYDCOMPLEX) 219*24470Sdonn #define MSKSTATIC (M(STGINIT)|M(STGBSS)|M(STGCOMMON)|M(STGEQUIV)|M(STGCONST)) 220*24470Sdonn 221*24470Sdonn /* miscellaneous macros */ 222*24470Sdonn 223*24470Sdonn #define ONEOF(x,y) (M(x) & (y)) 224*24470Sdonn #define ISCOMPLEX(z) ONEOF(z, MSKCOMPLEX) 225*24470Sdonn #define ISREAL(z) ONEOF(z, MSKREAL) 226*24470Sdonn #define ISNUMERIC(z) ONEOF(z, MSKINT|MSKREAL|MSKCOMPLEX) 227*24470Sdonn #define ISICON(z) (z->tag==TCONST && ISINT(z->constblock.vtype)) 228*24470Sdonn #define ISCHAR(z) (z->headblock.vtype==TYCHAR) 229*24470Sdonn #define ISINT(z) ONEOF(z, MSKINT) 230*24470Sdonn #define ISCONST(z) (z->tag==TCONST) 231*24470Sdonn #define ISERROR(z) (z->tag==TERROR) 232*24470Sdonn #define ISPLUSOP(z) (z->tag==TEXPR && z->exprblock.opcode==OPPLUS) 233*24470Sdonn #define ISSTAROP(z) (z->tag==TEXPR && z->exprblock.opcode==OPSTAR) 234*24470Sdonn #define ISONE(z) (ISICON(z) && z->constblock.const.ci==1) 235*24470Sdonn #define INT(z) ONEOF(z, MSKINT|MSKCHAR) 236*24470Sdonn #define ICON(z) mkintcon( (ftnint)(z) ) 237*24470Sdonn 238*24470Sdonn #define NO66(s) if(no66flag) err66(s) 239*24470Sdonn #define NOEXT(s) if(noextflag) errext(s) 240*24470Sdonn 241*24470Sdonn /* round a up to a multiple of b */ 242*24470Sdonn #define roundup(a,b) ( b * ( (a+b-1)/b) ) 243*24470Sdonn 244*24470Sdonn 245*24470Sdonn /* optimization buffer slot types */ 246*24470Sdonn 247*24470Sdonn #define SKNULL 0 248*24470Sdonn #define SKIFN 1 249*24470Sdonn #define SKGOTO 2 250*24470Sdonn #define SKLABEL 3 251*24470Sdonn #define SKEQ 4 252*24470Sdonn #define SKCALL 5 253*24470Sdonn #define SKCMGOTO 6 254*24470Sdonn #define SKSTOP 7 255*24470Sdonn #define SKDOHEAD 8 256*24470Sdonn #define SKENDDO 9 257*24470Sdonn #define SKARIF 10 258*24470Sdonn #define SKRETURN 11 259*24470Sdonn #define SKASGOTO 12 260*24470Sdonn #define SKPAUSE 13 261*24470Sdonn #define SKASSIGN 14 262*24470Sdonn #define SKIOIFN 15 263*24470Sdonn #define SKFRTEMP 16 264