Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:ragge:20030604193605

Diff

Diff from 1.13 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 "config.h"
ragge
1.11
8 #include "node.h"
ragge
1.1
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  * Types, as encoded in intermediate file cookies.
90  */
91 #define UNDEF           0
92 #define FARG            1       /* function argument */
93 #define CHAR            2
94 #define SHORT           3
95 #define INT             4
96 #define LONG            5
97 #define LONGLONG        6       /* long long, per C99 */
98 #define FLOAT           7
99 #define DOUBLE          8
100 #define STRTY           9
101 #define UNIONTY         10
102 #define ENUMTY          11
103 #define MOETY           12      /* member of enum */
104 #define UCHAR           13
105 #define USHORT          14
106 #define UNSIGNED        15
107 #define ULONG           16      
108 #define ULONGLONG       17
109 #define SIGNED          18      /* Signed, per ANSI-C */
110 #define SCHAR           19
111 #define CONST           20      /* Not really a type */
112 #define VOLATILE        21      /* Not really a type */
113
114 /* 
115  * Type modifiers.
116  */
117 #define PTR             0x20
118 #define FTN             0x40
119 #define ARY             0x60
120 #define BASETYPE        0x1f
121 #define TYPESHIFT       2
ragge
1.1
122
123 /*
124  * External declarations, typedefs and the like
125  */
ragge
1.2
126 char    *hash(char *s);
127 char    *savestr(char *cp);
128 char    *tstr(char *cp);
ragge
1.1
129 extern  int tstrused;
130 extern  char *tstrbuf[];
131 extern  char **curtstr;
132 #define freetstr()      curtstr = tstrbuf, tstrused = 0
133
ragge
1.13
134 /* memory management */
135 void *permalloc(int size);
136 void *tmpalloc(int size);
137 void tmpfree(void);
138
ragge
1.1
139 extern  int nerrors;            /* number of errors seen so far */
140 extern  int dope[];             /* a vector containing operator information */
141 extern  char *opst[];           /* a vector containing names for ops */
142
ragge
1.5
143 #include "main.h"
ragge
1.1
144 #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-20 21:51 +0100