checking in changes
[IRC.git] / Robust / src / IR / Tree / MethodInvokeNode.java
1 package IR.Tree;
2 import java.util.Vector;
3 import IR.NameDescriptor;
4 import IR.MethodDescriptor;
5
6 public class MethodInvokeNode extends ExpressionNode {
7     NameDescriptor nd;
8     Vector argumentlist;
9     String methodid;
10     ExpressionNode en;
11     MethodDescriptor md;
12
13     public MethodInvokeNode(NameDescriptor name) {
14         nd=name;
15         argumentlist=new Vector();
16         methodid=null;
17         en=null;
18         md=null;
19     }
20
21     public MethodInvokeNode(String methodid, ExpressionNode exp) {
22         this.methodid=methodid;
23         this.en=exp;
24         nd=null;
25         argumentlist=new Vector();
26         md=null;
27     }
28
29     public ExpressionNode getExpression() {
30         return en;
31     }
32
33     public void setMethod(MethodDescriptor md) {
34         this.md=md;
35     }
36
37     public MethodDescriptor getMethod() {
38         return md;
39     }
40
41     public void addArgument(ExpressionNode en) {
42         argumentlist.add(en);
43     }
44
45     public int numArgs() {
46         return argumentlist.size();
47     }
48
49     public ExpressionNode getArg(int i) {
50         return (ExpressionNode) argumentlist.get(i);
51     }
52
53     public String printNode(int indent) {
54         String st;
55         if (nd==null) {
56             st=en.printNode(indent)+"."+methodid+"(";
57         } else {
58             st=nd.toString()+"(";
59         }
60         for(int i=0;i<argumentlist.size();i++) {
61             ExpressionNode en=(ExpressionNode)argumentlist.get(i);
62             st+=en.printNode(indent);
63             if ((i+1)!=argumentlist.size())
64                 st+=", ";
65         }
66         return st+")";
67     }
68     public int kind() {
69         return Kind.MethodInvokeNode;
70     }
71 }