Changes
[IRC.git] / Robust / src / IR / Tree / MethodInvokeNode.java
1 package IR.Tree;
2 import java.util.Vector;
3 import IR.NameDescriptor;
4
5 public class MethodInvokeNode extends ExpressionNode {
6     NameDescriptor nd;
7     Vector argumentlist;
8     String methodid;
9     ExpressionNode en;
10
11     public MethodInvokeNode(NameDescriptor name) {
12         nd=name;
13         argumentlist=new Vector();
14         methodid=null;
15         en=null;
16     }
17
18     public MethodInvokeNode(String methodid, ExpressionNode exp) {
19         this.methodid=methodid;
20         this.en=exp;
21         nd=null;
22         argumentlist=new Vector();
23     }
24
25     public void addArgument(ExpressionNode en) {
26         argumentlist.add(en);
27     }
28
29     public String printNode(int indent) {
30         String st;
31         if (nd==null) {
32             st=en.printNode(indent)+"."+methodid+"(";
33         } else {
34             st=nd.toString()+"(";
35         }
36         for(int i=0;i<argumentlist.size();i++) {
37             ExpressionNode en=(ExpressionNode)argumentlist.get(i);
38             st+=en.printNode(indent);
39             if ((i+1)!=argumentlist.size())
40                 st+=", ";
41         }
42         return st+")";
43     }
44     public int kind() {
45         return Kind.MethodInvokeNode;
46     }
47 }