package de.dhbwstuttgart.syntaxtree.statement; import java.util.Iterator; import org.apache.commons.bcel6.generic.InstructionList; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.myexception.JVMCodeException; import de.dhbwstuttgart.syntaxtree.FormalParameter; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; public class ArgumentList extends SyntaxTreeNode { public Menge expr = new Menge(); public Object get_firstElement() { return expr.firstElement(); } /** * @author Andreas Stadelmeier, a10023 * @return Anzahl der Argumente in der ArgumentList */ public int size() { return expr.size(); } /** * @author Andreas Stadelmeier, a10023 * @param n * @return Das Element (Expr) in der Argumentliste an der Stelle n */ public Expr argumentAt(int n){ return expr.elementAt(n); } public String toString(){ if(expr == null)return "[]"; String ret = " [ "; for(Expr expr : this.expr){ ret += expr.toString()+", "; } return ret + "]"; } public JavaCodeResult printJavaCode(ResultSet resultSet) { JavaCodeResult ret = new JavaCodeResult(); Iterator it = this.expr.iterator(); while(it.hasNext()){ Expr expr = it.next(); ret.attach(expr.printJavaCode(resultSet)); if(it.hasNext())ret.attach(", "); } //if(this.expr.size()>0)ret = ret.substring(0, ret.length()-2); return ret; } @Override public int getOffset() { return 0; } @Override public int getVariableLength() { return 0; } @Override public Menge getChildren() { return expr; } public InstructionList generateBytecode(ClassGenerator cg){ InstructionList ret = new InstructionList(); for(Expr e : expr){ ret.append(e.genByteCode(cg)); } return ret; } public org.apache.commons.bcel6.generic.Type[] getBytecodeTypeList(ClassGenerator cg){ org.apache.commons.bcel6.generic.Type[] ret = new org.apache.commons.bcel6.generic.Type[expr.size()]; int i = 0; for(Expr e : expr){ ret[i] = e.getType().getBytecodeType(cg); i++; } return ret; } }