package testCustomAnalyzer.dataFlow;
/*Generated by MPS */
import jetbrains.mps.analyzers.runtime.framework.CustomAnalyzerRunner;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.lang.dataFlow.MPSProgramFactory;
import java.util.Collections;
import jetbrains.mps.lang.dataFlow.framework.IDataFlowModeId;
import jetbrains.mps.lang.dataFlow.framework.ProgramFactory;
import jetbrains.mps.lang.dataFlow.framework.NamedAnalyzerId;
import jetbrains.mps.lang.dataFlow.framework.DataFlowAnalyzerBase;
import jetbrains.mps.lang.dataFlow.framework.Program;
import java.util.List;
import jetbrains.mps.lang.dataFlow.framework.ProgramState;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import jetbrains.mps.lang.dataFlow.framework.AnalysisDirection;
public class CustomAnalyzerWithModeAnalyzerRunner extends CustomAnalyzerRunner<Integer> {
private SNode myNode;
public CustomAnalyzerWithModeAnalyzerRunner(SNode node) {
this(node, new MPSProgramFactory(Collections.<IDataFlowModeId>emptyList()));
}
public CustomAnalyzerWithModeAnalyzerRunner(SNode node, ProgramFactory<NamedAnalyzerId> factory) {
super(null, null);
myNode = node;
myAnalyzer = new CustomAnalyzerWithModeAnalyzerRunner.CustomAnalyzerWithModeAnalyzer();
myProgram = factory.createProgram(myNode);
factory.prepareProgram(myProgram, myNode, new NamedAnalyzerId("testCustomAnalyzer.dataFlow.CustomAnalyzerWithMode"));
}
public static class CustomAnalyzerWithModeAnalyzer extends DataFlowAnalyzerBase<Integer> {
public CustomAnalyzerWithModeAnalyzer() {
}
public Integer initial(Program program) {
return 0;
}
public Integer merge(Program program, List<Integer> input) {
int maxCounter = 0;
for (Integer counter : input) {
if (counter > maxCounter) {
maxCounter = counter;
}
}
return maxCounter;
}
public Integer fun(Integer input, ProgramState state, @Nullable Map<ProgramState, Integer> stateValues) {
return input + 1;
}
public AnalysisDirection getDirection() {
return AnalysisDirection.FORWARD;
}
/**
*
* @deprecated
*/
@Deprecated
public static String getId() {
return "testCustomAnalyzer.dataFlow.CustomAnalyzerWithMode";
}
}
}