2 import java.util.Vector;
3 import IR.NameDescriptor;
4 import IR.MethodDescriptor;
5 import IR.TypeDescriptor;
7 public class MethodInvokeNode extends ExpressionNode {
10 NameDescriptor basename;
14 public MethodInvokeNode(NameDescriptor name) {
15 methodid=name.getIdentifier();
16 if (name.getBase()!=null) {
17 basename=name.getBase();
19 argumentlist=new Vector();
24 public MethodInvokeNode(String methodid, ExpressionNode exp) {
25 this.methodid=methodid;
27 argumentlist=new Vector();
32 public NameDescriptor getBaseName() {
36 public String getMethodName() {
40 public ExpressionNode getExpression() {
44 public TypeDescriptor getType() {
45 return md.getReturnType();
48 public void setExpression(ExpressionNode en) {
52 public void setMethod(MethodDescriptor md) {
56 public MethodDescriptor getMethod() {
60 public void addArgument(ExpressionNode en) {
64 public int numArgs() {
65 return argumentlist.size();
68 public ExpressionNode getArg(int i) {
69 return (ExpressionNode) argumentlist.get(i);
72 public String printNode(int indent) {
75 st=en.printNode(indent)+"."+methodid+"(";
79 for(int i=0; i<argumentlist.size(); i++) {
80 ExpressionNode en=(ExpressionNode)argumentlist.get(i);
81 st+=en.printNode(indent);
82 if ((i+1)!=argumentlist.size())
88 return Kind.MethodInvokeNode;