-- UZoneTrackerImpl.Mesa -- last edited January 11, 1983 11:58 am by Paul Rovner DIRECTORY UZoneTracker USING[]; UZoneTrackerImpl: MONITOR -- protects uzl EXPORTS UZoneTracker = BEGIN uzl: LIST OF UNCOUNTED ZONE _ NIL; Register: PUBLIC ENTRY PROC[uz: UNCOUNTED ZONE] = {ENABLE UNWIND => NULL; uzl _ CONS[uz, uzl]}; UnRegister: PUBLIC ENTRY PROC[uz: UNCOUNTED ZONE] = {ENABLE UNWIND => NULL; last: LIST OF UNCOUNTED ZONE _ NIL; FOR l: LIST OF UNCOUNTED ZONE _ uzl, l.rest UNTIL l = NIL DO IF l.first = uz THEN {IF last = NIL THEN uzl _ l.rest ELSE last.rest _ l.rest; RETURN} ELSE last _ l ENDLOOP; ERROR; }; Enumerate: PUBLIC ENTRY PROC[proc: PROC[UNCOUNTED ZONE] RETURNS[stop: BOOL]] RETURNS[uz: UNCOUNTED ZONE _ NIL] = {ENABLE UNWIND => NULL; FOR l: LIST OF UNCOUNTED ZONE _ uzl, l.rest UNTIL l = NIL DO IF proc[l.first] THEN RETURN[l.first] ENDLOOP; }; END. Êo˜Jš¦ÏcQœÏk œžœžœœžœžœžœžœž œžœžœÏnœžœžœžœž œžœžœžœžœžœ Ÿ œžœžœžœž œžœžœžœžœ žœžœž œžœžœžœžœžœž œžœžœžœžœžœžœžœžœžœžœ*žœžœžœžœŸ œžœžœžœžœž œžœžœžœ žœž œžœžœžœžœžœžœžœžœž œžœžœžœžœžœžœžœ žœžœ˜Ð—…—ÒG