zeus/src/AlgorithmClass.i3


 Copyright 1992 Digital Equipment Corporation.           
 Distributed only by permission.                         
 Last modified on Tue Aug 25 14:56:57 PDT 1992 by johnh  
      modified on Tue May 12 08:35:48 1992 by mhb        

INTERFACE AlgorithmClass;

IMPORT Algorithm, FormsVBT;

<*PRAGMA LL*>

TYPE
  T = Algorithm.Public BRANDED OBJECT
        name            : TEXT         := "";
        stopAtEvent     : BOOLEAN      := FALSE;
        waitAtEvent     : CARDINAL     := 1;
        stopatCodeEvents: BOOLEAN      := TRUE;
        waitatCodeEvents: CARDINAL     := 1;
        eventData       : FormsVBT.T;
        evtHandled      : BOOLEAN;
        evtMu           : MUTEX;
      METHODS
        <* LL = VBT.mu *>
        updateEventCounts (reset: BOOLEAN);
      END;
The name field is set by Zeus immediately after an Algorithm.T has been instantiated. Thereafter, the field is read-only. The eventData field is a FormsVBT.T that ZeusPanel inserts into the Session control panel, just like the public data field. The eventData form is used to set the stop/wait information about individual events; the automatically-generated <Foo>AlgClass module creates the form in its init() method and maintains the event data. The stopAtEvent and waitAtEvent fields control whether to stop after the current output event, and how long to wait if you do. These variables are set by #(_ALGNAME_)IE and read by ZeusPanel. (Could be returned by procedure calls, but aren't (for efficiency?).) The evtHandled field is set to FALSE by the default feedback event methods. User-provided event handlers will not see this field, and hence will not set it. The event dispatcher uses this field to decide whether an event was handled by the algorithm. The evtMu MUTEX is locked by the IE output event procs. It prevents output events from occurring simultaneously, and hence protects the view event-handling threads. The updateEventCounts method is called to refresh the displayed counts of output events. If reset = TRUE, all the counts are reset to 0. Whether or not the counts are reset, they are written into the EventData form.

REVEAL Algorithm.T <: T;
END AlgorithmClass.