DIRECTORY Core, CoreClasses, CoreOps, Rope, SC, SCCoreUtil, SCPrivate; SCCoreUtilImpl: CEDAR PROGRAM IMPORTS CoreOps, Rope, SC EXPORTS SCCoreUtil = BEGIN EnumerateInstances: PUBLIC PROC [cellType: Core.CellType, eachInstance: SCCoreUtil.EachInstanceProc] RETURNS [quit: BOOL _ FALSE] = { data: CoreClasses.RecordCellType _ NARROW[cellType.data]; IF data = NIL THEN SC.Error[callingError, Rope.Cat["Invalid Record Cell: ", cellType.name]]; FOR instList: CoreClasses.CellInstanceList _ data.instances, instList.rest WHILE instList # NIL AND ~quit DO quit _ eachInstance[instList.first]; ENDLOOP}; EnumerateFlatWires: PUBLIC PROC [wire: Core.WireSequence, eachWire: SCCoreUtil.EachWireProc] RETURNS [quit: BOOL _ FALSE] = { DoWire: CoreOps.EachWireProc = { IF wire.elements = NIL THEN [subWires, quit] _ eachWire[wire]}; [] _ CoreOps.VisitWireSequence[wire, DoWire]}; EnumFlatInstancePins: PUBLIC PROC [cellInstance: CoreClasses.CellInstance, eachInstancePin: SCCoreUtil.EachInstancePinProc] = { DoWire: CoreOps.EachWirePairProc = { IF actualWire.elements = NIL AND publicWire.elements = NIL THEN [subWires, quit] _ eachInstancePin[actualWire, publicWire]}; [] _ CoreOps.VisitBinding[cellInstance.actual, cellInstance.type.public, DoWire]}; END. ΠSCCoreUtilImpl.mesa ///StdCell/SCCoreUtilImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Bryan Preas, August 26, 1985 5:47:05 pm PDT May raise StructureError[MissingParameter]. Κ’˜šœ3™3Jšœ Οmœ1™žœž œ˜~šœ ˜ Jšžœžœ%˜@—Jšœ.˜.K˜—šŸœžœžœ^˜K˜šœ$˜$šžœžœž˜?Jšœ=˜=——JšœR˜RK˜J˜—K˜Jšžœ˜—J˜J˜J˜J˜—…—ξ`