DIRECTORY Asserting, AssertingIO, Basics, FS, IO, Rope, RoseCreate, RoseTranslateTypes, RoseTranslateInsides, RoseTypes; RopePorts: CEDAR PROGRAM IMPORTS AssertingIO, FS, IO, RoseTranslateInsides EXPORTS RoseCreate = BEGIN OPEN RoseTypes, RoseTranslateTypes, RoseTranslateInsides; PortsFromROPE: PUBLIC PROC [asRope: ROPE] RETURNS [ports: Ports] = {ports _ PortsFromStream[IO.RIS[asRope]]}; PortsFromFile: PUBLIC PROC [fileName: ROPE] RETURNS [ports: Ports] = {ports _ PortsFromStream[FS.StreamOpen[fileName]]}; PortsFromStream: PUBLIC PROC [stream: STREAM] RETURNS [ports: Ports] = BEGIN length: CARDINAL _ stream.GetCard[]; ports _ NEW [PortsRep[length]]; FOR portIndex: CARDINAL IN [0 .. length) DO simple: Field _ GetField[stream]; switch: Field _ GetField[stream]; name: ROPE _ stream.GetRopeLiteral[]; typeAsRope: ROPE _ stream.GetRopeLiteral[]; job: Job _ NEW [JobRep _ [ exec: NIL, rootName: NIL, from: IO.RIS[typeAsRope], log: viewerLog, type: Other]]; any: REF ANY _ ParseExpression[job]; type: NodeType _ WITH any SELECT FROM sti: SignalTypeInvocation => sti.st, id: ID => InstantiateSignalType[job, id.rope, NIL].st, ENDCASE => ERROR; flags: [0 .. 16) _ stream.GetCard[]; other: Assertions _ AssertingIO.Read[stream]; ports[portIndex] _ [ simple: simple, switch: switch, name: name, type: type, input: (flags MOD 2) >= 1, output: (flags MOD 4) >= 2, XPhobic: (flags MOD 8) >= 4, instructionsSimple: (flags MOD 16) >= 8, other: other]; ENDLOOP; [] _ stream.SkipWhitespace[flushComments: FALSE]; IF NOT stream.EndOf[] THEN ERROR; END; GetField: PROC [from: STREAM] RETURNS [f: Field] = { bitOffset: CARDINAL _ from.GetCard[]; bitLength: CARDINAL _ from.GetCard[]; wordOffset: CARDINAL _ bitOffset/Basics.bitsPerWord; wordoffbits: CARDINAL _ wordOffset*Basics.bitsPerWord; f _ [wordOffset, bitOffset - wordoffbits, bitLength]; }; END. LRopePorts.Mesa last edited by Spreitzer April 27, 1985 9:59:06 pm PST Κ΄– "cedar" style˜Icode™K™6K˜KšΟk œ!œœH˜xK˜šΠbx œœ˜Kšœœœ˜1Kšœ ˜—K˜Kšœœ5˜?K˜š Οn œœœ œœ˜BKšœœœ ˜*—K˜š Ÿ œœœ œœ˜DKšœœ˜3—K˜š Ÿœœœ œœ˜FKš˜Kšœœ˜$Kšœœ˜šœ œœ˜+Kšœ!˜!Kšœ!˜!Kšœœ˜%Kšœ œ˜+šœ œ ˜Kšœœ˜ Kšœ œ˜Kšœœœ ˜Kšœ˜K˜—Kšœœœ˜$šœœœ˜%Kšœ$˜$Kšœœ(œ˜6Kšœœ˜—Kšœ$˜$Kšœ-˜-šœ˜Kšœ˜Kšœ˜K˜ K˜ Kšœœ ˜Kšœœ ˜Kšœœ ˜Kšœœ ˜(K˜—Kšœ˜—Kšœ*œ˜1Kšœœœœ˜!Kšœ˜—K˜šŸœœœœ˜4Kšœ œ˜%Kšœ œ˜%Kšœ œ ˜4Kšœ œ!˜6Kšœ5˜5K˜—K˜Kšœ˜—…—> >