<> <> 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.