<<-- 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.