-- JaMTSInfo.mesa
-- Last changed by Paxton, October 4, 1982 2:31 pm
-- Last Edited by: Stone, March 9, 1983 10:50 am

DIRECTORY
StreamDefs USING [StreamHandle],
JaMInternal USING [Frame],
JaMTypeScript USING [MouseProc],
JaMBasic USING [Object];

JaMTSInfo: DEFINITIONS = {

State: TYPE = {idle, busy};

TSInfo: TYPE = REF TSInfoRec;

Object: TYPE = JaMBasic.Object;

TSInfoRec: TYPE = MONITORED RECORD [
state: State ← idle,
readyForInput: CONDITION,
somethingToDo: CONDITION,
lineStream: StreamDefs.StreamHandle,
proc: PROC [JaMInternal.Frame],
objectToDo: Object];

Create: PROC RETURNS [tsi: TSInfo];

WaitForSomethingToDo: PROC [tsi: TSInfo];

NotifyReadyForMore: PROC [tsi: TSInfo];

Do: PROC [obj: Object, tsi: TSInfo];

DoButton: PROC[
tsi: TSInfo, frame: JaMInternal.Frame,
buttonName: ATOM, x,y: REAL,
mouseProc: JaMTypeScript.MouseProc];

DoAtom: PROC[
tsi: TSInfo, frame: JaMInternal.Frame, atom: ATOM];

}...