<> <> <<>> DIRECTORY ClassIncreek USING [Increek, SetAtLatest], Process USING [Abort], Rope USING [ROPE], TIPTables USING [TIPTable, TIPScreenCoords, TIPScreenCoordsRec, TIPTime]; TIPUser: CEDAR DEFINITIONS IMPORTS ClassIncreek, Process = BEGIN <TIP>TIP.documentation>> <> TIPClient: TYPE = REF TIPClientRec; -- Handle on a TIP input process TIPTable: TYPE = TIPTables.TIPTable; -- TIP parsing table <> TIPScreenCoords: TYPE = TIPTables.TIPScreenCoords; TIPScreenCoordsRec: TYPE = TIPTables.TIPScreenCoordsRec; CreateClient: PROC [notify: TIPNotifyProc _ NIL, buttons: TIPButtonProc _ NIL] RETURNS [self: TIPClient] ; <> DestroyClient: PROC [self: TIPClient] ; <> CreateParseInfo: PROC [parseTable: TIPTable _ NIL] RETURNS [new: TIPParseInfo] ; <> ParseOneEvent: PROC [parseInfo: TIPParseInfo] RETURNS [result: LIST OF REF ANY] ; <> InstantiateNewTIPTable: PROC [file: Rope.ROPE _ NIL] RETURNS [table: TIPTable] ; <> TransparentTIPTable: PROC RETURNS [table: TIPTable] ; <> InvalidTable: SIGNAL [errorMsg: Rope.ROPE]; PushTIPTable: PROC [user: TIPClient, table: TIPTable, opaque: BOOLEAN] ; <> PopTIPTable: PROC [user: TIPClient] RETURNS [old: TIPTable] ; <> DiscardTypeAhead: PROC [user: TIPClient] = TRUSTED INLINE {ClassIncreek.SetAtLatest[user.parseInfo.inCreek]}; <> ResetTIPContext: PROC [user: TIPClient, table: TIPTable, notify: TIPNotifyProc, interrupt: BOOLEAN _ FALSE] ; <> <> InterruptTIP: UNSAFE PROC [self: TIPUser.TIPClient] = UNCHECKED INLINE { Process.Abort[self.matcher]}; <> <> TIPClientRec: TYPE = PRIVATE RECORD [ parseInfo: TIPParseInfo, -- increeks and parse tables for matching notifyProc: TIPNotifyProc _ NIL, -- notification of table recognised events buttonProc: TIPButtonProc _ NIL, -- special button handling (for Cedar InputFocus) discardProc: TIPNotifyProc _ NIL, -- discarded actions (currently unused) matcher: PROCESS -- the parser process ]; TIPParseInfo: TYPE = REF TIPParseInfoRec; TIPParseInfoRec: TYPE = RECORD [ inCreek, localCreek, timeCreek: ClassIncreek.Increek, creekStack: ARRAY [0..10) OF ClassIncreek.Increek, tableHead: TIPTable ]; TIPNotifyProc: TYPE = PROC [results: LIST OF REF ANY] ; TIPButtonProc: TYPE = PROC [screenXY: TIPTables.TIPScreenCoords, mouseEvent: MouseEvent, state: ClassIncreek.Increek] RETURNS [consume: BOOLEAN _ FALSE] ; MouseEvent: TYPE = {buttonUp, buttonDown, motion} ; MatchProcess: PRIVATE PROC [self: TIPClient] ; TIPPredicate: TYPE = PROC RETURNS [BOOLEAN] ; RegisterTIPPredicate: PROC [key: ATOM, p: TIPPredicate]; <> <> stdChar: REF CHARACTER; stdCoords: TIPTables.TIPScreenCoords; stdTime: TIPTables.TIPTime; Start: PROC ; -- hack to fix VMSegmentsBug 8/14/81; call this before using END.