<> <> <> <> <> <> <<>> DIRECTORY CD, CDDirectory, CDRects, CDSatellites, CDCells, Core, CoreClasses, CoreOps, IO, PW, Rope, Sinix, Sisyph, TerminalIO; <<>> TestSisyph: CEDAR PROGRAM IMPORTS CDDirectory, CoreClasses, CoreOps, PW, Sinix, Sisyph, TerminalIO = BEGIN CellType: TYPE = Core.CellType; Wire: TYPE = Core.Wire; Object: TYPE = CD.Object; ROPE: TYPE = Core.ROPE; Context: TYPE = Sisyph.Context; StructWire: PROC [name: ROPE, n: INT] RETURNS [Wire] = { subWires: LIST OF Wire _ NIL; WHILE n > 0 DO subWires _ CONS[CoreOps.CreateWire[], subWires]; n _ n-1; ENDLOOP; RETURN [CoreOps.CreateWire[elements: subWires, name: name]] }; TreeCellCode: PROC [] RETURNS [CellType] = { wire: Wire _ StructWire["father", 3]; RETURN [CoreClasses.CreateRecordCell[CoreOps.CreateWire[elements: LIST[wire]], CoreOps.CreateWire[elements: LIST[wire]], NIL]]; }; TestWireIcon: PROC [] RETURNS [wire: Wire] = { wire _ CoreOps.CreateWires[size: 3, name: "BigStruct"]; wire[0] _ CoreOps.CreateWire[name: "Zero"]; wire[1] _ CoreOps.CreateWire[name: "One"]; wire[2] _ CoreOps.CreateWires[size: 2, name: "SmallStruct"]; wire[2][0] _ CoreOps.CreateWire[name: "Zero"]; wire[2][1] _ CoreOps.CreateWire[name: "TwoOne"]; }; TestCx: PROC [] = BEGIN design: CD.Design _ PW.OpenDesign["ExtractExample"]; targetObj: CD.Object _ CDDirectory.Fetch[design, "nD"].object; cx: Context _ Sisyph.Create[design]; result: REF _ Sinix.Extract[obj: targetObj, mode: Sisyph.mode, userData: cx].result; CoreOps.Print[result, TerminalIO.CreateStream[]]; ERROR; END; Test: PROC [] = BEGIN design: CD.Design _ PW.OpenDesign["TestSisyph"]; targetObj: CD.Object _ CDDirectory.Fetch[design, "TestCell"].object; cx: Context _ Sisyph.Create[design]; result: REF _ Sinix.Extract[obj: targetObj, mode: Sisyph.mode, userData: cx].result; CoreOps.Print[result, TerminalIO.CreateStream[]]; END; END.