changes.
[IRC.git] / Robust / src / Analysis / SSJava / FlowNode.java
index 21a2e089be9da54397dd6729c0b5fec0431d513c..7aea5dea6812128b80c1cf06f7d10ffaf4607ba7 100644 (file)
@@ -5,6 +5,8 @@ import java.util.Iterator;
 import java.util.Set;
 
 import IR.Descriptor;
+import IR.FieldDescriptor;
+import IR.VarDescriptor;
 
 public class FlowNode {
 
@@ -18,6 +20,21 @@ public class FlowNode {
   // set true if this node is driven from a paramter
   private boolean isParameter;
 
+  // set true if this node stores a return value
+  private boolean isReturn;
+
+  private boolean isDeclarationNode = false;
+
+  private boolean isIntermediate;
+
+  public boolean isIntermediate() {
+    return isIntermediate;
+  }
+
+  public void setIntermediate(boolean isIntermediate) {
+    this.isIntermediate = isIntermediate;
+  }
+
   public Set<FlowNode> getFieldNodeSet() {
     return fieldNodeSet;
   }
@@ -63,6 +80,24 @@ public class FlowNode {
     return descTuple.get(descTuple.size() - 1);
   }
 
+  public boolean isReturn() {
+    return isReturn;
+  }
+
+  public void setReturn(boolean isReturn) {
+    this.isReturn = isReturn;
+  }
+
+  public boolean isPrimitiveType() {
+    Descriptor desc = descTuple.get(descTuple.size() - 1);
+    if (desc instanceof VarDescriptor) {
+      return ((VarDescriptor) desc).getType().isPrimitive();
+    } else if (desc instanceof FieldDescriptor) {
+      return ((FieldDescriptor) desc).getType().isPrimitive();
+    }
+    return false;
+  }
+
   public String toString() {
     String rtr = "[FlowNode]:";
     if (isParameter()) {
@@ -120,4 +155,12 @@ public class FlowNode {
     id += ">";
     return id;
   }
+
+  public void setDeclarationNode() {
+    isDeclarationNode = true;
+  }
+
+  public boolean isDeclaratonNode() {
+    return isDeclarationNode;
+  }
 }