-- File: IPEditPrimitives.mesa
-- Last Edited by: CSChow, February 1, 1985 11:16:36 am PST
--Intro: This is the piece of code beneath IPTopEditOps and IPTopEditOpsExtra. Again I won't try
-- to describe the individual operations here.
-- General Comment: At this level the operations are inverse of each other (eg. BreakCross and
-- FormCross.)
DIRECTORY
IPCTG USING[Channel],
IP USING [OrientationTypes],
IPCoTab,
IPCB USING [Side];
IPEditPrimitives: CEDAR DEFINITIONS = BEGIN OPEN CTG: IPCTG, CoTab: IPCoTab, CB: IPCB;
InvalidArgs: ERROR[editPrim: ATOM];
BreakCross: PROC[refCh, chToBreak, newCh1: CTG.Channel];
BreakCrossChk: PROC[refCh, chToBreak: CTG.Channel] RETURNS [BOOL];
FormCross: PROC[refCh, negCh, posCh: CTG.Channel];
FormCrossChk: PROC[refCh, negCh, posCh: CTG.Channel] RETURNS [BOOL];
FormZ: PROC[refCh: CTG.Channel, negComp, posComp: CoTab.Component, zType: CB.Side, newCh1, newCh2: CTG.Channel];
FormZChk: PROC[refCh: CTG.Channel, negComp, posComp: CoTab.Component, zType: CB.Side] RETURNS [BOOL];
RemoveZ: PROC[zSpine: CTG.Channel] RETURNS [negCh, posCh: CTG.Channel, negComp, posComp: CoTab.Component, zType: CB.Side];
RemoveZChk: PROC[zSpine: CTG.Channel] RETURNS [BOOL];
TtoL: PROC [refCh: CTG.Channel, whichEnd, lType: CB.Side, endCo: CoTab.Component, newCh1: CTG.Channel];
TtoLChk: PROC [refCh: CTG.Channel, whichEnd, lType: CB.Side, endCo: CoTab.Component] RETURNS [BOOL];
LtoT: PROC[refCh: CTG.Channel, whichEnd: CB.Side] RETURNS [posCh: CTG.Channel, lType: CB.Side, endCo: CoTab.Component];
LtoTChk: PROC[refCh: CTG.Channel, whichEnd: CB.Side] RETURNS [BOOL];
FlexKnee: PROC [leg, floor: CTG.Channel, whichEnd, whichDirection: CB.Side, newCh1: CTG.Channel];
FlexKneeChk: PROC [leg, floor: CTG.Channel, whichEnd, whichDirection: CB.Side] RETURNS [BOOL];
ExtendKnee: PROC [shin: CTG.Channel] RETURNS [leg, floor: CTG.Channel, whichEnd, whichDirection: CB.Side];
ExtendKneeChk: PROC[shin: CTG.Channel] RETURNS [BOOL];
InsertCoAtCorner: PUBLIC PROC[host, co: CoTab.Component, corner: CoTab.CornerTypes, newHCh1, newVCh1: CTG.Channel];
InsertCoAtCornerChk: PROC [host, co: CoTab.Component, corner: CoTab.CornerTypes] RETURNS [BOOL];
RemoveCoAtCorner: PROC[host: CoTab.Component, corner: CoTab.CornerTypes] RETURNS [co: CoTab.Component, horCh, verCh: CTG.Channel];
RemoveCoAtCornerChk: PROC[host: CoTab.Component, corner: CoTab.CornerTypes] RETURNS [BOOL];
InsertCo1: PROC[co: CoTab.Component, chToSplit, negBnd, posBnd: CTG.Channel, sideToOpHint: CB.Side, newCh1: CTG.Channel] RETURNS [sideToClHint: CB.Side];
InsertCo1Chk: PROC[co: CoTab.Component, chToSplit, negBnd, posBnd: CTG.Channel] RETURNS [BOOL];
RemoveCo1: PROC[co: CoTab.Component, shrinkDirectn: IP.OrientationTypes, sideToClHint: CB.Side] RETURNS [mainCh, negBnd, posBnd, sideCh: CTG.Channel, sideToOpHint: CB.Side];
RemoveCo1Chk: PROC[co: CoTab.Component, shrinkDirectn: IP.OrientationTypes] RETURNS [BOOL];
InsertCo2: PROC[co: CoTab.Component, chToSplit, negBnd, posBnd: CTG.Channel, sideToOpHint: CB.Side, newCh1: CTG.Channel] RETURNS [sideToClHint: CB.Side];
InsertCo2Chk: PROC[co: CoTab.Component, chToSplit, negBnd, posBnd: CTG.Channel] RETURNS [BOOL];
RemoveCo2: PROC[co: CoTab.Component, shrinkDirectn: IP.OrientationTypes, sideToClHint: CB.Side] RETURNS [mainCh, negBnd, posBnd, sideCh: CTG.Channel, sideToOpHint: CB.Side];
RemoveCo2Chk: PROC[co: CoTab.Component, shrinkDirectn: IP.OrientationTypes] RETURNS [BOOL];
END.