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;
15 public MethodInvokeNode(NameDescriptor name) {
16 methodid=name.getIdentifier();
17 if (name.getBase()!=null) {
18 basename=name.getBase();
20 argumentlist=new Vector();
26 public MethodInvokeNode(String methodid, ExpressionNode exp) {
27 this.methodid=methodid;
29 argumentlist=new Vector();
35 public void setSuper() {
39 public boolean getSuper() {
43 public NameDescriptor getBaseName() {
47 public String getMethodName() {
51 public ExpressionNode getExpression() {
55 public TypeDescriptor getType() {
56 return md.getReturnType();
59 public void setExpression(ExpressionNode en) {
63 public void setMethod(MethodDescriptor md) {
67 public MethodDescriptor getMethod() {
71 public void addArgument(ExpressionNode en) {
75 public void setArgument(ExpressionNode en, int index) {
76 argumentlist.setElementAt(en, index);
79 public int numArgs() {
80 return argumentlist.size();
83 public ExpressionNode getArg(int i) {
84 return (ExpressionNode) argumentlist.get(i);
87 public String printNode(int indent) {
90 st=en.printNode(indent)+"."+methodid+"(";
94 for(int i=0; i<argumentlist.size(); i++) {
95 ExpressionNode en=(ExpressionNode)argumentlist.get(i);
96 st+=en.printNode(indent);
97 if ((i+1)!=argumentlist.size())
103 return Kind.MethodInvokeNode;
106 public Long evaluate() {