JavaPatternMatching/src/typinferenz/ConstraintsSet.java
2013-10-18 13:33:46 +02:00

62 lines
1.5 KiB
Java

package typinferenz;
import java.util.Iterator;
import java.util.Vector;
import mycompiler.mytype.Pair;
import mycompiler.mytypereconstruction.CTriple;
import mycompiler.mytypereconstruction.set.CSet;
import mycompiler.mytypereconstruction.set.CTripleSet;
import mycompiler.mytypereconstruction.set.CVectorSet;
public class ConstraintsSet implements Iterable<OderConstraint>{
private Vector<OderConstraint> constraintsSet;
public ConstraintsSet(){
constraintsSet = new Vector<OderConstraint>();
}
public void add(ConstraintsSet CSet){
for(OderConstraint element : CSet)
add(element);
}
public void add(OderConstraint constraint){
constraintsSet.add(constraint);
}
/**
* Liefert alle Constraint-Variationen
* @return
*/
public Vector<Vector<UndConstraint>> getConstraints(){
Vector<Vector<UndConstraint>> ret = new Vector<Vector<UndConstraint>>();
for(OderConstraint con : constraintsSet){
ret.add(con.getUndConstraints());
}
ret = new KarthesischesProdukt<UndConstraint>().berechneKarthesischesProdukt(ret);
/*Vector<Pair> firstConstraints = new Vector<Pair>();
for(Constraint con : constraintsSet){
firstConstraints.addAll(con.getConstraintPairs());
}
ret.add(firstConstraints);
*/
return ret;
}
@Override
public String toString(){
String ret ="";
for(OderConstraint constraint : this){
ret += constraint.toString()+"\n";
}
return ret;
}
public Iterator<OderConstraint> iterator() {
return constraintsSet.iterator();
}
}