changes + bring up uncommited previous changes.
[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   private NTuple<Descriptor> baseDescTuple;
18
19   public NodeTupleSet() {
20     list = new ArrayList<NTuple<Descriptor>>();
21     globalLocTupleList = new ArrayList<NTuple<Location>>();
22   }
23
24   public void addTuple(NTuple<Descriptor> tuple) {
25
26     for (Iterator iterator = list.iterator(); iterator.hasNext();) {
27       NTuple<Descriptor> t = (NTuple<Descriptor>) iterator.next();
28       if (t.equals(tuple)) {
29         return;
30       }
31     }
32
33     list.add(tuple);
34   }
35
36   public void setMethodInvokeBaseDescTuple(NTuple<Descriptor> in) {
37     baseDescTuple = in;
38   }
39
40   public NTuple<Descriptor> getBaseDesc() {
41     return baseDescTuple;
42   }
43
44   public void addGlobalFlowTuple(NTuple<Location> tuple) {
45     globalLocTupleList.add(tuple);
46   }
47
48   public void addGlobalFlowTupleSet(ArrayList<NTuple<Location>> in) {
49     globalLocTupleList.addAll(in);
50   }
51
52   public Iterator<NTuple<Location>> globalIterator() {
53     return globalLocTupleList.iterator();
54   }
55
56   public void removeTuple(NTuple<Descriptor> tuple) {
57     list.remove(tuple);
58   }
59
60   public Iterator<NTuple<Descriptor>> iterator() {
61     return list.iterator();
62   }
63
64   public String toString() {
65     String str = list.toString();
66
67     if (globalLocTupleList.size() > 0) {
68       str += " GlobalFlow=" + globalLocTupleList.toString();
69     }
70
71     return str;
72   }
73
74   public Set<NTuple<Descriptor>> getSet() {
75     Set<NTuple<Descriptor>> set = new HashSet<NTuple<Descriptor>>();
76     set.addAll(list);
77     return set;
78   }
79
80   public void addTupleSet(NodeTupleSet in) {
81     if (in != null) {
82       for (Iterator iterator = in.iterator(); iterator.hasNext();) {
83         NTuple<Descriptor> inTuple = (NTuple<Descriptor>) iterator.next();
84         addTuple(inTuple);
85       }
86     }
87   }
88
89   public int size() {
90     return list.size();
91   }
92
93   public void clear() {
94     list.clear();
95   }
96
97   public int globalLocTupleSize() {
98     return globalLocTupleList.size();
99   }
100
101   private void setGlobalLocTupleList(ArrayList<NTuple<Location>> in) {
102     globalLocTupleList = in;
103   }
104
105   public ArrayList<NTuple<Location>> getGlobalLocTupleSet() {
106     return globalLocTupleList;
107   }
108
109   private void setDescTupleList(ArrayList<NTuple<Descriptor>> in) {
110     list = in;
111   }
112
113   public NodeTupleSet clone() {
114     NodeTupleSet set = new NodeTupleSet();
115     set.setDescTupleList((ArrayList<NTuple<Descriptor>>) list.clone());
116     set.setGlobalLocTupleList((ArrayList<NTuple<Location>>) globalLocTupleList.clone());
117     return set;
118   }
119 }