<> <> <> <> DIRECTORY CD, 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]; <> TransferCell: PUBLIC PROC [template: CD.Object, objSide: Side, width: INT, objProc: ForEachPinProc, selectNameProc: SelectNamesProc _ KeepAll] RETURNS [cell: CD.Object]; ForEachPinProc: TYPE = PROC [inst: CD.Instance] RETURNS [obj: CD.Object]; SelectNamesProc: TYPE = PROC [name: ROPE] RETURNS [keepIt: BOOL]; KeepAll: SelectNamesProc; END.