DIRECTORY AMBridge USING [IsRemote, TVForReferent], AMTypes USING [Apply, Domain, First, Next, TV, TVEqual], IO USING [PutChar, PutRope], PrintTV USING [RegisterTVPrintProc, TVPrintProc], SafeStorage USING [Type], TextLooks USING [Look, Looks, noLooks]; LookPrettyImpl: CEDAR PROGRAM IMPORTS AMBridge, AMTypes, IO, PrintTV = BEGIN TV: TYPE ~ AMTypes.TV; recursive: BOOL _ FALSE; TVPrint: PrintTV.TVPrintProc ~ TRUSTED { cc: CHAR _ TextLooks.Look.FIRST; true: TV ~ AMBridge.TVForReferent[NEW[BOOL_TRUE]]; false: TV ~ AMBridge.TVForReferent[NEW[BOOL_FALSE]]; IF AMBridge.IsRemote[tv] THEN RETURN [useOld: TRUE]; IF recursive THEN RETURN [useOld: TRUE]; recursive _ TRUE; IO.PutRope[stream, "LOOKS["]; FOR c: TV _ AMTypes.First[AMTypes.Domain[looksType]], AMTypes.Next[c] UNTIL c = NIL DO b: TV _ AMTypes.Apply[tv, c]; IF AMTypes.TVEqual[b, true] THEN IO.PutChar[stream, cc] ELSE IF AMTypes.TVEqual[b, false] THEN NULL ELSE ERROR; IF cc # TextLooks.Look.LAST THEN cc _ cc.SUCC; ENDLOOP; IO.PutRope[stream, "]"]; recursive _ FALSE; RETURN [useOld: FALSE]; }; looksType: SafeStorage.Type _ [CODE[TextLooks.Looks]]; try: TextLooks.Looks _ TextLooks.noLooks; try['d] _ TRUE; try['e] _ TRUE; try['f] _ TRUE; try['i] _ TRUE; try['n] _ TRUE; PrintTV.RegisterTVPrintProc[looksType, TVPrint]; END. ΈLookPrettyImpl.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. Michael Plass, March 20, 1985 11:03:57 am PST Doug Wyatt, August 27, 1986 6:31:03 pm PDT Κ[˜code™Kšœ Οmœ7™BK™-K™*K™—šΟk ˜ Kšœ žœ˜)Kšœžœžœ ˜8Kšžœžœ˜Kšœžœ$˜1Kšœ žœ˜Kšœ žœ˜'—K˜KšΟnœžœž˜Kšžœžœ ˜&Kšœž˜K˜Kšžœžœ žœ˜Kšœ žœžœ˜K˜šŸœžœ˜(Kšœžœžœ˜ Kš œžœžœžœžœ˜2Kš œžœžœžœžœ˜4Kšžœžœžœ žœ˜4Kšžœ žœžœ žœ˜(Kšœ žœ˜Kšžœ˜š žœžœ=žœžœž˜VKšœžœ˜Kšžœžœžœ˜7Kšžœžœžœž˜+Kšžœžœ˜ Kšžœžœžœ žœ˜.Kšžœ˜—Kšžœ˜Kšœ žœ˜Kšžœ žœ˜Kšœ˜K˜—K˜Kšœžœ˜6K˜)Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜K˜Kšœ0˜0K˜Kšžœ˜—…—!