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