package org.overture.interpreter.utilities.definition; import org.overture.ast.analysis.AnalysisException; import org.overture.ast.analysis.QuestionAnswerAdaptor; import org.overture.ast.definitions.AExplicitOperationDefinition; import org.overture.ast.definitions.AImplicitOperationDefinition; import org.overture.ast.definitions.AThreadDefinition; import org.overture.ast.definitions.PDefinition; import org.overture.ast.definitions.SClassDefinition; import org.overture.ast.node.INode; import org.overture.ast.statements.PStm; import org.overture.interpreter.assistant.IInterpreterAssistantFactory; /*************************************** * This method finds a statement within a definition. * * @author gkanos ****************************************/ public class DefinitionStatementFinder extends QuestionAnswerAdaptor<Integer, PStm> { protected IInterpreterAssistantFactory af; public DefinitionStatementFinder(IInterpreterAssistantFactory af) { this.af = af; } @Override public PStm defaultSClassDefinition(SClassDefinition def, Integer lineno) throws AnalysisException { // I don't think this needs to be unfolded. gk return af.createSClassDefinitionAssistant().findStatement(def, lineno); } @Override public PStm caseAExplicitOperationDefinition( AExplicitOperationDefinition def, Integer lineno) throws AnalysisException { return af.createPStmAssistant().findStatement(def.getBody(), lineno); } @Override public PStm caseAImplicitOperationDefinition( AImplicitOperationDefinition def, Integer lineno) throws AnalysisException { return def.getBody() == null ? null : af.createPStmAssistant().findStatement(def.getBody(), lineno); } @Override public PStm caseAThreadDefinition(AThreadDefinition def, Integer lineno) throws AnalysisException { return af.createPStmAssistant().findStatement(def.getStatement(), lineno); } @Override public PStm defaultPDefinition(PDefinition def, Integer lineno) throws AnalysisException { return null; } @Override public PStm createNewReturnValue(INode node, Integer question) throws AnalysisException { // TODO Auto-generated method stub return null; } @Override public PStm createNewReturnValue(Object node, Integer question) throws AnalysisException { // TODO Auto-generated method stub return null; } }