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];
determine if this chan gets a min or a max route
FindRouteType:
PROCEDURE[chan: SCPrivate.MaxChanSr]
RETURNS[routeType: SCPrivate.RouteType] =
INLINE {
RETURN[
IF chan
MOD 2 # 0
THEN routeType ← minRoute
ELSE routeType ← maxRoute]};
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: BOOL ← FALSE];
EnumerateSides:
PROC [handle:
SC.Handle, eachSide: EachSideProc]
RETURNS [quit:
BOOL];
EachSideProc: TYPE = PROC [side: SC.Side, bpRow: SCPrivate.BpRow] RETURNS [quit: BOOL ← FALSE];
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: BOOL ← FALSE];
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.