start of new file
[IRC.git] / Robust / src / IR / Tree / CreateObjectNode.java
index 99b6783bc76d6046be29e289102e70faa6e989d4..5f19aae22d775ffe69eb72550d02963146a6d35b 100644 (file)
@@ -1,28 +1,78 @@
 package IR.Tree;
 import java.util.Vector;
 import IR.TypeDescriptor;
+import IR.MethodDescriptor;
 
 public class CreateObjectNode extends ExpressionNode {
     TypeDescriptor td;
     Vector argumentlist;
+    MethodDescriptor md;
+    FlagEffects fe;
+    boolean isglobal;
 
-    public CreateObjectNode(TypeDescriptor type) {
+    public CreateObjectNode(TypeDescriptor type, boolean isglobal) {
        td=type;
        argumentlist=new Vector();
+       this.isglobal=isglobal;
     }
+
+    public boolean isGlobal() {
+       return isglobal;
+    }
+
+    public void addFlagEffects(FlagEffects fe) {
+       this.fe=fe;
+    }
+
+    public FlagEffects getFlagEffects() {
+       return fe;
+    }
+
     public void addArgument(ExpressionNode en) {
        argumentlist.add(en);
     }
 
+    public void setConstructor(MethodDescriptor md) {
+       this.md=md;
+    }
+
+    public MethodDescriptor getConstructor() {
+       return md;
+    }
+
+    public TypeDescriptor getType() {
+       return td;
+    }
+
+    public int numArgs() {
+       return argumentlist.size();
+    }
+
+    public ExpressionNode getArg(int i) {
+       return (ExpressionNode) argumentlist.get(i);
+    }
+
     public String printNode(int indent) {
-       String st="new "+td.toString()+"(";
+       String st;
+       boolean isarray=td.isArray();
+       if (isarray)
+           st="new "+td.toString()+"[";
+       else
+           st="new "+td.toString()+"(";
        for(int i=0;i<argumentlist.size();i++) {
            ExpressionNode en=(ExpressionNode)argumentlist.get(i);
            st+=en.printNode(indent);
-           if ((i+1)!=argumentlist.size())
-               st+=", ";
+           if ((i+1)!=argumentlist.size()) {
+               if (isarray) 
+                   st+="][";
+               else
+                   st+=", ";
+           }
        }
-       return st+")";
+       if (isarray)
+           return st+"]";
+       else
+           return st+")";
     }
 
     public int kind() {