1 /*	$Id: defines.h,v 1.15 2008/05/10 07:53:41 ragge Exp $	*/
2 /*
3  * Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * Redistributions of source code and documentation must retain the above
10  * copyright notice, this list of conditions and the following disclaimer.
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditionsand the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  * All advertising materials mentioning features or use of this software
15  * must display the following acknowledgement:
16  * 	This product includes software developed or owned by Caldera
17  *	International, Inc.
18  * Neither the name of Caldera International, Inc. nor the names of other
19  * contributors may be used to endorse or promote products derived from
20  * this software without specific prior written permission.
21  *
22  * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
23  * INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
24  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED.  IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
27  * FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT,
31  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  */
35 #include <stdio.h>
36 
37 #ifdef FCOM
38 #include "pass2.h"
39 #endif
40 #include "ftypes.h"
41 
42 #define INTERDATA 2
43 #define GCOS 3
44 #define PDP11 4
45 #define IBM 5
46 #define CMACH 6
47 #define VAX 7
48 
49 #define DMR 2
50 #define SCJ 3
51 
52 #define BINARY 2
53 #define ASCII 3
54 
55 #define PREFIX 2
56 #define POSTFIX 3
57 
58 #define M(x) (1<<x)
59 #define ALLOC(x) ckalloc(sizeof(struct x))
60 #define	BALLO()	(bigptr)ckalloc(sizeof(struct bigblock))
61 typedef void *ptr;
62 typedef FILE *FILEP;
63 typedef short flag;
64 typedef long int ftnint;
65 #define LOCAL static
66 
67 #define NO 0
68 #define YES 1
69 
70 
71 
72 /* block tag values */
73 
74 #define TNAME 1
75 #define TCONST 2
76 #define TEXPR 3
77 #define TADDR 4
78 #define TPRIM 5
79 #define TLIST 6
80 #define TIMPLDO 7
81 #define TERROR 8
82 
83 
84 /* parser states */
85 
86 #define OUTSIDE 0
87 #define INSIDE 1
88 #define INDCL 2
89 #define INDATA 3
90 #define INEXEC 4
91 
92 /* procedure classes */
93 
94 #define PROCMAIN 1
95 #define PROCBLOCK 2
96 #define PROCSUBR 3
97 #define PROCFUNCT 4
98 
99 
100 /* storage classes */
101 
102 #define STGUNKNOWN 0
103 #define STGARG 1
104 #define STGAUTO 2
105 #define STGBSS 3
106 #define STGINIT 4
107 #define STGCONST 5
108 #define STGEXT 6
109 #define STGINTR 7
110 #define STGSTFUNCT 8
111 #define STGCOMMON 9
112 #define STGEQUIV 10
113 #define STGREG 11
114 #define STGLENG 12
115 
116 /* name classes */
117 
118 #define CLUNKNOWN 0
119 #define CLPARAM 1
120 #define CLVAR 2
121 #define CLENTRY 3
122 #define CLMAIN 4
123 #define CLBLOCK 5
124 #define CLPROC 6
125 
126 
127 /* vproclass values */
128 
129 #define PUNKNOWN 0
130 #define PEXTERNAL 1
131 #define PINTRINSIC 2
132 #define PSTFUNCT 3
133 #define PTHISPROC 4
134 
135 /* control stack codes */
136 
137 #define CTLDO 1
138 #define CTLIF 2
139 #define CTLELSE 3
140 
141 
142 /* operators */
143 
144 #define OPPLUS 1
145 #define OPMINUS 2
146 #define OPSTAR 3
147 #define OPSLASH 4
148 #define OPPOWER 5
149 #define OPNEG 6
150 #define OPOR 7
151 #define OPAND 8
152 #define OPEQV 9
153 #define OPNEQV 10
154 #define OPNOT 11
155 #define OPCONCAT 12
156 #define OPLT 13
157 #define OPEQ 14
158 #define OPGT 15
159 #define OPLE 16
160 #define OPNE 17
161 #define OPGE 18
162 #define OPCALL 19
163 #define OPCCALL 20
164 #define OPASSIGN 21
165 /* #define OPPLUSEQ 22 */
166 /* #define OPSTAREQ 23 */
167 #define OPCONV 24
168 #define OPLSHIFT 25
169 #define OPMOD 26
170 #define OPCOMMA 27
171 /* #define OPQUEST 28 */
172 /* #define OPCOLON 29 */
173 #define OPABS 30
174 #define OPMIN 31
175 #define OPMAX 32
176 #define OPADDR 33
177 #define OPINDIRECT 34
178 #define OPBITOR 35
179 #define OPBITAND 36
180 #define OPBITXOR 37
181 #define OPBITNOT 38
182 #define OPRSHIFT 39
183 
184 
185 /* memory regions */
186 
187 #define REGARG 1
188 #define REGAUTO 2
189 #define REGBSS 3
190 #define REGINIT 4
191 #define REGCONST 5
192 #define REGEXT 6
193 #define REGPROG 7
194 
195 /* label type codes */
196 
197 #define LABUNKNOWN 0
198 #define LABEXEC 1
199 #define LABFORMAT 2
200 #define LABOTHER 3
201 
202 
203 /* INTRINSIC function codes*/
204 
205 #define INTREND 0
206 #define INTRCONV 1
207 #define INTRMIN 2
208 #define INTRMAX 3
209 #define INTRGEN 4
210 #define INTRSPEC 5
211 #define INTRBOOL 6
212 #define INTRCNST 7
213 
214 
215 /* I/O statement codes */
216 
217 #define IOSTDIN MKICON(5)
218 #define IOSTDOUT MKICON(6)
219 
220 #define IOSBAD (-1)
221 #define IOSPOSITIONAL 0
222 #define IOSUNIT 1
223 #define IOSFMT 2
224 
225 #define IOINQUIRE 1
226 #define IOOPEN 2
227 #define IOCLOSE 3
228 #define IOREWIND 4
229 #define IOBACKSPACE 5
230 #define IOENDFILE 6
231 #define IOREAD 7
232 #define IOWRITE 8
233 
234 
235 /* type masks */
236 
237 #define MSKLOGICAL	M(TYLOGICAL)
238 #define MSKADDR	M(TYADDR)
239 #define MSKCHAR	M(TYCHAR)
240 #define MSKINT	M(TYSHORT)|M(TYLONG)
241 #define MSKREAL	M(TYREAL)|M(TYDREAL)
242 #define MSKCOMPLEX	M(TYCOMPLEX)|M(TYDCOMPLEX)
243 
244 /* miscellaneous macros */
245 
246 #define ONEOF(x,y) (M(x) & (y))
247 #define ISCOMPLEX(z) ONEOF(z, MSKCOMPLEX)
248 #define ISREAL(z) ONEOF(z, MSKREAL)
249 #define ISNUMERIC(z) ONEOF(z, MSKINT|MSKREAL|MSKCOMPLEX)
250 #define ISICON(z) (z->tag==TCONST && ISINT(z->vtype))
251 #define ISCHAR(z) (z->vtype==TYCHAR)
252 #define ISINT(z)   ONEOF(z, MSKINT)
253 #define ISCONST(z) (z->tag==TCONST)
254 #define ISERROR(z) (z->tag==TERROR)
255 #define ISPLUSOP(z) (z->tag==TEXPR && z->b_expr.opcode==OPPLUS)
256 #define ISSTAROP(z) (z->tag==TEXPR && z->b_expr.opcode==OPSTAR)
257 #define ISONE(z) (ISICON(z) && z->b_const.fconst.ci==1)
258 /* #define INT(z) ONEOF(z, MSKINT|MSKCHAR) */
259 #define MKICON(z) mkintcon( (ftnint)(z) )
260 #define CHCON(z) mkstrcon(strlen(z), z)
261 
262 /* round a up to a multiple of b */
263 #define roundup(a,b)    ( b * ( (a+b-1)/b) )
264 
265 /* prototypes for cpu-specific functions */
266 void prchars(int *);
267 
268