file ///StdCell/SCRowUtil.mesa
row utility routines
DIRECTORY
Rope,
SC,
SCPrivate;
SCRowUtil: CEDAR DEFINITIONS =
BEGIN
sideName: ARRAY SC.SideOrNone OF Rope.ROPE;
find the max row length
FindMaxRow: PROCEDURE [handle: SC.Handle] RETURNS [maxRowWidth: SC.Number, numMaxRows: SCPrivate.ZMaxRowSr];
audit the row lengths
AuditRowLengths: PROCEDURE[handle: SC.Handle];
compute height of row height is max of component heights on row
ComputeRowHeight: PROCEDURE[handle: SC.Handle, row: SCPrivate.MaxRowSr];
compute height of side height is max of component heights on side
ComputeSideHeight: PROCEDURE[handle: SC.Handle, side: SC.Side];
get widths of side or row
find rows that these comps are on
RowsForInsts: PROCEDURE[insts: SCPrivate.InstanceList]
RETURNS [onSide: SCPrivate.SideSet, onRow: SCPrivate.RowSet];
EnumerateRows: PROC [handle: SC.Handle, eachRow: EachRowProc] RETURNS [quit: BOOL];
EachRowProc: TYPE = PROC [row: SCPrivate.MaxRowSr, lgRow: SCPrivate.LgRow] RETURNS [quit: BOOLFALSE];
EnumerateSides: PROC [handle: SC.Handle, eachSide: EachSideProc] RETURNS [quit: BOOL];
EachSideProc: TYPE = PROC [side: SC.Side, bpRow: SCPrivate.BpRow] RETURNS [quit: BOOLFALSE];
EnumerateAllInstsOnRow: PROC [handle: SC.Handle, row: SCPrivate.MaxRowSr, eachInstance: EachInstProc] RETURNS [quit: BOOL];
EnumerateInstsOnRow: PROC [handle: SC.Handle, row: SCPrivate.MaxRowSr, startPos, endPos: SCPrivate.ZMaxPosSr, eachInstance: EachInstProc] RETURNS [quit: BOOL];
EnumerateInstsOnRowDecreasing: PROC [handle: SC.Handle, row: SCPrivate.MaxRowSr, startPos, endPos: SCPrivate.ZMaxPosSr, eachInstance: EachInstProc] RETURNS [quit: BOOL];
EachInstProc: TYPE = PROC [pos: NAT, instance: SCPrivate.Instance] RETURNS [quit: BOOLFALSE];
EnumerateAllInstsOnSide: PROC [handle: SC.Handle, side: SC.Side, eachInstance: EachInstProc] RETURNS [quit: BOOL];
EnumerateInstsOnSide: PROC [handle: SC.Handle, side: SC.Side, startPos, endPos: SCPrivate.ZMaxPosSr, eachInstance: EachInstProc] RETURNS [quit: BOOL];
EnumerateInstsOnSideDecreasing: PROC [handle: SC.Handle, side: SC.Side, startPos, endPos: SCPrivate.ZMaxPosSr, eachInstance: EachInstProc] RETURNS [quit: BOOL];
END.