<> <> <> <> <<>> <> <<>> DIRECTORY CD, Core, CoreGeometry; ExtendCells: CEDAR DEFINITIONS ~ BEGIN <> ROPE: TYPE = Core.ROPE; Wire: TYPE = Core.Wire; CellType: TYPE = Core.CellType; Properties: TYPE = Core.Properties; Side: TYPE = CoreGeometry.Side; Decoration: TYPE = CoreGeometry.Decoration; Layer: TYPE = CD.Layer; Object: TYPE = CD.Object; ExtendSegmentProc: TYPE = PROC [wire: Wire, min, max: INT, layer: Layer, side: Side, extension: INT] RETURNS [Object _ NIL]; <> <> <<>> ExtendSegment: ExtendSegmentProc; <> <> <> WirePin: TYPE = RECORD [wire: Wire, min, max: INT, layer: Layer]; <> ExtendObject: PROC [wirePins: LIST OF WirePin, size: CD.Position, side: Side, extendProc: ExtendSegmentProc _ ExtendSegment] RETURNS [extendedCell: Object]; <> <> <> Extensions: TYPE = ARRAY Side OF INT; <> <<>> nullExtensions: Extensions = ALL [0]; WirePinSide: TYPE = RECORD [wire: Wire, min, max: INT, side: Side, layer: Layer]; <> ExtendCellType: PROC [decoration: Decoration, cellType: CellType, extensions: Extensions _ nullExtensions, extendProc: ExtendSegmentProc _ ExtendSegment, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [extendedCell: CellType]; <> END.