<> <> <> <> <> <<>> DIRECTORY Intime USING [EventTime, MsTicks], TerminalDefs USING [KeyName, DownUp], TIPUser USING [TIPScreenCoords, TIPTime]; TIPTables: CEDAR DEFINITIONS = BEGIN TIPScreenCoords: TYPE ~ TIPUser.TIPScreenCoords; <> <<>> TIPTime: TYPE ~ TIPUser.TIPTime; <<>> TIPTableImpl: TYPE = REF TIPTableImplRep; TIPTableImplRep: TYPE = RECORD [ ignore: IgnoreBits _ IgnoreEverything, variants: SELECT flavor: * FROM transparent => [], small => [all: TIPChoiceSeries], fast => [ mouse: TIPChoice, keyDown, keyUp: ARRAY TerminalDefs.KeyName OF TIPChoice, time: TIPChoice ], ENDCASE ]; IgnoreBits: TYPE = MACHINE DEPENDENT RECORD [ up, down, move: BOOL, unused: [0..17777B] _ 0 ]; IgnoreEverything: IgnoreBits = [TRUE, TRUE, TRUE]; TIPChoiceSeries: TYPE = LIST OF TIPChoice; TIPChoice: TYPE = LIST OF TIPTerm _ NIL; TIPTerm: TYPE = RECORD [ variants: SELECT flavor: * FROM keyTrigger => [keyState: TIPKeyState], mouseTrigger => NULL, timeTrigger => [flavor: TimeoutFlavor, mSecs: Intime.MsTicks], keyEnable => [keyState: TIPKeyState], key2Enable => [keyState1, keyState2: TIPKeyState], -- true if either keyEnableList => [lst: LIST OF TIPKeyState], -- true if any predEnable => [predicate: ATOM], char => [ch: REF CHAR], coords => [xy: TIPScreenCoords], time => [time: TIPTime], nested => [statement: TIPChoiceSeries], result => [list: TIPResults], ENDCASE ]; TIPResults: TYPE = LIST OF REF ANY _ NIL; <> TimeoutFlavor: TYPE = {gt, lt}; <> <> TIPKeyState: TYPE = RECORD [ key: TerminalDefs.KeyName, state: TerminalDefs.DownUp _ down ]; END.