xref: /inferno-os/appl/acme/buff.m (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1Bufferm : module {
2	PATH : con "/dis/acme/buff.dis";
3
4	init : fn(mods : ref Dat->Mods);
5
6	newbuffer : fn() : ref Buffer;
7
8	Buffer : adt {
9		nc : int;
10		c : ref Dat->Astring;		# cache
11		cnc : int;		# bytes in cache
12		cmax : int;	# size of allocated cache
13		cq : int;		# position of cache
14		cdirty : int;	# cache needs to be written
15		cbi : int;		# index of cache Block
16		bl : array of ref Dat->Block;	# array of blocks
17		nbl : int;		# number of blocks
18
19		insert : fn(b : self ref Buffer, n : int, s : string, m : int);
20		delete : fn(b : self ref Buffer, n : int, m : int);
21		# replace : fn(b : self ref Buffer, q0 : int, q1 : int, s : string, n : int);
22		loadx : fn(b : self ref Buffer, n : int, fd : ref Sys->FD) : int;
23		read : fn(b : self ref Buffer, n : int, s : ref Dat->Astring, p, m : int);
24		close : fn(b : self ref Buffer);
25		reset : fn(b : self ref Buffer);
26		sizecache : fn(b : self ref Buffer, n : int);
27		flush : fn(b : self ref Buffer);
28		setcache : fn(b : self ref Buffer, n : int);
29		addblock : fn(b : self ref Buffer, n : int, m : int);
30		delblock : fn(b : self ref Buffer, n : int);
31	};
32
33	loadfile: fn(fd: ref Sys->FD, q1: int, fun: int, b: ref Bufferm->Buffer, f: ref Filem->File): int;
34};
35