Blame


1 564ca709 2004-04-19 devnull /* acid.h */
2 5a2237bb 2005-02-11 devnull #undef OAPPEND
3 5a2237bb 2005-02-11 devnull
4 564ca709 2004-04-19 devnull enum
5 564ca709 2004-04-19 devnull {
6 564ca709 2004-04-19 devnull Eof = -1,
7 564ca709 2004-04-19 devnull Strsize = 4096,
8 564ca709 2004-04-19 devnull Hashsize = 128,
9 564ca709 2004-04-19 devnull Maxarg = 512,
10 564ca709 2004-04-19 devnull NFD = 100,
11 564ca709 2004-04-19 devnull Maxproc = 50,
12 564ca709 2004-04-19 devnull Maxval = 10,
13 564ca709 2004-04-19 devnull Mempergc = 1024*1024,
14 564ca709 2004-04-19 devnull };
15 564ca709 2004-04-19 devnull
16 564ca709 2004-04-19 devnull /* #pragma varargck type "L" void */
17 564ca709 2004-04-19 devnull
18 564ca709 2004-04-19 devnull typedef struct Node Node;
19 564ca709 2004-04-19 devnull typedef struct String String;
20 564ca709 2004-04-19 devnull typedef struct Lsym Lsym;
21 564ca709 2004-04-19 devnull typedef struct List List;
22 564ca709 2004-04-19 devnull typedef struct Store Store;
23 564ca709 2004-04-19 devnull typedef struct Gc Gc;
24 564ca709 2004-04-19 devnull typedef struct Strc Strc;
25 564ca709 2004-04-19 devnull typedef struct Rplace Rplace;
26 564ca709 2004-04-19 devnull typedef struct Ptab Ptab;
27 564ca709 2004-04-19 devnull typedef struct Value Value;
28 564ca709 2004-04-19 devnull typedef struct Type Type;
29 564ca709 2004-04-19 devnull typedef struct Frtype Frtype;
30 564ca709 2004-04-19 devnull
31 564ca709 2004-04-19 devnull Extern int kernel;
32 564ca709 2004-04-19 devnull Extern int nlcount;
33 564ca709 2004-04-19 devnull Extern int remote;
34 564ca709 2004-04-19 devnull Extern int text;
35 564ca709 2004-04-19 devnull Extern int cor;
36 564ca709 2004-04-19 devnull Extern int silent;
37 564ca709 2004-04-19 devnull Extern Fhdr *fhdr;
38 564ca709 2004-04-19 devnull Extern Fhdr *chdr;
39 564ca709 2004-04-19 devnull Extern int line;
40 564ca709 2004-04-19 devnull Extern Biobuf* bout;
41 564ca709 2004-04-19 devnull Extern Biobuf* io[32];
42 564ca709 2004-04-19 devnull Extern int iop;
43 564ca709 2004-04-19 devnull Extern int pid;
44 564ca709 2004-04-19 devnull Extern char symbol[Strsize];
45 564ca709 2004-04-19 devnull Extern int interactive;
46 564ca709 2004-04-19 devnull Extern Node* code;
47 564ca709 2004-04-19 devnull Extern int na;
48 564ca709 2004-04-19 devnull Extern int wtflag;
49 4f2ac1b7 2005-01-23 devnull Extern Regs* acidregs;
50 564ca709 2004-04-19 devnull Extern Regs* correg;
51 564ca709 2004-04-19 devnull Extern Map* cormap;
52 564ca709 2004-04-19 devnull Extern Map* symmap;
53 564ca709 2004-04-19 devnull Extern Lsym* hash[Hashsize];
54 564ca709 2004-04-19 devnull Extern long dogc;
55 564ca709 2004-04-19 devnull Extern Rplace* ret;
56 564ca709 2004-04-19 devnull Extern char* symfil;
57 564ca709 2004-04-19 devnull Extern char* corfil;
58 564ca709 2004-04-19 devnull Extern int gotint;
59 564ca709 2004-04-19 devnull Extern long flen;
60 564ca709 2004-04-19 devnull Extern Gc* gcl;
61 564ca709 2004-04-19 devnull Extern int stacked;
62 13e66070 2004-04-20 devnull #define err aciderrjmp
63 564ca709 2004-04-19 devnull Extern jmp_buf err;
64 564ca709 2004-04-19 devnull Extern Node* prnt;
65 564ca709 2004-04-19 devnull Extern Node* fomt;
66 564ca709 2004-04-19 devnull Extern List* tracelist;
67 564ca709 2004-04-19 devnull Extern int initialising;
68 564ca709 2004-04-19 devnull Extern int quiet;
69 564ca709 2004-04-19 devnull Extern Fhdr* corhdr;
70 564ca709 2004-04-19 devnull Extern Fhdr* symhdr;
71 564ca709 2004-04-19 devnull
72 564ca709 2004-04-19 devnull extern void (*expop[])(Node*, Node*);
73 564ca709 2004-04-19 devnull #define expr(n, r) (r)->store.comt=0; (*expop[(unsigned char)((n)->op)])(n, r);
74 564ca709 2004-04-19 devnull
75 564ca709 2004-04-19 devnull enum
76 564ca709 2004-04-19 devnull {
77 564ca709 2004-04-19 devnull TINT,
78 564ca709 2004-04-19 devnull TFLOAT,
79 564ca709 2004-04-19 devnull TSTRING,
80 564ca709 2004-04-19 devnull TLIST,
81 564ca709 2004-04-19 devnull TCODE,
82 4f2ac1b7 2005-01-23 devnull TREG,
83 4f2ac1b7 2005-01-23 devnull TCON,
84 e637c944 2004-04-20 devnull NUMT,
85 564ca709 2004-04-19 devnull };
86 564ca709 2004-04-19 devnull
87 564ca709 2004-04-19 devnull struct Type
88 564ca709 2004-04-19 devnull {
89 564ca709 2004-04-19 devnull Type* next;
90 564ca709 2004-04-19 devnull int offset;
91 564ca709 2004-04-19 devnull char fmt;
92 564ca709 2004-04-19 devnull char depth;
93 564ca709 2004-04-19 devnull Lsym* type;
94 564ca709 2004-04-19 devnull Lsym* tag;
95 564ca709 2004-04-19 devnull Lsym* base;
96 564ca709 2004-04-19 devnull };
97 564ca709 2004-04-19 devnull
98 564ca709 2004-04-19 devnull struct Frtype
99 564ca709 2004-04-19 devnull {
100 564ca709 2004-04-19 devnull Lsym* var;
101 564ca709 2004-04-19 devnull Type* type;
102 564ca709 2004-04-19 devnull Frtype* next;
103 564ca709 2004-04-19 devnull };
104 564ca709 2004-04-19 devnull
105 564ca709 2004-04-19 devnull struct Ptab
106 564ca709 2004-04-19 devnull {
107 564ca709 2004-04-19 devnull int pid;
108 564ca709 2004-04-19 devnull /* int ctl; */
109 564ca709 2004-04-19 devnull };
110 564ca709 2004-04-19 devnull Extern Ptab ptab[Maxproc];
111 564ca709 2004-04-19 devnull
112 564ca709 2004-04-19 devnull struct Rplace
113 564ca709 2004-04-19 devnull {
114 564ca709 2004-04-19 devnull jmp_buf rlab;
115 564ca709 2004-04-19 devnull Node* stak;
116 564ca709 2004-04-19 devnull Node* val;
117 564ca709 2004-04-19 devnull Lsym* local;
118 564ca709 2004-04-19 devnull Lsym** tail;
119 564ca709 2004-04-19 devnull };
120 564ca709 2004-04-19 devnull
121 564ca709 2004-04-19 devnull struct Gc
122 564ca709 2004-04-19 devnull {
123 564ca709 2004-04-19 devnull char gcmark;
124 564ca709 2004-04-19 devnull Gc* gclink;
125 564ca709 2004-04-19 devnull };
126 564ca709 2004-04-19 devnull
127 564ca709 2004-04-19 devnull struct Store
128 564ca709 2004-04-19 devnull {
129 564ca709 2004-04-19 devnull char fmt;
130 564ca709 2004-04-19 devnull Type* comt;
131 564ca709 2004-04-19 devnull union {
132 564ca709 2004-04-19 devnull vlong ival;
133 564ca709 2004-04-19 devnull double fval;
134 564ca709 2004-04-19 devnull String* string;
135 564ca709 2004-04-19 devnull List* l;
136 564ca709 2004-04-19 devnull Node* cc;
137 281c90a5 2005-02-11 devnull struct {
138 281c90a5 2005-02-11 devnull char *name;
139 281c90a5 2005-02-11 devnull uint thread;
140 281c90a5 2005-02-11 devnull } reg;
141 4f2ac1b7 2005-01-23 devnull Node* con;
142 564ca709 2004-04-19 devnull } u;
143 564ca709 2004-04-19 devnull };
144 564ca709 2004-04-19 devnull
145 564ca709 2004-04-19 devnull struct List
146 564ca709 2004-04-19 devnull {
147 564ca709 2004-04-19 devnull Gc gc;
148 564ca709 2004-04-19 devnull List* next;
149 564ca709 2004-04-19 devnull char type;
150 564ca709 2004-04-19 devnull Store store;
151 564ca709 2004-04-19 devnull };
152 564ca709 2004-04-19 devnull
153 564ca709 2004-04-19 devnull struct Value
154 564ca709 2004-04-19 devnull {
155 564ca709 2004-04-19 devnull char set;
156 564ca709 2004-04-19 devnull char type;
157 564ca709 2004-04-19 devnull Store store;
158 564ca709 2004-04-19 devnull Value* pop;
159 564ca709 2004-04-19 devnull Lsym* scope;
160 564ca709 2004-04-19 devnull Rplace* ret;
161 564ca709 2004-04-19 devnull };
162 564ca709 2004-04-19 devnull
163 564ca709 2004-04-19 devnull struct Lsym
164 564ca709 2004-04-19 devnull {
165 564ca709 2004-04-19 devnull char* name;
166 564ca709 2004-04-19 devnull int lexval;
167 564ca709 2004-04-19 devnull Lsym* hash;
168 564ca709 2004-04-19 devnull Value* v;
169 564ca709 2004-04-19 devnull Type* lt;
170 564ca709 2004-04-19 devnull Node* proc;
171 564ca709 2004-04-19 devnull Frtype* local;
172 564ca709 2004-04-19 devnull void (*builtin)(Node*, Node*);
173 564ca709 2004-04-19 devnull };
174 564ca709 2004-04-19 devnull
175 564ca709 2004-04-19 devnull struct Node
176 564ca709 2004-04-19 devnull {
177 564ca709 2004-04-19 devnull Gc gc;
178 564ca709 2004-04-19 devnull char op;
179 564ca709 2004-04-19 devnull char type;
180 564ca709 2004-04-19 devnull Node* left;
181 564ca709 2004-04-19 devnull Node* right;
182 564ca709 2004-04-19 devnull Lsym* sym;
183 564ca709 2004-04-19 devnull int builtin;
184 564ca709 2004-04-19 devnull Store store;
185 564ca709 2004-04-19 devnull };
186 564ca709 2004-04-19 devnull #define ZN (Node*)0
187 564ca709 2004-04-19 devnull
188 564ca709 2004-04-19 devnull struct String
189 564ca709 2004-04-19 devnull {
190 564ca709 2004-04-19 devnull Gc gc;
191 564ca709 2004-04-19 devnull char *string;
192 564ca709 2004-04-19 devnull int len;
193 564ca709 2004-04-19 devnull };
194 564ca709 2004-04-19 devnull
195 4f2ac1b7 2005-01-23 devnull int acidregsrw(Regs*, char*, ulong*, int);
196 564ca709 2004-04-19 devnull List* addlist(List*, List*);
197 564ca709 2004-04-19 devnull void addvarsym(Fhdr*);
198 564ca709 2004-04-19 devnull List* al(int);
199 564ca709 2004-04-19 devnull Node* an(int, Node*, Node*);
200 564ca709 2004-04-19 devnull void append(Node*, Node*, Node*);
201 564ca709 2004-04-19 devnull int bool(Node*);
202 564ca709 2004-04-19 devnull void build(Node*);
203 564ca709 2004-04-19 devnull void call(char*, Node*, Node*, Node*, Node*);
204 564ca709 2004-04-19 devnull void catcher(void*, char*);
205 564ca709 2004-04-19 devnull void checkqid(int, int);
206 564ca709 2004-04-19 devnull void cmd(void);
207 564ca709 2004-04-19 devnull Node* con(int);
208 564ca709 2004-04-19 devnull List* construct(Node*);
209 564ca709 2004-04-19 devnull void ctrace(int);
210 564ca709 2004-04-19 devnull void decl(Node*);
211 564ca709 2004-04-19 devnull void defcomplex(Node*, Node*);
212 564ca709 2004-04-19 devnull void deinstall(int);
213 564ca709 2004-04-19 devnull void delete(List*, int n, Node*);
214 564ca709 2004-04-19 devnull void delvarsym(char*);
215 564ca709 2004-04-19 devnull void dostop(int);
216 564ca709 2004-04-19 devnull Lsym* enter(char*, int);
217 564ca709 2004-04-19 devnull void error(char*, ...);
218 564ca709 2004-04-19 devnull void execute(Node*);
219 564ca709 2004-04-19 devnull void fatal(char*, ...);
220 564ca709 2004-04-19 devnull ulong findframe(ulong);
221 564ca709 2004-04-19 devnull void flatten(Node**, Node*);
222 564ca709 2004-04-19 devnull void gc(void);
223 564ca709 2004-04-19 devnull char* getstatus(int);
224 564ca709 2004-04-19 devnull void* gmalloc(long);
225 564ca709 2004-04-19 devnull void indir(Map*, ulong, char, Node*);
226 4f2ac1b7 2005-01-23 devnull void indirreg(Regs*, char*, char, Node*);
227 e637c944 2004-04-20 devnull void initexpr(void);
228 e637c944 2004-04-20 devnull void initprint(void);
229 564ca709 2004-04-19 devnull void installbuiltin(void);
230 564ca709 2004-04-19 devnull void kinit(void);
231 564ca709 2004-04-19 devnull int Zfmt(Fmt*);
232 564ca709 2004-04-19 devnull int listcmp(List*, List*);
233 564ca709 2004-04-19 devnull int listlen(List*);
234 564ca709 2004-04-19 devnull List* listvar(char*, long);
235 564ca709 2004-04-19 devnull void loadmodule(char*);
236 564ca709 2004-04-19 devnull void loadvars(void);
237 564ca709 2004-04-19 devnull Lsym* look(char*);
238 564ca709 2004-04-19 devnull void ltag(char*);
239 564ca709 2004-04-19 devnull void marklist(List*);
240 564ca709 2004-04-19 devnull Lsym* mkvar(char*);
241 564ca709 2004-04-19 devnull void msg(int, char*);
242 564ca709 2004-04-19 devnull void notes(int);
243 564ca709 2004-04-19 devnull int nproc(char**);
244 564ca709 2004-04-19 devnull void nthelem(List*, int, Node*);
245 564ca709 2004-04-19 devnull int numsym(char);
246 564ca709 2004-04-19 devnull void odot(Node*, Node*);
247 564ca709 2004-04-19 devnull void pcode(Node*, int);
248 564ca709 2004-04-19 devnull void pexpr(Node*);
249 564ca709 2004-04-19 devnull int popio(void);
250 564ca709 2004-04-19 devnull void pstr(String*);
251 564ca709 2004-04-19 devnull void pushfd(int);
252 564ca709 2004-04-19 devnull void pushfile(char*);
253 564ca709 2004-04-19 devnull void pushstr(Node*);
254 564ca709 2004-04-19 devnull ulong raddr(char*);
255 564ca709 2004-04-19 devnull void readtext(char*);
256 564ca709 2004-04-19 devnull void readcore(void);
257 564ca709 2004-04-19 devnull void restartio(void);
258 564ca709 2004-04-19 devnull String *runenode(Rune*);
259 564ca709 2004-04-19 devnull int scmp(String*, String*);
260 564ca709 2004-04-19 devnull void sproc(int);
261 564ca709 2004-04-19 devnull String* stradd(String*, String*);
262 564ca709 2004-04-19 devnull String* strnode(char*);
263 564ca709 2004-04-19 devnull String* strnodlen(char*, int);
264 564ca709 2004-04-19 devnull #define system acidsystem
265 564ca709 2004-04-19 devnull char* system(void);
266 564ca709 2004-04-19 devnull int trlist(Map*, Regs*, ulong, ulong, Symbol*, int);
267 564ca709 2004-04-19 devnull void unwind(void);
268 564ca709 2004-04-19 devnull void userinit(void);
269 564ca709 2004-04-19 devnull void varreg(void);
270 564ca709 2004-04-19 devnull void varsym(void);
271 564ca709 2004-04-19 devnull void whatis(Lsym*);
272 4f2ac1b7 2005-01-23 devnull void windir(Map*, Node, Node*, Node*);
273 4f2ac1b7 2005-01-23 devnull void windirreg(Regs*, char*, Node*, Node*);
274 564ca709 2004-04-19 devnull void yyerror(char*, ...);
275 564ca709 2004-04-19 devnull int yylex(void);
276 564ca709 2004-04-19 devnull int yyparse(void);
277 564ca709 2004-04-19 devnull
278 564ca709 2004-04-19 devnull enum
279 564ca709 2004-04-19 devnull {
280 564ca709 2004-04-19 devnull ONAME,
281 564ca709 2004-04-19 devnull OCONST,
282 564ca709 2004-04-19 devnull OMUL,
283 564ca709 2004-04-19 devnull ODIV,
284 564ca709 2004-04-19 devnull OMOD,
285 564ca709 2004-04-19 devnull OADD,
286 564ca709 2004-04-19 devnull OSUB,
287 564ca709 2004-04-19 devnull ORSH,
288 564ca709 2004-04-19 devnull OLSH,
289 564ca709 2004-04-19 devnull OLT,
290 564ca709 2004-04-19 devnull OGT,
291 564ca709 2004-04-19 devnull OLEQ,
292 564ca709 2004-04-19 devnull OGEQ,
293 564ca709 2004-04-19 devnull OEQ,
294 564ca709 2004-04-19 devnull ONEQ,
295 564ca709 2004-04-19 devnull OLAND,
296 564ca709 2004-04-19 devnull OXOR,
297 564ca709 2004-04-19 devnull OLOR,
298 564ca709 2004-04-19 devnull OCAND,
299 564ca709 2004-04-19 devnull OCOR,
300 564ca709 2004-04-19 devnull OASGN,
301 564ca709 2004-04-19 devnull OINDM,
302 564ca709 2004-04-19 devnull OEDEC,
303 564ca709 2004-04-19 devnull OEINC,
304 564ca709 2004-04-19 devnull OPINC,
305 564ca709 2004-04-19 devnull OPDEC,
306 564ca709 2004-04-19 devnull ONOT,
307 564ca709 2004-04-19 devnull OIF,
308 564ca709 2004-04-19 devnull ODO,
309 564ca709 2004-04-19 devnull OLIST,
310 564ca709 2004-04-19 devnull OCALL,
311 564ca709 2004-04-19 devnull OCTRUCT,
312 564ca709 2004-04-19 devnull OWHILE,
313 564ca709 2004-04-19 devnull OELSE,
314 564ca709 2004-04-19 devnull OHEAD,
315 564ca709 2004-04-19 devnull OTAIL,
316 564ca709 2004-04-19 devnull OAPPEND,
317 564ca709 2004-04-19 devnull ORET,
318 564ca709 2004-04-19 devnull OINDEX,
319 564ca709 2004-04-19 devnull OINDC,
320 564ca709 2004-04-19 devnull ODOT,
321 564ca709 2004-04-19 devnull OLOCAL,
322 564ca709 2004-04-19 devnull OFRAME,
323 564ca709 2004-04-19 devnull OCOMPLEX,
324 564ca709 2004-04-19 devnull ODELETE,
325 564ca709 2004-04-19 devnull OCAST,
326 564ca709 2004-04-19 devnull OFMT,
327 564ca709 2004-04-19 devnull OEVAL,
328 564ca709 2004-04-19 devnull OWHAT,
329 4f2ac1b7 2005-01-23 devnull OUPLUS,
330 e637c944 2004-04-20 devnull NUMO,
331 564ca709 2004-04-19 devnull };