浏览代码

added sruntime.ecore model

Andreas Mülder 12 年之前
父节点
当前提交
fcf30569a9
共有 32 个文件被更改,包括 4440 次插入504 次删除
  1. 10 10
      plugins/org.yakindu.sct.simulation.core/META-INF/MANIFEST.MF
  2. 52 0
      plugins/org.yakindu.sct.simulation.core/model/sruntime.ecore
  3. 49 0
      plugins/org.yakindu.sct.simulation.core/model/sruntime.genmodel
  4. 0 102
      plugins/org.yakindu.sct.simulation.core/schema/executionfactory.exsd
  5. 0 127
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/breakpoints/SCTBreakpoint.java
  6. 31 128
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/debugmodel/SCTDebugTarget.java
  7. 17 20
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/debugmodel/SCTDebugThread.java
  8. 2 8
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/debugmodel/SCTStackFrame.java
  9. 35 22
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/launch/IStatechartLaunchConfigurationType.java
  10. 28 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/engine/ISimulationEngine.java
  11. 2 2
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/hmr/IHotModelReplacementListener.java
  12. 28 32
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/hmr/SCTHotModelReplacementManager.java
  13. 21 17
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/launch/StatechartLaunchConfigurationDelegate.java
  14. 0 36
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/launch/IStatechartLaunchParameters.java
  15. 48 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/CompositeSlot.java
  16. 243 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/EventDirection.java
  17. 206 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/ExecutionContext.java
  18. 114 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/ExecutionEvent.java
  19. 103 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/ExecutionSlot.java
  20. 25 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/ExecutionVariable.java
  21. 77 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/SRuntimeFactory.java
  22. 901 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/SRuntimePackage.java
  23. 145 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/CompositeSlotImpl.java
  24. 464 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/ExecutionContextImpl.java
  25. 279 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/ExecutionEventImpl.java
  26. 254 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/ExecutionSlotImpl.java
  27. 47 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/ExecutionVariableImpl.java
  28. 237 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/SRuntimeFactoryImpl.java
  29. 507 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/SRuntimePackageImpl.java
  30. 68 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/util/CrossDocumentContentAdapter.java
  31. 220 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/util/SRuntimeAdapterFactory.java
  32. 227 0
      plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/util/SRuntimeSwitch.java

+ 10 - 10
plugins/org.yakindu.sct.simulation.core/META-INF/MANIFEST.MF

@@ -1,30 +1,30 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Yakindu SCT Simulation Core
+Bundle-Name: %pluginName
 Bundle-SymbolicName: org.yakindu.sct.simulation.core;singleton:=true
 Bundle-Version: 2.1.2.qualifier
+Bundle-ClassPath: .
 Bundle-Activator: org.yakindu.sct.simulation.core.Activator
-Bundle-Vendor: yakindu.org
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
 Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.debug.core,
+ org.eclipse.debug.core;visibility:=reexport,
  org.eclipse.emf.ecore,
+ org.yakindu.base.types;visibility:=reexport,
  org.yakindu.sct.model.sgraph,
  org.eclipse.jdt.debug,
- org.yakindu.sct.model.sexec;bundle-version="1.0.0",
  com.google.guava;bundle-version="10.0.1",
  org.eclipse.emf.workspace;bundle-version="1.5.1",
  org.yakindu.sct.commons;bundle-version="1.0.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Export-Package: org.yakindu.sct.simulation.core,
- org.yakindu.sct.simulation.core.breakpoints,
- org.yakindu.sct.simulation.core.debugmodel,
- org.yakindu.sct.simulation.core.extensions,
+ org.yakindu.sct.simulation.core.engine,
  org.yakindu.sct.simulation.core.hmr,
  org.yakindu.sct.simulation.core.launch,
- org.yakindu.sct.simulation.core.runtime,
- org.yakindu.sct.simulation.core.runtime.impl,
- org.yakindu.sct.simulation.core.util
+ org.yakindu.sct.simulation.core.sruntime,
+ org.yakindu.sct.simulation.core.sruntime.impl,
+ org.yakindu.sct.simulation.core.sruntime.util
 Import-Package: com.google.inject;version="1.3.0",
  org.eclipse.debug.internal.ui.viewers.model.provisional,
  org.eclipse.emf.edit.ui.provider,

+ 52 - 0
plugins/org.yakindu.sct.simulation.core/model/sruntime.ecore

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="sruntime" nsURI="http://www.yakindu.org/sct/sruntime/2.0.0"
+    nsPrefix="sruntime">
+  <eClassifiers xsi:type="ecore:EClass" name="ExecutionContext" eSuperTypes="../../org.yakindu.base.types/model/base.ecore#//NamedElement">
+    <eOperations name="getRaisedEvents" upperBound="-1" eType="#//ExecutionEvent"/>
+    <eOperations name="getScheduledEvents" upperBound="-1" eType="#//ExecutionEvent"/>
+    <eOperations name="getVariable" eType="#//ExecutionVariable">
+      <eParameters name="qualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eOperations>
+    <eOperations name="getEvent" eType="#//ExecutionEvent">
+      <eParameters name="qualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eOperations>
+    <eOperations name="getAllActiveStates" upperBound="-1" eType="ecore:EClass ../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//RegularState"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="activeStates" upperBound="-1"
+        eType="ecore:EClass ../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//RegularState"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="events" upperBound="-1"
+        eType="#//ExecutionEvent" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="variables" upperBound="-1"
+        eType="#//ExecutionVariable" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="executedElements" upperBound="-1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="slots" upperBound="-1"
+        eType="#//ExecutionSlot" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="suspendedElements" upperBound="-1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="snapshot" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ExecutionEvent" eSuperTypes="#//ExecutionSlot">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="raised" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="scheduled" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" eType="#//EventDirection"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ExecutionSlot" abstract="true" eSuperTypes="../../org.yakindu.base.types/model/base.ecore#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//InferredType"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//JavaObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        changeable="false" volatile="true" transient="true" derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="InferredType" instanceClassName="org.yakindu.base.types.ITypeSystem.InferredType"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ExecutionVariable" eSuperTypes="#//ExecutionSlot"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CompositeSlot" eSuperTypes="#//ExecutionSlot">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="slots" upperBound="-1"
+        eType="#//ExecutionSlot" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="EventDirection">
+    <eLiterals name="LOCAL"/>
+    <eLiterals name="IN" value="1"/>
+    <eLiterals name="OUT" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="JavaObject" instanceClassName="java.lang.Object"/>
+</ecore:EPackage>

+ 49 - 0
plugins/org.yakindu.sct.simulation.core/model/sruntime.genmodel

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2013 committers of YAKINDU and others.&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;Contributors:&#xD;&#xA;committers of YAKINDU - initial API and implementation&#xD;&#xA;"
+    modelDirectory="/org.yakindu.sct.simulation.core/src" modelPluginID="org.yakindu.sct.simulation.core"
+    modelName="Sruntime" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    suppressEMFTypes="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0"
+    copyrightFields="false" publicConstructors="true" usedGenPackages="../../org.yakindu.base.types/model/base.genmodel#//base ../../org.yakindu.sct.model.sgraph/model/emf/sgraph.genmodel#//sgraph"
+    interfaceNamePattern="" importOrganizing="true">
+  <foreignModel>sruntime.ecore</foreignModel>
+  <genPackages prefix="SRuntime" basePackage="org.yakindu.sct.simulation.core" disposableProviderFactory="true"
+      ecorePackage="sruntime.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sruntime.ecore#//EventDirection">
+      <genEnumLiterals ecoreEnumLiteral="sruntime.ecore#//EventDirection/LOCAL"/>
+      <genEnumLiterals ecoreEnumLiteral="sruntime.ecore#//EventDirection/IN"/>
+      <genEnumLiterals ecoreEnumLiteral="sruntime.ecore#//EventDirection/OUT"/>
+    </genEnums>
+    <genDataTypes ecoreDataType="sruntime.ecore#//InferredType"/>
+    <genClasses ecoreClass="sruntime.ecore#//ExecutionContext">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sruntime.ecore#//ExecutionContext/activeStates"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sruntime.ecore#//ExecutionContext/events"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sruntime.ecore#//ExecutionContext/variables"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sruntime.ecore#//ExecutionContext/executedElements"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sruntime.ecore#//ExecutionContext/slots"/>
+      <genOperations ecoreOperation="sruntime.ecore#//ExecutionContext/getRaisedEvents"/>
+      <genOperations ecoreOperation="sruntime.ecore#//ExecutionContext/getScheduledEvents"/>
+      <genOperations ecoreOperation="sruntime.ecore#//ExecutionContext/getVariable">
+        <genParameters ecoreParameter="sruntime.ecore#//ExecutionContext/getVariable/qualifiedName"/>
+      </genOperations>
+      <genOperations ecoreOperation="sruntime.ecore#//ExecutionContext/getEvent">
+        <genParameters ecoreParameter="sruntime.ecore#//ExecutionContext/getEvent/qualifiedName"/>
+      </genOperations>
+      <genOperations ecoreOperation="sruntime.ecore#//ExecutionContext/getAllActiveStates"/>
+    </genClasses>
+    <genClasses ecoreClass="sruntime.ecore#//ExecutionEvent">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sruntime.ecore#//ExecutionEvent/raised"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sruntime.ecore#//ExecutionEvent/scheduled"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sruntime.ecore#//ExecutionEvent/direction"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sruntime.ecore#//ExecutionSlot">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sruntime.ecore#//ExecutionSlot/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sruntime.ecore#//ExecutionSlot/value"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sruntime.ecore#//ExecutionSlot/qualifiedName"/>
+    </genClasses>
+    <genClasses ecoreClass="sruntime.ecore#//ExecutionVariable"/>
+    <genClasses ecoreClass="sruntime.ecore#//CompositeSlot">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sruntime.ecore#//CompositeSlot/slots"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>

+ 0 - 102
plugins/org.yakindu.sct.simulation.core/schema/executionfactory.exsd

@@ -1,102 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.yakindu.sct.core.simulation" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.yakindu.sct.core.simulation" id="org.yakindu.sct.simulation.core.sgraph.executionbuilder" name="SGraphExecutionBuilder"/>
-      </appinfo>
-      <documentation>
-         [Enter description of this extension point.]
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="ExecutionFacadeFactory"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="ExecutionFacadeFactory">
-      <complexType>
-         <attribute name="class" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn=":org.yakindu.sct.simulation.core.IExecutionFacadeFactory"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="since"/>
-      </appinfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="apiinfo"/>
-      </appinfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="implementation"/>
-      </appinfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-
-</schema>

+ 0 - 127
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/breakpoints/SCTBreakpoint.java

@@ -1,127 +0,0 @@
-/**
- * Copyright (c) 2013 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.simulation.core.breakpoints;
-
-import java.util.Collections;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.model.Breakpoint;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.URIConverter;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
-
-/**
- * 
- * @author andreas muelder - Initial contribution and API
- * 
- */
-public class SCTBreakpoint extends Breakpoint {
-
-	public static final String BREAKPOINT_ID = "org.yakindu.sct.debug.core.breakpoints";
-	public static final String MARKER_ID = "org.yakindu.sct.simulation.core.breakpoints";
-
-	public static final String EOBJECT_URI = " org.yakindu.sct.simulation.core.breakpoint.eobjectrui";
-	private static final String ELEMENT_ID = "elementId";
-	private static final String EXPRESSION = " org.yakindu.sct.simulation.core.breakpoints.expression";
-	private static final String CONDITIONAL = " org.yakindu.sct.simulation.core.breakpoints.conditional";
-
-	private transient EObject semanticObject;
-
-	public SCTBreakpoint() {
-		// Default c'tor to restore from marker
-	}
-
-	public SCTBreakpoint(EObject semanticObject) {
-		this.semanticObject = semanticObject;
-		createMarker(semanticObject);
-	}
-
-	private void createMarker(EObject semanticObject) {
-		try {
-			IMarker marker = WorkspaceSynchronizer.getFile(semanticObject.eResource()).createMarker(MARKER_ID);
-			setMarker(marker);
-			setEnabled(true);
-			ensureMarker().setAttribute(IBreakpoint.ID, BREAKPOINT_ID);
-			setAttribute(IMarker.MESSAGE, semanticObject.eClass().getInstanceTypeName() + " Breakpoint");
-			setAttribute(EOBJECT_URI, EcoreUtil.getURI(semanticObject).toString());
-		} catch (CoreException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public String getModelIdentifier() {
-		return BREAKPOINT_ID;
-	}
-
-	public EObject getSemanticObject() {
-		if (semanticObject == null) {
-			try {
-				initSemanticObject();
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-		}
-		return semanticObject;
-	}
-
-	protected void initSemanticObject() throws CoreException {
-		ResourceSet set = new ResourceSetImpl();
-		String objectUri = getMarker().getAttribute(EOBJECT_URI, "");
-		URI uri = URI.createURI(objectUri);
-		if (URIConverter.INSTANCE.exists(uri, Collections.emptyMap())) {
-			semanticObject = set.getEObject(uri, true);
-		} else
-			delete();
-	}
-
-	public void setSemanticObject(EObject semanticObject) {
-		this.semanticObject = semanticObject;
-	}
-
-	public void setNotationViewURI(String uri) {
-		try {
-			setAttribute(ELEMENT_ID, uri);
-		} catch (CoreException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void setExpression(String expression) {
-		try {
-			setAttribute(EXPRESSION, expression);
-		} catch (CoreException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void setConditional(boolean conditional) {
-		try {
-			setAttribute(CONDITIONAL, conditional);
-		} catch (CoreException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public String getExpression() {
-		return getMarker().getAttribute(EXPRESSION, "");
-	}
-
-	public boolean isConditional() {
-		return getMarker().getAttribute(CONDITIONAL, false);
-	}
-
-}

+ 31 - 128
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/debugmodel/SCTDebugTarget.java

@@ -13,125 +13,61 @@ package org.yakindu.sct.simulation.core.debugmodel;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 
 import org.eclipse.core.resources.IMarkerDelta;
-import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.debug.core.DebugEvent;
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.model.IBreakpoint;
 import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.debug.core.model.IMemoryBlock;
 import org.eclipse.debug.core.model.IProcess;
 import org.eclipse.debug.core.model.IThread;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
-import org.yakindu.sct.commons.WorkspaceClassLoaderFactory;
-import org.yakindu.sct.model.sexec.Trace;
-import org.yakindu.sct.model.sexec.TraceReactionWillFire;
-import org.yakindu.sct.model.sexec.TraceStateEntered;
-import org.yakindu.sct.model.sexec.TraceStateExited;
 import org.yakindu.sct.model.sgraph.Region;
 import org.yakindu.sct.model.sgraph.RegularState;
 import org.yakindu.sct.model.sgraph.Statechart;
-import org.yakindu.sct.simulation.core.breakpoints.SCTBreakpoint;
-import org.yakindu.sct.simulation.core.extensions.ExecutionFactoryExtensions;
-import org.yakindu.sct.simulation.core.extensions.ExecutionFactoryExtensions.ExecutionFactoryDescriptor;
-import org.yakindu.sct.simulation.core.launch.IStatechartLaunchParameters;
-import org.yakindu.sct.simulation.core.runtime.IExecutionFacade;
-import org.yakindu.sct.simulation.core.runtime.IExecutionFacadeController;
-import org.yakindu.sct.simulation.core.runtime.IExecutionFacadeFactory;
-import org.yakindu.sct.simulation.core.runtime.IExecutionTraceListener;
-import org.yakindu.sct.simulation.core.runtime.impl.CycleBasedExecutionFacadeController;
-import org.yakindu.sct.simulation.core.runtime.impl.EventDrivenExecutionFacadeController;
+import org.yakindu.sct.simulation.core.engine.IExecutionControl;
+import org.yakindu.sct.simulation.core.engine.ISimulationEngine;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
 
 /**
  * 
  * @author andreas muelder - Initial contribution and API
  * 
  */
-public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget, IStatechartLaunchParameters,
-		IExecutionTraceListener {
+public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget {
 
 	private ILaunch launch;
 
-	protected IExecutionFacade facade;
-
 	private boolean stepping = false;
 	private boolean terminated = false;
 	private boolean suspended = false;
 
 	private final Statechart statechart;
-
 	private List<SCTDebugThread> threads;
 
-	private IExecutionFacadeController controller;
+	private ISimulationEngine container;
 
-	private IExecutionFacadeFactory factory;
+	private IExecutionControl executionControl;
 
-	public SCTDebugTarget(ILaunch launch, Statechart statechart) throws CoreException {
+	public SCTDebugTarget(ILaunch launch, Statechart statechart, ISimulationEngine container) throws CoreException {
 		super(null, statechart.eResource().getURI().toPlatformString(true));
+		Assert.isNotNull(statechart);
 		this.launch = launch;
 		this.statechart = statechart;
-		threads = new ArrayList<SCTDebugThread>();
-		DebugPlugin.getDefault().getBreakpointManager().addBreakpointListener(this);
-		createExecutionModel(statechart);
-	}
-
-	protected void createExecutionModel(Statechart statechart) throws CoreException {
-		factory = getExecutionFacadeFactory(statechart);
-		facade = factory.createExecutionFacade(statechart);
-		facade.addTraceListener(this);
-		initFacadeCallbacks(WorkspaceSynchronizer.getFile(statechart.eResource()).getProject());
-		initFacadeController();
-	}
-
-	protected void initFacadeCallbacks(IProject project) {
-		ClassLoader classLoader = new WorkspaceClassLoaderFactory().createClassLoader(project, getClass()
-				.getClassLoader());
-		ILaunchConfiguration config = launch.getLaunchConfiguration();
-		try {
-			String classes = config.getAttribute(OPERATION_CLASS, "");
-			String[] split = classes.split(",");
-			if (split.length > 0)
-				for (String string : split) {
-					string = string.trim();
-					if (string.length() == 0)
-						continue;
-					Class<?> loadClass = classLoader.loadClass(string);
-					facade.addCallbackObject(loadClass.newInstance());
-				}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	protected void initFacadeController() throws CoreException {
-		boolean isCycleBased = launch.getLaunchConfiguration().getAttribute(IS_CYCLE_BASED, DEFAULT_IS_CYCLE_BASED);
-		if (isCycleBased) {
-			long cyclePeriod = launch.getLaunchConfiguration().getAttribute(CYCLE_PERIOD, DEFAULT_CYCLE_PERIOD);
-			controller = new CycleBasedExecutionFacadeController(this, cyclePeriod);
-		} else {
-			controller = new EventDrivenExecutionFacadeController(this);
-		}
-		controller.start();
+		this.container = container;
+		init();
 	}
 
-	protected IExecutionFacadeFactory getExecutionFacadeFactory(Statechart sc) {
-		Iterable<ExecutionFactoryDescriptor> executionFactoryDescriptor = ExecutionFactoryExtensions
-				.getExecutionFactoryDescriptor();
-
-		for (ExecutionFactoryDescriptor desc : executionFactoryDescriptor) {
-			IExecutionFacadeFactory f = desc.createExecutableExtensionFactory();
-			if (f.isApplicable(sc))
-				return f;
-		}
-		return null;
+	private void init() {
+		threads = new ArrayList<SCTDebugThread>();
+		DebugPlugin.getDefault().getBreakpointManager().addBreakpointListener(this);
+		executionControl = container.getExecutionControl();
+		executionControl.start();
 	}
 
 	public IProcess getProcess() {
@@ -140,12 +76,12 @@ public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget, ISt
 
 	public void stepOver() {
 		fireEvent(new DebugEvent(getDebugTarget(), DebugEvent.STEP_OVER));
-		facade.runCycle();
+		container.getExecutionControl().stepForward();
 	}
 
 	public IThread[] getThreads() throws DebugException {
 		// Collect all active regions
-		Set<RegularState> activeLeafStates = facade.getExecutionContext().getActiveLeafStates();
+		List<RegularState> activeLeafStates = container.getExecutionContext().getActiveStates();
 		List<Region> activeRegions = new ArrayList<Region>();
 		for (RegularState vertex : activeLeafStates) {
 			activeRegions.add(vertex.getParentRegion());
@@ -167,7 +103,7 @@ public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget, ISt
 				}
 			}
 			if (!found) {
-				threads.add(new SCTDebugThread(this, facade, getResourceString(), region));
+				threads.add(new SCTDebugThread(this, container, getResourceString(), region));
 			}
 		}
 		return threads.toArray(new IThread[] {});
@@ -178,7 +114,7 @@ public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget, ISt
 	}
 
 	public String getName() throws DebugException {
-		return facade.getName();
+		return statechart.getName();
 	}
 
 	public boolean supportsBreakpoint(IBreakpoint breakpoint) {
@@ -196,8 +132,7 @@ public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget, ISt
 	public void terminate() throws DebugException {
 		fireEvent(new DebugEvent(getDebugTarget(), DebugEvent.TERMINATE));
 		terminated = true;
-		facade.removeTraceListener(this);
-		controller.terminate();
+		executionControl.terminate();
 	}
 
 	public boolean canResume() {
@@ -216,14 +151,14 @@ public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget, ISt
 		fireEvent(new DebugEvent(this, DebugEvent.RESUME));
 		fireChangeEvent(DebugEvent.CONTENT);
 		suspended = false;
-		controller.resume();
+		executionControl.resume();
 	}
 
 	public void suspend() throws DebugException {
 		fireEvent(new DebugEvent(this, DebugEvent.SUSPEND));
 		fireChangeEvent(DebugEvent.CONTENT);
 		suspended = true;
-		controller.suspend();
+		executionControl.suspend();
 	}
 
 	public void breakpointAdded(IBreakpoint breakpoint) {
@@ -264,8 +199,14 @@ public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget, ISt
 	}
 
 	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
-		if (adapter == IExecutionFacade.class)
-			return facade;
+		if (adapter == ISimulationEngine.class)
+			return container;
+		if (adapter == IExecutionControl.class) {
+			return container.getExecutionControl();
+		}
+		if (adapter == ExecutionContext.class) {
+			return container.getExecutionContext();
+		}
 		if (adapter == EObject.class) {
 			return statechart;
 		}
@@ -279,42 +220,4 @@ public class SCTDebugTarget extends SCTDebugElement implements IDebugTarget, ISt
 	public boolean isStepping() {
 		return stepping;
 	}
-
-	public void traceStepExecuted(Trace trace) {
-		if (trace instanceof TraceStateEntered || trace instanceof TraceStateExited)
-			fireChangeEvent(DebugEvent.CONTENT);
-		if (trace instanceof TraceReactionWillFire) {
-			if (launch.getLaunchMode().equals("debug"))
-				evaluateBreakpoints(((TraceReactionWillFire) trace).getReaction().getSourceElement());
-		}
-		if (trace instanceof TraceStateEntered) {
-			if (launch.getLaunchMode().equals("debug"))
-				evaluateBreakpoints(((TraceStateEntered) trace).getState().getSourceElement());
-		}
-	}
-
-	private void evaluateBreakpoints(EObject sourceElement) {
-		try {
-			IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager()
-					.getBreakpoints(SCTBreakpoint.BREAKPOINT_ID);
-			for (IBreakpoint iBreakpoint : breakpoints) {
-				if (!iBreakpoint.isEnabled())
-					continue;
-				if (iBreakpoint instanceof SCTBreakpoint) {
-					SCTBreakpoint sctBreakpoint = (SCTBreakpoint) iBreakpoint;
-					if (EcoreUtil.equals(sctBreakpoint.getSemanticObject(), sourceElement)) {
-						// TODO: Evaluate Breakpoint Condition
-						suspend();
-						fireEvent(new DebugEvent(this, DebugEvent.BREAKPOINT));
-					}
-				}
-			}
-		} catch (CoreException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	public Statechart getStatechart() {
-		return statechart;
-	}
 }

+ 17 - 20
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/debugmodel/SCTDebugThread.java

@@ -12,8 +12,8 @@ package org.yakindu.sct.simulation.core.debugmodel;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.model.IBreakpoint;
 import org.eclipse.debug.core.model.IStackFrame;
@@ -22,7 +22,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.model.sgraph.Region;
 import org.yakindu.sct.model.sgraph.RegularState;
 import org.yakindu.sct.model.sgraph.Vertex;
-import org.yakindu.sct.simulation.core.runtime.IExecutionFacade;
+import org.yakindu.sct.simulation.core.engine.ISimulationEngine;
 
 /**
  * 
@@ -32,14 +32,14 @@ import org.yakindu.sct.simulation.core.runtime.IExecutionFacade;
 public class SCTDebugThread extends SCTDebugElement implements IThread {
 
 	private final Region region;
-	private final IExecutionFacade facade;
 	private List<SCTStackFrame> stateStack;
 	private Vertex lastActiveState;
+	private ISimulationEngine container;
 
-	public SCTDebugThread(SCTDebugTarget target, IExecutionFacade facade,
-			String resourceString, Region region) {
+	public SCTDebugThread(SCTDebugTarget target, ISimulationEngine container, String resourceString, Region region) {
 		super(target, resourceString);
-		this.facade = facade;
+		Assert.isNotNull(region);
+		this.container = container;
 		this.region = region;
 	}
 
@@ -48,8 +48,7 @@ public class SCTDebugThread extends SCTDebugElement implements IThread {
 	}
 
 	public IStackFrame[] getStackFrames() throws DebugException {
-		Set<RegularState> activeLeafStates = facade.getExecutionContext()
-				.getActiveLeafStates();
+		List<RegularState> activeLeafStates = container.getExecutionContext().getActiveStates();
 		Vertex activeState = null;
 		for (Vertex vertex : activeLeafStates) {
 			if (vertex.getParentRegion() == region) {
@@ -57,20 +56,19 @@ public class SCTDebugThread extends SCTDebugElement implements IThread {
 				break;
 			}
 		}
-	
+
 		if (activeState != null && lastActiveState != activeState) {
 			lastActiveState = activeState;
 			EObject container = activeState;
 			stateStack = new ArrayList<SCTStackFrame>();
-			while ( container != null ) {
+			while (container != null) {
 				if (container instanceof RegularState) {
-					stateStack.add(new SCTStackFrame(this, (RegularState)container,
-						getResourceString()));
+					stateStack.add(new SCTStackFrame(this, (RegularState) container, getResourceString()));
 				}
 				container = container.eContainer();
-			}			
-		} 
-		return stateStack.toArray(new IStackFrame[]{});
+			}
+		}
+		return stateStack.toArray(new IStackFrame[] {});
 	}
 
 	public boolean hasStackFrames() throws DebugException {
@@ -82,7 +80,7 @@ public class SCTDebugThread extends SCTDebugElement implements IThread {
 	}
 
 	public IBreakpoint[] getBreakpoints() {
-		return null;
+		return new IBreakpoint[0];
 	}
 
 	public boolean canResume() {
@@ -148,11 +146,10 @@ public class SCTDebugThread extends SCTDebugElement implements IThread {
 	}
 
 	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
-		if (adapter == IExecutionFacade.class)
-			return getDebugTarget().getAdapter(IExecutionFacade.class);
-		if (adapter == EObject.class) {
+		if(adapter == ISimulationEngine.class)
+			return container;
+		if (adapter == EObject.class)
 			return region;
-		}
 		return super.getAdapter(adapter);
 	}
 

+ 2 - 8
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/debugmodel/SCTStackFrame.java

@@ -18,7 +18,6 @@ import org.eclipse.debug.core.model.IStackFrame;
 import org.eclipse.debug.core.model.IVariable;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.model.sgraph.Vertex;
-import org.yakindu.sct.simulation.core.runtime.IExecutionFacade;
 
 /**
  * 
@@ -31,8 +30,7 @@ public class SCTStackFrame extends SCTDebugElement implements IStackFrame {
 	// the active state that is entered
 	private final Vertex state;
 
-	public SCTStackFrame(SCTDebugThread thread, Vertex state,
-			String resourceString) {
+	public SCTStackFrame(SCTDebugThread thread, Vertex state, String resourceString) {
 		super(thread.getDebugTarget(), resourceString);
 		this.thread = thread;
 		this.state = state;
@@ -156,9 +154,7 @@ public class SCTStackFrame extends SCTDebugElement implements IStackFrame {
 	}
 
 	public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
-		if (adapter == IExecutionFacade.class)
-			return getDebugTarget().getAdapter(IExecutionFacade.class);
-		if(adapter == EObject.class)
+		if (adapter == EObject.class)
 			return state;
 		return super.getAdapter(adapter);
 	}
@@ -167,6 +163,4 @@ public class SCTStackFrame extends SCTDebugElement implements IStackFrame {
 		return state;
 	}
 
-	
-	
 }

+ 35 - 22
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/launch/IStatechartLaunchConfigurationType.java

@@ -1,22 +1,35 @@
-/**
- * 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.simulation.core.launch;
-
-/**
- * 
- * @author andreas muelder - Initial contribution and API
- * 
- */
-public interface IStatechartLaunchConfigurationType {
-
-	String CONFIG_TYPE = "org.yakindu.sct.simulation.core.launch.statechart";
-
-}
+/**
+ * Copyright (c) 2013 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.simulation.core.engine;
+
+import com.google.inject.Singleton;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+@Singleton
+public interface IExecutionControl {
+
+	public void start();
+
+	public void suspend();
+
+	public void stepForward();
+
+	public void stepBackward();
+
+	public void resume();
+
+	public void terminate();
+
+}

+ 28 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/engine/ISimulationEngine.java

@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.engine;
+
+import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public interface ISimulationEngine {
+
+	public IExecutionControl getExecutionControl();
+	
+	public ExecutionContext getExecutionContext();
+	
+	public void setExecutionContext(ExecutionContext context);
+
+}

+ 2 - 2
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/hmr/IHotModelReplacementListener.java

@@ -12,7 +12,7 @@ package org.yakindu.sct.simulation.core.hmr;
 
 import java.util.List;
 
-import org.yakindu.sct.simulation.core.debugmodel.SCTDebugTarget;
+import org.eclipse.debug.core.model.IDebugTarget;
 
 /**
  * 
@@ -21,6 +21,6 @@ import org.yakindu.sct.simulation.core.debugmodel.SCTDebugTarget;
  */
 public interface IHotModelReplacementListener {
 
-	public void hotCodeReplaceFailed(List<SCTDebugTarget> affectedTargets);
+	public void hotCodeReplaceFailed(List<IDebugTarget> affectedTargets);
 
 }

+ 28 - 32
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/hmr/SCTHotModelReplacementManager.java

@@ -34,6 +34,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
 import org.yakindu.sct.model.sgraph.Statechart;
+import org.yakindu.sct.simulation.core.debugmodel.SCTDebugElement;
 import org.yakindu.sct.simulation.core.debugmodel.SCTDebugTarget;
 import org.yakindu.sct.simulation.core.util.ResourceUtil;
 
@@ -42,27 +43,25 @@ import org.yakindu.sct.simulation.core.util.ResourceUtil;
  * @author andreas muelder - Initial contribution and API
  * 
  */
-public class SCTHotModelReplacementManager implements IResourceChangeListener,
-		IResourceDeltaVisitor, ILaunchListener, IDebugEventSetListener {
+public class SCTHotModelReplacementManager implements IResourceChangeListener, IResourceDeltaVisitor, ILaunchListener,
+		IDebugEventSetListener {
 
 	public static final SCTHotModelReplacementManager INSTANCE = new SCTHotModelReplacementManager();
 
-	private List<SCTDebugTarget> activeTargets;
+	private List<IDebugTarget> activeTargets;
 
 	private List<IHotModelReplacementListener> listeners;
 
 	private SCTHotModelReplacementManager() {
-		activeTargets = new ArrayList<SCTDebugTarget>();
+		activeTargets = new ArrayList<IDebugTarget>();
 		listeners = new ArrayList<IHotModelReplacementListener>();
 	}
 
-	public synchronized void addReplacementListener(
-			IHotModelReplacementListener listener) {
+	public synchronized void addReplacementListener(IHotModelReplacementListener listener) {
 		listeners.add(listener);
 	}
 
-	public synchronized void removeReplacementListener(
-			IHotModelReplacementListener listener) {
+	public synchronized void removeReplacementListener(IHotModelReplacementListener listener) {
 		listeners.remove(listener);
 	}
 
@@ -81,8 +80,7 @@ public class SCTHotModelReplacementManager implements IResourceChangeListener,
 			if (debugEvent.getKind() == DebugEvent.TERMINATE) {
 				Object source = debugEvent.getSource();
 				if (source instanceof IAdaptable) {
-					Object adapter = ((IAdaptable) source)
-							.getAdapter(IDebugTarget.class);
+					Object adapter = ((IAdaptable) source).getAdapter(IDebugTarget.class);
 					if (adapter instanceof SCTDebugTarget) {
 						unregisterSCTTarget((SCTDebugTarget) adapter);
 					}
@@ -128,8 +126,7 @@ public class SCTHotModelReplacementManager implements IResourceChangeListener,
 			}
 			// Stop listening to resource changes if no SCTDebugTarget is active
 			if (activeTargets.isEmpty()) {
-				ResourcesPlugin.getWorkspace().removeResourceChangeListener(
-						this);
+				ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
 			}
 		}
 	}
@@ -161,9 +158,9 @@ public class SCTHotModelReplacementManager implements IResourceChangeListener,
 	private void handleCloseEvent(IResourceChangeEvent event) {
 		if (event.getResource() instanceof IProject) {
 			IProject project = ((IProject) event.getResource());
-			for (SCTDebugTarget target : activeTargets) {
-				IFile file = WorkspaceSynchronizer.getFile(target
-						.getStatechart().eResource());
+			for (IDebugTarget target : activeTargets) {
+				EObject statechart = (EObject) target.getAdapter(EObject.class);
+				IFile file = WorkspaceSynchronizer.getFile(statechart.eResource());
 				if (project.equals(file.getProject())) {
 					try {
 						target.terminate();
@@ -179,14 +176,13 @@ public class SCTHotModelReplacementManager implements IResourceChangeListener,
 		// first implementation: If the underlying model does not change
 		// semantically, no notification is required...
 
-		List<SCTDebugTarget> targets = getAffectedTargets();
-		List<SCTDebugTarget> modelReplacementFailedTargets = new ArrayList<SCTDebugTarget>();
-		for (SCTDebugTarget sctDebugTarget : targets) {
+		List<IDebugTarget> targets = getAffectedTargets();
+		List<IDebugTarget> modelReplacementFailedTargets = new ArrayList<IDebugTarget>();
+		for (IDebugTarget sctDebugTarget : targets) {
 			// Reload the Statechart form the changes resource
-			Statechart newStatechart = ResourceUtil
-					.loadStatechart(sctDebugTarget.getResourceString());
-			if (!EcoreUtil.equals(newStatechart,
-					(EObject) sctDebugTarget.getAdapter(EObject.class))) {
+			Statechart newStatechart = ResourceUtil.loadStatechart(((SCTDebugElement) sctDebugTarget)
+					.getResourceString());
+			if (!EcoreUtil.equals(newStatechart, (EObject) sctDebugTarget.getAdapter(EObject.class))) {
 				// The model semantically changed, we have to create a
 				// notificiation for that....
 				modelReplacementFailedTargets.add(sctDebugTarget);
@@ -199,8 +195,7 @@ public class SCTHotModelReplacementManager implements IResourceChangeListener,
 
 	}
 
-	protected void notifyHotModelReplacementFailed(
-			List<SCTDebugTarget> affectedTargets) {
+	protected void notifyHotModelReplacementFailed(List<IDebugTarget> affectedTargets) {
 		synchronized (listeners) {
 			for (IHotModelReplacementListener listener : listeners) {
 				listener.hotCodeReplaceFailed(affectedTargets);
@@ -208,15 +203,16 @@ public class SCTHotModelReplacementManager implements IResourceChangeListener,
 		}
 	}
 
-	private List<SCTDebugTarget> getAffectedTargets() {
-		List<SCTDebugTarget> targets = new ArrayList<SCTDebugTarget>();
+	private List<IDebugTarget> getAffectedTargets() {
+		List<IDebugTarget> targets = new ArrayList<IDebugTarget>();
 		synchronized (activeTargets) {
-			for (SCTDebugTarget debugTarget : activeTargets) {
-				String resourceString = debugTarget.getResourceString();
-				IResource resource = ResourcesPlugin.getWorkspace().getRoot()
-						.findMember(resourceString);
-				if (changedFiles.contains(resource)) {
-					targets.add(debugTarget);
+			for (IDebugTarget debugTarget : activeTargets) {
+				if (debugTarget instanceof SCTDebugTarget) {
+					String resourceString = ((SCTDebugElement) debugTarget).getResourceString();
+					IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(resourceString);
+					if (changedFiles.contains(resource)) {
+						targets.add(debugTarget);
+					}
 				}
 			}
 		}

+ 21 - 17
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/launch/StatechartLaunchConfigurationDelegate.java

@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011 committers of YAKINDU and others.
+ * Copyright (c) 2013 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
@@ -13,6 +13,7 @@ package org.yakindu.sct.simulation.core.launch;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.debug.core.ILaunch;
@@ -20,7 +21,9 @@ import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
 import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
+import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.simulation.core.debugmodel.SCTDebugTarget;
+import org.yakindu.sct.simulation.core.engine.ISimulationEngine;
 import org.yakindu.sct.simulation.core.util.ResourceUtil;
 
 /**
@@ -28,28 +31,29 @@ import org.yakindu.sct.simulation.core.util.ResourceUtil;
  * @author andreas muelder - Initial contribution and API
  * 
  */
-public class StatechartLaunchConfigurationDelegate extends
-		LaunchConfigurationDelegate implements ILaunchConfigurationDelegate {
-
-	public void launch(ILaunchConfiguration configuration, String mode,
-			ILaunch launch, IProgressMonitor monitor) throws CoreException {
-		String filename = configuration.getAttribute(
-				IStatechartLaunchParameters.FILE_NAME,
-				IStatechartLaunchParameters.DEFAULT_FILE_NAME);
-		IDebugTarget target = new SCTDebugTarget(launch,
-				ResourceUtil.loadStatechart(filename));
+public abstract class AbstractSCTLaunchConfigurationDelegate extends LaunchConfigurationDelegate implements
+		ILaunchConfigurationDelegate {
+
+	public String FILE_NAME = "filename";
+	public String DEFAULT_FILE_NAME = "";
+
+	protected abstract ISimulationEngine createExecutionContainer(ILaunch launch, Statechart statechart);
+
+	public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)
+			throws CoreException {
+		String filename = configuration.getAttribute(FILE_NAME, DEFAULT_FILE_NAME);
+		Statechart statechart = ResourceUtil.loadStatechart(filename);
+		Assert.isNotNull(statechart);
+		IDebugTarget target = new SCTDebugTarget(launch, statechart, createExecutionContainer(launch, statechart));
 		launch.addDebugTarget(target);
 
 	}
 
 	@Override
-	protected IProject[] getProjectsForProblemSearch(
-			ILaunchConfiguration configuration, String mode)
+	protected IProject[] getProjectsForProblemSearch(ILaunchConfiguration configuration, String mode)
 			throws CoreException {
-		String filename = configuration.getAttribute(
-				IStatechartLaunchParameters.FILE_NAME, "");
-		IResource resource = ResourcesPlugin.getWorkspace().getRoot()
-				.findMember(filename);
+		String filename = configuration.getAttribute(FILE_NAME, "");
+		IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(filename);
 		return new IProject[] { resource.getProject() };
 
 	}

+ 0 - 36
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/launch/IStatechartLaunchParameters.java

@@ -1,36 +0,0 @@
-/**
- * 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.simulation.core.launch;
-
-/**
- * Attribute constants for the YAKINDU Statechart launch configuration.
- * 
- * @author andreas muelder
- * 
- */
-public interface IStatechartLaunchParameters {
-
-	String FILE_NAME = "filename";
-	String DEFAULT_FILE_NAME = "";
-
-	String CYCLE_PERIOD = "cyclePeriod";
-	int DEFAULT_CYCLE_PERIOD = 200;
-
-	String IS_CYCLE_BASED = "cycleBased";
-	boolean DEFAULT_IS_CYCLE_BASED = true;
-
-	String IS_EVENT_DRIVEN = "eventDriven";
-	boolean DEFAULT_IS_EVENT_DRIVEN = false;
-	
-	String OPERATION_CLASS = "operationClass";
-	String DEFAULT_OPERATION_CLASS = "";
-
-}

+ 48 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/CompositeSlot.java

@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Composite Slot</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.CompositeSlot#getSlots <em>Slots</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getCompositeSlot()
+ * @model
+ * @generated
+ */
+public interface CompositeSlot extends ExecutionSlot {
+	/**
+	 * Returns the value of the '<em><b>Slots</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Slots</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Slots</em>' containment reference list.
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getCompositeSlot_Slots()
+	 * @model containment="true"
+	 * @generated
+	 */
+	List<ExecutionSlot> getSlots();
+
+} // CompositeSlot

+ 243 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/EventDirection.java

@@ -0,0 +1,243 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Event Direction</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getEventDirection()
+ * @model
+ * @generated
+ */
+public enum EventDirection implements Enumerator {
+	/**
+	 * The '<em><b>LOCAL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOCAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LOCAL(0, "LOCAL", "LOCAL"),
+
+	/**
+	 * The '<em><b>IN</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	IN(1, "IN", "IN"),
+
+	/**
+	 * The '<em><b>OUT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OUT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OUT(2, "OUT", "OUT");
+
+	/**
+	 * The '<em><b>LOCAL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LOCAL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LOCAL
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LOCAL_VALUE = 0;
+
+	/**
+	 * The '<em><b>IN</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>IN</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #IN
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int IN_VALUE = 1;
+
+	/**
+	 * The '<em><b>OUT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>OUT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OUT
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OUT_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Event Direction</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final EventDirection[] VALUES_ARRAY =
+		new EventDirection[] {
+			LOCAL,
+			IN,
+			OUT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Event Direction</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<EventDirection> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Event Direction</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static EventDirection get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EventDirection result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Event Direction</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static EventDirection getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EventDirection result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Event Direction</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static EventDirection get(int value) {
+		switch (value) {
+			case LOCAL_VALUE: return LOCAL;
+			case IN_VALUE: return IN;
+			case OUT_VALUE: return OUT;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EventDirection(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //EventDirection

+ 206 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/ExecutionContext.java

@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.yakindu.base.base.NamedElement;
+
+import org.yakindu.sct.model.sgraph.RegularState;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Execution Context</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getActiveStates <em>Active States</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getEvents <em>Events</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getVariables <em>Variables</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getExecutedElements <em>Executed Elements</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getSlots <em>Slots</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getSuspendedElements <em>Suspended Elements</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#isSnapshot <em>Snapshot</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionContext()
+ * @model
+ * @generated
+ */
+public interface ExecutionContext extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Active States</b></em>' reference list.
+	 * The list contents are of type {@link org.yakindu.sct.model.sgraph.RegularState}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Active States</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Active States</em>' reference list.
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionContext_ActiveStates()
+	 * @model
+	 * @generated
+	 */
+	List<RegularState> getActiveStates();
+
+	/**
+	 * Returns the value of the '<em><b>Events</b></em>' reference list.
+	 * The list contents are of type {@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Events</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Events</em>' reference list.
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionContext_Events()
+	 * @model transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	List<ExecutionEvent> getEvents();
+
+	/**
+	 * Returns the value of the '<em><b>Variables</b></em>' reference list.
+	 * The list contents are of type {@link org.yakindu.sct.simulation.core.sruntime.ExecutionVariable}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Variables</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Variables</em>' reference list.
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionContext_Variables()
+	 * @model transient="true" volatile="true" derived="true"
+	 * @generated
+	 */
+	List<ExecutionVariable> getVariables();
+
+	/**
+	 * Returns the value of the '<em><b>Executed Elements</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.EObject}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Executed Elements</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Executed Elements</em>' reference list.
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionContext_ExecutedElements()
+	 * @model
+	 * @generated
+	 */
+	List<EObject> getExecutedElements();
+
+	/**
+	 * Returns the value of the '<em><b>Slots</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Slots</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Slots</em>' containment reference list.
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionContext_Slots()
+	 * @model containment="true"
+	 * @generated
+	 */
+	List<ExecutionSlot> getSlots();
+
+	/**
+	 * Returns the value of the '<em><b>Suspended Elements</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.EObject}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Suspended Elements</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Suspended Elements</em>' reference list.
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionContext_SuspendedElements()
+	 * @model
+	 * @generated
+	 */
+	List<EObject> getSuspendedElements();
+
+	/**
+	 * Returns the value of the '<em><b>Snapshot</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Snapshot</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Snapshot</em>' attribute.
+	 * @see #setSnapshot(boolean)
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionContext_Snapshot()
+	 * @model
+	 * @generated
+	 */
+	boolean isSnapshot();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#isSnapshot <em>Snapshot</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Snapshot</em>' attribute.
+	 * @see #isSnapshot()
+	 * @generated
+	 */
+	void setSnapshot(boolean value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation"
+	 * @generated
+	 */
+	List<ExecutionEvent> getRaisedEvents();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation"
+	 * @generated
+	 */
+	List<ExecutionEvent> getScheduledEvents();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	ExecutionVariable getVariable(String qualifiedName);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	ExecutionEvent getEvent(String qualifiedName);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation"
+	 * @generated
+	 */
+	List<RegularState> getAllActiveStates();
+
+} // ExecutionContext

+ 114 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/ExecutionEvent.java

@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Execution Event</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#isRaised <em>Raised</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#isScheduled <em>Scheduled</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#getDirection <em>Direction</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionEvent()
+ * @model
+ * @generated
+ */
+public interface ExecutionEvent extends ExecutionSlot {
+	/**
+	 * Returns the value of the '<em><b>Raised</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Raised</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Raised</em>' attribute.
+	 * @see #setRaised(boolean)
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionEvent_Raised()
+	 * @model
+	 * @generated
+	 */
+	boolean isRaised();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#isRaised <em>Raised</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Raised</em>' attribute.
+	 * @see #isRaised()
+	 * @generated
+	 */
+	void setRaised(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Scheduled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scheduled</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scheduled</em>' attribute.
+	 * @see #setScheduled(boolean)
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionEvent_Scheduled()
+	 * @model
+	 * @generated
+	 */
+	boolean isScheduled();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#isScheduled <em>Scheduled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scheduled</em>' attribute.
+	 * @see #isScheduled()
+	 * @generated
+	 */
+	void setScheduled(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Direction</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.yakindu.sct.simulation.core.sruntime.EventDirection}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Direction</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Direction</em>' attribute.
+	 * @see org.yakindu.sct.simulation.core.sruntime.EventDirection
+	 * @see #setDirection(EventDirection)
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionEvent_Direction()
+	 * @model
+	 * @generated
+	 */
+	EventDirection getDirection();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#getDirection <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Direction</em>' attribute.
+	 * @see org.yakindu.sct.simulation.core.sruntime.EventDirection
+	 * @see #getDirection()
+	 * @generated
+	 */
+	void setDirection(EventDirection value);
+
+} // ExecutionEvent

+ 103 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/ExecutionSlot.java

@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime;
+
+import org.yakindu.base.base.NamedElement;
+
+import org.yakindu.base.types.ITypeSystem.InferredType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Execution Slot</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getType <em>Type</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getValue <em>Value</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getQualifiedName <em>Qualified Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionSlot()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ExecutionSlot extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #setType(InferredType)
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionSlot_Type()
+	 * @model dataType="org.yakindu.sct.simulation.core.sruntime.InferredType"
+	 * @generated
+	 */
+	InferredType getType();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(InferredType value);
+
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(Object)
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionSlot_Value()
+	 * @model dataType="org.yakindu.sct.simulation.core.sruntime.JavaObject"
+	 * @generated
+	 */
+	Object getValue();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(Object value);
+
+	/**
+	 * Returns the value of the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Qualified Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Qualified Name</em>' attribute.
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionSlot_QualifiedName()
+	 * @model transient="true" changeable="false" volatile="true" derived="true"
+	 * @generated
+	 */
+	String getQualifiedName();
+
+} // ExecutionSlot

+ 25 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/ExecutionVariable.java

@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Execution Variable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#getExecutionVariable()
+ * @model
+ * @generated
+ */
+public interface ExecutionVariable extends ExecutionSlot {
+} // ExecutionVariable

+ 77 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/SRuntimeFactory.java

@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage
+ * @generated
+ */
+public interface SRuntimeFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	SRuntimeFactory eINSTANCE = org.yakindu.sct.simulation.core.sruntime.impl.SRuntimeFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Execution Context</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Execution Context</em>'.
+	 * @generated
+	 */
+	ExecutionContext createExecutionContext();
+
+	/**
+	 * Returns a new object of class '<em>Execution Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Execution Event</em>'.
+	 * @generated
+	 */
+	ExecutionEvent createExecutionEvent();
+
+	/**
+	 * Returns a new object of class '<em>Execution Variable</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Execution Variable</em>'.
+	 * @generated
+	 */
+	ExecutionVariable createExecutionVariable();
+
+	/**
+	 * Returns a new object of class '<em>Composite Slot</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Composite Slot</em>'.
+	 * @generated
+	 */
+	CompositeSlot createCompositeSlot();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	SRuntimePackage getSRuntimePackage();
+
+} //SRuntimeFactory

+ 901 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/SRuntimePackage.java

@@ -0,0 +1,901 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.yakindu.base.base.BasePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimeFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SRuntimePackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "sruntime";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.yakindu.org/sct/sruntime/2.0.0";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "sruntime";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	SRuntimePackage eINSTANCE = org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl <em>Execution Context</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getExecutionContext()
+	 * @generated
+	 */
+	int EXECUTION_CONTEXT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT__NAME = BasePackage.NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Active States</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT__ACTIVE_STATES = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Events</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT__EVENTS = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Variables</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT__VARIABLES = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Executed Elements</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT__EXECUTED_ELEMENTS = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Slots</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT__SLOTS = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Suspended Elements</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT__SUSPENDED_ELEMENTS = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Snapshot</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT__SNAPSHOT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Execution Context</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_CONTEXT_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionSlotImpl <em>Execution Slot</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.ExecutionSlotImpl
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getExecutionSlot()
+	 * @generated
+	 */
+	int EXECUTION_SLOT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_SLOT__NAME = BasePackage.NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_SLOT__TYPE = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_SLOT__VALUE = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_SLOT__QUALIFIED_NAME = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Execution Slot</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_SLOT_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl <em>Execution Event</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getExecutionEvent()
+	 * @generated
+	 */
+	int EXECUTION_EVENT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_EVENT__NAME = EXECUTION_SLOT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_EVENT__TYPE = EXECUTION_SLOT__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_EVENT__VALUE = EXECUTION_SLOT__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_EVENT__QUALIFIED_NAME = EXECUTION_SLOT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Raised</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_EVENT__RAISED = EXECUTION_SLOT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Scheduled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_EVENT__SCHEDULED = EXECUTION_SLOT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Direction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_EVENT__DIRECTION = EXECUTION_SLOT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Execution Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_EVENT_FEATURE_COUNT = EXECUTION_SLOT_FEATURE_COUNT + 3;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionVariableImpl <em>Execution Variable</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.ExecutionVariableImpl
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getExecutionVariable()
+	 * @generated
+	 */
+	int EXECUTION_VARIABLE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_VARIABLE__NAME = EXECUTION_SLOT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_VARIABLE__TYPE = EXECUTION_SLOT__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_VARIABLE__VALUE = EXECUTION_SLOT__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_VARIABLE__QUALIFIED_NAME = EXECUTION_SLOT__QUALIFIED_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Execution Variable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_VARIABLE_FEATURE_COUNT = EXECUTION_SLOT_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.CompositeSlotImpl <em>Composite Slot</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.CompositeSlotImpl
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getCompositeSlot()
+	 * @generated
+	 */
+	int COMPOSITE_SLOT = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_SLOT__NAME = EXECUTION_SLOT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_SLOT__TYPE = EXECUTION_SLOT__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_SLOT__VALUE = EXECUTION_SLOT__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_SLOT__QUALIFIED_NAME = EXECUTION_SLOT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Slots</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_SLOT__SLOTS = EXECUTION_SLOT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Composite Slot</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_SLOT_FEATURE_COUNT = EXECUTION_SLOT_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.simulation.core.sruntime.EventDirection <em>Event Direction</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.simulation.core.sruntime.EventDirection
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getEventDirection()
+	 * @generated
+	 */
+	int EVENT_DIRECTION = 5;
+
+	/**
+	 * The meta object id for the '<em>Inferred Type</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.ITypeSystem.InferredType
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getInferredType()
+	 * @generated
+	 */
+	int INFERRED_TYPE = 6;
+
+
+	/**
+	 * The meta object id for the '<em>Java Object</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.lang.Object
+	 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getJavaObject()
+	 * @generated
+	 */
+	int JAVA_OBJECT = 7;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext <em>Execution Context</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Execution Context</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext
+	 * @generated
+	 */
+	EClass getExecutionContext();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getActiveStates <em>Active States</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Active States</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getActiveStates()
+	 * @see #getExecutionContext()
+	 * @generated
+	 */
+	EReference getExecutionContext_ActiveStates();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getEvents <em>Events</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Events</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getEvents()
+	 * @see #getExecutionContext()
+	 * @generated
+	 */
+	EReference getExecutionContext_Events();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getVariables <em>Variables</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Variables</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getVariables()
+	 * @see #getExecutionContext()
+	 * @generated
+	 */
+	EReference getExecutionContext_Variables();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getExecutedElements <em>Executed Elements</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Executed Elements</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getExecutedElements()
+	 * @see #getExecutionContext()
+	 * @generated
+	 */
+	EReference getExecutionContext_ExecutedElements();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getSlots <em>Slots</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Slots</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getSlots()
+	 * @see #getExecutionContext()
+	 * @generated
+	 */
+	EReference getExecutionContext_Slots();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getSuspendedElements <em>Suspended Elements</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Suspended Elements</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext#getSuspendedElements()
+	 * @see #getExecutionContext()
+	 * @generated
+	 */
+	EReference getExecutionContext_SuspendedElements();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext#isSnapshot <em>Snapshot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Snapshot</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext#isSnapshot()
+	 * @see #getExecutionContext()
+	 * @generated
+	 */
+	EAttribute getExecutionContext_Snapshot();
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent <em>Execution Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Execution Event</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionEvent
+	 * @generated
+	 */
+	EClass getExecutionEvent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#isRaised <em>Raised</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Raised</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#isRaised()
+	 * @see #getExecutionEvent()
+	 * @generated
+	 */
+	EAttribute getExecutionEvent_Raised();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#isScheduled <em>Scheduled</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scheduled</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#isScheduled()
+	 * @see #getExecutionEvent()
+	 * @generated
+	 */
+	EAttribute getExecutionEvent_Scheduled();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#getDirection <em>Direction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Direction</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionEvent#getDirection()
+	 * @see #getExecutionEvent()
+	 * @generated
+	 */
+	EAttribute getExecutionEvent_Direction();
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot <em>Execution Slot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Execution Slot</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionSlot
+	 * @generated
+	 */
+	EClass getExecutionSlot();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getType()
+	 * @see #getExecutionSlot()
+	 * @generated
+	 */
+	EAttribute getExecutionSlot_Type();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getValue()
+	 * @see #getExecutionSlot()
+	 * @generated
+	 */
+	EAttribute getExecutionSlot_Value();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getQualifiedName <em>Qualified Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Qualified Name</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionSlot#getQualifiedName()
+	 * @see #getExecutionSlot()
+	 * @generated
+	 */
+	EAttribute getExecutionSlot_QualifiedName();
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionVariable <em>Execution Variable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Execution Variable</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionVariable
+	 * @generated
+	 */
+	EClass getExecutionVariable();
+
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.simulation.core.sruntime.CompositeSlot <em>Composite Slot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Composite Slot</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.CompositeSlot
+	 * @generated
+	 */
+	EClass getCompositeSlot();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.yakindu.sct.simulation.core.sruntime.CompositeSlot#getSlots <em>Slots</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Slots</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.CompositeSlot#getSlots()
+	 * @see #getCompositeSlot()
+	 * @generated
+	 */
+	EReference getCompositeSlot_Slots();
+
+	/**
+	 * Returns the meta object for enum '{@link org.yakindu.sct.simulation.core.sruntime.EventDirection <em>Event Direction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Event Direction</em>'.
+	 * @see org.yakindu.sct.simulation.core.sruntime.EventDirection
+	 * @generated
+	 */
+	EEnum getEventDirection();
+
+	/**
+	 * Returns the meta object for data type '{@link org.yakindu.base.types.ITypeSystem.InferredType <em>Inferred Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Inferred Type</em>'.
+	 * @see org.yakindu.base.types.ITypeSystem.InferredType
+	 * @model instanceClass="org.yakindu.base.types.ITypeSystem.InferredType"
+	 * @generated
+	 */
+	EDataType getInferredType();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.Object <em>Java Object</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Java Object</em>'.
+	 * @see java.lang.Object
+	 * @model instanceClass="java.lang.Object"
+	 * @generated
+	 */
+	EDataType getJavaObject();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	SRuntimeFactory getSRuntimeFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl <em>Execution Context</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getExecutionContext()
+		 * @generated
+		 */
+		EClass EXECUTION_CONTEXT = eINSTANCE.getExecutionContext();
+
+		/**
+		 * The meta object literal for the '<em><b>Active States</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXECUTION_CONTEXT__ACTIVE_STATES = eINSTANCE.getExecutionContext_ActiveStates();
+
+		/**
+		 * The meta object literal for the '<em><b>Events</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXECUTION_CONTEXT__EVENTS = eINSTANCE.getExecutionContext_Events();
+
+		/**
+		 * The meta object literal for the '<em><b>Variables</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXECUTION_CONTEXT__VARIABLES = eINSTANCE.getExecutionContext_Variables();
+
+		/**
+		 * The meta object literal for the '<em><b>Executed Elements</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXECUTION_CONTEXT__EXECUTED_ELEMENTS = eINSTANCE.getExecutionContext_ExecutedElements();
+
+		/**
+		 * The meta object literal for the '<em><b>Slots</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXECUTION_CONTEXT__SLOTS = eINSTANCE.getExecutionContext_Slots();
+
+		/**
+		 * The meta object literal for the '<em><b>Suspended Elements</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXECUTION_CONTEXT__SUSPENDED_ELEMENTS = eINSTANCE.getExecutionContext_SuspendedElements();
+
+		/**
+		 * The meta object literal for the '<em><b>Snapshot</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXECUTION_CONTEXT__SNAPSHOT = eINSTANCE.getExecutionContext_Snapshot();
+
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl <em>Execution Event</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getExecutionEvent()
+		 * @generated
+		 */
+		EClass EXECUTION_EVENT = eINSTANCE.getExecutionEvent();
+
+		/**
+		 * The meta object literal for the '<em><b>Raised</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXECUTION_EVENT__RAISED = eINSTANCE.getExecutionEvent_Raised();
+
+		/**
+		 * The meta object literal for the '<em><b>Scheduled</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXECUTION_EVENT__SCHEDULED = eINSTANCE.getExecutionEvent_Scheduled();
+
+		/**
+		 * The meta object literal for the '<em><b>Direction</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXECUTION_EVENT__DIRECTION = eINSTANCE.getExecutionEvent_Direction();
+
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionSlotImpl <em>Execution Slot</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.ExecutionSlotImpl
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getExecutionSlot()
+		 * @generated
+		 */
+		EClass EXECUTION_SLOT = eINSTANCE.getExecutionSlot();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXECUTION_SLOT__TYPE = eINSTANCE.getExecutionSlot_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXECUTION_SLOT__VALUE = eINSTANCE.getExecutionSlot_Value();
+
+		/**
+		 * The meta object literal for the '<em><b>Qualified Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXECUTION_SLOT__QUALIFIED_NAME = eINSTANCE.getExecutionSlot_QualifiedName();
+
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionVariableImpl <em>Execution Variable</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.ExecutionVariableImpl
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getExecutionVariable()
+		 * @generated
+		 */
+		EClass EXECUTION_VARIABLE = eINSTANCE.getExecutionVariable();
+
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.simulation.core.sruntime.impl.CompositeSlotImpl <em>Composite Slot</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.CompositeSlotImpl
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getCompositeSlot()
+		 * @generated
+		 */
+		EClass COMPOSITE_SLOT = eINSTANCE.getCompositeSlot();
+
+		/**
+		 * The meta object literal for the '<em><b>Slots</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPOSITE_SLOT__SLOTS = eINSTANCE.getCompositeSlot_Slots();
+
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.simulation.core.sruntime.EventDirection <em>Event Direction</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.simulation.core.sruntime.EventDirection
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getEventDirection()
+		 * @generated
+		 */
+		EEnum EVENT_DIRECTION = eINSTANCE.getEventDirection();
+
+		/**
+		 * The meta object literal for the '<em>Inferred Type</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.base.types.ITypeSystem.InferredType
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getInferredType()
+		 * @generated
+		 */
+		EDataType INFERRED_TYPE = eINSTANCE.getInferredType();
+
+		/**
+		 * The meta object literal for the '<em>Java Object</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.lang.Object
+		 * @see org.yakindu.sct.simulation.core.sruntime.impl.SRuntimePackageImpl#getJavaObject()
+		 * @generated
+		 */
+		EDataType JAVA_OBJECT = eINSTANCE.getJavaObject();
+
+	}
+
+} //SRuntimePackage

+ 145 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/CompositeSlotImpl.java

@@ -0,0 +1,145 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.yakindu.sct.simulation.core.sruntime.CompositeSlot;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionSlot;
+import org.yakindu.sct.simulation.core.sruntime.SRuntimePackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Composite Slot</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.CompositeSlotImpl#getSlots <em>Slots</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CompositeSlotImpl extends ExecutionSlotImpl implements CompositeSlot {
+	/**
+	 * The cached value of the '{@link #getSlots() <em>Slots</em>}' containment reference list.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @see #getSlots()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ExecutionSlot> slots;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositeSlotImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SRuntimePackage.Literals.COMPOSITE_SLOT;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<ExecutionSlot> getSlots() {
+		if (slots == null) {
+			slots = new EObjectContainmentEList<ExecutionSlot>(ExecutionSlot.class, this, SRuntimePackage.COMPOSITE_SLOT__SLOTS);
+		}
+		return slots;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SRuntimePackage.COMPOSITE_SLOT__SLOTS:
+				return ((InternalEList<?>)getSlots()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SRuntimePackage.COMPOSITE_SLOT__SLOTS:
+				return getSlots();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SRuntimePackage.COMPOSITE_SLOT__SLOTS:
+				getSlots().clear();
+				getSlots().addAll((Collection<? extends ExecutionSlot>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SRuntimePackage.COMPOSITE_SLOT__SLOTS:
+				getSlots().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SRuntimePackage.COMPOSITE_SLOT__SLOTS:
+				return slots != null && !slots.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // CompositeSlotImpl

+ 464 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/ExecutionContextImpl.java

@@ -0,0 +1,464 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.yakindu.base.base.impl.NamedElementImpl;
+import org.yakindu.sct.model.sgraph.RegularState;
+import org.yakindu.sct.model.sgraph.State;
+import org.yakindu.sct.model.sgraph.util.DerivedSubsetEObjectEList;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionEvent;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionSlot;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
+import org.yakindu.sct.simulation.core.sruntime.SRuntimePackage;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Execution Context</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl#getActiveStates <em>Active States</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl#getEvents <em>Events</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl#getVariables <em>Variables</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl#getExecutedElements <em>Executed Elements</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl#getSlots <em>Slots</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl#getSuspendedElements <em>Suspended Elements</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl#isSnapshot <em>Snapshot</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExecutionContextImpl extends NamedElementImpl implements ExecutionContext {
+	/**
+	 * The cached value of the '{@link #getActiveStates() <em>Active States</em>}' reference list.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @see #getActiveStates()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<RegularState> activeStates;
+
+	/**
+	 * The cached value of the '{@link #getExecutedElements() <em>Executed Elements</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExecutedElements()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<EObject> executedElements;
+
+	/**
+	 * The cached value of the '{@link #getSlots() <em>Slots</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSlots()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ExecutionSlot> slots;
+
+	/**
+	 * The cached value of the '{@link #getSuspendedElements() <em>Suspended Elements</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSuspendedElements()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<EObject> suspendedElements;
+
+	/**
+	 * The default value of the '{@link #isSnapshot() <em>Snapshot</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSnapshot()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SNAPSHOT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSnapshot() <em>Snapshot</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSnapshot()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean snapshot = SNAPSHOT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionContextImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SRuntimePackage.Literals.EXECUTION_CONTEXT;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<RegularState> getActiveStates() {
+		if (activeStates == null) {
+			activeStates = new EObjectResolvingEList<RegularState>(RegularState.class, this, SRuntimePackage.EXECUTION_CONTEXT__ACTIVE_STATES);
+		}
+		return activeStates;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public List<ExecutionEvent> getEvents() {
+		return new DerivedSubsetEObjectEList<ExecutionEvent>(ExecutionEvent.class, this,
+				SRuntimePackage.EXECUTION_CONTEXT__EVENTS, SRuntimePackage.EXECUTION_CONTEXT__SLOTS);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public List<ExecutionVariable> getVariables() {
+		return new DerivedSubsetEObjectEList<ExecutionVariable>(ExecutionVariable.class, this,
+				SRuntimePackage.EXECUTION_CONTEXT__VARIABLES, SRuntimePackage.EXECUTION_CONTEXT__SLOTS);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<EObject> getExecutedElements() {
+		if (executedElements == null) {
+			executedElements = new EObjectResolvingEList<EObject>(EObject.class, this, SRuntimePackage.EXECUTION_CONTEXT__EXECUTED_ELEMENTS);
+		}
+		return executedElements;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<ExecutionSlot> getSlots() {
+		if (slots == null) {
+			slots = new EObjectContainmentEList<ExecutionSlot>(ExecutionSlot.class, this, SRuntimePackage.EXECUTION_CONTEXT__SLOTS);
+		}
+		return slots;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<EObject> getSuspendedElements() {
+		if (suspendedElements == null) {
+			suspendedElements = new EObjectResolvingEList<EObject>(EObject.class, this, SRuntimePackage.EXECUTION_CONTEXT__SUSPENDED_ELEMENTS);
+		}
+		return suspendedElements;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSnapshot() {
+		return snapshot;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSnapshot(boolean newSnapshot) {
+		boolean oldSnapshot = snapshot;
+		snapshot = newSnapshot;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SRuntimePackage.EXECUTION_CONTEXT__SNAPSHOT, oldSnapshot, snapshot));
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public List<ExecutionEvent> getRaisedEvents() {
+		Iterable<ExecutionEvent> raisedEvents = Iterables.filter(getEvents(), new Predicate<ExecutionEvent>() {
+			public boolean apply(ExecutionEvent input) {
+				return input.isRaised();
+			}
+		});
+		BasicEList<ExecutionEvent> result = new BasicEList<ExecutionEvent>();
+		Iterables.addAll(result, raisedEvents);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public List<ExecutionEvent> getScheduledEvents() {
+		Iterable<ExecutionEvent> raisedEvents = Iterables.filter(getEvents(), new Predicate<ExecutionEvent>() {
+			public boolean apply(ExecutionEvent input) {
+				return input.isScheduled();
+			}
+		});
+		BasicEList<ExecutionEvent> result = new BasicEList<ExecutionEvent>();
+		Iterables.addAll(result, raisedEvents);
+		return result;
+	}
+
+	/**
+	 * Returns the variable by its qualified name
+	 * 
+	 * @generated NOT
+	 */
+	public ExecutionVariable getVariable(final String name) {
+		Assert.isNotNull(name);
+		for (ExecutionVariable var : getVariables()) {
+			if (name.equals(var.getName()))
+				return var;
+		}
+		return null;
+	}
+
+	/**
+	 *Returns the event by its qualified name
+	 * 
+	 * @generated NOT
+	 */
+	public ExecutionEvent getEvent(final String name) {
+		Assert.isNotNull(name);
+		
+		for (ExecutionEvent event : getEvents()) {
+			if (name.equals(event.getName()))
+				return event;
+		}
+		return null;
+	}
+	
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public List<RegularState> getAllActiveStates() {
+		List<RegularState> result = Lists.newArrayList();
+		List<RegularState> activeLeafStates = getActiveStates();
+		for (RegularState regularState : activeLeafStates) {
+			result.addAll(getActiveHierachy(regularState));
+		}
+		return result;
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_CONTEXT__SLOTS:
+				return ((InternalEList<?>)getSlots()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	private Collection<? extends RegularState> getActiveHierachy(RegularState vertex) {
+		List<RegularState> result = new ArrayList<RegularState>();
+		result.add(vertex);
+		EObject container = vertex.eContainer();
+		while (container != null) {
+			if (container instanceof RegularState) {
+				result.add((State) container);
+			}
+			container = container.eContainer();
+		}
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_CONTEXT__ACTIVE_STATES:
+				return getActiveStates();
+			case SRuntimePackage.EXECUTION_CONTEXT__EVENTS:
+				return getEvents();
+			case SRuntimePackage.EXECUTION_CONTEXT__VARIABLES:
+				return getVariables();
+			case SRuntimePackage.EXECUTION_CONTEXT__EXECUTED_ELEMENTS:
+				return getExecutedElements();
+			case SRuntimePackage.EXECUTION_CONTEXT__SLOTS:
+				return getSlots();
+			case SRuntimePackage.EXECUTION_CONTEXT__SUSPENDED_ELEMENTS:
+				return getSuspendedElements();
+			case SRuntimePackage.EXECUTION_CONTEXT__SNAPSHOT:
+				return isSnapshot();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_CONTEXT__ACTIVE_STATES:
+				getActiveStates().clear();
+				getActiveStates().addAll((Collection<? extends RegularState>)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__EVENTS:
+				getEvents().clear();
+				getEvents().addAll((Collection<? extends ExecutionEvent>)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__VARIABLES:
+				getVariables().clear();
+				getVariables().addAll((Collection<? extends ExecutionVariable>)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__EXECUTED_ELEMENTS:
+				getExecutedElements().clear();
+				getExecutedElements().addAll((Collection<? extends EObject>)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__SLOTS:
+				getSlots().clear();
+				getSlots().addAll((Collection<? extends ExecutionSlot>)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__SUSPENDED_ELEMENTS:
+				getSuspendedElements().clear();
+				getSuspendedElements().addAll((Collection<? extends EObject>)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__SNAPSHOT:
+				setSnapshot((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_CONTEXT__ACTIVE_STATES:
+				getActiveStates().clear();
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__EVENTS:
+				getEvents().clear();
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__VARIABLES:
+				getVariables().clear();
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__EXECUTED_ELEMENTS:
+				getExecutedElements().clear();
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__SLOTS:
+				getSlots().clear();
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__SUSPENDED_ELEMENTS:
+				getSuspendedElements().clear();
+				return;
+			case SRuntimePackage.EXECUTION_CONTEXT__SNAPSHOT:
+				setSnapshot(SNAPSHOT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_CONTEXT__ACTIVE_STATES:
+				return activeStates != null && !activeStates.isEmpty();
+			case SRuntimePackage.EXECUTION_CONTEXT__EVENTS:
+				return !getEvents().isEmpty();
+			case SRuntimePackage.EXECUTION_CONTEXT__VARIABLES:
+				return !getVariables().isEmpty();
+			case SRuntimePackage.EXECUTION_CONTEXT__EXECUTED_ELEMENTS:
+				return executedElements != null && !executedElements.isEmpty();
+			case SRuntimePackage.EXECUTION_CONTEXT__SLOTS:
+				return slots != null && !slots.isEmpty();
+			case SRuntimePackage.EXECUTION_CONTEXT__SUSPENDED_ELEMENTS:
+				return suspendedElements != null && !suspendedElements.isEmpty();
+			case SRuntimePackage.EXECUTION_CONTEXT__SNAPSHOT:
+				return snapshot != SNAPSHOT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (snapshot: ");
+		result.append(snapshot);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ExecutionContextImpl

+ 279 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/ExecutionEventImpl.java

@@ -0,0 +1,279 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.simulation.core.sruntime.EventDirection;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionEvent;
+import org.yakindu.sct.simulation.core.sruntime.SRuntimePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Execution Event</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl#isRaised <em>Raised</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl#isScheduled <em>Scheduled</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionEventImpl#getDirection <em>Direction</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExecutionEventImpl extends ExecutionSlotImpl implements ExecutionEvent {
+	/**
+	 * The default value of the '{@link #isRaised() <em>Raised</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isRaised()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean RAISED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isRaised() <em>Raised</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isRaised()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean raised = RAISED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isScheduled() <em>Scheduled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScheduled()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SCHEDULED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isScheduled() <em>Scheduled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScheduled()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean scheduled = SCHEDULED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDirection()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final EventDirection DIRECTION_EDEFAULT = EventDirection.LOCAL;
+
+	/**
+	 * The cached value of the '{@link #getDirection() <em>Direction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDirection()
+	 * @generated
+	 * @ordered
+	 */
+	protected EventDirection direction = DIRECTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionEventImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SRuntimePackage.Literals.EXECUTION_EVENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isRaised() {
+		return raised;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRaised(boolean newRaised) {
+		boolean oldRaised = raised;
+		raised = newRaised;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SRuntimePackage.EXECUTION_EVENT__RAISED, oldRaised, raised));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isScheduled() {
+		return scheduled;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScheduled(boolean newScheduled) {
+		boolean oldScheduled = scheduled;
+		scheduled = newScheduled;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SRuntimePackage.EXECUTION_EVENT__SCHEDULED, oldScheduled, scheduled));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EventDirection getDirection() {
+		return direction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDirection(EventDirection newDirection) {
+		EventDirection oldDirection = direction;
+		direction = newDirection == null ? DIRECTION_EDEFAULT : newDirection;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SRuntimePackage.EXECUTION_EVENT__DIRECTION, oldDirection, direction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_EVENT__RAISED:
+				return isRaised();
+			case SRuntimePackage.EXECUTION_EVENT__SCHEDULED:
+				return isScheduled();
+			case SRuntimePackage.EXECUTION_EVENT__DIRECTION:
+				return getDirection();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_EVENT__RAISED:
+				setRaised((Boolean)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_EVENT__SCHEDULED:
+				setScheduled((Boolean)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_EVENT__DIRECTION:
+				setDirection((EventDirection)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_EVENT__RAISED:
+				setRaised(RAISED_EDEFAULT);
+				return;
+			case SRuntimePackage.EXECUTION_EVENT__SCHEDULED:
+				setScheduled(SCHEDULED_EDEFAULT);
+				return;
+			case SRuntimePackage.EXECUTION_EVENT__DIRECTION:
+				setDirection(DIRECTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_EVENT__RAISED:
+				return raised != RAISED_EDEFAULT;
+			case SRuntimePackage.EXECUTION_EVENT__SCHEDULED:
+				return scheduled != SCHEDULED_EDEFAULT;
+			case SRuntimePackage.EXECUTION_EVENT__DIRECTION:
+				return direction != DIRECTION_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (raised: ");
+		result.append(raised);
+		result.append(", scheduled: ");
+		result.append(scheduled);
+		result.append(", direction: ");
+		result.append(direction);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ExecutionEventImpl

+ 254 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/ExecutionSlotImpl.java

@@ -0,0 +1,254 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.base.base.impl.NamedElementImpl;
+
+import org.yakindu.base.types.ITypeSystem.InferredType;
+
+import org.yakindu.sct.simulation.core.sruntime.ExecutionSlot;
+import org.yakindu.sct.simulation.core.sruntime.SRuntimePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Execution Slot</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionSlotImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionSlotImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.yakindu.sct.simulation.core.sruntime.impl.ExecutionSlotImpl#getQualifiedName <em>Qualified Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ExecutionSlotImpl extends NamedElementImpl implements ExecutionSlot {
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final InferredType TYPE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected InferredType type = TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Object VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Object value = VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getQualifiedName() <em>Qualified Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getQualifiedName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String QUALIFIED_NAME_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionSlotImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SRuntimePackage.Literals.EXECUTION_SLOT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InferredType getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(InferredType newType) {
+		InferredType oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SRuntimePackage.EXECUTION_SLOT__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Object getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(Object newValue) {
+		Object oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SRuntimePackage.EXECUTION_SLOT__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getQualifiedName() {
+		// TODO: implement this method to return the 'Qualified Name' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_SLOT__TYPE:
+				return getType();
+			case SRuntimePackage.EXECUTION_SLOT__VALUE:
+				return getValue();
+			case SRuntimePackage.EXECUTION_SLOT__QUALIFIED_NAME:
+				return getQualifiedName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_SLOT__TYPE:
+				setType((InferredType)newValue);
+				return;
+			case SRuntimePackage.EXECUTION_SLOT__VALUE:
+				setValue(newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_SLOT__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+			case SRuntimePackage.EXECUTION_SLOT__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SRuntimePackage.EXECUTION_SLOT__TYPE:
+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+			case SRuntimePackage.EXECUTION_SLOT__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+			case SRuntimePackage.EXECUTION_SLOT__QUALIFIED_NAME:
+				return QUALIFIED_NAME_EDEFAULT == null ? getQualifiedName() != null : !QUALIFIED_NAME_EDEFAULT.equals(getQualifiedName());
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (type: ");
+		result.append(type);
+		result.append(", value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ExecutionSlotImpl

+ 47 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/ExecutionVariableImpl.java

@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
+import org.yakindu.sct.simulation.core.sruntime.SRuntimePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Execution Variable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ExecutionVariableImpl extends ExecutionSlotImpl implements ExecutionVariable {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionVariableImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SRuntimePackage.Literals.EXECUTION_VARIABLE;
+	}
+
+} //ExecutionVariableImpl

+ 237 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/SRuntimeFactoryImpl.java

@@ -0,0 +1,237 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.yakindu.base.types.ITypeSystem.InferredType;
+import org.yakindu.base.types.PrimitiveType;
+import org.yakindu.base.types.TypesFactory;
+import org.yakindu.sct.simulation.core.sruntime.*;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!--
+ * end-user-doc -->
+ * @generated
+ */
+public class SRuntimeFactoryImpl extends EFactoryImpl implements SRuntimeFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @generated
+	 */
+	public static SRuntimeFactory init() {
+		try {
+			SRuntimeFactory theSRuntimeFactory = (SRuntimeFactory)EPackage.Registry.INSTANCE.getEFactory(SRuntimePackage.eNS_URI);
+			if (theSRuntimeFactory != null) {
+				return theSRuntimeFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new SRuntimeFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @generated
+	 */
+	public SRuntimeFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case SRuntimePackage.EXECUTION_CONTEXT: return createExecutionContext();
+			case SRuntimePackage.EXECUTION_EVENT: return createExecutionEvent();
+			case SRuntimePackage.EXECUTION_VARIABLE: return createExecutionVariable();
+			case SRuntimePackage.COMPOSITE_SLOT: return createCompositeSlot();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case SRuntimePackage.EVENT_DIRECTION:
+				return createEventDirectionFromString(eDataType, initialValue);
+			case SRuntimePackage.INFERRED_TYPE:
+				return createInferredTypeFromString(eDataType, initialValue);
+			case SRuntimePackage.JAVA_OBJECT:
+				return createJavaObjectFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case SRuntimePackage.EVENT_DIRECTION:
+				return convertEventDirectionToString(eDataType, instanceValue);
+			case SRuntimePackage.INFERRED_TYPE:
+				return convertInferredTypeToString(eDataType, instanceValue);
+			case SRuntimePackage.JAVA_OBJECT:
+				return convertJavaObjectToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionContext createExecutionContext() {
+		ExecutionContextImpl executionContext = new ExecutionContextImpl();
+		return executionContext;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionEvent createExecutionEvent() {
+		ExecutionEventImpl executionEvent = new ExecutionEventImpl();
+		return executionEvent;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ExecutionVariable createExecutionVariable() {
+		ExecutionVariableImpl executionVariable = new ExecutionVariableImpl();
+		return executionVariable;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositeSlot createCompositeSlot() {
+		CompositeSlotImpl compositeSlot = new CompositeSlotImpl();
+		return compositeSlot;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EventDirection createEventDirectionFromString(EDataType eDataType, String initialValue) {
+		EventDirection result = EventDirection.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertEventDirectionToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public InferredType createInferredTypeFromString(EDataType eDataType, String initialValue) {
+		PrimitiveType type = TypesFactory.eINSTANCE.createPrimitiveType();
+		type.setName(initialValue);
+		return new InferredType(type);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertInferredTypeToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public Object createJavaObjectFromString(EDataType eDataType, String initialValue) {
+		int indexOf = initialValue.indexOf(":");
+		String className = initialValue.substring(0, indexOf);
+		String value = initialValue.substring(indexOf + 1);
+		if (Boolean.class.getName().equals(className))
+			return Boolean.parseBoolean(value);
+		if (String.class.getName().equals(className))
+			return value;
+		if (Long.class.getName().equals(className))
+			return Long.parseLong(value);
+		if (Double.class.getName().equals(className))
+			return Double.parseDouble(value);
+		if (Integer.class.getName().equals(className))
+			return Integer.parseInt(value);
+		return super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public String convertJavaObjectToString(EDataType eDataType, Object instanceValue) {
+		StringBuilder builder = new StringBuilder();
+		builder.append(instanceValue.getClass().getName());
+		builder.append(":");
+		builder.append(instanceValue);
+		return builder.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SRuntimePackage getSRuntimePackage() {
+		return (SRuntimePackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static SRuntimePackage getPackage() {
+		return SRuntimePackage.eINSTANCE;
+	}
+
+} // SRuntimeFactoryImpl

+ 507 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/impl/SRuntimePackageImpl.java

@@ -0,0 +1,507 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.yakindu.base.base.BasePackage;
+import org.yakindu.base.types.ITypeSystem.InferredType;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
+import org.yakindu.sct.simulation.core.sruntime.CompositeSlot;
+import org.yakindu.sct.simulation.core.sruntime.EventDirection;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionEvent;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionSlot;
+import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable;
+import org.yakindu.sct.simulation.core.sruntime.SRuntimeFactory;
+import org.yakindu.sct.simulation.core.sruntime.SRuntimePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SRuntimePackageImpl extends EPackageImpl implements SRuntimePackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass executionContextEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass executionEventEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass executionSlotEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass executionVariableEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass compositeSlotEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum eventDirectionEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType inferredTypeEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType javaObjectEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private SRuntimePackageImpl() {
+		super(eNS_URI, SRuntimeFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link SRuntimePackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static SRuntimePackage init() {
+		if (isInited) return (SRuntimePackage)EPackage.Registry.INSTANCE.getEPackage(SRuntimePackage.eNS_URI);
+
+		// Obtain or create and register package
+		SRuntimePackageImpl theSRuntimePackage = (SRuntimePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof SRuntimePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new SRuntimePackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		SGraphPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theSRuntimePackage.createPackageContents();
+
+		// Initialize created meta-data
+		theSRuntimePackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theSRuntimePackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(SRuntimePackage.eNS_URI, theSRuntimePackage);
+		return theSRuntimePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getExecutionContext() {
+		return executionContextEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExecutionContext_ActiveStates() {
+		return (EReference)executionContextEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExecutionContext_Events() {
+		return (EReference)executionContextEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExecutionContext_Variables() {
+		return (EReference)executionContextEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExecutionContext_ExecutedElements() {
+		return (EReference)executionContextEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExecutionContext_Slots() {
+		return (EReference)executionContextEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExecutionContext_SuspendedElements() {
+		return (EReference)executionContextEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExecutionContext_Snapshot() {
+		return (EAttribute)executionContextEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getExecutionEvent() {
+		return executionEventEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExecutionEvent_Raised() {
+		return (EAttribute)executionEventEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExecutionEvent_Scheduled() {
+		return (EAttribute)executionEventEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExecutionEvent_Direction() {
+		return (EAttribute)executionEventEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getExecutionSlot() {
+		return executionSlotEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExecutionSlot_Type() {
+		return (EAttribute)executionSlotEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExecutionSlot_Value() {
+		return (EAttribute)executionSlotEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExecutionSlot_QualifiedName() {
+		return (EAttribute)executionSlotEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getExecutionVariable() {
+		return executionVariableEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCompositeSlot() {
+		return compositeSlotEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCompositeSlot_Slots() {
+		return (EReference)compositeSlotEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getEventDirection() {
+		return eventDirectionEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInferredType() {
+		return inferredTypeEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getJavaObject() {
+		return javaObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SRuntimeFactory getSRuntimeFactory() {
+		return (SRuntimeFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		executionContextEClass = createEClass(EXECUTION_CONTEXT);
+		createEReference(executionContextEClass, EXECUTION_CONTEXT__ACTIVE_STATES);
+		createEReference(executionContextEClass, EXECUTION_CONTEXT__EVENTS);
+		createEReference(executionContextEClass, EXECUTION_CONTEXT__VARIABLES);
+		createEReference(executionContextEClass, EXECUTION_CONTEXT__EXECUTED_ELEMENTS);
+		createEReference(executionContextEClass, EXECUTION_CONTEXT__SLOTS);
+		createEReference(executionContextEClass, EXECUTION_CONTEXT__SUSPENDED_ELEMENTS);
+		createEAttribute(executionContextEClass, EXECUTION_CONTEXT__SNAPSHOT);
+
+		executionEventEClass = createEClass(EXECUTION_EVENT);
+		createEAttribute(executionEventEClass, EXECUTION_EVENT__RAISED);
+		createEAttribute(executionEventEClass, EXECUTION_EVENT__SCHEDULED);
+		createEAttribute(executionEventEClass, EXECUTION_EVENT__DIRECTION);
+
+		executionSlotEClass = createEClass(EXECUTION_SLOT);
+		createEAttribute(executionSlotEClass, EXECUTION_SLOT__TYPE);
+		createEAttribute(executionSlotEClass, EXECUTION_SLOT__VALUE);
+		createEAttribute(executionSlotEClass, EXECUTION_SLOT__QUALIFIED_NAME);
+
+		executionVariableEClass = createEClass(EXECUTION_VARIABLE);
+
+		compositeSlotEClass = createEClass(COMPOSITE_SLOT);
+		createEReference(compositeSlotEClass, COMPOSITE_SLOT__SLOTS);
+
+		// Create enums
+		eventDirectionEEnum = createEEnum(EVENT_DIRECTION);
+
+		// Create data types
+		inferredTypeEDataType = createEDataType(INFERRED_TYPE);
+		javaObjectEDataType = createEDataType(JAVA_OBJECT);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		BasePackage theBasePackage = (BasePackage)EPackage.Registry.INSTANCE.getEPackage(BasePackage.eNS_URI);
+		SGraphPackage theSGraphPackage = (SGraphPackage)EPackage.Registry.INSTANCE.getEPackage(SGraphPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		executionContextEClass.getESuperTypes().add(theBasePackage.getNamedElement());
+		executionEventEClass.getESuperTypes().add(this.getExecutionSlot());
+		executionSlotEClass.getESuperTypes().add(theBasePackage.getNamedElement());
+		executionVariableEClass.getESuperTypes().add(this.getExecutionSlot());
+		compositeSlotEClass.getESuperTypes().add(this.getExecutionSlot());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(executionContextEClass, ExecutionContext.class, "ExecutionContext", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getExecutionContext_ActiveStates(), theSGraphPackage.getRegularState(), null, "activeStates", null, 0, -1, ExecutionContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExecutionContext_Events(), this.getExecutionEvent(), null, "events", null, 0, -1, ExecutionContext.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEReference(getExecutionContext_Variables(), this.getExecutionVariable(), null, "variables", null, 0, -1, ExecutionContext.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEReference(getExecutionContext_ExecutedElements(), ecorePackage.getEObject(), null, "executedElements", null, 0, -1, ExecutionContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExecutionContext_Slots(), this.getExecutionSlot(), null, "slots", null, 0, -1, ExecutionContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExecutionContext_SuspendedElements(), ecorePackage.getEObject(), null, "suspendedElements", null, 0, -1, ExecutionContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExecutionContext_Snapshot(), ecorePackage.getEBoolean(), "snapshot", null, 0, 1, ExecutionContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		addEOperation(executionContextEClass, this.getExecutionEvent(), "getRaisedEvents", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(executionContextEClass, this.getExecutionEvent(), "getScheduledEvents", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+		EOperation op = addEOperation(executionContextEClass, this.getExecutionVariable(), "getVariable", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "qualifiedName", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = addEOperation(executionContextEClass, this.getExecutionEvent(), "getEvent", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "qualifiedName", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(executionContextEClass, theSGraphPackage.getRegularState(), "getAllActiveStates", 0, -1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(executionEventEClass, ExecutionEvent.class, "ExecutionEvent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getExecutionEvent_Raised(), ecorePackage.getEBoolean(), "raised", null, 0, 1, ExecutionEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExecutionEvent_Scheduled(), ecorePackage.getEBoolean(), "scheduled", null, 0, 1, ExecutionEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExecutionEvent_Direction(), this.getEventDirection(), "direction", null, 0, 1, ExecutionEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(executionSlotEClass, ExecutionSlot.class, "ExecutionSlot", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getExecutionSlot_Type(), this.getInferredType(), "type", null, 0, 1, ExecutionSlot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExecutionSlot_Value(), this.getJavaObject(), "value", null, 0, 1, ExecutionSlot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExecutionSlot_QualifiedName(), ecorePackage.getEString(), "qualifiedName", null, 0, 1, ExecutionSlot.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+		initEClass(executionVariableEClass, ExecutionVariable.class, "ExecutionVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(compositeSlotEClass, CompositeSlot.class, "CompositeSlot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCompositeSlot_Slots(), this.getExecutionSlot(), null, "slots", null, 0, -1, CompositeSlot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(eventDirectionEEnum, EventDirection.class, "EventDirection");
+		addEEnumLiteral(eventDirectionEEnum, EventDirection.LOCAL);
+		addEEnumLiteral(eventDirectionEEnum, EventDirection.IN);
+		addEEnumLiteral(eventDirectionEEnum, EventDirection.OUT);
+
+		// Initialize data types
+		initEDataType(inferredTypeEDataType, InferredType.class, "InferredType", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(javaObjectEDataType, Object.class, "JavaObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //SRuntimePackageImpl

+ 68 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/util/CrossDocumentContentAdapter.java

@@ -0,0 +1,68 @@
+package org.yakindu.sct.simulation.core.sruntime.util;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EContentsEList;
+
+public class CrossDocumentContentAdapter extends EContentAdapter {
+	public CrossDocumentContentAdapter() {
+		super();
+	}
+
+	/**
+	 * By default, all cross document references are followed. Usually this is
+	 * not a great idea so this class can be subclassed to customize.
+	 * 
+	 * @param feature
+	 *            a cross document reference
+	 * @return whether the adapter should follow it
+	 */
+	protected boolean shouldAdapt(EStructuralFeature feature) {
+		return true;
+	}
+
+	@Override
+	protected void setTarget(EObject target) {
+		super.setTarget(target);
+		for (EContentsEList.FeatureIterator<EObject> featureIterator = (EContentsEList.FeatureIterator<EObject>) target
+				.eCrossReferences().iterator(); featureIterator.hasNext();) {
+			Notifier notifier = featureIterator.next();
+			EStructuralFeature feature = featureIterator.feature();
+			if (shouldAdapt(feature)) {
+				addAdapter(notifier);
+			}
+		}
+	}
+
+	@Override
+	protected void unsetTarget(EObject target) {
+		super.unsetTarget(target);
+		for (EContentsEList.FeatureIterator<EObject> featureIterator = (EContentsEList.FeatureIterator<EObject>) target
+				.eCrossReferences().iterator(); featureIterator.hasNext();) {
+			Notifier notifier = featureIterator.next();
+			EStructuralFeature feature = featureIterator.feature();
+			if (shouldAdapt(feature)) {
+				removeAdapter(notifier);
+			}
+		}
+	}
+
+	@Override
+	protected void selfAdapt(Notification notification) {
+		super.selfAdapt(notification);
+		if (notification.getNotifier() instanceof EObject) {
+			Object feature = notification.getFeature();
+			if (feature instanceof EReference) {
+				EReference eReference = (EReference) feature;
+				if (!eReference.isContainment() && shouldAdapt(eReference)) {
+					handleContainment(notification);
+				}
+			}
+		}
+	}
+
+}

+ 220 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/util/SRuntimeAdapterFactory.java

@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.yakindu.base.base.NamedElement;
+
+import org.yakindu.sct.simulation.core.sruntime.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage
+ * @generated
+ */
+public class SRuntimeAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static SRuntimePackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SRuntimeAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = SRuntimePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SRuntimeSwitch<Adapter> modelSwitch =
+		new SRuntimeSwitch<Adapter>() {
+			@Override
+			public Adapter caseExecutionContext(ExecutionContext object) {
+				return createExecutionContextAdapter();
+			}
+			@Override
+			public Adapter caseExecutionEvent(ExecutionEvent object) {
+				return createExecutionEventAdapter();
+			}
+			@Override
+			public Adapter caseExecutionSlot(ExecutionSlot object) {
+				return createExecutionSlotAdapter();
+			}
+			@Override
+			public Adapter caseExecutionVariable(ExecutionVariable object) {
+				return createExecutionVariableAdapter();
+			}
+			@Override
+			public Adapter caseCompositeSlot(CompositeSlot object) {
+				return createCompositeSlotAdapter();
+			}
+			@Override
+			public Adapter caseNamedElement(NamedElement object) {
+				return createNamedElementAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionContext <em>Execution Context</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionContext
+	 * @generated
+	 */
+	public Adapter createExecutionContextAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionEvent <em>Execution Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionEvent
+	 * @generated
+	 */
+	public Adapter createExecutionEventAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionSlot <em>Execution Slot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionSlot
+	 * @generated
+	 */
+	public Adapter createExecutionSlotAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.simulation.core.sruntime.ExecutionVariable <em>Execution Variable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.simulation.core.sruntime.ExecutionVariable
+	 * @generated
+	 */
+	public Adapter createExecutionVariableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.simulation.core.sruntime.CompositeSlot <em>Composite Slot</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.simulation.core.sruntime.CompositeSlot
+	 * @generated
+	 */
+	public Adapter createCompositeSlotAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.base.NamedElement <em>Named Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.base.base.NamedElement
+	 * @generated
+	 */
+	public Adapter createNamedElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //SRuntimeAdapterFactory

+ 227 - 0
plugins/org.yakindu.sct.simulation.core/src/org/yakindu/sct/simulation/core/sruntime/util/SRuntimeSwitch.java

@@ -0,0 +1,227 @@
+/**
+ * Copyright (c) 2013 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.simulation.core.sruntime.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.yakindu.base.base.NamedElement;
+
+import org.yakindu.sct.simulation.core.sruntime.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.yakindu.sct.simulation.core.sruntime.SRuntimePackage
+ * @generated
+ */
+public class SRuntimeSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static SRuntimePackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SRuntimeSwitch() {
+		if (modelPackage == null) {
+			modelPackage = SRuntimePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case SRuntimePackage.EXECUTION_CONTEXT: {
+				ExecutionContext executionContext = (ExecutionContext)theEObject;
+				T result = caseExecutionContext(executionContext);
+				if (result == null) result = caseNamedElement(executionContext);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SRuntimePackage.EXECUTION_EVENT: {
+				ExecutionEvent executionEvent = (ExecutionEvent)theEObject;
+				T result = caseExecutionEvent(executionEvent);
+				if (result == null) result = caseExecutionSlot(executionEvent);
+				if (result == null) result = caseNamedElement(executionEvent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SRuntimePackage.EXECUTION_SLOT: {
+				ExecutionSlot executionSlot = (ExecutionSlot)theEObject;
+				T result = caseExecutionSlot(executionSlot);
+				if (result == null) result = caseNamedElement(executionSlot);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SRuntimePackage.EXECUTION_VARIABLE: {
+				ExecutionVariable executionVariable = (ExecutionVariable)theEObject;
+				T result = caseExecutionVariable(executionVariable);
+				if (result == null) result = caseExecutionSlot(executionVariable);
+				if (result == null) result = caseNamedElement(executionVariable);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SRuntimePackage.COMPOSITE_SLOT: {
+				CompositeSlot compositeSlot = (CompositeSlot)theEObject;
+				T result = caseCompositeSlot(compositeSlot);
+				if (result == null) result = caseExecutionSlot(compositeSlot);
+				if (result == null) result = caseNamedElement(compositeSlot);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Execution Context</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Execution Context</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExecutionContext(ExecutionContext object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Execution Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Execution Event</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExecutionEvent(ExecutionEvent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Execution Slot</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Execution Slot</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExecutionSlot(ExecutionSlot object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Execution Variable</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Execution Variable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExecutionVariable(ExecutionVariable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Composite Slot</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Composite Slot</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCompositeSlot(CompositeSlot object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNamedElement(NamedElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //SRuntimeSwitch