changes on the composite location generation (but still it doesn't work) & found...
[IRC.git] / Robust / src / Analysis / SSJava / NodeTupleSet.java
1 package Analysis.SSJava;
2
3 import java.util.ArrayList;
4 import java.util.HashSet;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.Set;
8
9 import IR.Descriptor;
10
11 public class NodeTupleSet {
12
13   private ArrayList<NTuple<Descriptor>> list;
14
15   private ArrayList<NTuple<Location>> globalLocTupleList;
16
17   public NodeTupleSet() {
18     list = new ArrayList<NTuple<Descriptor>>();
19     globalLocTupleList = new ArrayList<NTuple<Location>>();
20   }
21
22   public void addTuple(NTuple<Descriptor> tuple) {
23
24     for (Iterator iterator = list.iterator(); iterator.hasNext();) {
25       NTuple<Descriptor> t = (NTuple<Descriptor>) iterator.next();
26       if (t.equals(tuple)) {
27         return;
28       }
29     }
30
31     list.add(tuple);
32   }
33
34   public void addGlobalFlowTuple(NTuple<Location> tuple) {
35     globalLocTupleList.add(tuple);
36   }
37
38   public Iterator<NTuple<Location>> globalIterator() {
39     return globalLocTupleList.iterator();
40   }
41
42   public void removeTuple(NTuple<Descriptor> tuple) {
43     list.remove(tuple);
44   }
45
46   public Iterator<NTuple<Descriptor>> iterator() {
47     return list.iterator();
48   }
49
50   public String toString() {
51     String str = list.toString();
52
53     if (globalLocTupleList.size() > 0) {
54       str += " GlobalFlow=" + globalLocTupleList.toString();
55     }
56
57     return str;
58   }
59
60   public Set<NTuple<Descriptor>> getSet() {
61     Set<NTuple<Descriptor>> set = new HashSet<NTuple<Descriptor>>();
62     set.addAll(list);
63     return set;
64   }
65
66   public void addTupleSet(NodeTupleSet in) {
67     if (in != null) {
68       for (Iterator iterator = in.iterator(); iterator.hasNext();) {
69         NTuple<Descriptor> inTuple = (NTuple<Descriptor>) iterator.next();
70         addTuple(inTuple);
71       }
72     }
73   }
74
75   public int size() {
76     return list.size();
77   }
78
79   public void clear() {
80     list.clear();
81   }
82
83   public int globalLocTupleSize() {
84     return globalLocTupleList.size();
85   }
86
87   private void setGlobalLocTupleList(ArrayList<NTuple<Location>> in) {
88     globalLocTupleList = in;
89   }
90
91   private void setDescTupleList(ArrayList<NTuple<Descriptor>> in) {
92     list = in;
93   }
94
95   public NodeTupleSet clone() {
96     NodeTupleSet set = new NodeTupleSet();
97     set.setDescTupleList((ArrayList<NTuple<Descriptor>>) list.clone());
98     set.setGlobalLocTupleList((ArrayList<NTuple<Location>>) globalLocTupleList.clone());
99     return set;
100   }
101 }