cc7d4ee1654c6f16ef97a482947e0c5432f6f61f
[IRC.git] / Robust / src / Analysis / SSJava / FlowNode.java
1 package Analysis.SSJava;
2
3 import java.util.Set;
4
5 import IR.Descriptor;
6
7 public class FlowNode {
8
9   // descriptor tuple is a unique identifier of the flow node
10   private NTuple<Descriptor> descTuple;
11
12   // if the infer node represents the base type of field access,
13   // this set contains fields of the base type
14   private Set<FlowNode> fieldNodeSet;
15
16   public FlowNode(Descriptor desc) {
17     this(null, desc);
18   }
19
20   public FlowNode(NTuple<Descriptor> base) {
21     this(base, null);
22   }
23
24   public FlowNode(NTuple<Descriptor> base, Descriptor desc) {
25     descTuple = new NTuple<Descriptor>();
26     if (base != null) {
27       descTuple.addAll(base);
28     }
29     if (desc != null) {
30       descTuple.add(desc);
31     }
32   }
33
34   public NTuple<Descriptor> getDescTuple() {
35     return descTuple;
36   }
37
38   public Descriptor getOwnDescriptor() {
39     return descTuple.get(descTuple.size() - 1);
40   }
41
42   public String toString() {
43     return "[FlowNode]::" + descTuple;
44   }
45
46 }