/** * Copyright (c) 2011 committers of YAKINDU and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * committers of YAKINDU - initial API and implementation */ package org.yakindu.sct.domain.generic.simulation; import org.eclipse.xtext.naming.IQualifiedNameProvider; import org.eclipse.xtext.resource.IResourceDescriptions; import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions; import org.eclipse.xtext.service.AbstractGenericModule; import org.yakindu.base.types.inferrer.ITypeSystemInferrer; import org.yakindu.base.types.typesystem.GenericTypeSystem; import org.yakindu.base.types.typesystem.ITypeSystem; import org.yakindu.sct.model.sexec.transformation.IModelSequencer; import org.yakindu.sct.model.sexec.transformation.ModelSequencer; import org.yakindu.sct.model.stext.inferrer.STextTypeInferrer; import org.yakindu.sct.model.stext.naming.StextNameProvider; import org.yakindu.sct.simulation.core.sexec.container.DefaultExecutionContextInitializer; import org.yakindu.sct.simulation.core.sexec.container.DefaultSimulationEngineFactory; import org.yakindu.sct.simulation.core.sexec.container.IExecutionContextInitializer; import org.yakindu.sct.simulation.core.sexec.container.ISimulationEngineFactory; import org.yakindu.sct.simulation.core.sexec.interpreter.DefaultExecutionFlowInterpreter; import org.yakindu.sct.simulation.core.sexec.interpreter.IExecutionFlowInterpreter; import org.yakindu.sct.simulation.core.sexec.interpreter.IOperationMockup; import org.yakindu.sct.simulation.core.sexec.interpreter.IStatementInterpreter; import org.yakindu.sct.simulation.core.sexec.interpreter.ITimingService; import org.yakindu.sct.simulation.core.sexec.interpreter.JavaOperationMockup; import org.yakindu.sct.simulation.core.sexec.interpreter.StextStatementInterpreter; import org.yakindu.sct.simulation.core.sexec.interpreter.SuspendableTimingService; import org.yakindu.sct.simulation.core.sruntime.ExecutionContext; import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl; import com.google.inject.Binder; import com.google.inject.name.Names; /** * * @author andreas muelder - Initial contribution and API * */ public class GenericSimulationModule extends AbstractGenericModule { public void configure(Binder binder) { super.configure(binder); binder.bind(Boolean.class).annotatedWith(Names.named(IModelSequencer.ADD_TRACES)).toInstance(Boolean.TRUE); binder.bind(ITypeSystem.class).toInstance(getTypeSystem()); } protected ITypeSystem getTypeSystem() { return GenericTypeSystem.getInstance(); } public Class<? extends IExecutionContextInitializer> bindIExecutionContextInitializer() { return DefaultExecutionContextInitializer.class; } public Class<? extends ISimulationEngineFactory> bindISimulationEngineFactory() { return DefaultSimulationEngineFactory.class; } public Class<? extends IModelSequencer> bindIModelSequencer() { return ModelSequencer.class; } public Class<? extends IOperationMockup> bindIOperationMockup() { return JavaOperationMockup.class; } public Class<? extends ExecutionContext> bindExecutionContext() { return ExecutionContextImpl.class; } public Class<? extends IExecutionFlowInterpreter> bindIExecutionFlowInterpreter() { return DefaultExecutionFlowInterpreter.class; } public Class<? extends ITimingService> bindITimingService() { return SuspendableTimingService.class; } public Class<? extends IStatementInterpreter> bindIStatementInterpreter() { return StextStatementInterpreter.class; } public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() { return StextNameProvider.class; } public Class<? extends ITypeSystemInferrer> bindITypeSystemInferrer() { return STextTypeInferrer.class; } public Class<? extends IResourceDescriptions> bindIResourceDescriptions() { return ResourceSetBasedResourceDescriptions.class; } }