DIRECTORY EndOps USING []; EndOpsImpl: CEDAR MONITOR EXPORTS EndOps = BEGIN ProcList: TYPE = LIST OF PROC; registerList, registerTail: ProcList _ NIL; Register: PUBLIC ENTRY PROC[proc: PROC] = { prev: ProcList = registerTail; registerTail _ LIST[proc]; IF prev=NIL THEN registerList _ registerTail ELSE prev.rest _ registerTail; }; GetList: ENTRY PROC RETURNS[ProcList] = { list: ProcList = registerList; registerList _ registerTail _ NIL; -- flush registry now that we're done with it RETURN[list]; }; ProcessRegistry: PUBLIC PROC = { FOR l: ProcList _ GetList[], l.rest UNTIL l=NIL DO proc: PROC = l.first; proc[! ANY => CONTINUE]; ENDLOOP; }; END. βEndOpsImpl.mesa; Written by D. Wyatt Last Edited by: Wyatt, October 14, 1983 7:04 pm Procedures registered will be called synchronously after the user input is enabled, but before any automatic checkpoint takes place. ΚŽ– "cedar" style˜JšΟc$™$Jšœ/™/J™šΟk ˜ Jšœžœ˜J˜—Jšœ žœž˜Jšžœ˜Jšœž˜J˜Jš„™„J˜Jš œ žœžœžœžœ˜J˜Jšœ'žœ˜+J˜š Οnœžœžœžœžœ˜+Jšœ˜Jšœžœ˜Jšžœžœžœ˜,Jšžœ˜J˜J˜—šŸœžœžœžœ˜)Jšœ˜Jšœžœ-˜PJšžœ˜ J˜J˜—šŸœžœžœ˜ šžœ!žœžœž˜2Jšœžœ ˜Jšœžœžœ˜Jšžœ˜—Jšœ˜—J˜šžœ˜J˜——…—–