/**
*
*/
package agg.xt_basis;
import java.util.List;
import java.util.Vector;
import agg.cons.Evaluable;
/**
* @author olga
*
* A shifted PAC (Positive Application Condition) can be created
* during creation a concurrent rule of two arbitrary rules.
* A shifted PAC can contain one or more arbitrary PAC(s).
* In case of more then one PAC a shifted PAC is satisfied
* when at least one of the arbitrary PAC(s) is satisfied.
*/
public class ShiftedPAC implements Evaluable {
final Vector<OrdinaryMorphism> pacs = new Vector<OrdinaryMorphism>();
public ShiftedPAC(final List<OrdinaryMorphism> list) {
this.pacs.addAll(list);
}
public boolean contains(final OrdinaryMorphism pac) {
return this.pacs.contains(pac);
}
/* (non-Javadoc)
* @see agg.cons.Evaluable#eval(java.lang.Object)
*/
public boolean eval(Object o) {
if (o instanceof Match) {
// pacs(0) v pacs(1) v pacs(2) v ....
for (int i=0; i<this.pacs.size(); i++) {
OrdinaryMorphism pac = this.pacs.get(i);
if (!MatchHelper.isDomainOfApplCondEmpty((Match) o, pac)) {
if (((Match) o).checkPAC(pac) != null) {
return true;
}
}
}
}
return false;
}
/* (non-Javadoc)
* @see agg.cons.Evaluable#eval(java.lang.Object, int)
*/
public boolean eval(Object o, int tick) {
return eval(o);
}
/* (non-Javadoc)
* @see agg.cons.Evaluable#eval(java.lang.Object, boolean)
*/
public boolean eval(Object o, boolean negation) {
return eval(o);
}
/* (non-Javadoc)
* @see agg.cons.Evaluable#eval(java.lang.Object, int, boolean)
*/
public boolean eval(Object o, int tick, boolean negation) {
return eval(o);
}
/* (non-Javadoc)
* @see agg.cons.Evaluable#evalForall(java.lang.Object, int, boolean)
*/
public boolean evalForall(Object o, int tick) {
// TODO Auto-generated method stub
return false;
}
public String getName() {
return "ShiftedPAC";
}
}