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