DIRECTORY RunReader, LooksReader, TextNode; LooksReaderImpl: CEDAR MONITOR IMPORTS RunReader, LooksReader, TextNode EXPORTS LooksReader SHARES LooksReader = BEGIN OPEN LooksReader; Create: PUBLIC PROC [] RETURNS [new: Ref] = { new _ TextNode.pZone.NEW[Body]; new^ _ [0,0,noLooks,RunReader.Create[]] }; lksrdr1, lksrdr2, lksrdr3: Ref; -- shared looks readers GetLooksReader: PUBLIC ENTRY PROC RETURNS [reader: Ref] = { IF lksrdr3 # NIL THEN { reader _ lksrdr3; lksrdr3 _ NIL } ELSE IF lksrdr2 # NIL THEN { reader _ lksrdr2; lksrdr2 _ NIL } ELSE IF lksrdr1 # NIL THEN { reader _ lksrdr1; lksrdr1 _ NIL } ELSE reader _ Create[] }; FreeLooksReader: PUBLIC ENTRY PROC [reader: Ref] = { SetPosition[reader, NIL]; IF lksrdr3 = reader OR lksrdr2 = reader OR lksrdr1 = reader THEN ERROR; IF lksrdr3 = NIL THEN lksrdr3 _ reader ELSE IF lksrdr2 = NIL THEN lksrdr2 _ reader ELSE IF lksrdr1 = NIL THEN lksrdr1 _ reader }; Start: PUBLIC PROC = { }; END. ¤-- LooksReaderImpl.mesa -- written by Bill Paxton, March 1981 -- last edit by Bill Paxton, December 22, 1981 1:30 pm -- create a reader for chars and looks ĘŔ˜JšĎc™Jš&™&Jš6™6J˜šĎk ˜ J˜ J˜ J˜ J˜—šœž ˜Jšžœ!˜(Jšžœ ˜Jšžœ˜—Jšžœžœ ˜J˜šĎnœžœžœžœ˜-Jš&™&Jšœžœ˜J˜*J˜—Jšœ ˜7J˜š Ÿœžœžœžœžœ˜;Jšžœ žœžœžœ˜9Jš žœžœ žœžœžœ˜>Jš žœžœ žœžœžœ˜>Jšžœ˜J˜—šŸœžœžœžœ˜4Jšœžœ˜Jš žœžœžœžœžœ˜GJšžœ žœžœ˜&Jšžœžœ žœžœ˜+Jšžœžœ žœžœ˜.J˜—šŸœžœžœ˜J˜J˜—Jšžœ˜J˜—…—ś