forked from JavaTX/JavaCompilerCore
83 lines
1.9 KiB
Java
83 lines
1.9 KiB
Java
|
package typinferenz;
|
|||
|
|
|||
|
import java.util.Vector;
|
|||
|
|
|||
|
import mycompiler.mytype.Pair;
|
|||
|
import mycompiler.mytype.RefType;
|
|||
|
import mycompiler.mytype.Type;
|
|||
|
import mycompiler.mytype.TypePlaceholder;
|
|||
|
|
|||
|
public class OderConstraint{
|
|||
|
private Vector<UndConstraint> oderConstraintPairs;
|
|||
|
|
|||
|
/**
|
|||
|
* Erstellt ein neues Oder Constraint und f<EFBFBD>gt bereits ein Constraint hinzu.
|
|||
|
* @param p1
|
|||
|
* @param p2
|
|||
|
*/
|
|||
|
public OderConstraint(Type p1, Type p2){
|
|||
|
Pair constraintPair = new Pair(p1,p2);
|
|||
|
oderConstraintPairs = new Vector<UndConstraint>();
|
|||
|
this.addConstraint(constraintPair);
|
|||
|
}
|
|||
|
|
|||
|
public OderConstraint(){
|
|||
|
oderConstraintPairs = new Vector<UndConstraint>();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Liefert alle in diesem OderConstraint enthaltene Constraints. Dabei gehen die Verkn<EFBFBD>pfungen (Oder/Und) verloren.
|
|||
|
* @return
|
|||
|
*/
|
|||
|
public Vector<Pair> getConstraintPairs(){
|
|||
|
Vector<Pair> ret = new Vector<Pair>();
|
|||
|
for(UndConstraint oC : this.oderConstraintPairs){
|
|||
|
ret.addAll(oC.getConstraintPairs());
|
|||
|
}
|
|||
|
return ret;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* F<EFBFBD>gt ein Pair(p1, p2) dem Constraint hinzu
|
|||
|
* @param p1
|
|||
|
* @param p2
|
|||
|
*/
|
|||
|
public void addConstraint(Type p1, Type p2){
|
|||
|
addConstraint(new Pair(p1,p2));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Falls die Type des toAdd-Pairs nicht vom Typ RefType bzw. TypePlaceholder sind, so werden sie in einen RefType umgewandelt.
|
|||
|
* @param toAdd
|
|||
|
*/
|
|||
|
public void addConstraint(Pair toAdd){
|
|||
|
oderConstraintPairs.add(new SingleConstraint(toAdd.TA1, toAdd.TA2));
|
|||
|
}
|
|||
|
|
|||
|
@Override
|
|||
|
public String toString(){
|
|||
|
String ret = "[";
|
|||
|
for(Pair p : this.getConstraintPairs()){
|
|||
|
ret += p.toString()+ ", ";
|
|||
|
}
|
|||
|
return ret+"]";
|
|||
|
}
|
|||
|
|
|||
|
public Vector<UndConstraint> getUndConstraints() {
|
|||
|
return this.oderConstraintPairs;
|
|||
|
/*
|
|||
|
Vector<UndConstraint> ret = new Vector<UndConstraint>();
|
|||
|
for(Pair p : this.getConstraintPairs()){
|
|||
|
ret.add(new UndConstraint(p.TA1,p.TA2));
|
|||
|
}
|
|||
|
return ret;
|
|||
|
*/
|
|||
|
}
|
|||
|
|
|||
|
public void addConstraint(UndConstraint methodConstraint) {
|
|||
|
oderConstraintPairs.add(methodConstraint);
|
|||
|
}
|
|||
|
|
|||
|
}
|