1Devpointer: module 2{ 3 PATH: con "/dis/lib/devpointer.dis"; 4 5 Size: con 1+4*12; # 'm' plus 4 12-byte decimal integers 6 # merge events that have the same button state. 7 Ptrqueue: adt { 8 last: ref Draw->Pointer; 9 h, t: list of ref Draw->Pointer; 10 put: fn(q: self ref Ptrqueue, s: ref Draw->Pointer); 11 get: fn(q: self ref Ptrqueue): ref Draw->Pointer; 12 peek: fn(q: self ref Ptrqueue): ref Draw->Pointer; 13 nonempty: fn(q: self ref Ptrqueue): int; 14 }; 15 16 init: fn(); 17 reader: fn(file: string, posn: chan of ref Draw->Pointer, pid: chan of (int, string)); 18 bytes2ptr: fn(b: array of byte): ref Draw->Pointer; 19 ptr2bytes: fn(p: ref Draw->Pointer): array of byte; 20 srv: fn(c: chan of ref Draw->Pointer, f: ref Sys->FileIO); 21}; 22