Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:ragge:20020324105723

Diff

Diff from 1.1 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/pcc/pcc/mip/manifest.h

Annotated File View

ragge
1.1
1 /*      manifest.h      4.2     87/12/09        */
2
3 #ifndef _MANIFEST_
4 #define _MANIFEST_
5
6 #include <stdio.h>
7 #include "pcclocal.h"
8 #include "config.h"
9
10 #define DSIZE   (MAXOP+1)       /* DSIZE is the size of the dope array */
11
12 #define NOLAB   (-1)            /* no label with constant */
13
14 /*
15  * Node types
16  */
17 #define LTYPE   02              /* leaf */
18 #define UTYPE   04              /* unary */
19 #define BITYPE  010             /* binary */
20
21 /*
22  * Bogus type values
23  */
24 #define TNULL   INCREF(MOETY)   /* pointer to MOETY -- impossible type */
25 #define TVOID   FTN             /* function returning UNDEF (for void) */
26
27 /*
28  * Type packing constants
29  */
30 #define TMASK   060             /* mask for 1st component of compound type */
31 #define TMASK1  0300            /* mask for 2nd component of compound type */
32 #define TMASK2  0360            /* mask for 3rd component of compound type */
33 #define BTMASK  017             /* basic type mask */
34 #define BTSHIFT 4               /* basic type shift */
35 #define TSHIFT  2               /* shift count to get next type component */
36
37 /*
38  * Type manipulation macros
39  */
40 #define MODTYPE(x,y)    x = ((x)&(~BTMASK))|(y) /* set basic type of x to y */
41 #define BTYPE(x)        ((x)&BTMASK)            /* basic type of x */
42 #define ISUNSIGNED(x)   ((x)<=ULONG&&(x)>=UCHAR)
43 #define UNSIGNABLE(x)   ((x)<=LONG&&(x)>=CHAR)
44 #define ENUNSIGN(x)     ((x)+(UNSIGNED-INT))
45 #define DEUNSIGN(x)     ((x)+(INT-UNSIGNED))
46 #define ISPTR(x)        (((x)&TMASK)==PTR)
47 #define ISFTN(x)        (((x)&TMASK)==FTN)      /* is x a function type */
48 #define ISARY(x)        (((x)&TMASK)==ARY)      /* is x an array type */
49 #define INCREF(x)       ((((x)&~BTMASK)<<TSHIFT)|PTR|((x)&BTMASK))
50 #define DECREF(x)       ((((x)>>TSHIFT)&~BTMASK)|( (x)&BTMASK))
51 /* advance x to a multiple of y */
52 #define SETOFF(x,y)     if ((x)%(y) != 0) (x) = (((x)/(y) + 1) * (y))
53 /* can y bits be added to x without overflowing z */
54 #define NOFIT(x,y,z)    (((x)%(z) + (y)) > (z))
55
56 /*
57  * Pack and unpack field descriptors (size and offset)
58  */
59 #define PKFIELD(s,o)    (((o)<<6)| (s))
60 #define UPKFSZ(v)       ((v) &077)
61 #define UPKFOFF(v)      ((v)>>6)
62
63 /*
64  * Operator information
65  */
66 #define TYFLG   016
67 #define ASGFLG  01
68 #define LOGFLG  020
69
70 #define SIMPFLG 040
71 #define COMMFLG 0100
72 #define DIVFLG  0200
73 #define FLOFLG  0400
74 #define LTYFLG  01000
75 #define CALLFLG 02000
76 #define MULFLG  04000
77 #define SHFFLG  010000
78 #define ASGOPFLG 020000
79
80 #define SPFLG   040000
81
82 #define optype(o)       (dope[o]&TYFLG)
83 #define asgop(o)        (dope[o]&ASGFLG)
84 #define logop(o)        (dope[o]&LOGFLG)
85 #define callop(o)       (dope[o]&CALLFLG)
86
87 /*
88  * External declarations, typedefs and the like
89  */
90 #ifdef FLEXNAMES
91 char    *hash();
92 char    *savestr();
93 char    *tstr();
94 extern  int tstrused;
95 extern  char *tstrbuf[];
96 extern  char **curtstr;
97 #define freetstr()      curtstr = tstrbuf, tstrused = 0
98 #endif
99
100 extern  int nerrors;            /* number of errors seen so far */
101 extern  int dope[];             /* a vector containing operator information */
102 extern  char *opst[];           /* a vector containing names for ops */
103
104 typedef union ndu NODE;
105 typedef unsigned int TWORD;
106 #define NIL     (NODE *)0
107
108 #ifndef ONEPASS
109 #ifndef EXPR
110 #define EXPR '.'
111 #endif
112 #ifndef BBEG
113 #define BBEG '['
114 #endif
115 #ifndef BEND
116 #define BEND ']'
117 #endif
118 #else
119 #include "onepass.h"
120 #endif
121 #endif
FishEye: Open Source License registered to PCC.
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-12-21 13:07 +0100