Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:ragge:20020526130645

Diff

Diff from 1.9 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>
ragge
1.8
7 #include "cgram.h"
ragge
1.1
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  */
ragge
1.6
30 #define TMASK   0x60            /* mask for 1st component of compound type */
31 #define TMASK1  0x180           /* mask for 2nd component of compound type */
32 #define TMASK2  0x1e0           /* mask for 3rd component of compound type */
33 #define BTMASK  0x1f            /* basic type mask */
34 #define BTSHIFT 5               /* basic type shift */
ragge
1.1
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 */
ragge
1.9
42 #define ISLONGLONG(x)   ((x) == LONGLONG || (x) == ULONGLONG)
ragge
1.7
43 #define ISUNSIGNED(x)   ((x)<=ULONGLONG&&(x)>=UCHAR)
44 #define UNSIGNABLE(x)   ((x)<=LONGLONG&&(x)>=CHAR)
ragge
1.1
45 #define ENUNSIGN(x)     ((x)+(UNSIGNED-INT))
46 #define DEUNSIGN(x)     ((x)+(INT-UNSIGNED))
47 #define ISPTR(x)        (((x)&TMASK)==PTR)
48 #define ISFTN(x)        (((x)&TMASK)==FTN)      /* is x a function type */
49 #define ISARY(x)        (((x)&TMASK)==ARY)      /* is x an array type */
50 #define INCREF(x)       ((((x)&~BTMASK)<<TSHIFT)|PTR|((x)&BTMASK))
51 #define DECREF(x)       ((((x)>>TSHIFT)&~BTMASK)|( (x)&BTMASK))
52 /* advance x to a multiple of y */
53 #define SETOFF(x,y)     if ((x)%(y) != 0) (x) = (((x)/(y) + 1) * (y))
54 /* can y bits be added to x without overflowing z */
55 #define NOFIT(x,y,z)    (((x)%(z) + (y)) > (z))
56
57 /*
58  * Pack and unpack field descriptors (size and offset)
59  */
60 #define PKFIELD(s,o)    (((o)<<6)| (s))
61 #define UPKFSZ(v)       ((v) &077)
62 #define UPKFOFF(v)      ((v)>>6)
63
64 /*
65  * Operator information
66  */
67 #define TYFLG   016
68 #define ASGFLG  01
69 #define LOGFLG  020
70
71 #define SIMPFLG 040
72 #define COMMFLG 0100
73 #define DIVFLG  0200
74 #define FLOFLG  0400
75 #define LTYFLG  01000
76 #define CALLFLG 02000
77 #define MULFLG  04000
78 #define SHFFLG  010000
79 #define ASGOPFLG 020000
80
81 #define SPFLG   040000
82
83 #define optype(o)       (dope[o]&TYFLG)
84 #define asgop(o)        (dope[o]&ASGFLG)
85 #define logop(o)        (dope[o]&LOGFLG)
86 #define callop(o)       (dope[o]&CALLFLG)
ragge
1.8
87
88 /*
89  * Macros from pcc.h, cooperates with cgram.y generated header file.
90  */
91 #define ASG             1+
92 #define UNARY           2+
93 #define NOASG           (-1)+
94 #define NOUNARY         (-2)+
95
96 /*
97  * Types, as encoded in intermediate file cookies.
98  */
99 #define UNDEF           0
100 #define FARG            1       /* function argument */
101 #define CHAR            2
102 #define SHORT           3
103 #define INT             4
104 #define LONG            5
105 #define LONGLONG        6       /* long long, per C99 */
106 #define FLOAT           7
107 #define DOUBLE          8
108 #define STRTY           9
109 #define UNIONTY         10
110 #define ENUMTY          11
111 #define MOETY           12      /* member of enum */
112 #define UCHAR           13
113 #define USHORT          14
114 #define UNSIGNED        15
115 #define ULONG           16      
116 #define ULONGLONG       17
117 #define SIGNED          18      /* Signed, per ANSI-C */
118 #define SCHAR           19
119 #define CONST           20      /* Not really a type */
120 #define VOLATILE        21      /* Not really a type */
121
122 /* 
123  * Type modifiers.
124  */
125 #define PTR             0x20
126 #define FTN             0x40
127 #define ARY             0x60
128 #define BASETYPE        0x1f
129 #define TYPESHIFT       2
130
131 /*
132  * Node status.
133  */
134 #define ERROR           1       /* an error node */
135 #define FREE            2       /* an unused node */
ragge
1.1
136
137 /*
138  * External declarations, typedefs and the like
139  */
ragge
1.2
140 char    *hash(char *s);
141 char    *savestr(char *cp);
142 char    *tstr(char *cp);
ragge
1.1
143 extern  int tstrused;
144 extern  char *tstrbuf[];
145 extern  char **curtstr;
146 #define freetstr()      curtstr = tstrbuf, tstrused = 0
147
148 extern  int nerrors;            /* number of errors seen so far */
149 extern  int dope[];             /* a vector containing operator information */
150 extern  char *opst[];           /* a vector containing names for ops */
151
152 typedef union ndu NODE;
153 typedef unsigned int TWORD;
154 #define NIL     (NODE *)0
155
156 #include "onepass.h"
ragge
1.5
157 #include "main.h"
ragge
1.1
158 #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-22 11:39 +0100