-- JaMTSInfo.mesa
-- Last changed by Paxton, October 4, 1982 2:31 pm

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];

}...