********************************************************************
* NOTE: This file is generated automatically from the event * definition file Subtype.evt. ********************************************************************MODULEFix any FormsVBT errors; don't handle exceptions for them.; <*NOWARN*> IMPORT Rd, ZeusClass, Fmt, Algorithm, Wr, ZeusPanel; <*NOWARN*> IMPORT FormsVBT, AlgSubtype, VBT, Text, ZeusUtil; <* PRAGMA LL *> SubtypeAlgClass <* FATAL FormsVBT.Error, FormsVBT.Unimplemented *> REVEAL T = Public BRANDED OBJECT OVERRIDES <* LL = VBT.mu *> init := SubtypeDefaultInit; snapshot := SubtypeDefaultSnapshot; restore := SubtypeDefaultRestore; updateEventCounts := SubtypeDefaultUpdateCts; END; PROCEDURESubtypeDefaultInit (v: T): Algorithm.T = <* LL = VBT.mu *> PROCEDURE Attach (id: TEXT; proc: FormsVBT.Proc) = BEGIN FormsVBT.AttachProc(v.eventData, id, proc, v); END Attach; BEGIN v.eventData := ZeusPanel.NewForm("SubtypeEventData.fv"); Attach("stopatCodeEvents", SubtypeDoIt); Attach("waitatCodeEvents", SubtypeDoIt); Attach("eventCounts", SubtypeRefreshCts); Attach("stopAtSetup", SubtypeDoIt); Attach("waitAtSetup", SubtypeDoIt); Attach("stopAtBegin", SubtypeDoIt); Attach("waitAtBegin", SubtypeDoIt); Attach("stopAtNewBot", SubtypeDoIt); Attach("waitAtNewBot", SubtypeDoIt); Attach("stopAtNewTop", SubtypeDoIt); Attach("waitAtNewTop", SubtypeDoIt); Attach("stopAtNewFun", SubtypeDoIt); Attach("waitAtNewFun", SubtypeDoIt); Attach("stopAtNewDomRng", SubtypeDoIt); Attach("waitAtNewDomRng", SubtypeDoIt); Attach("stopAtNewLoop", SubtypeDoIt); Attach("waitAtNewLoop", SubtypeDoIt); Attach("stopAtEnter", SubtypeDoIt); Attach("waitAtEnter", SubtypeDoIt); Attach("stopAtExit", SubtypeDoIt); Attach("waitAtExit", SubtypeDoIt); Attach("stopAtSeenOK", SubtypeDoIt); Attach("waitAtSeenOK", SubtypeDoIt); Attach("stopAtNotice", SubtypeDoIt); Attach("waitAtNotice", SubtypeDoIt); Attach("stopAtBotLessAnyOK", SubtypeDoIt); Attach("waitAtBotLessAnyOK", SubtypeDoIt); Attach("stopAtTopLessTopOK", SubtypeDoIt); Attach("waitAtTopLessTopOK", SubtypeDoIt); Attach("stopAtTopLessNonTopKO", SubtypeDoIt); Attach("waitAtTopLessNonTopKO", SubtypeDoIt); Attach("stopAtFunLessBotKO", SubtypeDoIt); Attach("waitAtFunLessBotKO", SubtypeDoIt); Attach("stopAtFunLessTopOK", SubtypeDoIt); Attach("waitAtFunLessTopOK", SubtypeDoIt); Attach("stopAtFunLessFun", SubtypeDoIt); Attach("waitAtFunLessFun", SubtypeDoIt); Attach("stopAtOK", SubtypeDoIt); Attach("waitAtOK", SubtypeDoIt); Attach("stopAtKO", SubtypeDoIt); Attach("waitAtKO", SubtypeDoIt); FromFV (v.eventData, v); (* Get FV and internal data in sync *) RETURN Algorithm.T.init(v); END SubtypeDefaultInit; PROCEDURESubtypeDoIt ( fv : FormsVBT.T; e : TEXT; arg: REFANY; <*UNUSED*> t : VBT.TimeStamp) = <* LL = VBT.mu *> BEGIN IF Text.Equal(e, "stopatCodeEvents") THEN NARROW(arg, T).stopatCodeEvents := FormsVBT.GetBoolean(fv, "stopatCodeEvents"); END; IF Text.Equal(e, "waitatCodeEvents") THEN NARROW(arg, T).waitatCodeEvents := FormsVBT.GetInteger(fv, "waitatCodeEvents"); END; IF Text.Equal(e, "stopAtSetup") THEN NARROW(arg, T).eventDataRec.stopAtSetup := FormsVBT.GetBoolean(fv, "stopAtSetup"); END; IF Text.Equal(e, "waitAtSetup") THEN NARROW(arg, T).eventDataRec.waitAtSetup := FormsVBT.GetInteger(fv, "waitAtSetup"); END; IF Text.Equal(e, "stopAtBegin") THEN NARROW(arg, T).eventDataRec.stopAtBegin := FormsVBT.GetBoolean(fv, "stopAtBegin"); END; IF Text.Equal(e, "waitAtBegin") THEN NARROW(arg, T).eventDataRec.waitAtBegin := FormsVBT.GetInteger(fv, "waitAtBegin"); END; IF Text.Equal(e, "stopAtNewBot") THEN NARROW(arg, T).eventDataRec.stopAtNewBot := FormsVBT.GetBoolean(fv, "stopAtNewBot"); END; IF Text.Equal(e, "waitAtNewBot") THEN NARROW(arg, T).eventDataRec.waitAtNewBot := FormsVBT.GetInteger(fv, "waitAtNewBot"); END; IF Text.Equal(e, "stopAtNewTop") THEN NARROW(arg, T).eventDataRec.stopAtNewTop := FormsVBT.GetBoolean(fv, "stopAtNewTop"); END; IF Text.Equal(e, "waitAtNewTop") THEN NARROW(arg, T).eventDataRec.waitAtNewTop := FormsVBT.GetInteger(fv, "waitAtNewTop"); END; IF Text.Equal(e, "stopAtNewFun") THEN NARROW(arg, T).eventDataRec.stopAtNewFun := FormsVBT.GetBoolean(fv, "stopAtNewFun"); END; IF Text.Equal(e, "waitAtNewFun") THEN NARROW(arg, T).eventDataRec.waitAtNewFun := FormsVBT.GetInteger(fv, "waitAtNewFun"); END; IF Text.Equal(e, "stopAtNewDomRng") THEN NARROW(arg, T).eventDataRec.stopAtNewDomRng := FormsVBT.GetBoolean(fv, "stopAtNewDomRng"); END; IF Text.Equal(e, "waitAtNewDomRng") THEN NARROW(arg, T).eventDataRec.waitAtNewDomRng := FormsVBT.GetInteger(fv, "waitAtNewDomRng"); END; IF Text.Equal(e, "stopAtNewLoop") THEN NARROW(arg, T).eventDataRec.stopAtNewLoop := FormsVBT.GetBoolean(fv, "stopAtNewLoop"); END; IF Text.Equal(e, "waitAtNewLoop") THEN NARROW(arg, T).eventDataRec.waitAtNewLoop := FormsVBT.GetInteger(fv, "waitAtNewLoop"); END; IF Text.Equal(e, "stopAtEnter") THEN NARROW(arg, T).eventDataRec.stopAtEnter := FormsVBT.GetBoolean(fv, "stopAtEnter"); END; IF Text.Equal(e, "waitAtEnter") THEN NARROW(arg, T).eventDataRec.waitAtEnter := FormsVBT.GetInteger(fv, "waitAtEnter"); END; IF Text.Equal(e, "stopAtExit") THEN NARROW(arg, T).eventDataRec.stopAtExit := FormsVBT.GetBoolean(fv, "stopAtExit"); END; IF Text.Equal(e, "waitAtExit") THEN NARROW(arg, T).eventDataRec.waitAtExit := FormsVBT.GetInteger(fv, "waitAtExit"); END; IF Text.Equal(e, "stopAtSeenOK") THEN NARROW(arg, T).eventDataRec.stopAtSeenOK := FormsVBT.GetBoolean(fv, "stopAtSeenOK"); END; IF Text.Equal(e, "waitAtSeenOK") THEN NARROW(arg, T).eventDataRec.waitAtSeenOK := FormsVBT.GetInteger(fv, "waitAtSeenOK"); END; IF Text.Equal(e, "stopAtNotice") THEN NARROW(arg, T).eventDataRec.stopAtNotice := FormsVBT.GetBoolean(fv, "stopAtNotice"); END; IF Text.Equal(e, "waitAtNotice") THEN NARROW(arg, T).eventDataRec.waitAtNotice := FormsVBT.GetInteger(fv, "waitAtNotice"); END; IF Text.Equal(e, "stopAtBotLessAnyOK") THEN NARROW(arg, T).eventDataRec.stopAtBotLessAnyOK := FormsVBT.GetBoolean(fv, "stopAtBotLessAnyOK"); END; IF Text.Equal(e, "waitAtBotLessAnyOK") THEN NARROW(arg, T).eventDataRec.waitAtBotLessAnyOK := FormsVBT.GetInteger(fv, "waitAtBotLessAnyOK"); END; IF Text.Equal(e, "stopAtTopLessTopOK") THEN NARROW(arg, T).eventDataRec.stopAtTopLessTopOK := FormsVBT.GetBoolean(fv, "stopAtTopLessTopOK"); END; IF Text.Equal(e, "waitAtTopLessTopOK") THEN NARROW(arg, T).eventDataRec.waitAtTopLessTopOK := FormsVBT.GetInteger(fv, "waitAtTopLessTopOK"); END; IF Text.Equal(e, "stopAtTopLessNonTopKO") THEN NARROW(arg, T).eventDataRec.stopAtTopLessNonTopKO := FormsVBT.GetBoolean(fv, "stopAtTopLessNonTopKO"); END; IF Text.Equal(e, "waitAtTopLessNonTopKO") THEN NARROW(arg, T).eventDataRec.waitAtTopLessNonTopKO := FormsVBT.GetInteger(fv, "waitAtTopLessNonTopKO"); END; IF Text.Equal(e, "stopAtFunLessBotKO") THEN NARROW(arg, T).eventDataRec.stopAtFunLessBotKO := FormsVBT.GetBoolean(fv, "stopAtFunLessBotKO"); END; IF Text.Equal(e, "waitAtFunLessBotKO") THEN NARROW(arg, T).eventDataRec.waitAtFunLessBotKO := FormsVBT.GetInteger(fv, "waitAtFunLessBotKO"); END; IF Text.Equal(e, "stopAtFunLessTopOK") THEN NARROW(arg, T).eventDataRec.stopAtFunLessTopOK := FormsVBT.GetBoolean(fv, "stopAtFunLessTopOK"); END; IF Text.Equal(e, "waitAtFunLessTopOK") THEN NARROW(arg, T).eventDataRec.waitAtFunLessTopOK := FormsVBT.GetInteger(fv, "waitAtFunLessTopOK"); END; IF Text.Equal(e, "stopAtFunLessFun") THEN NARROW(arg, T).eventDataRec.stopAtFunLessFun := FormsVBT.GetBoolean(fv, "stopAtFunLessFun"); END; IF Text.Equal(e, "waitAtFunLessFun") THEN NARROW(arg, T).eventDataRec.waitAtFunLessFun := FormsVBT.GetInteger(fv, "waitAtFunLessFun"); END; IF Text.Equal(e, "stopAtOK") THEN NARROW(arg, T).eventDataRec.stopAtOK := FormsVBT.GetBoolean(fv, "stopAtOK"); END; IF Text.Equal(e, "waitAtOK") THEN NARROW(arg, T).eventDataRec.waitAtOK := FormsVBT.GetInteger(fv, "waitAtOK"); END; IF Text.Equal(e, "stopAtKO") THEN NARROW(arg, T).eventDataRec.stopAtKO := FormsVBT.GetBoolean(fv, "stopAtKO"); END; IF Text.Equal(e, "waitAtKO") THEN NARROW(arg, T).eventDataRec.waitAtKO := FormsVBT.GetInteger(fv, "waitAtKO"); END; END SubtypeDoIt; PROCEDURESubtypeRefreshCts ( <*UNUSED*> fv : FormsVBT.T; <*UNUSED*> e : TEXT; arg : REFANY; <*UNUSED*> t : VBT.TimeStamp) = <* LL = VBT.mu *> BEGIN NARROW(arg, T).updateEventCounts(FALSE); END SubtypeRefreshCts; PROCEDUREFromFV (fv : FormsVBT.T; alg: T) = <* LL = VBT.mu *> BEGIN alg.stopatCodeEvents := FormsVBT.GetBoolean(fv, "stopatCodeEvents"); alg.waitatCodeEvents := FormsVBT.GetInteger(fv, "waitatCodeEvents"); alg.eventDataRec.stopAtSetup := FormsVBT.GetBoolean(fv, "stopAtSetup"); alg.eventDataRec.waitAtSetup := FormsVBT.GetInteger(fv, "waitAtSetup"); alg.eventDataRec.stopAtBegin := FormsVBT.GetBoolean(fv, "stopAtBegin"); alg.eventDataRec.waitAtBegin := FormsVBT.GetInteger(fv, "waitAtBegin"); alg.eventDataRec.stopAtNewBot := FormsVBT.GetBoolean(fv, "stopAtNewBot"); alg.eventDataRec.waitAtNewBot := FormsVBT.GetInteger(fv, "waitAtNewBot"); alg.eventDataRec.stopAtNewTop := FormsVBT.GetBoolean(fv, "stopAtNewTop"); alg.eventDataRec.waitAtNewTop := FormsVBT.GetInteger(fv, "waitAtNewTop"); alg.eventDataRec.stopAtNewFun := FormsVBT.GetBoolean(fv, "stopAtNewFun"); alg.eventDataRec.waitAtNewFun := FormsVBT.GetInteger(fv, "waitAtNewFun"); alg.eventDataRec.stopAtNewDomRng := FormsVBT.GetBoolean(fv, "stopAtNewDomRng"); alg.eventDataRec.waitAtNewDomRng := FormsVBT.GetInteger(fv, "waitAtNewDomRng"); alg.eventDataRec.stopAtNewLoop := FormsVBT.GetBoolean(fv, "stopAtNewLoop"); alg.eventDataRec.waitAtNewLoop := FormsVBT.GetInteger(fv, "waitAtNewLoop"); alg.eventDataRec.stopAtEnter := FormsVBT.GetBoolean(fv, "stopAtEnter"); alg.eventDataRec.waitAtEnter := FormsVBT.GetInteger(fv, "waitAtEnter"); alg.eventDataRec.stopAtExit := FormsVBT.GetBoolean(fv, "stopAtExit"); alg.eventDataRec.waitAtExit := FormsVBT.GetInteger(fv, "waitAtExit"); alg.eventDataRec.stopAtSeenOK := FormsVBT.GetBoolean(fv, "stopAtSeenOK"); alg.eventDataRec.waitAtSeenOK := FormsVBT.GetInteger(fv, "waitAtSeenOK"); alg.eventDataRec.stopAtNotice := FormsVBT.GetBoolean(fv, "stopAtNotice"); alg.eventDataRec.waitAtNotice := FormsVBT.GetInteger(fv, "waitAtNotice"); alg.eventDataRec.stopAtBotLessAnyOK := FormsVBT.GetBoolean(fv, "stopAtBotLessAnyOK"); alg.eventDataRec.waitAtBotLessAnyOK := FormsVBT.GetInteger(fv, "waitAtBotLessAnyOK"); alg.eventDataRec.stopAtTopLessTopOK := FormsVBT.GetBoolean(fv, "stopAtTopLessTopOK"); alg.eventDataRec.waitAtTopLessTopOK := FormsVBT.GetInteger(fv, "waitAtTopLessTopOK"); alg.eventDataRec.stopAtTopLessNonTopKO := FormsVBT.GetBoolean(fv, "stopAtTopLessNonTopKO"); alg.eventDataRec.waitAtTopLessNonTopKO := FormsVBT.GetInteger(fv, "waitAtTopLessNonTopKO"); alg.eventDataRec.stopAtFunLessBotKO := FormsVBT.GetBoolean(fv, "stopAtFunLessBotKO"); alg.eventDataRec.waitAtFunLessBotKO := FormsVBT.GetInteger(fv, "waitAtFunLessBotKO"); alg.eventDataRec.stopAtFunLessTopOK := FormsVBT.GetBoolean(fv, "stopAtFunLessTopOK"); alg.eventDataRec.waitAtFunLessTopOK := FormsVBT.GetInteger(fv, "waitAtFunLessTopOK"); alg.eventDataRec.stopAtFunLessFun := FormsVBT.GetBoolean(fv, "stopAtFunLessFun"); alg.eventDataRec.waitAtFunLessFun := FormsVBT.GetInteger(fv, "waitAtFunLessFun"); alg.eventDataRec.stopAtOK := FormsVBT.GetBoolean(fv, "stopAtOK"); alg.eventDataRec.waitAtOK := FormsVBT.GetInteger(fv, "waitAtOK"); alg.eventDataRec.stopAtKO := FormsVBT.GetBoolean(fv, "stopAtKO"); alg.eventDataRec.waitAtKO := FormsVBT.GetInteger(fv, "waitAtKO"); END FromFV; <*UNUSED*> PROCEDUREToFV (fv : FormsVBT.T; alg: T) = <* LL = VBT.mu *> BEGIN FormsVBT.PutBoolean(fv, "stopatCodeEvents", alg.stopatCodeEvents); FormsVBT.PutInteger(fv, "waitatCodeEvents", alg.waitatCodeEvents); FormsVBT.PutBoolean(fv, "stopAtSetup", alg.eventDataRec.stopAtSetup); FormsVBT.PutInteger(fv, "waitAtSetup", alg.eventDataRec.waitAtSetup); FormsVBT.PutBoolean(fv, "stopAtBegin", alg.eventDataRec.stopAtBegin); FormsVBT.PutInteger(fv, "waitAtBegin", alg.eventDataRec.waitAtBegin); FormsVBT.PutBoolean(fv, "stopAtNewBot", alg.eventDataRec.stopAtNewBot); FormsVBT.PutInteger(fv, "waitAtNewBot", alg.eventDataRec.waitAtNewBot); FormsVBT.PutBoolean(fv, "stopAtNewTop", alg.eventDataRec.stopAtNewTop); FormsVBT.PutInteger(fv, "waitAtNewTop", alg.eventDataRec.waitAtNewTop); FormsVBT.PutBoolean(fv, "stopAtNewFun", alg.eventDataRec.stopAtNewFun); FormsVBT.PutInteger(fv, "waitAtNewFun", alg.eventDataRec.waitAtNewFun); FormsVBT.PutBoolean(fv, "stopAtNewDomRng", alg.eventDataRec.stopAtNewDomRng); FormsVBT.PutInteger(fv, "waitAtNewDomRng", alg.eventDataRec.waitAtNewDomRng); FormsVBT.PutBoolean(fv, "stopAtNewLoop", alg.eventDataRec.stopAtNewLoop); FormsVBT.PutInteger(fv, "waitAtNewLoop", alg.eventDataRec.waitAtNewLoop); FormsVBT.PutBoolean(fv, "stopAtEnter", alg.eventDataRec.stopAtEnter); FormsVBT.PutInteger(fv, "waitAtEnter", alg.eventDataRec.waitAtEnter); FormsVBT.PutBoolean(fv, "stopAtExit", alg.eventDataRec.stopAtExit); FormsVBT.PutInteger(fv, "waitAtExit", alg.eventDataRec.waitAtExit); FormsVBT.PutBoolean(fv, "stopAtSeenOK", alg.eventDataRec.stopAtSeenOK); FormsVBT.PutInteger(fv, "waitAtSeenOK", alg.eventDataRec.waitAtSeenOK); FormsVBT.PutBoolean(fv, "stopAtNotice", alg.eventDataRec.stopAtNotice); FormsVBT.PutInteger(fv, "waitAtNotice", alg.eventDataRec.waitAtNotice); FormsVBT.PutBoolean(fv, "stopAtBotLessAnyOK", alg.eventDataRec.stopAtBotLessAnyOK); FormsVBT.PutInteger(fv, "waitAtBotLessAnyOK", alg.eventDataRec.waitAtBotLessAnyOK); FormsVBT.PutBoolean(fv, "stopAtTopLessTopOK", alg.eventDataRec.stopAtTopLessTopOK); FormsVBT.PutInteger(fv, "waitAtTopLessTopOK", alg.eventDataRec.waitAtTopLessTopOK); FormsVBT.PutBoolean(fv, "stopAtTopLessNonTopKO", alg.eventDataRec.stopAtTopLessNonTopKO); FormsVBT.PutInteger(fv, "waitAtTopLessNonTopKO", alg.eventDataRec.waitAtTopLessNonTopKO); FormsVBT.PutBoolean(fv, "stopAtFunLessBotKO", alg.eventDataRec.stopAtFunLessBotKO); FormsVBT.PutInteger(fv, "waitAtFunLessBotKO", alg.eventDataRec.waitAtFunLessBotKO); FormsVBT.PutBoolean(fv, "stopAtFunLessTopOK", alg.eventDataRec.stopAtFunLessTopOK); FormsVBT.PutInteger(fv, "waitAtFunLessTopOK", alg.eventDataRec.waitAtFunLessTopOK); FormsVBT.PutBoolean(fv, "stopAtFunLessFun", alg.eventDataRec.stopAtFunLessFun); FormsVBT.PutInteger(fv, "waitAtFunLessFun", alg.eventDataRec.waitAtFunLessFun); FormsVBT.PutBoolean(fv, "stopAtOK", alg.eventDataRec.stopAtOK); FormsVBT.PutInteger(fv, "waitAtOK", alg.eventDataRec.waitAtOK); FormsVBT.PutBoolean(fv, "stopAtKO", alg.eventDataRec.stopAtKO); FormsVBT.PutInteger(fv, "waitAtKO", alg.eventDataRec.waitAtKO); CountsToFV (fv, alg); END ToFV; PROCEDURECountsToFV (fv : FormsVBT.T; alg: T) = <* LL = VBT.mu *> BEGIN FormsVBT.PutText(fv, "ctOfSetup", Fmt.Int(alg.eventDataRec.ctOfSetup)); FormsVBT.PutText(fv, "ctOfBegin", Fmt.Int(alg.eventDataRec.ctOfBegin)); FormsVBT.PutText(fv, "ctOfNewBot", Fmt.Int(alg.eventDataRec.ctOfNewBot)); FormsVBT.PutText(fv, "ctOfNewTop", Fmt.Int(alg.eventDataRec.ctOfNewTop)); FormsVBT.PutText(fv, "ctOfNewFun", Fmt.Int(alg.eventDataRec.ctOfNewFun)); FormsVBT.PutText(fv, "ctOfNewDomRng", Fmt.Int(alg.eventDataRec.ctOfNewDomRng)); FormsVBT.PutText(fv, "ctOfNewLoop", Fmt.Int(alg.eventDataRec.ctOfNewLoop)); FormsVBT.PutText(fv, "ctOfEnter", Fmt.Int(alg.eventDataRec.ctOfEnter)); FormsVBT.PutText(fv, "ctOfExit", Fmt.Int(alg.eventDataRec.ctOfExit)); FormsVBT.PutText(fv, "ctOfSeenOK", Fmt.Int(alg.eventDataRec.ctOfSeenOK)); FormsVBT.PutText(fv, "ctOfNotice", Fmt.Int(alg.eventDataRec.ctOfNotice)); FormsVBT.PutText(fv, "ctOfBotLessAnyOK", Fmt.Int(alg.eventDataRec.ctOfBotLessAnyOK)); FormsVBT.PutText(fv, "ctOfTopLessTopOK", Fmt.Int(alg.eventDataRec.ctOfTopLessTopOK)); FormsVBT.PutText(fv, "ctOfTopLessNonTopKO", Fmt.Int(alg.eventDataRec.ctOfTopLessNonTopKO)); FormsVBT.PutText(fv, "ctOfFunLessBotKO", Fmt.Int(alg.eventDataRec.ctOfFunLessBotKO)); FormsVBT.PutText(fv, "ctOfFunLessTopOK", Fmt.Int(alg.eventDataRec.ctOfFunLessTopOK)); FormsVBT.PutText(fv, "ctOfFunLessFun", Fmt.Int(alg.eventDataRec.ctOfFunLessFun)); FormsVBT.PutText(fv, "ctOfOK", Fmt.Int(alg.eventDataRec.ctOfOK)); FormsVBT.PutText(fv, "ctOfKO", Fmt.Int(alg.eventDataRec.ctOfKO)); END CountsToFV; PROCEDURESubtypeDefaultUpdateCts ( v: T; reset: BOOLEAN) = <* LL = VBT.mu *> BEGIN IF reset THEN v.eventDataRec.ctOfSetup := 0; v.eventDataRec.ctOfBegin := 0; v.eventDataRec.ctOfNewBot := 0; v.eventDataRec.ctOfNewTop := 0; v.eventDataRec.ctOfNewFun := 0; v.eventDataRec.ctOfNewDomRng := 0; v.eventDataRec.ctOfNewLoop := 0; v.eventDataRec.ctOfEnter := 0; v.eventDataRec.ctOfExit := 0; v.eventDataRec.ctOfSeenOK := 0; v.eventDataRec.ctOfNotice := 0; v.eventDataRec.ctOfBotLessAnyOK := 0; v.eventDataRec.ctOfTopLessTopOK := 0; v.eventDataRec.ctOfTopLessNonTopKO := 0; v.eventDataRec.ctOfFunLessBotKO := 0; v.eventDataRec.ctOfFunLessTopOK := 0; v.eventDataRec.ctOfFunLessFun := 0; v.eventDataRec.ctOfOK := 0; v.eventDataRec.ctOfKO := 0; END; CountsToFV (v.eventData, v); END SubtypeDefaultUpdateCts; PROCEDURESubtypeDefaultSnapshot (v: T; wr: Wr.T) RAISES {ZeusClass.Error} = <* LL = VBT.mu *> BEGIN TRY Wr.PutChar(wr, '(') EXCEPT ELSE RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultSnapshot write error"); END; IF v.eventData = NIL THEN RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultSnapshot: " & "eventData not set!"); END; TRY v.eventData.snapshot(wr) EXCEPT FormsVBT.Error (msg) => RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultSnapshot FV error: " & msg); ELSE RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultSnapshot error"); END; Algorithm.T.snapshot(v, wr); TRY Wr.PutChar(wr, ')') EXCEPT ELSE RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultSnapshot write error"); END; END SubtypeDefaultSnapshot; PROCEDURESubtypeDefaultRestore (v: T; rd: Rd.T) RAISES {ZeusClass.Error} = <* LL = VBT.mu *> BEGIN IF rd = NIL THEN RETURN END; IF NOT ZeusUtil.EatChar(rd, '(') THEN RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultRestore read error"); END; IF v.eventData = NIL THEN RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultRestore: " & "eventData not set!"); END; TRY v.eventData.restore(rd); v.updateEventCounts(FALSE); FromFV(v.eventData, v); EXCEPT ELSE RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultRestore error"); END; Algorithm.T.restore(v, rd); IF NOT ZeusUtil.EatChar(rd, ')') THEN RAISE ZeusClass.Error( "SubtypeAlgClass.SubtypeDefaultRestore read error"); END; END SubtypeDefaultRestore; BEGIN END SubtypeAlgClass.