CDEvents.mesa a ChipNDale module
Copyright © 1983, 1984 by Xerox Corporation. All rights reserved.
by Christian Jacobi, September 16, 1983 2:11 pm
last edited by Christian Jacobi, May 29, 1985 11:39:21 am PDT
DIRECTORY CD;
CDEvents: CEDAR DEFINITIONS =
BEGIN
EventProc: TYPE = PROC [event: REF, design: CD.Design, x: REF]
RETURNS [dont: BOOLFALSE];
--dont will abort (some) events and (sometimes) the remaining EventProcs
--event is the event which caused the call
--design onto which event happened
--x parameter passed through from ProcessEvent, event-specific
--Eventprocs must not be timeconsuming
EventRegistration: TYPE = REF EventRegistrationRep;
EventRegistrationRep: TYPE;
RegisterEventType: PROC [eventName: REF] RETURNS [EventRegistration];
--may raise CD.Error[doubleRegistration] and others.
--the EventRegistration is the key to call ProcessEvent
--if ATOM are used for eventName, include them manual in the list
--on file ... see the DF file for documentation
RegisterEventProc: PROC [event: REF, proc: EventProc, filter: CD.Technology←NIL];
--registers a procedure which is called each time a specific event occurs
--the procedure might stop certain events with the dont result
--if filter#NIL, proc is only called if event occurs on design of technology=filter
--event must have been previously registered with RegisterEventType
ProcessEvent: PROC [ev: EventRegistration, design: CD.Design, x: REFNIL,
listenToDont: BOOLFALSE]
RETURNS [dont: BOOL];
--called on certain events
--can be called only if the EventRegistration is known
END.