package com.sap.runlet.abstractinterpreter; import java.lang.reflect.InvocationTargetException; import org.eclipse.emf.ecore.EObject; import com.sap.runlet.abstractinterpreter.objects.RunletObject; /** * An interpreter for model elements of type <tt>T</tt>. The interpreter has to provide * exactly one public constructor. This constructor must accept as argument an object of type <tt>T</tt>. * * @author Axel Uhl (D043530) * * @param <T> */ public interface Interpreter<T, MetaClass extends EObject, TypeUsage extends EObject, ClassUsage extends TypeUsage, LinkMetaObject extends EObject, LinkEndMetaObject extends EObject, StatementType extends EObject, ExpressionType extends EObject, SignatureImplementationType extends EObject, StackFrameType extends StackFrame<LinkEndMetaObject, TypeUsage, ClassUsage, SignatureImplementationType>, NativeType extends SignatureImplementationType, InterpreterType extends AbstractRunletInterpreter<MetaClass, TypeUsage, ClassUsage, LinkMetaObject, LinkEndMetaObject, StatementType, ExpressionType, SignatureImplementationType, StackFrameType, NativeType, InterpreterType>> { public RunletObject<LinkEndMetaObject, TypeUsage, ClassUsage> evaluate( InterpreterType interpreter) throws SecurityException, IllegalArgumentException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException; }