DIRECTORY Basics, IO, MakeDo, MakeDoPrivate, PrincOpsUtils, Process, RedBlackTree, Rope, ViewerClasses, ViewerIO; MakeDoFinders: CEDAR MONITOR EXPORTS MakeDo, MakeDoPrivate = BEGIN OPEN MakeDo, MakeDoPrivate; NodeRep: PUBLIC TYPE = MakeDoPrivate.NodeRep; ActionRep: PUBLIC TYPE = MakeDoPrivate.ActionRep; finders: LIST OF Finder _ NIL; AddFinder: PUBLIC ENTRY PROC [finder: Finder, end: End] = BEGIN ENABLE UNWIND => {}; SELECT end FROM front => finders _ CONS[finder, finders]; back => {fl: LIST OF Finder; IF finders = NIL THEN {finders _ LIST[finder]; RETURN}; FOR fl _ finders, fl.rest WHILE fl.rest # NIL DO NULL ENDLOOP; fl.rest _ LIST[finder]}; ENDCASE => ERROR; END; EnumerateFinders: PUBLIC ENTRY PROC [to: PROC [Finder]] = { ENABLE UNWIND => {}; x: BOOL _ FALSE; x _ x; FOR fl: LIST OF Finder _ finders, fl.rest WHILE fl # NIL DO to[fl.first]; ENDLOOP; x _ x; }; END. xMakeDoFinders.Mesa Last Edited by: Spreitzer, September 6, 1985 11:46:06 am PDT INVARIANT finders lists Finders. ΚΨ– "cedar" style˜code™J™<—K˜KšΟk œ œ]˜qK˜šΠbx œœ˜Kšœ˜Kšœ˜™ K™——K˜Kšœœ˜!K˜Kšœ œœ˜-Kšœ œœ˜1K˜Kšœ œœ œ˜K˜šΟn œœœœ˜9Kšœœœ˜šœ˜Kšœœ˜)šœ œœ˜Kš œ œœ œ œ˜7Kš œœ œœœœ˜>Kšœ œ ˜—Kšœœ˜—Kšœ˜—K˜š Ÿœœœœœ˜;Kšœœ˜Kšœœœ˜K˜š œœœœœ˜;K˜ Kšœ˜—K˜K˜—K˜Kšœ˜—…—xΘ