summaryrefslogtreecommitdiff
path: root/module/rabin.m
blob: ba613fab503a9e693061917b91974f044dfab387 (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
Rabin: module
{
	PATH:	con "/dis/lib/rabin.dis";
	init:	fn(bufio: Bufio);

	debug:	int;

	open:	fn(rcfg: ref Rcfg, b: ref Iobuf, min, max: int): (ref Rfile, string);

	Rcfg: adt {
		prime, width, mod: int;
		tab:	array of int;

		mk:	fn(prime, width, mod: int): (ref Rcfg, string);
	};

	Rfile: adt {
		b:	ref Iobuf;
		rcfg:	ref Rcfg;
		min, max:	int;
		buf:	array of byte;
		n:	int;
		state:	int;
		off:	big;

		read:	fn(r: self ref Rfile): (array of byte, big, string);
	};
};