// ino.module.Operator.8607.package package de.dhbwstuttgart.syntaxtree.operator; // ino.end // ino.module.Operator.8607.import import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.core.IItemWithOffset; import de.dhbwstuttgart.myexception.CTypeReconstructionException; import de.dhbwstuttgart.myexception.JVMCodeException; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.statement.Binary; import de.dhbwstuttgart.syntaxtree.statement.Expr; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.ConstraintType; import de.dhbwstuttgart.typeinference.ConstraintsSet; import de.dhbwstuttgart.typeinference.OderConstraint; import de.dhbwstuttgart.typeinference.Pair; import de.dhbwstuttgart.typeinference.SingleConstraint; import de.dhbwstuttgart.typeinference.UndConstraint; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; import de.dhbwstuttgart.typeinference.unify.Unify; // ino.class.Operator.24257.declaration public abstract class Operator extends SyntaxTreeNode // ino.end // ino.class.Operator.24257.body { // ino.attribute.offset.24261.declaration private int offset; // ino.end // ino.attribute.variableLength.24264.declaration private int variableLength; // ino.end // ino.method.Operator.24267.definition public Operator(int offset,int variableLength) // ino.end // ino.method.Operator.24267.body { this.offset=offset; this.variableLength=variableLength; } // ino.end // ino.method.getOffset.24270.definition public int getOffset() // ino.end // ino.method.getOffset.24270.body { return offset; } // ino.end // ino.method.getVariableLength.24273.definition public int getVariableLength() // ino.end // ino.method.getVariableLength.24273.body { return variableLength; } // ino.end /** * @author timo * This is cool: * we call the abstract parent to it him what operator-types he expects. the rest of the algorithm * is implemented in this class because it's always the same... * @see Design Pattern: Template Method */ protected abstract Hashtable getOperatorTypes( ); /** * Liefert eine HashMap der Form: HashMap * @param ass * @return */ public abstract HashMap getReturnTypes(TypeAssumptions ass); @Override public Menge getChildren() { return new Menge<>(); } } // ino.end