// ino.module.Receiver.8650.package package de.dhbwstuttgart.syntaxtree.statement; // ino.end // ino.module.Receiver.8650.import import java.util.Hashtable; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.logger.Logger; // ino.end import de.dhbwstuttgart.myexception.SCStatementException; import de.dhbwstuttgart.syntaxtree.Class; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.assumptions.ClassAssumption; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; // ino.class.Receiver.26123.declaration public class Receiver // ino.end // ino.class.Receiver.26123.body { // ino.attribute.expr.26126.declaration private Expr expr; private TypeAssumptions typeAssumptions; // ino.end // ino.attribute.parserlog.26129.declaration protected static Logger parserlog = Logger.getLogger("parser"); // ino.end // ino.method.Receiver.26132.defdescription type=javadoc /** * Autor: J�rg B�uerle * @param expr */ // ino.end // ino.method.Receiver.26132.definition public Receiver(Expr expr) // ino.end // ino.method.Receiver.26132.body { this.expr = expr; } // ino.end // ino.method.get_Type.26138.definition public String get_Type() // ino.end // ino.method.get_Type.26138.body { return expr.getTypeName(); } // ino.end // ino.method.set_Expr.26141.definition public void set_Expr(Expr express) // ino.end // ino.method.set_Expr.26141.body { expr=express; } // ino.end // ino.method.get_Expr.26144.definition public Expr get_Expr() // ino.end // ino.method.get_Expr.26144.body { return expr; } // ino.end // ino.method.toString.26147.defdescription type=javadoc /** *
Author: Martin Pl�micke * @return */ // ino.end // ino.method.toString.26147.definition public String toString() // ino.end // ino.method.toString.26147.body { return expr.toString(); } // ino.end /* public void setClass(Class cl){ this.receiverClass = cl; } */ public Class getReceiverClass(ClassGenerator cg){ de.dhbwstuttgart.syntaxtree.type.Type receiverType = this.get_Expr().getType(); if(receiverType instanceof TypePlaceholder){ receiverType = cg.resolveTPH((TypePlaceholder)receiverType); } if(!(receiverType instanceof RefType)){ throw new TypeinferenceException("Typ des Receivers nicht eindeutig",this.get_Expr()); } ClassAssumption receiverClassAssumption = typeAssumptions.getClassAssumptionFor((RefType)receiverType); de.dhbwstuttgart.syntaxtree.Class receiverCl = receiverClassAssumption.getAssumedClass(); return receiverCl; } /** * Setzt die TypeAssumptions für diesen Receiver. * Das ist notwendig für die Bytecodegenerierung * @param ass */ public void setAssumptions(TypeAssumptions ass){ this.typeAssumptions = ass; } public JavaCodeResult printJavaCode(ResultSet resultSet) { return new JavaCodeResult().attach(this.get_Expr().printJavaCode(resultSet)); } } // ino.end