********************************************************************
* NOTE: This file is generated automatically from the event * definition file Wheeler.evt. ********************************************************************<* PRAGMA LL *> MODULE; <*NOWARN*> IMPORT TextConv, ZeusClass, Zeus, WheelerViewClass; <*NOWARN*> IMPORT Algorithm, WheelerAlgClass, View, Thread; <*NOWARN*> IMPORT MiscFmt, AlgorithmClass; <* FATAL Zeus.Error, Zeus.Locked *> WheelerIE If you get either of these errors, contact a Zeus implementor.TYPE StartPermuteArgs = BRANDED REF RECORD string: TEXT; alphabet: TEXT; END; NextRotationArgs = BRANDED REF RECORD i: INTEGER; string: TEXT; END; RotationsSortedArgs = BRANDED REF RECORD rotations: MiscFmt.RefTextArray; rowIndex: INTEGER; END; PermuteDoneArgs = BRANDED REF RECORD lastchars: TEXT; rowIndex: INTEGER; END; StartEncodeArgs = BRANDED REF RECORD alphabet: TEXT; END; EncodeNextCharArgs = BRANDED REF RECORD i: INTEGER; c: CHAR; END; EncodeDistinctCountArgs = BRANDED REF RECORD i: INTEGER; k: INTEGER; n: INTEGER; c: CHAR; END; EncodeFoundCodeArgs = BRANDED REF RECORD i: INTEGER; k: INTEGER; code: INTEGER; c: CHAR; END; EncodeDoneArgs = BRANDED REF RECORD alphabet: TEXT; codes: MiscFmt.RefIntArray; rowIndex: INTEGER; END; InitDecodeArgs = BRANDED REF RECORD alphabet: TEXT; codes: MiscFmt.RefIntArray; rowIndex: INTEGER; END; StartDecodeArgs = BRANDED REF RECORD END; DecodeNextCodeArgs = BRANDED REF RECORD i: INTEGER; END; DecodeDistinctCountArgs = BRANDED REF RECORD i: INTEGER; k: INTEGER; n: INTEGER; END; DecodeFoundCharArgs = BRANDED REF RECORD i: INTEGER; k: INTEGER; c: CHAR; END; DecodeDoneArgs = BRANDED REF RECORD lastchars: TEXT; rowIndex: INTEGER; END; StartReconstructArgs = BRANDED REF RECORD lastchars: TEXT; rowIndex: INTEGER; END; FirstCharsArgs = BRANDED REF RECORD t: TEXT; END; ConsiderCharArgs = BRANDED REF RECORD i: INTEGER; END; EqualCharsArgs = BRANDED REF RECORD i: INTEGER; j: INTEGER; END; FinishCharRunArgs = BRANDED REF RECORD END; StartResultArgs = BRANDED REF RECORD END; ResultNextCharArgs = BRANDED REF RECORD pos: INTEGER; k: INTEGER; END; EndResultArgs = BRANDED REF RECORD END; RevealArgs = BRANDED REF RECORD i: INTEGER; 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 | WheelerViewClass.T (view) => <*NOWARN*> TYPECASE evt OF | StartPermuteArgs(varStartPermuteArgs) => <*NOWARN*> view.oeStartPermute ( varStartPermuteArgs.string , varStartPermuteArgs.alphabet ) | NextRotationArgs(varNextRotationArgs) => <*NOWARN*> view.oeNextRotation ( varNextRotationArgs.i , varNextRotationArgs.string ) | RotationsSortedArgs(varRotationsSortedArgs) => <*NOWARN*> view.oeRotationsSorted ( varRotationsSortedArgs.rotations , varRotationsSortedArgs.rowIndex ) | PermuteDoneArgs(varPermuteDoneArgs) => <*NOWARN*> view.oePermuteDone ( varPermuteDoneArgs.lastchars , varPermuteDoneArgs.rowIndex ) | StartEncodeArgs(varStartEncodeArgs) => <*NOWARN*> view.oeStartEncode ( varStartEncodeArgs.alphabet ) | EncodeNextCharArgs(varEncodeNextCharArgs) => <*NOWARN*> view.oeEncodeNextChar ( varEncodeNextCharArgs.i , varEncodeNextCharArgs.c ) | EncodeDistinctCountArgs(varEncodeDistinctCountArgs) => <*NOWARN*> view.oeEncodeDistinctCount ( varEncodeDistinctCountArgs.i , varEncodeDistinctCountArgs.k , varEncodeDistinctCountArgs.n , varEncodeDistinctCountArgs.c ) | EncodeFoundCodeArgs(varEncodeFoundCodeArgs) => <*NOWARN*> view.oeEncodeFoundCode ( varEncodeFoundCodeArgs.i , varEncodeFoundCodeArgs.k , varEncodeFoundCodeArgs.code , varEncodeFoundCodeArgs.c ) | EncodeDoneArgs(varEncodeDoneArgs) => <*NOWARN*> view.oeEncodeDone ( varEncodeDoneArgs.alphabet , varEncodeDoneArgs.codes , varEncodeDoneArgs.rowIndex ) | InitDecodeArgs(varInitDecodeArgs) => <*NOWARN*> view.oeInitDecode ( varInitDecodeArgs.alphabet , varInitDecodeArgs.codes , varInitDecodeArgs.rowIndex ) | StartDecodeArgs(varStartDecodeArgs) => <*NOWARN*> view.oeStartDecode ( ) | DecodeNextCodeArgs(varDecodeNextCodeArgs) => <*NOWARN*> view.oeDecodeNextCode ( varDecodeNextCodeArgs.i ) | DecodeDistinctCountArgs(varDecodeDistinctCountArgs) => <*NOWARN*> view.oeDecodeDistinctCount ( varDecodeDistinctCountArgs.i , varDecodeDistinctCountArgs.k , varDecodeDistinctCountArgs.n ) | DecodeFoundCharArgs(varDecodeFoundCharArgs) => <*NOWARN*> view.oeDecodeFoundChar ( varDecodeFoundCharArgs.i , varDecodeFoundCharArgs.k , varDecodeFoundCharArgs.c ) | DecodeDoneArgs(varDecodeDoneArgs) => <*NOWARN*> view.oeDecodeDone ( varDecodeDoneArgs.lastchars , varDecodeDoneArgs.rowIndex ) | StartReconstructArgs(varStartReconstructArgs) => <*NOWARN*> view.oeStartReconstruct ( varStartReconstructArgs.lastchars , varStartReconstructArgs.rowIndex ) | FirstCharsArgs(varFirstCharsArgs) => <*NOWARN*> view.oeFirstChars ( varFirstCharsArgs.t ) | ConsiderCharArgs(varConsiderCharArgs) => <*NOWARN*> view.oeConsiderChar ( varConsiderCharArgs.i ) | EqualCharsArgs(varEqualCharsArgs) => <*NOWARN*> view.oeEqualChars ( varEqualCharsArgs.i , varEqualCharsArgs.j ) | FinishCharRunArgs(varFinishCharRunArgs) => <*NOWARN*> view.oeFinishCharRun ( ) | StartResultArgs(varStartResultArgs) => <*NOWARN*> view.oeStartResult ( ) | ResultNextCharArgs(varResultNextCharArgs) => <*NOWARN*> view.oeResultNextChar ( varResultNextCharArgs.pos , varResultNextCharArgs.k ) | EndResultArgs(varEndResultArgs) => <*NOWARN*> view.oeEndResult ( ) | RevealArgs(varRevealArgs) => <*NOWARN*> view.oeReveal ( varRevealArgs.i ) ELSE <* ASSERT FALSE *> END; ELSE (* this view isn't a WheelerViewClass, so just ignore *) END END OEDispatcher; <*NOWARN*> PROCEDUREFEDispatcher (v: ZeusClass.T; evt: REFANY) = <* LL = VBT.mu *> BEGIN TYPECASE v OF | WheelerAlgClass.T (alg) => <*NOWARN*> TYPECASE evt OF ELSE <* ASSERT FALSE *> END; ELSE (* this alg isn't a WheelerAlgClass, so just ignore *) END END FEDispatcher; PROCEDUREStartPermute ( initiator: Algorithm.T; string, alphabet: TEXT ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(StartPermuteArgs , string := string , alphabet := alphabet ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfStartPermute); alg.stopAtEvent := alg.eventDataRec.stopAtStartPermute; alg.waitAtEvent := alg.eventDataRec.waitAtStartPermute; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "StartPermute", OEDispatcher, zumeArgRec); END; END StartPermute; PROCEDURENextRotation ( initiator: Algorithm.T; i: INTEGER; string: TEXT ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(NextRotationArgs , i := i , string := string ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfNextRotation); alg.stopAtEvent := alg.eventDataRec.stopAtNextRotation; alg.waitAtEvent := alg.eventDataRec.waitAtNextRotation; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "NextRotation", OEDispatcher, zumeArgRec); END; END NextRotation; PROCEDURERotationsSorted ( initiator: Algorithm.T; rotations: MiscFmt.RefTextArray; rowIndex: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(RotationsSortedArgs , rotations := rotations , rowIndex := rowIndex ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfRotationsSorted); alg.stopAtEvent := alg.eventDataRec.stopAtRotationsSorted; alg.waitAtEvent := alg.eventDataRec.waitAtRotationsSorted; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "RotationsSorted", OEDispatcher, zumeArgRec); END; END RotationsSorted; PROCEDUREPermuteDone ( initiator: Algorithm.T; lastchars: TEXT; rowIndex: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(PermuteDoneArgs , lastchars := lastchars , rowIndex := rowIndex ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfPermuteDone); alg.stopAtEvent := alg.eventDataRec.stopAtPermuteDone; alg.waitAtEvent := alg.eventDataRec.waitAtPermuteDone; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "PermuteDone", OEDispatcher, zumeArgRec); END; END PermuteDone; PROCEDUREStartEncode ( initiator: Algorithm.T; alphabet: TEXT ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(StartEncodeArgs , alphabet := alphabet ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfStartEncode); alg.stopAtEvent := alg.eventDataRec.stopAtStartEncode; alg.waitAtEvent := alg.eventDataRec.waitAtStartEncode; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "StartEncode", OEDispatcher, zumeArgRec); END; END StartEncode; PROCEDUREEncodeNextChar ( initiator: Algorithm.T; i: INTEGER; c: CHAR ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(EncodeNextCharArgs , i := i , c := c ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfEncodeNextChar); alg.stopAtEvent := alg.eventDataRec.stopAtEncodeNextChar; alg.waitAtEvent := alg.eventDataRec.waitAtEncodeNextChar; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "EncodeNextChar", OEDispatcher, zumeArgRec); END; END EncodeNextChar; PROCEDUREEncodeDistinctCount ( initiator: Algorithm.T; i, k, n: INTEGER; c: CHAR ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(EncodeDistinctCountArgs , i := i , k := k , n := n , c := c ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfEncodeDistinctCount); alg.stopAtEvent := alg.eventDataRec.stopAtEncodeDistinctCount; alg.waitAtEvent := alg.eventDataRec.waitAtEncodeDistinctCount; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "EncodeDistinctCount", OEDispatcher, zumeArgRec); END; END EncodeDistinctCount; PROCEDUREEncodeFoundCode ( initiator: Algorithm.T; i, k, code: INTEGER; c: CHAR ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(EncodeFoundCodeArgs , i := i , k := k , code := code , c := c ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfEncodeFoundCode); alg.stopAtEvent := alg.eventDataRec.stopAtEncodeFoundCode; alg.waitAtEvent := alg.eventDataRec.waitAtEncodeFoundCode; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "EncodeFoundCode", OEDispatcher, zumeArgRec); END; END EncodeFoundCode; PROCEDUREEncodeDone ( initiator: Algorithm.T; alphabet: TEXT; codes: MiscFmt.RefIntArray; rowIndex: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(EncodeDoneArgs , alphabet := alphabet , codes := codes , rowIndex := rowIndex ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfEncodeDone); alg.stopAtEvent := alg.eventDataRec.stopAtEncodeDone; alg.waitAtEvent := alg.eventDataRec.waitAtEncodeDone; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "EncodeDone", OEDispatcher, zumeArgRec); END; END EncodeDone; PROCEDUREInitDecode ( initiator: Algorithm.T; alphabet: TEXT; codes: MiscFmt.RefIntArray; rowIndex: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(InitDecodeArgs , alphabet := alphabet , codes := codes , rowIndex := rowIndex ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfInitDecode); alg.stopAtEvent := alg.eventDataRec.stopAtInitDecode; alg.waitAtEvent := alg.eventDataRec.waitAtInitDecode; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "InitDecode", OEDispatcher, zumeArgRec); END; END InitDecode; PROCEDUREStartDecode ( initiator: Algorithm.T; ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(StartDecodeArgs ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfStartDecode); alg.stopAtEvent := alg.eventDataRec.stopAtStartDecode; alg.waitAtEvent := alg.eventDataRec.waitAtStartDecode; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "StartDecode", OEDispatcher, zumeArgRec); END; END StartDecode; PROCEDUREDecodeNextCode ( initiator: Algorithm.T; i: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(DecodeNextCodeArgs , i := i ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfDecodeNextCode); alg.stopAtEvent := alg.eventDataRec.stopAtDecodeNextCode; alg.waitAtEvent := alg.eventDataRec.waitAtDecodeNextCode; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "DecodeNextCode", OEDispatcher, zumeArgRec); END; END DecodeNextCode; PROCEDUREDecodeDistinctCount ( initiator: Algorithm.T; i, k, n: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(DecodeDistinctCountArgs , i := i , k := k , n := n ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfDecodeDistinctCount); alg.stopAtEvent := alg.eventDataRec.stopAtDecodeDistinctCount; alg.waitAtEvent := alg.eventDataRec.waitAtDecodeDistinctCount; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "DecodeDistinctCount", OEDispatcher, zumeArgRec); END; END DecodeDistinctCount; PROCEDUREDecodeFoundChar ( initiator: Algorithm.T; i, k: INTEGER; c: CHAR ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(DecodeFoundCharArgs , i := i , k := k , c := c ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfDecodeFoundChar); alg.stopAtEvent := alg.eventDataRec.stopAtDecodeFoundChar; alg.waitAtEvent := alg.eventDataRec.waitAtDecodeFoundChar; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "DecodeFoundChar", OEDispatcher, zumeArgRec); END; END DecodeFoundChar; PROCEDUREDecodeDone ( initiator: Algorithm.T; lastchars: TEXT; rowIndex: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(DecodeDoneArgs , lastchars := lastchars , rowIndex := rowIndex ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfDecodeDone); alg.stopAtEvent := alg.eventDataRec.stopAtDecodeDone; alg.waitAtEvent := alg.eventDataRec.waitAtDecodeDone; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "DecodeDone", OEDispatcher, zumeArgRec); END; END DecodeDone; PROCEDUREStartReconstruct ( initiator: Algorithm.T; lastchars: TEXT; rowIndex: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(StartReconstructArgs , lastchars := lastchars , rowIndex := rowIndex ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfStartReconstruct); alg.stopAtEvent := alg.eventDataRec.stopAtStartReconstruct; alg.waitAtEvent := alg.eventDataRec.waitAtStartReconstruct; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "StartReconstruct", OEDispatcher, zumeArgRec); END; END StartReconstruct; PROCEDUREFirstChars ( initiator: Algorithm.T; t: TEXT ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(FirstCharsArgs , t := t ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfFirstChars); alg.stopAtEvent := alg.eventDataRec.stopAtFirstChars; alg.waitAtEvent := alg.eventDataRec.waitAtFirstChars; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "FirstChars", OEDispatcher, zumeArgRec); END; END FirstChars; PROCEDUREConsiderChar ( initiator: Algorithm.T; i: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(ConsiderCharArgs , i := i ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfConsiderChar); alg.stopAtEvent := alg.eventDataRec.stopAtConsiderChar; alg.waitAtEvent := alg.eventDataRec.waitAtConsiderChar; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "ConsiderChar", OEDispatcher, zumeArgRec); END; END ConsiderChar; PROCEDUREEqualChars ( initiator: Algorithm.T; i, j: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(EqualCharsArgs , i := i , j := j ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfEqualChars); alg.stopAtEvent := alg.eventDataRec.stopAtEqualChars; alg.waitAtEvent := alg.eventDataRec.waitAtEqualChars; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "EqualChars", OEDispatcher, zumeArgRec); END; END EqualChars; PROCEDUREFinishCharRun ( initiator: Algorithm.T; ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(FinishCharRunArgs ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfFinishCharRun); alg.stopAtEvent := alg.eventDataRec.stopAtFinishCharRun; alg.waitAtEvent := alg.eventDataRec.waitAtFinishCharRun; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "FinishCharRun", OEDispatcher, zumeArgRec); END; END FinishCharRun; PROCEDUREStartResult ( initiator: Algorithm.T; ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(StartResultArgs ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfStartResult); alg.stopAtEvent := alg.eventDataRec.stopAtStartResult; alg.waitAtEvent := alg.eventDataRec.waitAtStartResult; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "StartResult", OEDispatcher, zumeArgRec); END; END StartResult; PROCEDUREResultNextChar ( initiator: Algorithm.T; pos, k: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(ResultNextCharArgs , pos := pos , k := k ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfResultNextChar); alg.stopAtEvent := alg.eventDataRec.stopAtResultNextChar; alg.waitAtEvent := alg.eventDataRec.waitAtResultNextChar; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "ResultNextChar", OEDispatcher, zumeArgRec); END; END ResultNextChar; PROCEDUREEndResult ( initiator: Algorithm.T; ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(EndResultArgs ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfEndResult); alg.stopAtEvent := alg.eventDataRec.stopAtEndResult; alg.waitAtEvent := alg.eventDataRec.waitAtEndResult; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "EndResult", OEDispatcher, zumeArgRec); END; END EndResult; PROCEDUREReveal ( initiator: Algorithm.T; i: INTEGER ) RAISES {Thread.Alerted} = <* LL = {} *> VAR zumeArgRec := NEW(RevealArgs , i := i ); alg := NARROW(initiator, WheelerAlgClass.T); BEGIN LOCK alg.evtMu DO INC(alg.eventDataRec.ctOfReveal); alg.stopAtEvent := alg.eventDataRec.stopAtReveal; alg.waitAtEvent := alg.eventDataRec.waitAtReveal; Zeus.Dispatch(initiator, Zeus.EventStyle.Output, 1, "Reveal", OEDispatcher, zumeArgRec); END; END Reveal; BEGIN END WheelerIE.