package finitestatemachines;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import semantics.common.Context;
import family.StandaloneSetup;
import family.flatfsmmt.fsm.StateMachine;
public class ExecuteFsm {
public static void execute(StateMachine fsm, String input, String output) {
Context c = new Context(input);
// Dynamic dispatch on the appropriate eval() implementation
fsm.eval(c, output);
}
public static void main(String[] args) {
StandaloneSetup.doSetup();
ResourceSet rs = new ResourceSetImpl();
List<String> models = new ArrayList<>();
models.add("melange:/file/input/dummie.xmi?mt=family.FlatFsmMT");
models.add("melange:/file/input/timeddummie.xmi?mt=family.FlatFsmMT");
models.add("melange:/file/input/compositedummie.xmi?mt=family.FlatFsmMT");
models.add("melange:/file/input/timedcompositedummie.xmi?mt=family.FlatFsmMT");
int i = 0;
for (String uri : models) {
Resource res = rs.getResource(URI.createURI(uri), true);
StateMachine root = (StateMachine) res.getContents().get(0);
// Polymorphic invokation of execute()
execute(root, "{x;y;z,o;p;q}", "output-" + ++i + ".pdf");
}
}
}