Binary Configurations Next: Event Declarations Up: Event ConfigurationsPrevious: Unary Configurations

Binary Configurations

Binary configurations are conjunctions (and) or disjunctions(or) of configurations. The BinaryConfig  abstract class has twoConfig fields c1 and c2.

abstract class BinaryConfig extends Config
{

  protected Config c1,c2;

  public boolean equals(Config config){
    return  super.equals(config) &&

            c1.equals (((BinaryConfig)config).c1) &&
            c2.equals(((BinaryConfig)config).c2);
  }
}

A conjunction of the class AndConfig  is fixed as soon as one component is fixed and evaluates to false: the other one does not need to be also fixed. Otherwise, the conjunction is fixed when both components are. Evaluation returns the ``and'' of the two components.

public class AndConfig extends BinaryConfig 
{

  public AndConfig(Config c1, Config c2)
  {

    this.c1 = c1;
    this.c2 = c2;
  }

  public String toString(){ 

     return "(" + c1 + " and " + c2 + ")"; 
  }

  public boolean fixed(Machine machine) 
  { 

    boolean b1 = c1.fixed(machine);
    boolean b2 = c2.fixed(machine);

    if (b1 && !c1.evaluate(machine)) return true;
    if (b2 && !c2.evaluate(machine)) return true;

    return b1 && b2; 
  }

  public boolean evaluate(Machine machine){ 

    return c1.evaluate(machine) && c2.evaluate(machine); 
  }
}

We do not present here the class OrConfig  of configurationdisjunction as it is very similar to rhe AndConfig  class.