DIRECTORY RunReader, LooksReader; LooksReaderImpl: CEDAR MONITOR IMPORTS RunReader, LooksReader EXPORTS LooksReader SHARES LooksReader = BEGIN OPEN LooksReader; Create: PUBLIC PROC [] RETURNS [new: Ref] = { new _ 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 }; END. žLooksReaderImpl.mesa; written by Bill Paxton, March 1981 edited by McGregor, February 8, 1983 11:37 am edited by Bill Paxton, July 8, 1983 2:18 pm create a reader for chars and looks ĘŸ˜Jšœ9™9Jšœ-™-Jšœ+™+šĎk ˜ J˜ J˜ J˜—šœ ˜Jšœ˜Jšœ ˜Jšœ˜—Jšœœ ˜J˜šĎnœœœœ˜-Jšœ#™#Jšœœ2˜;J˜—Jšœ Ďc˜7J˜š žœœœœœ˜;Jšœ œœœ˜9Jš œœ œœœ˜>Jš œœ œœœ˜>Jšœ˜J˜—šžœœœœ˜4Jšœœ˜Jš œœœœœ˜GJšœ œœ˜&Jšœœ œœ˜+Jšœœ œœ˜.J˜—Jšœ˜J˜—…—xŐ