********************************************************************
* NOTE: This file is generated automatically from the event * definition file Hull.evt. ********************************************************************<* PRAGMA LL *> MODULE; <*NOWARN*> IMPORT HullFmt, HullAlgClass, IntList, ZeusClass, Zeus; <*NOWARN*> IMPORT SiteList, Algorithm, HullViewClass, View, Thread; <*NOWARN*> IMPORT AlgorithmClass; <* FATAL Zeus.Error, Zeus.Locked *> HullIE If you get either of these errors, contact a Zeus implementor.TYPE SetupArgs = BRANDED REF RECORD trueSites: SiteList.T; auxSites: SiteList.T; END; SetHalfPlaneArgs = BRANDED REF RECORD tail: INTEGER; head: INTEGER; END; ClearHeadArgs = BRANDED REF RECORD END; TestSiteArgs = BRANDED REF RECORD i: INTEGER; END; ClearTestArgs = BRANDED REF RECORD END; SetTailArgs = BRANDED REF RECORD i: INTEGER; END; ClearTailArgs = BRANDED REF RECORD END; MoveHalfPlaneArgs = BRANDED REF RECORD tail: INTEGER; head: INTEGER; END; ConfirmArgs = BRANDED REF RECORD tail: INTEGER; head: INTEGER; END; DenyArgs = BRANDED REF RECORD tail: INTEGER; head: INTEGER; END; SwapArgs = BRANDED REF RECORD i: INTEGER; j: INTEGER; END; SentinelArgs = BRANDED REF RECORD i: INTEGER; j: INTEGER; END; ReOrderArgs = BRANDED REF RECORD l: IntList.T; END; StretchArgs = BRANDED REF RECORD hullSites: IntList.T; otherSites: IntList.T; END; SnapArgs = BRANDED REF RECORD hullSites: IntList.T; otherSites: IntList.T; END; ShuffleArgs = BRANDED REF RECORD hullSites: IntList.T; otherSites: IntList.T; END;Zeus calls the following to invoke vbt v's event handler:<*NOWARN*> PROCEDUREOEDispatcher (v: ZeusClass.T; evt: REFANY) RAISES {Thread.Alerted} = <* LL <= VBT.mu *> (* LL = {} if event style is output, LL = VBT.mu if event style is update. *) BEGIN TYPECASE v OF | HullViewClass.T (view) => <*NOWARN*> TYPECASE evt OF | SetupArgs(varSetupArgs) => <*NOWARN*> view.oeSetup ( varSetupArgs.trueSites , varSetupArgs.auxSites ) | SetHalfPlaneArgs(varSetHalfPlaneArgs) => <*NOWARN*> view.oeSetHalfPlane ( varSetHalfPlaneArgs.tail , varSetHalfPlaneArgs.head ) | ClearHeadArgs(varClearHeadArgs) => <*NOWARN*> view.oeClearHead ( ) | TestSiteArgs(varTestSiteArgs) => <*NOWARN*> view.oeTestSite ( varTestSiteArgs.i ) | ClearTestArgs(varClearTestArgs) => <*NOWARN*> view.oeClearTest ( ) | SetTailArgs(varSetTailArgs) => <*NOWARN*> view.oeSetTail ( varSetTailArgs.i ) | ClearTailArgs(varClearTailArgs) => <*NOWARN*> view.oeClearTail ( ) | MoveHalfPlaneArgs(varMoveHalfPlaneArgs) => <*NOWARN*> view.oeMoveHalfPlane ( varMoveHalfPlaneArgs.tail , varMoveHalfPlaneArgs.head ) | ConfirmArgs(varConfirmArgs) => <*NOWARN*> view.oeConfirm ( varConfirmArgs.tail , varConfirmArgs.head ) | DenyArgs(varDenyArgs) => <*NOWARN*> view.oeDeny ( varDenyArgs.tail , varDenyArgs.head ) | SwapArgs(varSwapArgs) => <*NOWARN*> view.oeSwap ( varSwapArgs.i , varSwapArgs.j ) | SentinelArgs(varSentinelArgs) => <*NOWARN*> view.oeSentinel ( varSentinelArgs.i , varSentinelArgs.j ) | ReOrderArgs(varReOrderArgs) => <*NOWARN*> view.oeReOrder ( varReOrderArgs.l ) | StretchArgs(varStretchArgs) => <*NOWARN*> view.oeStretch ( varStretchArgs.hullSites , varStretchArgs.otherSites ) | SnapArgs(varSnapArgs) => <*NOWARN*> view.oeSnap ( varSnapArgs.hullSites , varSnapArgs.otherSites ) | ShuffleArgs(varShuffleArgs) => <*NOWARN*> view.oeShuffle ( varShuffleArgs.hullSites , varShuffleArgs.otherSites ) ELSE <* ASSERT FALSE *> END; ELSE (* this view isn't a HullViewClass, so just ignore *) END END OEDispatcher; <*NOWARN*> PROCEDUREFEDispatcher (v: ZeusClass.T; evt: REFANY) = <* LL = VBT.mu *> BEGIN TYPECASE v OF | HullAlgClass.T (alg) => <*NOWARN*> TYPECASE evt OF ELSE <* ASSERT FALSE *> END; ELSE (* this alg isn't a HullAlgClass, so just ignore *) END END FEDispatcher; PROCEDURESetup ( initiator: Algorithm.T; trueSites, auxSites: SiteList.T ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(SetupArgs , trueSites := trueSites , auxSites := auxSites ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfSetup); alg.stopAtEvent := alg.eventDataRec.stopAtSetup; alg.waitAtEvent := alg.eventDataRec.waitAtSetup; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Setup", OEDispatcher, zumeArgRec); END; END Setup; PROCEDURESetHalfPlane ( initiator: Algorithm.T; tail, head: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(SetHalfPlaneArgs , tail := tail , head := head ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfSetHalfPlane); alg.stopAtEvent := alg.eventDataRec.stopAtSetHalfPlane; alg.waitAtEvent := alg.eventDataRec.waitAtSetHalfPlane; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "SetHalfPlane", OEDispatcher, zumeArgRec); END; END SetHalfPlane; PROCEDUREClearHead ( initiator: Algorithm.T; ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(ClearHeadArgs ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfClearHead); alg.stopAtEvent := alg.eventDataRec.stopAtClearHead; alg.waitAtEvent := alg.eventDataRec.waitAtClearHead; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "ClearHead", OEDispatcher, zumeArgRec); END; END ClearHead; PROCEDURETestSite ( initiator: Algorithm.T; i: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(TestSiteArgs , i := i ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfTestSite); alg.stopAtEvent := alg.eventDataRec.stopAtTestSite; alg.waitAtEvent := alg.eventDataRec.waitAtTestSite; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "TestSite", OEDispatcher, zumeArgRec); END; END TestSite; PROCEDUREClearTest ( initiator: Algorithm.T; ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(ClearTestArgs ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfClearTest); alg.stopAtEvent := alg.eventDataRec.stopAtClearTest; alg.waitAtEvent := alg.eventDataRec.waitAtClearTest; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "ClearTest", OEDispatcher, zumeArgRec); END; END ClearTest; PROCEDURESetTail ( initiator: Algorithm.T; i: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(SetTailArgs , i := i ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfSetTail); alg.stopAtEvent := alg.eventDataRec.stopAtSetTail; alg.waitAtEvent := alg.eventDataRec.waitAtSetTail; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "SetTail", OEDispatcher, zumeArgRec); END; END SetTail; PROCEDUREClearTail ( initiator: Algorithm.T; ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(ClearTailArgs ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfClearTail); alg.stopAtEvent := alg.eventDataRec.stopAtClearTail; alg.waitAtEvent := alg.eventDataRec.waitAtClearTail; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "ClearTail", OEDispatcher, zumeArgRec); END; END ClearTail; PROCEDUREMoveHalfPlane ( initiator: Algorithm.T; tail, head: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(MoveHalfPlaneArgs , tail := tail , head := head ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfMoveHalfPlane); alg.stopAtEvent := alg.eventDataRec.stopAtMoveHalfPlane; alg.waitAtEvent := alg.eventDataRec.waitAtMoveHalfPlane; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "MoveHalfPlane", OEDispatcher, zumeArgRec); END; END MoveHalfPlane; PROCEDUREConfirm ( initiator: Algorithm.T; tail, head: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(ConfirmArgs , tail := tail , head := head ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfConfirm); alg.stopAtEvent := alg.eventDataRec.stopAtConfirm; alg.waitAtEvent := alg.eventDataRec.waitAtConfirm; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Confirm", OEDispatcher, zumeArgRec); END; END Confirm; PROCEDUREDeny ( initiator: Algorithm.T; tail, head: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(DenyArgs , tail := tail , head := head ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfDeny); alg.stopAtEvent := alg.eventDataRec.stopAtDeny; alg.waitAtEvent := alg.eventDataRec.waitAtDeny; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Deny", OEDispatcher, zumeArgRec); END; END Deny; PROCEDURESwap ( initiator: Algorithm.T; i, j: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(SwapArgs , i := i , j := j ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfSwap); alg.stopAtEvent := alg.eventDataRec.stopAtSwap; alg.waitAtEvent := alg.eventDataRec.waitAtSwap; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Swap", OEDispatcher, zumeArgRec); END; END Swap; PROCEDURESentinel ( initiator: Algorithm.T; i, j: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(SentinelArgs , i := i , j := j ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfSentinel); alg.stopAtEvent := alg.eventDataRec.stopAtSentinel; alg.waitAtEvent := alg.eventDataRec.waitAtSentinel; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Sentinel", OEDispatcher, zumeArgRec); END; END Sentinel; PROCEDUREReOrder ( initiator: Algorithm.T; l: IntList.T ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(ReOrderArgs , l := l ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfReOrder); alg.stopAtEvent := alg.eventDataRec.stopAtReOrder; alg.waitAtEvent := alg.eventDataRec.waitAtReOrder; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "ReOrder", OEDispatcher, zumeArgRec); END; END ReOrder; PROCEDUREStretch ( initiator: Algorithm.T; hullSites, otherSites: IntList.T ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(StretchArgs , hullSites := hullSites , otherSites := otherSites ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfStretch); alg.stopAtEvent := alg.eventDataRec.stopAtStretch; alg.waitAtEvent := alg.eventDataRec.waitAtStretch; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Stretch", OEDispatcher, zumeArgRec); END; END Stretch; PROCEDURESnap ( initiator: Algorithm.T; hullSites, otherSites: IntList.T ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(SnapArgs , hullSites := hullSites , otherSites := otherSites ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfSnap); alg.stopAtEvent := alg.eventDataRec.stopAtSnap; alg.waitAtEvent := alg.eventDataRec.waitAtSnap; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Snap", OEDispatcher, zumeArgRec); END; END Snap; PROCEDUREShuffle ( initiator: Algorithm.T; hullSites, otherSites: IntList.T ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(ShuffleArgs , hullSites := hullSites , otherSites := otherSites ); alg := NARROW(initiator, HullAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfShuffle); alg.stopAtEvent := alg.eventDataRec.stopAtShuffle; alg.waitAtEvent := alg.eventDataRec.waitAtShuffle; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Shuffle", OEDispatcher, zumeArgRec); END; END Shuffle; BEGIN END HullIE.