Control Instruction Next: Waiting for Events Up: Event Based Instructions Previous: Event Generation

Control Instruction

Control  extends UnaryInstruction and controls its body by the presence of an event: the body is run only during the instants where the event is present.

 
public class Control extends UnaryInstruction
implements EventConsts
{
  private String eventName;

  public Control(String eventName,Instruction body){ 
    this.eventName = eventName; 
    this.body = body;
  }

  final public boolean equals(Instruction inst){
    return  super.equals(inst) 
            && eventName.equals(((Control)inst).eventName);
  }

  final public String toString(){ 
    return "control " + body + " by " + eventName; 
  }

  final protected byte activation(Machine machine) 
  { 
    Event event = machine.getEvent(eventName);
    switch(event.presence(machine)){
    case PRESENT: return body.activ(machine);
    case ABSENT:  return STOP;
    default: return SUSP;
    }
  }
}