code: 9ferno

ref: b5959ac65bcd0d673e4e850f5a1dced6742536a8
dir: /appl/acme/disk.m/

View raw version
Diskm : module {
	PATH : con "/dis/acme/disk.dis";

	init : fn(mods : ref Dat->Mods);

	Disk : adt {
		fd : ref Sys->FD;
		addr : int;		# length of temp file
		free : array of ref Dat->Block;

		init : fn() : ref Disk;
		new : fn(d : self ref Disk, n : int) : ref Dat->Block;
		release : fn(d : self ref Disk, b : ref Dat->Block);
		read : fn(d : self ref Disk, b : ref Dat->Block, s : ref Dat->Astring, n : int);
		write : fn(d : self ref Disk, b : ref Dat->Block, s : string, n : int) : ref Dat->Block;
	};

	tempfile: fn() : ref Sys->FD;
};