DIRECTORY Core, CoreBlock, CoreIO, CoreIOIFUProps, CoreProperties, IO; CoreIOIFUPropsImpl: CEDAR PROGRAM IMPORTS CoreBlock, CoreIO, CoreProperties, IO EXPORTS CoreIOIFUProps = BEGIN ROPE: TYPE = Core.ROPE; Sides: TYPE = CoreBlock.Sides; sides: PUBLIC ATOM _ CoreIO.RegisterProperty[ CoreProperties.RegisterProperty[ $CoreBlockSides, CoreProperties.Props[ [CoreProperties.propPrint, NEW[CoreProperties.PropPrintProc _ PrintSides ]] ] ], WriteSides, ReadSides ]; WriteSides: CoreIO.PropWriteProc = { refSides: REF Sides _ NARROW[value]; card: CARDINAL _ CoreBlock.SidesToWord[refSides^]; IO.PutF[h.stream, "%g ", IO.card[card]]}; ReadSides: CoreIO.PropReadProc = { card: CARDINAL _ IO.GetCard[h.stream]; max: CARDINAL _ CoreBlock.SidesToWord[all]; IF card > max THEN Signal[]; RETURN[ NEW[Sides _ CoreBlock.SidesFmWord[card]] ]}; PrintSides: CoreProperties.PropPrintProc = { refSides: REF Sides _ NARROW[val]; to.PutRope[" Sides: "]; IF refSides^=all THEN {to.PutRope[" All"]; RETURN}; IF refSides^=none THEN {to.PutRope[" None"]; RETURN}; IF CoreBlock.OnSide[bottom, refSides^] THEN to.PutRope[" Bottom"]; IF CoreBlock.OnSide[right, refSides^] THEN to.PutRope[" Right"]; IF CoreBlock.OnSide[top, refSides^] THEN to.PutRope[" Top"]; IF CoreBlock.OnSide[left, refSides^] THEN to.PutRope[" Left"]}; drShiftIn: PUBLIC ATOM _ CoreIO.RegisterProperty[ CoreProperties.RegisterProperty[ $DShiftIn, CoreProperties.Props[ [CoreProperties.propPrint, NEW[CoreProperties.PropPrintProc _ PrintRopeIn ]] ]], WriteRope, ReadRope ]; drShiftOut: PUBLIC ATOM _ CoreIO.RegisterProperty[ CoreProperties.RegisterProperty[ $DShiftOut, CoreProperties.Props[ [CoreProperties.propPrint, NEW[CoreProperties.PropPrintProc _ PrintRopeOut]]]], WriteRope, ReadRope ]; WriteRope: CoreIO.PropWriteProc = {rope: ROPE _ NARROW[value]; CoreIO.WriteRope[h, rope]}; ReadRope: CoreIO.PropReadProc = {rope: ROPE _ CoreIO.ReadRope[h]; RETURN[ rope ]}; PrintRopeIn: CoreProperties.PropPrintProc = {rope: ROPE _ NARROW[val]; to.PutF["DShiftIn: %g", IO.rope[rope]]}; PrintRopeOut: CoreProperties.PropPrintProc = {rope: ROPE _ NARROW[val]; to.PutF["DShiftOut: %g", IO.rope[rope]]}; Signal: SIGNAL = CODE; END.  CoreIOIFUPropsImpl.mesa Last edited by Curry September 25, 1986 9:56:25 am PDT Don Curry October 24, 1986 5:48:44 pm PDT CoreOps.PrintIndent[indent, to]; Κ’˜šΟb™Jšœ6™6Icode™)—J˜JšΟk œ:žœ˜FJ˜šΠbnœžœž˜!Jšžœ$ž˜-Jšžœœ˜—Jšž˜J˜Jšžœžœžœ˜Jšœžœ˜šœžœžœ˜-šœG˜GJšœžœ2˜P—Jšœ ˜ Jšœ ˜ —šΟn œ˜$Jšœ žœ žœ˜%Jšœžœ$˜3Jšžœžœ˜)—š  œ˜"Jšœžœžœ˜&Jšœžœ˜+Jšžœ žœ ˜Jšžœžœ)˜4—šŸ œ"˜,Jšœ žœ žœ˜"Jšœ ™ Jšœ˜Jšžœžœžœ˜8Jšžœžœžœ˜8Jšžœ%žœ˜CJšžœ%žœ˜BJšžœ#žœ˜>Jšžœ$žœ˜A—J˜šœ žœžœ˜2šœA˜AJšœžœ3˜R—Jšœ ˜ Jšœ ˜ —šœ žœžœ˜2šœB˜BJšœžœ2˜Q—Jšœ ˜ Jšœ ˜ —š  œ˜!Jšœžœžœ$˜8—Jš œžœžœ ˜RšŸ œ ˜+Jšœžœžœžœ˜C—šŸ œ ˜,Jšœžœžœ žœ˜D—J˜Jš œžœžœ˜J˜Jšžœ˜—…—’ Τ