<> <> <> <> DIRECTORY CD USING [Instance, Object, Orientation, Position, PropList, Rect], CDSymbolicObjects USING [InstEnumerator], Rope USING [ROPE]; PWPins: CEDAR DEFINITIONS = BEGIN <> ROPE: TYPE = Rope.ROPE; Side: TYPE = {bottom, right, top, left, none}; <> GetSide: PROC [ob: CD.Object, pin: CD.Instance] RETURNS [side: Side]; <> <> EnumerateDeepPins: PROC [ob: CD.Object, eachPin: InstanceEnumerator, stopEnumerateDeepPins: BOOL _ TRUE] RETURNS [quit: BOOL]; InstanceEnumerator: TYPE = CDSymbolicObjects.InstEnumerator; -- [inst: CD.Instance] RETURNS [quit: BOOL _ FALSE] <> EnumerateEdgePins: PROC [ob: CD.Object, eachPin: InstanceEnumerator, stopEnumerateDeepPins: BOOL _ TRUE] RETURNS [quit: BOOL]; <> <> ChangePins: PUBLIC PROC [ob: CD.Object, changePinProc: ChangePinProc _ DefaultChangePinProc, stopEnumerateDeepPins: BOOL _ TRUE] RETURNS [cell: CD.Object]; ChangePinProc: TYPE = PROC [oldPin: CD.Instance] RETURNS [newPin: CD.Instance _ NIL]; DefaultChangePinProc: ChangePinProc; -- {newPin _ oldPin}; Identity change RenamePins: PUBLIC PROC [ob: CD.Object, renameProc: RenameProc _ DefaultRenameProc, stopEnumerateDeepPins: BOOL _ TRUE] RETURNS [cell: CD.Object]; RenameProc: TYPE = PROC [oldRope: ROPE] RETURNS [newRope: ROPE _ NIL]; DefaultRenameProc: RenameProc; -- {newRope _ oldRope}; Identity renaming <> Index: PROC [rope: ROPE, index: INT] RETURNS [indexedRope: ROPE]; <> EnumerationProc: TYPE = PROC [ob: CD.Object, location: CD.Position _ [0, 0], orientation: CD.Orientation _ 0, properties: CD.PropList _ NIL, eachPin: InstanceEnumerator, stopEnumerateDeepPins: BOOL, filter: FilterProc] RETURNS [quit: BOOL _ FALSE]; EnumerateDeepPinsInContext: EnumerationProc; enumerationProcProp: ATOM; -- Atom hanging on various Object Classes FilterProc: TYPE = PROC [subRect: CD.Rect] RETURNS [isSubInteresting: BOOL _ TRUE]; CopyInstance: PROC [oldInst: CD.Instance] RETURNS [newInst: CD.Instance]; <> NewInstance: PROC [ob: CD.Object, location: CD.Position _ [0,0], orientation: CD.Orientation_0, properties: CD.PropList_NIL] RETURNS [CD.Instance]; TransformInstance: PROC [instInCell: CD.Instance, cellSize: CD.Position, locationOfCellInWorld: CD.Position, orientationOfCellInWorld: CD.Orientation] RETURNS [instInWorld: CD.Instance]; <> END.