f614080d71f97ba3a8cb442f1a1aa27cf36d9623
[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 void addGlobalFlowTupleSet(ArrayList<NTuple<Location>> in) {
39     globalLocTupleList.addAll(in);
40   }
41
42   public Iterator<NTuple<Location>> globalIterator() {
43     return globalLocTupleList.iterator();
44   }
45
46   public void removeTuple(NTuple<Descriptor> tuple) {
47     list.remove(tuple);
48   }
49
50   public Iterator<NTuple<Descriptor>> iterator() {
51     return list.iterator();
52   }
53
54   public String toString() {
55     String str = list.toString();
56
57     if (globalLocTupleList.size() > 0) {
58       str += " GlobalFlow=" + globalLocTupleList.toString();
59     }
60
61     return str;
62   }
63
64   public Set<NTuple<Descriptor>> getSet() {
65     Set<NTuple<Descriptor>> set = new HashSet<NTuple<Descriptor>>();
66     set.addAll(list);
67     return set;
68   }
69
70   public void addTupleSet(NodeTupleSet in) {
71     if (in != null) {
72       for (Iterator iterator = in.iterator(); iterator.hasNext();) {
73         NTuple<Descriptor> inTuple = (NTuple<Descriptor>) iterator.next();
74         addTuple(inTuple);
75       }
76     }
77   }
78
79   public int size() {
80     return list.size();
81   }
82
83   public void clear() {
84     list.clear();
85   }
86
87   public int globalLocTupleSize() {
88     return globalLocTupleList.size();
89   }
90
91   private void setGlobalLocTupleList(ArrayList<NTuple<Location>> in) {
92     globalLocTupleList = in;
93   }
94   
95   public ArrayList<NTuple<Location>> getGlobalLocTupleSet() {
96     return globalLocTupleList;
97   }
98
99   private void setDescTupleList(ArrayList<NTuple<Descriptor>> in) {
100     list = in;
101   }
102
103   public NodeTupleSet clone() {
104     NodeTupleSet set = new NodeTupleSet();
105     set.setDescTupleList((ArrayList<NTuple<Descriptor>>) list.clone());
106     set.setGlobalLocTupleList((ArrayList<NTuple<Location>>) globalLocTupleList.clone());
107     return set;
108   }
109 }