changes: generated annotated code but it still causes type errors + re-formatting...
[IRC.git] / Robust / src / Analysis / SSJava / NodeTupleSet.java
index 3040a15ae80d8a2b5389020abcab6cb39fb062da..52384828de15df06bbe46a614b647041a1675a73 100644 (file)
@@ -10,10 +10,15 @@ import IR.Descriptor;
 
 public class NodeTupleSet {
 
-  private List<NTuple<Descriptor>> list;
+  private ArrayList<NTuple<Descriptor>> list;
+
+  private ArrayList<NTuple<Location>> globalLocTupleList;
+
+  private NTuple<Descriptor> baseDescTuple;
 
   public NodeTupleSet() {
     list = new ArrayList<NTuple<Descriptor>>();
+    globalLocTupleList = new ArrayList<NTuple<Location>>();
   }
 
   public void addTuple(NTuple<Descriptor> tuple) {
@@ -28,12 +33,44 @@ public class NodeTupleSet {
     list.add(tuple);
   }
 
+  public void setMethodInvokeBaseDescTuple(NTuple<Descriptor> in) {
+    baseDescTuple = in;
+  }
+
+  public NTuple<Descriptor> getBaseDesc() {
+    return baseDescTuple;
+  }
+
+  public void addGlobalFlowTuple(NTuple<Location> tuple) {
+    System.out.println("-----add global value flow tuple=" + tuple);
+    globalLocTupleList.add(tuple);
+  }
+
+  public void addGlobalFlowTupleSet(ArrayList<NTuple<Location>> in) {
+    System.out.println("-----add global value flow in=" + in);
+    globalLocTupleList.addAll(in);
+  }
+
+  public Iterator<NTuple<Location>> globalIterator() {
+    return globalLocTupleList.iterator();
+  }
+
+  public void removeTuple(NTuple<Descriptor> tuple) {
+    list.remove(tuple);
+  }
+
   public Iterator<NTuple<Descriptor>> iterator() {
     return list.iterator();
   }
 
   public String toString() {
-    return list.toString();
+    String str = list.toString();
+
+    if (globalLocTupleList.size() > 0) {
+      str += " GlobalFlow=" + globalLocTupleList.toString();
+    }
+
+    return str;
   }
 
   public Set<NTuple<Descriptor>> getSet() {
@@ -50,4 +87,35 @@ public class NodeTupleSet {
       }
     }
   }
+
+  public int size() {
+    return list.size();
+  }
+
+  public void clear() {
+    list.clear();
+  }
+
+  public int globalLocTupleSize() {
+    return globalLocTupleList.size();
+  }
+
+  private void setGlobalLocTupleList(ArrayList<NTuple<Location>> in) {
+    globalLocTupleList = in;
+  }
+
+  public ArrayList<NTuple<Location>> getGlobalLocTupleSet() {
+    return globalLocTupleList;
+  }
+
+  private void setDescTupleList(ArrayList<NTuple<Descriptor>> in) {
+    list = in;
+  }
+
+  public NodeTupleSet clone() {
+    NodeTupleSet set = new NodeTupleSet();
+    set.setDescTupleList((ArrayList<NTuple<Descriptor>>) list.clone());
+    set.setGlobalLocTupleList((ArrayList<NTuple<Location>>) globalLocTupleList.clone());
+    return set;
+  }
 }