From 38176163d5af3354fb86350111179146235ed98c Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Wed, 8 Jul 2015 14:23:29 +0200 Subject: [PATCH] =?UTF-8?q?.log-Dateien=20zu=20gitignore=20hinzuf=C3=BCgen?= =?UTF-8?q?.=20Filter=20in=20Unify=20verbessern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../typeinference/unify/Unify.java | 39 +++++++++++-------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 10266eb8..98b5964b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ CVS bin *.class +*.log # Mobile Tools for Java (J2ME) .mtj.tmp/ diff --git a/src/de/dhbwstuttgart/typeinference/unify/Unify.java b/src/de/dhbwstuttgart/typeinference/unify/Unify.java index 4a4dd4fa..bd10be77 100755 --- a/src/de/dhbwstuttgart/typeinference/unify/Unify.java +++ b/src/de/dhbwstuttgart/typeinference/unify/Unify.java @@ -665,29 +665,34 @@ public class Unify if(filter){ Cloner cloner = new Cloner(); - Menge>> temp = new Menge<>(); + Menge>> temp = new Menge<>(); //hier werden gefilterte Constraints gesammelt Menge undMenge = new Menge(); //Die Menge von Pairs, welche in jedem Kartesischen Produkt enthalten sind. undMenge.addAll(cloner.deepClone(Eq1)); - for (Menge> vecvecpair : cartProduktSets){ - Menge> temp2 = new Menge<>(); + Menge>> oderConstraints = new Menge<>();//Die zu filternden Constraints + for (Menge> vecvecpair : cartProduktSets){ if(vecvecpair.size() == 1){//gibt es nur eine UndMenge in diesem Set, dann kommt diese in jedem Karthesischen Produkt vor: undMenge.addAll(cloner.deepClone(vecvecpair.firstElement())); - temp2 = vecvecpair; + temp.add(vecvecpair); }else{//gibt es mehrere Mengen, kann gefiltert werden: - for(Menge pairs : vecvecpair){ - Menge testMenge = new Menge(); - testMenge.addAll(cloner.deepClone(undMenge)); - testMenge.addAll(cloner.deepClone(pairs)); - Menge> test = Unify.unifyFiltered(testMenge, fc_tto, false); - if(test.size()>0){ - temp2.add(pairs); - } - else{ - log.debug("Ausgesondertes Constraint: "+pairs); - } - } + oderConstraints.add(vecvecpair); //die Menge zu den zu filternden OderConstraints anfügen } - temp.add(temp2); + } + //Filtere die OderConstraints: + for(Menge> oderConstraint : oderConstraints){ + Menge> filteredOCons = new Menge<>(); //diese Menge sammelt nur Cons + for(Menge pairs : oderConstraint){ + Menge testMenge = new Menge(); + testMenge.addAll(cloner.deepClone(undMenge)); + testMenge.addAll(cloner.deepClone(pairs)); + Menge> test = Unify.unifyFiltered(testMenge, fc_tto, false); + if(test.size()>0){ + filteredOCons.add(pairs); + } + else{ + log.debug("Ausgesondertes Constraint: "+pairs); + } + } + temp.add(filteredOCons); } SetView>> difference = Sets.difference(cartProduktSets, temp); log.debug("Ausgelöschte Constraints: "+difference.toString());