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";
}
}
}