switch to spaces only..
[IRC.git] / Robust / src / IR / Tree / MethodInvokeNode.java
index 08ad56f9107a6fec56ec7e6b26fac6c1426e3624..f68cfe58ec63b0b9c454d0d7a5f412cb6e55e3ac 100644 (file)
@@ -2,70 +2,109 @@ package IR.Tree;
 import java.util.Vector;
 import IR.NameDescriptor;
 import IR.MethodDescriptor;
+import IR.TypeDescriptor;
 
 public class MethodInvokeNode extends ExpressionNode {
-    NameDescriptor nd;
-    Vector argumentlist;
-    String methodid;
-    ExpressionNode en;
-    MethodDescriptor md;
-
-    public MethodInvokeNode(NameDescriptor name) {
-       nd=name;
-       argumentlist=new Vector();
-       methodid=null;
-       en=null;
-       md=null;
-    }
+  Vector argumentlist;
+  String methodid;
+  NameDescriptor basename;
+  ExpressionNode en;
+  MethodDescriptor md;
+  boolean isSuper;
 
-    public MethodInvokeNode(String methodid, ExpressionNode exp) {
-       this.methodid=methodid;
-       this.en=exp;
-       nd=null;
-       argumentlist=new Vector();
-       md=null;
+  public MethodInvokeNode(NameDescriptor name) {
+    methodid=name.getIdentifier();
+    if (name.getBase()!=null) {
+      basename=name.getBase();
     }
+    argumentlist=new Vector();
+    en=null;
+    md=null;
+    isSuper=false;
+  }
 
-    public ExpressionNode getExpression() {
-       return en;
-    }
+  public MethodInvokeNode(String methodid, ExpressionNode exp) {
+    this.methodid=methodid;
+    this.en=exp;
+    argumentlist=new Vector();
+    md=null;
+    this.basename=null;
+    isSuper=false;
+  }
 
-    public void setMethod(MethodDescriptor md) {
-       this.md=md;
-    }
+  public void setSuper() {
+    isSuper=true;
+  }
 
-    public MethodDescriptor getMethod() {
-       return md;
-    }
+  public boolean getSuper() {
+    return isSuper;
+  }
 
-    public void addArgument(ExpressionNode en) {
-       argumentlist.add(en);
-    }
+  public NameDescriptor getBaseName() {
+    return basename;
+  }
 
-    public int numArgs() {
-       return argumentlist.size();
-    }
+  public String getMethodName() {
+    return methodid;
+  }
 
-    public ExpressionNode getArg(int i) {
-       return (ExpressionNode) argumentlist.get(i);
-    }
+  public ExpressionNode getExpression() {
+    return en;
+  }
 
-    public String printNode(int indent) {
-       String st;
-       if (nd==null) {
-           st=en.printNode(indent)+"."+methodid+"(";
-       } else {
-           st=nd.toString()+"(";
-       }
-       for(int i=0;i<argumentlist.size();i++) {
-           ExpressionNode en=(ExpressionNode)argumentlist.get(i);
-           st+=en.printNode(indent);
-           if ((i+1)!=argumentlist.size())
-               st+=", ";
-       }
-       return st+")";
-    }
-    public int kind() {
-       return Kind.MethodInvokeNode;
+  public TypeDescriptor getType() {
+    return md.getReturnType();
+  }
+
+  public void setExpression(ExpressionNode en) {
+    this.en=en;
+  }
+
+  public void setMethod(MethodDescriptor md) {
+    this.md=md;
+  }
+
+  public MethodDescriptor getMethod() {
+    return md;
+  }
+
+  public void addArgument(ExpressionNode en) {
+    argumentlist.add(en);
+  }
+
+  public void setArgument(ExpressionNode en, int index) {
+    argumentlist.setElementAt(en, index);
+  }
+
+  public int numArgs() {
+    return argumentlist.size();
+  }
+
+  public ExpressionNode getArg(int i) {
+    return (ExpressionNode) argumentlist.get(i);
+  }
+
+  public String printNode(int indent) {
+    String st;
+    if (en!=null)
+      st=en.printNode(indent)+"."+methodid+"(";
+    else
+      st=methodid+"(";
+
+    for(int i=0; i<argumentlist.size(); i++) {
+      ExpressionNode en=(ExpressionNode)argumentlist.get(i);
+      st+=en.printNode(indent);
+      if ((i+1)!=argumentlist.size())
+        st+=", ";
     }
+    return st+")";
+  }
+  public int kind() {
+    return Kind.MethodInvokeNode;
+  }
+
+  public Long evaluate() {
+    eval = null;
+    return eval; //null;
+  }
 }