generate annotated source code again but it's still not the correct one...
[IRC.git] / Robust / src / Analysis / Disjoint / ReachState.java
index f69f603a7fe7b50f83819ced7fe7ab9e486c4ba8..537a44a01647296e6daebadf477fbaf4ac5f4fc5 100644 (file)
@@ -43,11 +43,13 @@ public class ReachState extends Canonical {
     return out;
   }
 
-  public static ReachState factory(ReachTuple rt) {
-    assert rt != null;
-    assert rt.isCanonical();
+  public static ReachState factory(ReachTuple... rts) {
     ReachState out = new ReachState();
-    out.reachTuples.add(rt);
+    for( ReachTuple rt : rts ) {
+      assert rt != null;
+      assert rt.isCanonical();
+      out.reachTuples.add(rt);
+    }
     out = (ReachState) Canonical.makeCanonical(out);
     return out;
   }
@@ -71,7 +73,7 @@ public class ReachState extends Canonical {
   }
 
 
-  public Iterator iterator() {
+  public Iterator<ReachTuple> iterator() {
     return reachTuples.iterator();
   }
 
@@ -100,7 +102,7 @@ public class ReachState extends Canonical {
       if( hrnID.equals(rt.getHrnID() ) &&
           isOutOfContext == rt.isOutOfContext()
           ) {
-       return rt;
+        return rt;
       }
     }
 
@@ -135,6 +137,11 @@ public class ReachState extends Canonical {
   }
 
 
+  public int hashCodeNoPreds() {
+    return reachTuples.hashCode();
+  }
+
+
   public boolean equalsIgnorePreds(Object o) {
     if( o == null ) {
       return false;
@@ -159,4 +166,16 @@ public class ReachState extends Canonical {
   public String toStringPreds() {
     return reachTuples+":"+preds;
   }
+
+  public String toString( boolean hidePreds ) {
+    if( hidePreds ) {
+      return toString();
+    }
+    return toStringPreds();
+  }
+
+
+  public long numNonzeroTuples() {
+    return reachTuples.size();
+  }
 }