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 CounterAnalyzerWithConstructorAnalyzerRunner extends CustomAnalyzerRunner<Integer> { private SNode myNode; public CounterAnalyzerWithConstructorAnalyzerRunner(SNode node, int initialCounter) { this(node, new MPSProgramFactory(Collections.<IDataFlowModeId>emptyList()), initialCounter); } public CounterAnalyzerWithConstructorAnalyzerRunner(SNode node, ProgramFactory<NamedAnalyzerId> factory, int initialCounter) { super(null, null); myNode = node; myAnalyzer = new CounterAnalyzerWithConstructorAnalyzerRunner.CounterAnalyzerWithConstructorAnalyzer(initialCounter); myProgram = factory.createProgram(myNode); factory.prepareProgram(myProgram, myNode, new NamedAnalyzerId("testCustomAnalyzer.dataFlow.CounterAnalyzerWithConstructor")); } public static class CounterAnalyzerWithConstructorAnalyzer extends DataFlowAnalyzerBase<Integer> { private int initialCounter; public CounterAnalyzerWithConstructorAnalyzer(int initialCounter) { this.initialCounter = initialCounter; } public Integer initial(Program program) { return this.initialCounter; } public Integer merge(Program program, List<Integer> input) { int maxCounter = this.initialCounter; 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.CounterAnalyzerWithConstructor"; } } }