Checking in code to put flags into createobjectnodes
[IRC.git] / Robust / src / IR / Tree / CreateObjectNode.java
1 package IR.Tree;
2 import java.util.Vector;
3 import IR.TypeDescriptor;
4 import IR.MethodDescriptor;
5
6 public class CreateObjectNode extends ExpressionNode {
7     TypeDescriptor td;
8     Vector argumentlist;
9     MethodDescriptor md;
10     FlagEffects fe;
11
12     public CreateObjectNode(TypeDescriptor type) {
13         td=type;
14         argumentlist=new Vector();
15     }
16
17     public void addFlagEffects(FlagEffects fe) {
18         this.fe=fe;
19     }
20
21     public FlagEffects getFlagEffects() {
22         return fe;
23     }
24
25     public void addArgument(ExpressionNode en) {
26         argumentlist.add(en);
27     }
28
29     public void setConstructor(MethodDescriptor md) {
30         this.md=md;
31     }
32
33     public MethodDescriptor getConstructor() {
34         return md;
35     }
36
37     public TypeDescriptor getType() {
38         return td;
39     }
40
41     public int numArgs() {
42         return argumentlist.size();
43     }
44
45     public ExpressionNode getArg(int i) {
46         return (ExpressionNode) argumentlist.get(i);
47     }
48
49     public String printNode(int indent) {
50         String st;
51         boolean isarray=td.isArray();
52         if (isarray)
53             st="new "+td.toString()+"[";
54         else
55             st="new "+td.toString()+"(";
56         for(int i=0;i<argumentlist.size();i++) {
57             ExpressionNode en=(ExpressionNode)argumentlist.get(i);
58             st+=en.printNode(indent);
59             if ((i+1)!=argumentlist.size()) {
60                 if (isarray) 
61                     st+="][";
62                 else
63                     st+=", ";
64             }
65         }
66         if (isarray)
67             return st+"]";
68         else
69             return st+")";
70     }
71
72     public int kind() {
73         return Kind.CreateObjectNode;
74     }
75 }