<> <> <> <> DIRECTORY CD, CDDirectory, CDProperties, Core, CoreClasses, CoreCreate, CoreOps, IO, Rope, SCLibGen; SCMakeInterfaceImpl: CEDAR PROGRAM IMPORTS CDDirectory, CDProperties, CoreClasses, CoreCreate, CoreOps, IO, SCLibGen = BEGIN CellTypeFromRope: PROC [r: Rope.ROPE] RETURNS [ct: Core.CellType] = { stream: IO.STREAM _ IO.RIS[r]; wrs: LIST OF CoreCreate.WR _ NIL; end: LIST OF CoreCreate.WR _ NIL; wire: Core.Wire; WHILE NOT IO.EndOf[stream] DO token: Rope.ROPE _ IO.GetTokenRope[stream].token; piece: LIST OF CoreCreate.WR _ LIST[token]; IF wrs=NIL THEN wrs _ piece ELSE end.rest _ piece; end _ piece; ENDLOOP; wire _ CoreCreate.WireList[wrs]; ct _ CoreClasses.CreateUnspecified[public: wire]; }; MakeIF: PROC [ob: CD.Object] = { WITH CDProperties.GetProp[ob, $PinOrder] SELECT FROM r: Rope.ROPE => { ct: Core.CellType _ CellTypeFromRope[r]; [] _ CoreOps.SetCellTypeName[ct, CDDirectory.Name[ob]]; CDProperties.PutProp[ob, $Interface, ct]; } ENDCASE => NULL; }; SCLibGen.SeeMe[MakeIF]; END. <<>>