Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_posix/sys/src/cmd/acid/acid.h – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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