summaryrefslogtreecommitdiff
path: root/appl/acme/acme/acid/src/Acid0.b
blob: 887110e9c287a4df52f2cb0fca5fd4f06301a78d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
implement Acidb;

include "sys.m";
include "draw.m";
include "bufio.m";

sys : Sys;
bufio : Bufio;

FD : import sys;
Iobuf : import bufio;

Acidb : module {
	init : fn(ctxt : ref Draw->Context, argl : list of string);
};

init(nil : ref Draw->Context, nil : list of string)
{
	sys = load Sys Sys->PATH;
	bufio = load Bufio Bufio->PATH;
	# TBS main(argl);
}

False : con 0;
True : con 1;

EVENTSIZE : con 256;

Event : adt {
	c1, c2, q0, q1, flag, nb, nr : int;
	b : array of byte;
	r : array of int;
	# TBS byte	b[EVENTSIZE*UTFmax+1];
	# TBS Rune	r[EVENTSIZE+1];
};

Win : adt {
		winid : int;
		addr : int;
		body : ref Iobuf;
		ctl : int;
		data : int;
		event : int;
		buf : array of byte;
		# TBS byte	buf[512];
		bufp : int;
		nbuf : int;

		wnew : fn(w : ref Win);
		wwritebody : fn(w : ref Win, s : array of byte, n : int);
		wread : fn(w : ref Win, m : int, n : int, s : array of byte);
		wclean : fn(w : ref Win);
		wname : fn(w : ref Win, s : array of byte);
		wdormant : fn(w : ref Win);
		wevent : fn(w : ref Win, e : ref Event);
		wtagwrite : fn(w : ref Win, s : array of byte, n : int);
		wwriteevent : fn(w : ref Win, e : ref Event);
		wslave : fn(w : ref Win, c : chan of Event);
		wreplace : fn(w : ref Win, s : array of byte, b : array of byte, n : int);
		wselect : fn(w : ref Win, s : array of byte);
		wdel : fn(w : ref Win, n : int) : int;
		wreadall : fn(w : ref Win) : (int, array of byte);

		ctlwrite : fn(w : ref Win, s : array of byte);
		getec : fn(w : ref Win) : int;
		geten : fn(w : ref Win) : int;
		geter : fn(w : ref Win, s : array of byte, r : array of int) : int;
		openfile : fn(w : ref Win, b : array of byte) : int;
		openbody : fn(w : ref Win, n : int);
};

Awin : adt {
	w : Win;

	slave : fn(w : ref Awin, s : array of byte, c : chan of int);
	new : fn(w : ref Awin, s : array of byte);
	command : fn(w : ref Awin, s : array of byte) : int;
	send : fn(w : ref Awin, m : int, s : array of byte, n : int);
};

srvfd : ref FD;
stdin : ref FD;
srvenv : array of byte;
# TBS byte	srvenv[64];

srvc : chan of array of byte;