Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:ragge:20030731090534

Diff

Diff from 1.30 to:

Annotations

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

Annotated File View

ragge
1.30
1 /*      $Id: manifest.h,v 1.30 2003/07/31 09:05:34 ragge Exp $  */
ragge
1.28
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  */
ragge
1.1
35
36 #ifndef _MANIFEST_
37 #define _MANIFEST_
38
39 #include <stdio.h>
ragge
1.29
40 #include "macdefs.h"
ragge
1.11
41 #include "node.h"
ragge
1.20
42 #include "main.h"
ragge
1.1
43
44 /*
45  * Node types
46  */
47 #define LTYPE   02              /* leaf */
48 #define UTYPE   04              /* unary */
49 #define BITYPE  010             /* binary */
50
51 /*
ragge
1.28
52  * DSIZE is the size of the dope array
53  */
54 #define DSIZE   (MAXOP+1)
55
56 /*
57  * Type names, used in symbol table building.
58  * The order of the integer types are important.
59  */
ragge
1.30
60 #define UNDEF           0       /* free symbol table entry */
ragge
1.28
61 #define FARG            1       /* function argument */
62 #define CHAR            2
63 #define UCHAR           3
64 #define SHORT           4
65 #define USHORT          5
66 #define INT             6
67 #define UNSIGNED        7
68 #define LONG            8
69 #define ULONG           9      
70 #define LONGLONG        10
71 #define ULONGLONG       11
72 #define FLOAT           12
73 #define DOUBLE          13
74 #define LDOUBLE         14
75 #define STRTY           15
76 #define UNIONTY         16
77 #define ENUMTY          17
78 #define MOETY           18      /* member of enum */
79 #define VOID            19
80 /*
81  * The following are only used in pass1, for simplicity.
82  */
83 #define SIGNED          20
84 #define CONST           21
85 #define VOLATILE        22
86
87 /*
88  * Various flags
89  */
90 #define NOLAB   (-1)
91
92 /* 
93  * Type modifiers.
ragge
1.1
94  */
ragge
1.30
95 #define PTR             0x100
96 #define FTN             0x200
97 #define ARY             0x300
98 #define CON             0x400
99 #define VOL             0x800
ragge
1.1
100
101 /*
102  * Type packing constants
103  */
ragge
1.30
104 #define TMASK   0x0300
105 #define TMASK1  0x3000
106 #define TMASK2  0x3300
107 #define BTMASK  0xff
108 #define BTSHIFT 8
109 #define TSHIFT  4
ragge
1.1
110
111 /*
ragge
1.28
112  * Macros
ragge
1.1
113  */
114 #define MODTYPE(x,y)    x = ((x)&(~BTMASK))|(y) /* set basic type of x to y */
115 #define BTYPE(x)        ((x)&BTMASK)            /* basic type of x */
ragge
1.9
116 #define ISLONGLONG(x)   ((x) == LONGLONG || (x) == ULONGLONG)
ragge
1.24
117 #define ISUNSIGNED(x)   (((x) & 1) == (UNSIGNED & 1))
118 #define UNSIGNABLE(x)   (((x)<=ULONGLONG&&(x)>=CHAR) && !ISUNSIGNED(x))
119 #define ENUNSIGN(x)     ((x)+1)
120 #define DEUNSIGN(x)     ((x)-1)
ragge
1.1
121 #define ISPTR(x)        (((x)&TMASK)==PTR)
122 #define ISFTN(x)        (((x)&TMASK)==FTN)      /* is x a function type */
123 #define ISARY(x)        (((x)&TMASK)==ARY)      /* is x an array type */
124 #define INCREF(x)       ((((x)&~BTMASK)<<TSHIFT)|PTR|((x)&BTMASK))
125 #define DECREF(x)       ((((x)>>TSHIFT)&~BTMASK)|( (x)&BTMASK))
126 #define SETOFF(x,y)     if ((x)%(y) != 0) (x) = (((x)/(y) + 1) * (y))
ragge
1.28
127                 /* advance x to a multiple of y */
ragge
1.1
128 #define NOFIT(x,y,z)    (((x)%(z) + (y)) > (z))
ragge
1.28
129                 /* can y bits be added to x without overflowing z */
ragge
1.1
130
131 /*
132  * Pack and unpack field descriptors (size and offset)
133  */
134 #define PKFIELD(s,o)    (((o)<<6)| (s))
ragge
1.28
135 #define UPKFSZ(v)       ((v)&077)
ragge
1.1
136 #define UPKFOFF(v)      ((v)>>6)
137
138 /*
139  * Operator information
140  */
141 #define TYFLG   016
142 #define ASGFLG  01
143 #define LOGFLG  020
144
145 #define SIMPFLG 040
146 #define COMMFLG 0100
147 #define DIVFLG  0200
148 #define FLOFLG  0400
149 #define LTYFLG  01000
150 #define CALLFLG 02000
151 #define MULFLG  04000
152 #define SHFFLG  010000
153 #define ASGOPFLG 020000
154
155 #define SPFLG   040000
156
ragge
1.8
157 /*
ragge
1.28
158  * Table sizes.
ragge
1.8
159  */
ragge
1.28
160 #define TREESZ  20000           /* space for building parse tree */
ragge
1.1
161
162 /*
ragge
1.21
163  * Location counters
164  */
165 #define PROG            0               /* program segment */
166 #define DATA            1               /* data segment */
167 #define ADATA           2               /* array data segment */
168 #define STRNG           3               /* string data segment */
169 #define ISTRNG          4               /* initialized string segment */
170 #define STAB            5               /* symbol table segment */
171
172
173 /*
ragge
1.1
174  * External declarations, typedefs and the like
175  */
ragge
1.2
176 char    *hash(char *s);
177 char    *savestr(char *cp);
178 char    *tstr(char *cp);
ragge
1.1
179
ragge
1.29
180 /* memory management stuff */
ragge
1.13
181 void *permalloc(int size);
182 void *tmpalloc(int size);
183 void tmpfree(void);
ragge
1.29
184 char *newstring(char *, int len);
ragge
1.13
185
ragge
1.19
186 /* pass t communication subroutines */
ragge
1.20
187 void topt_compile(struct interpass *);
ragge
1.19
188
189 /* pass 2 communication subroutines */
ragge
1.20
190 void pass2_compile(struct interpass *);
ragge
1.18
191
ragge
1.22
192 /* node routines */
193 void nfree(NODE *);
194
ragge
1.1
195 extern  int nerrors;            /* number of errors seen so far */
196 #endif
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-11-01 01:37 +0100