Kaynağa Gözat

preliminary work for #325 (#1636)

* #325 - 	preliminary work: Separate Expressions Interpreter

* #325 - 	preliminary work: Separate Expressions Interpreter

* #325 - 	preliminary work: Separate Expressions Interpreter

* #325 - 	preliminary work: Separate Expressions Interpreter

* #325 - 	preliminary work: Separate Expressions Interpreter

* #325 - 	preliminary work: Separate SRuntime Model into own plugin

* #325 - 	preliminary work:remove dependency from sruntime to sgraph

this allows using expression interpreter without dependencies to SGraph
and the like

* #325 - 	adopted to expression language

*  #325 - Proposal Provider bugfix

* Moved TypeSpecifier to Expressions.xtext

* Added Property Definitions to SGen Model

* Added validation and scoping

* Add xtext nature, fix genmodel, regenerate
Andreas Mülder 8 yıl önce
ebeveyn
işleme
f815174098
100 değiştirilmiş dosya ile 1775 ekleme ve 3036 silme
  1. 8 0
      plugins/org.yakindu.base.expressions.interpreter/.classpath
  2. 3 0
      plugins/org.yakindu.base.expressions.interpreter/.gitignore
  3. 34 0
      plugins/org.yakindu.base.expressions.interpreter/.project
  4. 7 0
      plugins/org.yakindu.base.expressions.interpreter/.settings/org.eclipse.jdt.core.prefs
  5. 12 0
      plugins/org.yakindu.base.expressions.interpreter/META-INF/MANIFEST.MF
  6. 5 0
      plugins/org.yakindu.base.expressions.interpreter/build.properties
  7. 48 0
      plugins/org.yakindu.base.expressions.interpreter/pom.xml
  8. 4 5
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/AbstractStatementInterpreter.java
  9. 6 1
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/CoreFunction.java
  10. 5 5
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/DefaultExecutionSlotResolver.xtend
  11. 330 408
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/StextStatementInterpreter.xtend
  12. 1 1
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/Function.java
  13. 3 3
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/IExecutionSlotResolver.java
  14. 5 5
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/IStatementInterpreter.java
  15. 1 1
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/IOperationMockup.java
  16. 1 1
      plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/Signature.java
  17. 3 0
      plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/Expressions.xtext
  18. 2 1
      plugins/org.yakindu.sct.domain.generic.simulation/META-INF/MANIFEST.MF
  19. 7 7
      plugins/org.yakindu.sct.domain.generic.simulation/src/org/yakindu/sct/domain/generic/simulation/GenericSimulationModule.java
  20. 1 1
      plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/features/CDefaultFeatureValueProvider.java
  21. 1 1
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/filesystem/DefaultFileSystemAccessFactory.java
  22. 2 7
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/library/impl/CoreLibraryDefaultFeatureValueProvider.java
  23. 2 2
      plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/library/impl/DefaultCoreLibraryHelper.java
  24. 2 1
      plugins/org.yakindu.sct.generator.genmodel.ui/META-INF/MANIFEST.MF
  25. 9 5
      plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/templates/SGenProposalCreator.xtend
  26. 8 1
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/GenerateSGen.mwe2
  27. 19 37
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGen.xtext
  28. 22 6
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGenRuntimeModule.java
  29. 60 58
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/scoping/SGenScopeProvider.java
  30. 30 0
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/typesystem/SGenTypeInferrer.java
  31. 39 34
      plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java
  32. 3 1
      plugins/org.yakindu.sct.model.sgen.edit/META-INF/MANIFEST.MF
  33. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_AssignmentExpression.gif
  34. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_BitwiseAndExpression.gif
  35. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_BitwiseOrExpression.gif
  36. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_BitwiseXorExpression.gif
  37. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_ConditionalExpression.gif
  38. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_ElementReferenceExpression.gif
  39. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_FeatureCall.gif
  40. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_LogicalAndExpression.gif
  41. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_LogicalNotExpression.gif
  42. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_LogicalOrExpression.gif
  43. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_LogicalRelationExpression.gif
  44. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_NumericalAddSubtractExpression.gif
  45. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_NumericalMultiplyDivideExpression.gif
  46. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_NumericalUnaryExpression.gif
  47. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_ParenthesizedExpression.gif
  48. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_PrimitiveValueExpression.gif
  49. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_ShiftExpression.gif
  50. BIN
      plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_TypeCastExpression.gif
  51. 3 0
      plugins/org.yakindu.sct.model.sgen.edit/plugin.properties
  52. 0 149
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/BoolLiteralItemProvider.java
  53. 0 3
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/DeprecatableElementItemProvider.java
  54. 1 12
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureParameterItemProvider.java
  55. 75 5
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureParameterValueItemProvider.java
  56. 1 12
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureTypeItemProvider.java
  57. 0 149
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/IntLiteralItemProvider.java
  58. 0 2
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/LiteralItemProvider.java
  59. 0 149
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/RealLiteralItemProvider.java
  60. 0 96
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/SGenItemProviderAdapterFactory.java
  61. 4 0
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/SgenEditPlugin.java
  62. 0 151
      plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/StringLiteralItemProvider.java
  63. 6 0
      plugins/org.yakindu.sct.model.sgen/.project
  64. 3 1
      plugins/org.yakindu.sct.model.sgen/META-INF/MANIFEST.MF
  65. 11 14
      plugins/org.yakindu.sct.model.sgen/model/emf/sgen.ecore
  66. 19 17
      plugins/org.yakindu.sct.model.sgen/model/emf/sgen.genmodel
  67. 0 57
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/BoolLiteral.java
  68. 20 3
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/FeatureParameterValue.java
  69. 17 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/GeneratorModel.java
  70. 0 57
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/IntLiteral.java
  71. 0 26
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/Literal.java
  72. 52 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/PropertyDefinition.java
  73. 0 57
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/RealLiteral.java
  74. 6 33
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/SGenFactory.java
  75. 101 240
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/SGenPackage.java
  76. 0 57
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/StringLiteral.java
  77. 0 153
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/BoolLiteralImpl.java
  78. 92 23
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureParameterValueImpl.java
  79. 37 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/GeneratorModelImpl.java
  80. 0 153
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/IntLiteralImpl.java
  81. 0 48
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/LiteralImpl.java
  82. 178 0
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/PropertyDefinitionImpl.java
  83. 0 164
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/RealLiteralImpl.java
  84. 18 43
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/SGenFactoryImpl.java
  85. 216 213
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/SGenPackageImpl.java
  86. 0 164
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/StringLiteralImpl.java
  87. 0 94
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/sgen.ecore
  88. 58 35
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/util/SGenAdapterFactory.java
  89. 53 55
      plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/util/SGenSwitch.java
  90. 7 0
      plugins/org.yakindu.sct.model.sruntime/.classpath
  91. 3 0
      plugins/org.yakindu.sct.model.sruntime/.gitignore
  92. 28 0
      plugins/org.yakindu.sct.model.sruntime/.project
  93. 7 0
      plugins/org.yakindu.sct.model.sruntime/.settings/org.eclipse.jdt.core.prefs
  94. 17 0
      plugins/org.yakindu.sct.model.sruntime/META-INF/MANIFEST.MF
  95. 17 0
      plugins/org.yakindu.sct.model.sruntime/build.properties
  96. 1 2
      plugins/org.yakindu.sct.simulation.core/model/sruntime.ecore
  97. 5 7
      plugins/org.yakindu.sct.simulation.core/model/sruntime.genmodel
  98. 11 0
      plugins/org.yakindu.sct.model.sruntime/plugin.properties
  99. 25 0
      plugins/org.yakindu.sct.model.sruntime/plugin.xml
  100. 0 0
      plugins/org.yakindu.sct.model.sruntime/pom.xml

+ 8 - 0
plugins/org.yakindu.base.expressions.interpreter/.classpath

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 3 - 0
plugins/org.yakindu.base.expressions.interpreter/.gitignore

@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/

+ 34 - 0
plugins/org.yakindu.base.expressions.interpreter/.project

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.yakindu.base.expressions.interpreter</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>

+ 7 - 0
plugins/org.yakindu.base.expressions.interpreter/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8

+ 12 - 0
plugins/org.yakindu.base.expressions.interpreter/META-INF/MANIFEST.MF

@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: YAKINDU Expressions Interpreter
+Bundle-SymbolicName: org.yakindu.base.expressions.interpreter
+Bundle-Version: 3.0.1.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: statecharts.org
+Require-Bundle: org.yakindu.base.types;visibility:=reexport,
+ org.eclipse.xtext.xbase.lib,
+ org.yakindu.base.expressions,
+ org.yakindu.sct.model.sruntime;visibility:=reexport
+Export-Package: org.yakindu.base.expressions.interpreter

+ 5 - 0
plugins/org.yakindu.base.expressions.interpreter/build.properties

@@ -0,0 +1,5 @@
+source.. = src/,\
+           xtend-gen/
+output.. = bin/
+bin.includes = META-INF/,\
+               .

+ 48 - 0
plugins/org.yakindu.base.expressions.interpreter/pom.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.yakindu.sct</groupId>
+		<artifactId>org.yakindu.sct.releng</artifactId>
+		<version>3.0.1-SNAPSHOT</version>
+		<relativePath>../../releng/org.yakindu.sct.releng/pom.xml</relativePath>
+	</parent>
+	<artifactId>org.yakindu.base.expressions.interpreter</artifactId>
+	<groupId>org.yakindu.base.plugins</groupId>
+	<packaging>eclipse-plugin</packaging>
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+							<excludes>
+								<exclude>.gitignore</exclude>
+								<exclude>.svn/</exclude>
+							</excludes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<goals>
+							<goal>compile</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+		</plugins>		
+	</build>
+</project>

+ 4 - 5
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/AbstractStatementInterpreter.java

@@ -8,7 +8,7 @@
  * Contributors:
  *     committers of YAKINDU - initial API and implementation
  */
-package org.yakindu.sct.simulation.core.sexec.interpreter;
+package org.yakindu.base.expressions.interpreter;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -20,8 +20,7 @@ import java.util.Map;
  * @author axel terfloth - added caching of function lookups
  * 
  */
-public abstract class AbstractStatementInterpreter extends CoreFunction
-		implements IStatementInterpreter {
+public abstract class AbstractExpressionInterpreter extends CoreFunction implements IExpressionInterpreter {
 
 	protected static Map<String, String> assignFunctionMap = new HashMap<String, String>();
 
@@ -42,10 +41,10 @@ public abstract class AbstractStatementInterpreter extends CoreFunction
 
 	public Object evaluate(String name, Object... params) {
 		Function lookup = lookup(name, params);
-		if(lookup == null)
+		if (lookup == null)
 			throw new RuntimeException(
 					"No function definition found for '" + name + "' with parameters: " + Arrays.toString(params));
-		
+
 		return lookup.execute(params);
 	}
 

+ 6 - 1
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/CoreFunction.java

@@ -8,7 +8,7 @@
  * Contributors:
  *     committers of YAKINDU - initial API and implementation
  */
-package org.yakindu.sct.simulation.core.sexec.interpreter;
+package org.yakindu.base.expressions.interpreter;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.util.EcoreUtil;
@@ -120,6 +120,11 @@ public class CoreFunction extends Function {
 	public Double plus(Long l1, Double d2) {
 		return l1 + d2;
 	}
+	
+	@FunctionMethod(PLUS)
+	public String plus(String s1, String s2) {
+		return s1 + s2;
+	}
 
 	@FunctionMethod(PLUS)
 	public Integer positive(Integer i) {

+ 5 - 5
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/DefaultExecutionSlotResolver.xtend

@@ -8,9 +8,10 @@
  * Contributors:
  *     committers of YAKINDU - initial API and implementation
  */
-package org.yakindu.sct.simulation.core.sexec.interpreter
+package org.yakindu.base.expressions.interpreter
 
 import com.google.inject.Inject
+import java.beans.Expression
 import java.util.Stack
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.xtext.naming.IQualifiedNameProvider
@@ -18,14 +19,13 @@ import org.eclipse.xtext.util.SimpleAttributeResolver
 import org.yakindu.base.base.NamedElement
 import org.yakindu.base.expressions.expressions.AssignmentExpression
 import org.yakindu.base.expressions.expressions.ElementReferenceExpression
-import org.yakindu.base.expressions.expressions.Expression
 import org.yakindu.base.expressions.expressions.FeatureCall
 import org.yakindu.base.types.Event
 import org.yakindu.base.types.Operation
 import org.yakindu.base.types.Property
-import org.yakindu.sct.simulation.core.sruntime.CompositeSlot
-import org.yakindu.sct.simulation.core.sruntime.ExecutionContext
-import org.yakindu.sct.simulation.core.sruntime.ExecutionSlot
+import org.yakindu.sct.model.sruntime.CompositeSlot
+import org.yakindu.sct.model.sruntime.ExecutionContext
+import org.yakindu.sct.model.sruntime.ExecutionSlot
 
 /**
  * Default implementation for resolving execution slots based on expressions.

+ 330 - 408
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/StextStatementInterpreter.xtend

@@ -1,408 +1,330 @@
-/**
- * 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.sexec.interpreter
-
-import com.google.inject.Inject
-import java.util.List
-import org.eclipse.emf.ecore.EObject
-import org.eclipse.xtext.naming.IQualifiedNameProvider
-import org.yakindu.base.expressions.expressions.AssignmentExpression
-import org.yakindu.base.expressions.expressions.AssignmentOperator
-import org.yakindu.base.expressions.expressions.BitwiseAndExpression
-import org.yakindu.base.expressions.expressions.BitwiseOrExpression
-import org.yakindu.base.expressions.expressions.BitwiseXorExpression
-import org.yakindu.base.expressions.expressions.BoolLiteral
-import org.yakindu.base.expressions.expressions.ConditionalExpression
-import org.yakindu.base.expressions.expressions.DoubleLiteral
-import org.yakindu.base.expressions.expressions.ElementReferenceExpression
-import org.yakindu.base.expressions.expressions.Expression
-import org.yakindu.base.expressions.expressions.FeatureCall
-import org.yakindu.base.expressions.expressions.FloatLiteral
-import org.yakindu.base.expressions.expressions.IntLiteral
-import org.yakindu.base.expressions.expressions.LogicalAndExpression
-import org.yakindu.base.expressions.expressions.LogicalNotExpression
-import org.yakindu.base.expressions.expressions.LogicalOrExpression
-import org.yakindu.base.expressions.expressions.LogicalRelationExpression
-import org.yakindu.base.expressions.expressions.NullLiteral
-import org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression
-import org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression
-import org.yakindu.base.expressions.expressions.NumericalUnaryExpression
-import org.yakindu.base.expressions.expressions.ParenthesizedExpression
-import org.yakindu.base.expressions.expressions.PrimitiveValueExpression
-import org.yakindu.base.expressions.expressions.ShiftExpression
-import org.yakindu.base.expressions.expressions.StringLiteral
-import org.yakindu.base.expressions.expressions.TypeCastExpression
-import org.yakindu.base.types.EnumerationType
-import org.yakindu.base.types.Enumerator
-import org.yakindu.base.types.Operation
-import org.yakindu.base.types.Type
-import org.yakindu.base.types.typesystem.GenericTypeSystem
-import org.yakindu.base.types.typesystem.ITypeSystem
-import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression
-import org.yakindu.sct.model.stext.stext.EventRaisingExpression
-import org.yakindu.sct.model.stext.stext.EventValueReferenceExpression
-import org.yakindu.sct.model.stext.stext.OperationDefinition
-import org.yakindu.sct.simulation.core.sruntime.CompositeSlot
-import org.yakindu.sct.simulation.core.sruntime.ExecutionContext
-import org.yakindu.sct.simulation.core.sruntime.ExecutionEvent
-import org.yakindu.sct.simulation.core.sruntime.ExecutionVariable
-import org.yakindu.sct.simulation.core.sruntime.ReferenceSlot
-import org.yakindu.base.types.Event
-
-/**
- * 
- * @author andreas muelder - Initial contribution and API 
- * @authos axel terfloth - additions
- * 
- */
-class StextStatementInterpreter extends AbstractStatementInterpreter {
-
-	@Inject
-	extension IQualifiedNameProvider provider
-	@Inject(optional=true)
-	protected IOperationMockup operationDelegate
-	@Inject(optional=true)
-	protected extension IEventRaiser eventRaiser	
-	@Inject
-	protected extension IExecutionSlotResolver resolver
-	@Inject
-	protected extension ITypeSystem ts;
-
-	protected ExecutionContext context
-
-	override Object evaluateStatement(Expression statement, ExecutionContext context) {
-		this.context = context
-		statement.execute()
-	}
-
-	def dispatch Object execute(Expression statement) {
-		null
-	}
-
-	def dispatch Object execute(AssignmentExpression assignment) {
-		executeAssignment(assignment)
-	}
-
-	def dispatch Object execute(TypeCastExpression expression) {
-		var operand = expression.operand.execute
-		typeCast(operand, expression.type.originType)
-	}
-
-	def Object cast(Object value, Type type){
-		typeCast(value, type.originType)
-	}
-
-	def protected dispatch Object typeCast(Long value, Type type) {
-		if(type instanceof EnumerationType) return value
-		if(ts.isSuperType(type, ts.getType(GenericTypeSystem.INTEGER))) return value
-		if(ts.isSuperType(type, ts.getType(GenericTypeSystem.REAL))) return Double.valueOf(value)
-		throw new IllegalArgumentException("unknown type " + type.name)
-	}
-
-	def protected dispatch Object typeCast(Float value, Type type) {
-		if(ts.isSuperType(type, ts.getType(GenericTypeSystem.INTEGER))) return value.longValue
-		if(ts.isSuperType(type, ts.getType(GenericTypeSystem.REAL))) return Double.valueOf(value)
-		throw new IllegalArgumentException("Invalid cast from Float to " + type.name)
-	}
-
-	def protected dispatch Object typeCast(Double value, Type type) {
-		if(ts.isSuperType(type, ts.getType(ITypeSystem.INTEGER))) return value.longValue
-		if(ts.isSuperType(type, ts.getType(ITypeSystem.REAL))) return Double.valueOf(value)
-		throw new IllegalArgumentException("Invalid cast from Double to " + type.name)
-	}
-
-	def protected dispatch Object typeCast(Boolean value, Type type) {
-		if(ts.isSuperType(type, ts.getType(ITypeSystem.BOOLEAN))) return value
-		throw new IllegalArgumentException("Invalid cast from Boolean to " + type.name)
-	}
-
-	def protected dispatch Object typeCast(String value, Type type) {
-		if(ts.isSuperType(type, ts.getType(ITypeSystem.STRING))) return value
-		throw new IllegalArgumentException("Invalid cast from String to " + type.name)
-	}
-
-	def protected dispatch Object typeCast(Enumerator value, Type type) {
-		if(ts.isSuperType(type, value.owningEnumeration)) return value
-		throw new IllegalArgumentException("Invalid cast from Enumerator to " + type.name)
-	}
-
-	def protected dispatch Object typeCast(Object value, Type type) {
-		if(ts.isSame(type, ts.getType(ITypeSystem.ANY))) return value
-		return value
-	}
-
-	def Object executeAssignment(AssignmentExpression assignment) {
-		var scopeVariable = context.resolve(assignment.varRef)
-		var result = assignment.expression.execute
-		if(result instanceof Enumerator) result = result.literalValue
-
-		if (assignment.operator == AssignmentOperator::ASSIGN) {
-			// Strong typing, use the type of the scopeVariable instead of using new runtime type
-			scopeVariable.value = if(result !== null) cast(result, scopeVariable.type) else null
-		} else {
-			var operator = AbstractStatementInterpreter::assignFunctionMap.get(assignment.operator.getName())
-			scopeVariable.value = if (result !== null)
-				cast(evaluate(operator, scopeVariable.getValue, result), scopeVariable.type)
-			else
-				null
-		}
-		scopeVariable.value
-	}
-
-	def dispatch Object execute(EventRaisingExpression eventRaising) {
-		var event = context.resolve(eventRaising.event)
-
-		if (event instanceof ExecutionEvent) {
-			
-			val value = eventRaising.value?.execute	
-		
-			if (eventRaiser !== null) event.raise(value) 
-		}
-		
-		null
-	}
-
-	def dispatch Object execute(ConditionalExpression expression) {
-		if (expression.condition.execute as Boolean) {
-			return expression.trueCase.execute
-		} else {
-			return expression.falseCase.execute
-		}
-	}
-
-	def dispatch Object execute(ElementReferenceExpression expression) {
-		executeElementReferenceExpression(expression)
-	}
-
-	def dispatch Object execute(EventValueReferenceExpression expression) {
-		for (event : context.raisedEvents) {
-			val executionSlot = context.resolve(expression.value)
-			if (executionSlot instanceof ExecutionEvent && executionSlot.fqName == event.fqName) {
-				return event.getValue;
-			};
-		}
-		throw new UndefinedValueException("Undefined value of event '" + expression.value.eventName + "'\n" + "Event values only exist in the same cycle in which the event was raised.")
-	}
-	
-	def dispatch protected getEventName(Expression it){
-		return "null"
-	}
-	
-	def dispatch protected getEventName(ElementReferenceExpression it){
-		if(reference instanceof Event){
-			return (reference as Event).name
-		}
-		return "null"
-	}
-	
-	def dispatch protected getEventName(FeatureCall it){
-		if(feature instanceof Event){
-			return (feature as Event).name
-		}
-		return "null"
-	}
-
-	def dispatch qname(FeatureCall e) {
-		return e.feature.getFullyQualifiedName.toString
-	}
-
-	def dispatch qname(ElementReferenceExpression e) {
-		e.reference.getFullyQualifiedName.toString
-	}
-
-	def dispatch Object execute(ActiveStateReferenceExpression expression) {
-		var state = expression.value
-		return context.allActiveStates.contains(state)
-	}
-
-	def dispatch Object execute(LogicalAndExpression expression) {
-		var leftResult = execute(expression.leftOperand)
-		if (!leftResult as Boolean)
-			return false
-		var rightResult = execute(expression.rightOperand)
-		return leftResult as Boolean && rightResult as Boolean
-	}
-
-	def dispatch Object execute(LogicalOrExpression expression) {
-		var leftResult = execute(expression.leftOperand)
-		if (leftResult as Boolean)
-			return true
-		var rightResult = execute(expression.rightOperand)
-		return leftResult as Boolean || rightResult as Boolean
-	}
-
-	def dispatch Object execute(LogicalNotExpression expression) {
-		return ! (expression.operand.execute() as Boolean)
-	}
-
-	def dispatch Object execute(BitwiseAndExpression expression) {
-		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, CoreFunction::BIT_AND)
-	}
-
-	def dispatch Object execute(BitwiseOrExpression expression) {
-		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, CoreFunction::BIT_OR)
-	}
-
-	def dispatch Object execute(BitwiseXorExpression expression) {
-		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, CoreFunction::BIT_XOR)
-	}
-
-	def dispatch Object execute(LogicalRelationExpression expression) {
-		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, expression.operator.getName())
-	}
-
-	def dispatch Object execute(NumericalAddSubtractExpression expression) {
-		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, expression.operator.literal)
-	}
-
-	def dispatch Object execute(NumericalMultiplyDivideExpression expression) {
-		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, expression.operator.getName())
-	}
-
-	def dispatch Object execute(ShiftExpression expression) {
-		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, expression.operator.getName())
-	}
-
-	def dispatch Object execute(NumericalUnaryExpression expression) {
-		executeUnaryCoreFunction(expression.operand, expression.operator.getName())
-	}
-
-	def executeBinaryCoreFunction(Expression leftStatement, Expression rightStatement, String operator) {
-		var leftResult = leftStatement.execute().resolveReference
-		var rightResult = rightStatement.execute().resolveReference
-		return evaluate(operator, leftResult, rightResult)
-	}
-
-	protected def Object resolveReference(Object element) {
-		if (element instanceof ReferenceSlot) {
-			return element.reference
-		}
-		return element
-	}
-
-	def executeUnaryCoreFunction(Expression statement, String operator) {
-		var result = statement.execute()
-		return evaluate(operator, result);
-	}
-
-	def dispatch Object execute(FeatureCall call) {
-		executeFeatureCall(call)
-	}
-	
-	def executeElementReferenceExpression(ElementReferenceExpression expression){
-		var parameter = expression.expressions.map(it|execute)
-		if (expression.operationCall || expression.reference instanceof OperationDefinition) {
-			if (operationDelegate !== null &&
-				operationDelegate.canExecute(expression.reference as Operation, parameter.toArray)) {
-				return (expression.reference as Operation).execute(parameter.toArray)
-			}
-		}
-		// for enumeration types return the literal value
-		if (expression.reference instanceof Enumerator) {
-			return new Long((expression.reference as Enumerator).literalValue)
-		}
-
-		val executionSlot = context.resolve(expression)
-		if (executionSlot instanceof ExecutionVariable)
-			return executionSlot.getValue
-		if (executionSlot instanceof ExecutionEvent)
-			return (executionSlot as ExecutionEvent).raised
-
-		// reference to an element with complex type is not reflected in an execution variable but in a composite slot
-		// TODO hide reference mechanism in resolver
-		if (executionSlot instanceof CompositeSlot)
-			return executionSlot
-
-		return null
-	}
-
-	def executeFeatureCall(FeatureCall call) {
-		if (call.operationCall || call.feature instanceof OperationDefinition) {
-			var parameter = call.expressions.map(it|execute)
-			if (call.feature instanceof Operation) {
-				var Operation operation = call.feature as Operation
-				if (operationDelegate !== null && operationDelegate.canExecute(operation, parameter)) {
-					return operation.execute(parameter)
-				}
-			}
-
-		} else if (call.getFeature() instanceof Enumerator) {
-			return new Long((call.getFeature() as Enumerator).literalValue)
-		}
-
-		var slot = context.resolve(call)
-		if (slot instanceof ExecutionVariable) {
-			return slot.getValue
-		}
-		if (slot instanceof CompositeSlot) {
-			return slot
-		}
-		if (slot instanceof ExecutionEvent) {
-			if (call.feature instanceof Operation) {
-				(slot as ExecutionEvent).raised = true
-			}
-
-			return (slot as ExecutionEvent).raised
-		}
-
-		println("No feature found for " + call.feature.fqn + " -> returning null")
-		return null;
-	}
-
-	def execute(Operation it, List<Object> params) {
-		operationDelegate.execute(it, params)
-	}
-
-	def String fqn(EObject obj) {
-		obj.getFullyQualifiedName.toString
-	}
-
-	def dispatch Object execute(ParenthesizedExpression e) {
-		e.expression.execute()
-	}
-
-	def dispatch Object execute(PrimitiveValueExpression expression) {
-		return expression.value.valueLiteral
-	}
-
-	def dispatch valueLiteral(IntLiteral literal) {
-		return literal.value as long
-	}
-
-	def dispatch valueLiteral(BoolLiteral bool) {
-		return bool.value
-	}
-
-	def dispatch valueLiteral(DoubleLiteral literal) {
-		return literal.value
-	}
-
-	def dispatch valueLiteral(FloatLiteral literal) {
-		return literal.value
-	}
-
-	def dispatch valueLiteral(StringLiteral literal) {
-		return literal.value
-	}
-
-	def dispatch valueLiteral(NullLiteral literal) {
-		return null
-	}
-	
-	protected static class UndefinedValueException extends IllegalStateException {
-	
-		new(String message) {
-			super(message)
-		}
-	
-	}
-
-}
+/**
+ * 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.base.expressions.interpreter
+
+import com.google.inject.Inject
+import java.util.List
+import org.yakindu.base.expressions.expressions.AssignmentExpression
+import org.yakindu.base.expressions.expressions.AssignmentOperator
+import org.yakindu.base.expressions.expressions.BitwiseAndExpression
+import org.yakindu.base.expressions.expressions.BitwiseOrExpression
+import org.yakindu.base.expressions.expressions.BitwiseXorExpression
+import org.yakindu.base.expressions.expressions.BoolLiteral
+import org.yakindu.base.expressions.expressions.ConditionalExpression
+import org.yakindu.base.expressions.expressions.DoubleLiteral
+import org.yakindu.base.expressions.expressions.ElementReferenceExpression
+import org.yakindu.base.expressions.expressions.Expression
+import org.yakindu.base.expressions.expressions.FeatureCall
+import org.yakindu.base.expressions.expressions.FloatLiteral
+import org.yakindu.base.expressions.expressions.IntLiteral
+import org.yakindu.base.expressions.expressions.LogicalAndExpression
+import org.yakindu.base.expressions.expressions.LogicalNotExpression
+import org.yakindu.base.expressions.expressions.LogicalOrExpression
+import org.yakindu.base.expressions.expressions.LogicalRelationExpression
+import org.yakindu.base.expressions.expressions.NullLiteral
+import org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression
+import org.yakindu.base.expressions.expressions.NumericalMultiplyDivideExpression
+import org.yakindu.base.expressions.expressions.NumericalUnaryExpression
+import org.yakindu.base.expressions.expressions.ParenthesizedExpression
+import org.yakindu.base.expressions.expressions.PrimitiveValueExpression
+import org.yakindu.base.expressions.expressions.ShiftExpression
+import org.yakindu.base.expressions.expressions.StringLiteral
+import org.yakindu.base.expressions.expressions.TypeCastExpression
+import org.yakindu.base.types.EnumerationType
+import org.yakindu.base.types.Enumerator
+import org.yakindu.base.types.Operation
+import org.yakindu.base.types.Type
+import org.yakindu.base.types.typesystem.GenericTypeSystem
+import org.yakindu.base.types.typesystem.ITypeSystem
+import org.yakindu.sct.model.sruntime.CompositeSlot
+import org.yakindu.sct.model.sruntime.ExecutionContext
+import org.yakindu.sct.model.sruntime.ExecutionEvent
+import org.yakindu.sct.model.sruntime.ExecutionVariable
+import org.yakindu.sct.model.sruntime.ReferenceSlot
+import com.google.inject.Singleton
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API 
+ * @authos axel terfloth - additions
+ * 
+ */
+ @Singleton
+class DefaultExpressionInterpreter extends AbstractExpressionInterpreter implements IExpressionInterpreter {
+
+	@Inject
+	protected extension ITypeSystem ts;
+	@Inject
+	protected extension IExecutionSlotResolver resolver
+	@Inject(optional=true)
+	protected IOperationMockup operationDelegate
+	@Inject(optional=true)
+	protected ExecutionContext context
+
+	override evaluate(Expression statement, ExecutionContext context) {
+		this.context = context
+		statement.execute()
+	}
+
+	def dispatch Object execute(Expression statement) {
+		null
+	}
+
+	def dispatch Object execute(ConditionalExpression expression) {
+		if (expression.condition.execute as Boolean) {
+			return expression.trueCase.execute
+		} else {
+			return expression.falseCase.execute
+		}
+	}
+
+	def dispatch Object execute(BitwiseAndExpression expression) {
+		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, CoreFunction::BIT_AND)
+	}
+
+	def dispatch Object execute(BitwiseOrExpression expression) {
+		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, CoreFunction::BIT_OR)
+	}
+
+	def dispatch Object execute(BitwiseXorExpression expression) {
+		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, CoreFunction::BIT_XOR)
+	}
+
+	def dispatch Object execute(LogicalRelationExpression expression) {
+		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, expression.operator.getName())
+	}
+
+	def dispatch Object execute(NumericalAddSubtractExpression expression) {
+		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, expression.operator.literal)
+	}
+
+	def dispatch Object execute(NumericalMultiplyDivideExpression expression) {
+		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, expression.operator.getName())
+	}
+
+	def dispatch Object execute(ShiftExpression expression) {
+		executeBinaryCoreFunction(expression.leftOperand, expression.rightOperand, expression.operator.getName())
+	}
+
+	def dispatch Object execute(NumericalUnaryExpression expression) {
+		executeUnaryCoreFunction(expression.operand, expression.operator.getName())
+	}
+
+	def executeBinaryCoreFunction(Expression leftStatement, Expression rightStatement, String operator) {
+		var leftResult = leftStatement.execute().resolveReference
+		var rightResult = rightStatement.execute().resolveReference
+		return evaluate(operator, leftResult, rightResult)
+	}
+
+	def dispatch Object execute(LogicalAndExpression expression) {
+		var leftResult = execute(expression.leftOperand)
+		if (!leftResult as Boolean)
+			return false
+		var rightResult = execute(expression.rightOperand)
+		return leftResult as Boolean && rightResult as Boolean
+	}
+
+	def dispatch Object execute(LogicalOrExpression expression) {
+		var leftResult = execute(expression.leftOperand)
+		if (leftResult as Boolean)
+			return true
+		var rightResult = execute(expression.rightOperand)
+		return leftResult as Boolean || rightResult as Boolean
+	}
+
+	def dispatch Object execute(LogicalNotExpression expression) {
+		return ! (expression.operand.execute() as Boolean)
+	}
+
+	protected def Object resolveReference(Object element) {
+		if (element instanceof ReferenceSlot) {
+			return element.reference
+		}
+		return element
+	}
+
+	def dispatch Object execute(AssignmentExpression assignment) {
+		executeAssignment(assignment)
+	}
+
+	def dispatch Object execute(TypeCastExpression expression) {
+		var operand = expression.operand.execute
+		typeCast(operand, expression.type.originType)
+	}
+
+	def Object cast(Object value, Type type) {
+		typeCast(value, type.originType)
+	}
+
+	def protected dispatch Object typeCast(Long value, Type type) {
+		if(type instanceof EnumerationType) return value
+		if(ts.isSuperType(type, ts.getType(GenericTypeSystem.INTEGER))) return value
+		if(ts.isSuperType(type, ts.getType(GenericTypeSystem.REAL))) return Double.valueOf(value)
+		throw new IllegalArgumentException("unknown type " + type.name)
+	}
+
+	def protected dispatch Object typeCast(Float value, Type type) {
+		if(ts.isSuperType(type, ts.getType(GenericTypeSystem.INTEGER))) return value.longValue
+		if(ts.isSuperType(type, ts.getType(GenericTypeSystem.REAL))) return Double.valueOf(value)
+		throw new IllegalArgumentException("Invalid cast from Float to " + type.name)
+	}
+
+	def protected dispatch Object typeCast(Double value, Type type) {
+		if(ts.isSuperType(type, ts.getType(ITypeSystem.INTEGER))) return value.longValue
+		if(ts.isSuperType(type, ts.getType(ITypeSystem.REAL))) return Double.valueOf(value)
+		throw new IllegalArgumentException("Invalid cast from Double to " + type.name)
+	}
+
+	def protected dispatch Object typeCast(Boolean value, Type type) {
+		if(ts.isSuperType(type, ts.getType(ITypeSystem.BOOLEAN))) return value
+		throw new IllegalArgumentException("Invalid cast from Boolean to " + type.name)
+	}
+
+	def protected dispatch Object typeCast(String value, Type type) {
+		if(ts.isSuperType(type, ts.getType(ITypeSystem.STRING))) return value
+		throw new IllegalArgumentException("Invalid cast from String to " + type.name)
+	}
+
+	def protected dispatch Object typeCast(Enumerator value, Type type) {
+		if(ts.isSuperType(type, value.owningEnumeration)) return value
+		throw new IllegalArgumentException("Invalid cast from Enumerator to " + type.name)
+	}
+
+	def protected dispatch Object typeCast(Object value, Type type) {
+		if(ts.isSame(type, ts.getType(ITypeSystem.ANY))) return value
+		return value
+	}
+
+	def Object executeAssignment(AssignmentExpression assignment) {
+		var scopeVariable = context.resolve(assignment.varRef)
+		var result = assignment.expression.execute
+		if(result instanceof Enumerator) result = result.literalValue
+
+		if (assignment.operator == AssignmentOperator::ASSIGN) {
+			// Strong typing, use the type of the scopeVariable instead of using new runtime type
+			scopeVariable.value = if(result !== null) cast(result, scopeVariable.type) else null
+		} else {
+			var operator = assignFunctionMap.get(assignment.operator.getName())
+			scopeVariable.value = if (result !== null)
+				cast(evaluate(operator, scopeVariable.getValue, result), scopeVariable.type)
+			else
+				null
+		}
+		scopeVariable.value
+	}
+
+	def dispatch Object execute(ParenthesizedExpression e) {
+		e.expression.execute()
+	}
+
+	def dispatch Object execute(PrimitiveValueExpression expression) {
+		return expression.value.valueLiteral
+	}
+
+	def dispatch valueLiteral(IntLiteral literal) {
+		return literal.value as long
+	}
+
+	def dispatch valueLiteral(BoolLiteral bool) {
+		return bool.value
+	}
+
+	def dispatch valueLiteral(DoubleLiteral literal) {
+		return literal.value
+	}
+
+	def dispatch valueLiteral(FloatLiteral literal) {
+		return literal.value
+	}
+
+	def dispatch valueLiteral(StringLiteral literal) {
+		return literal.value
+	}
+
+	def dispatch valueLiteral(NullLiteral literal) {
+		return null
+	}
+
+	def dispatch Object execute(ElementReferenceExpression expression) {
+		executeElementReferenceExpression(expression)
+	}
+
+	def executeElementReferenceExpression(ElementReferenceExpression expression) {
+		var parameter = expression.expressions.map(it|execute)
+		if (expression.operationCall || expression.reference instanceof Operation) {
+			if (operationDelegate !== null &&
+				operationDelegate.canExecute(expression.reference as Operation, parameter.toArray)) {
+				return (expression.reference as Operation).execute(parameter.toArray)
+			}
+		}
+		// for enumeration types return the literal value
+		if (expression.reference instanceof Enumerator) {
+			return new Long((expression.reference as Enumerator).literalValue)
+		}
+
+		val executionSlot = context.resolve(expression)
+		if (executionSlot instanceof ExecutionVariable)
+			return executionSlot.getValue
+		if (executionSlot instanceof ExecutionEvent)
+			return (executionSlot as ExecutionEvent).raised
+
+		// reference to an element with complex type is not reflected in an execution variable but in a composite slot
+		// TODO hide reference mechanism in resolver
+		if (executionSlot instanceof CompositeSlot)
+			return executionSlot
+
+		return null
+	}
+
+	def dispatch Object execute(FeatureCall call) {
+		executeFeatureCall(call)
+	}
+
+	def executeFeatureCall(FeatureCall call) {
+		if (call.operationCall || call.feature instanceof Operation) {
+			var parameter = call.expressions.map(it|execute)
+			if (call.feature instanceof Operation) {
+				var Operation operation = call.feature as Operation
+				if (operationDelegate !== null && operationDelegate.canExecute(operation, parameter)) {
+					return operation.execute(parameter)
+				}
+			}
+		} else if (call.getFeature() instanceof Enumerator) {
+			return new Long((call.getFeature() as Enumerator).literalValue)
+		}
+		var slot = context.resolve(call)
+		if (slot instanceof ExecutionVariable) {
+			return slot.getValue
+		}
+		if (slot instanceof CompositeSlot) {
+			return slot
+		}
+		if (slot instanceof ExecutionEvent) {
+			if (call.feature instanceof Operation) {
+				(slot as ExecutionEvent).raised = true
+			}
+			return (slot as ExecutionEvent).raised
+		}
+
+		println("No feature found for " + call.feature + " -> returning null")
+		return null;
+	}
+
+	def executeUnaryCoreFunction(Expression statement, String operator) {
+		var result = statement.execute()
+		return evaluate(operator, result);
+	}
+
+	def execute(Operation it, List<Object> params) {
+		operationDelegate.execute(it, params)
+	}
+
+}

+ 1 - 1
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/Function.java

@@ -8,7 +8,7 @@
  * Contributors:
  *     committers of YAKINDU - initial API and implementation
  */
-package org.yakindu.sct.simulation.core.sexec.interpreter;
+package org.yakindu.base.expressions.interpreter;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;

+ 3 - 3
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/IExecutionSlotResolver.java

@@ -8,11 +8,11 @@
  * Contributors:
  *     committers of YAKINDU - initial API and implementation
  */
-package org.yakindu.sct.simulation.core.sexec.interpreter;
+package org.yakindu.base.expressions.interpreter;
 
 import org.yakindu.base.expressions.expressions.Expression;
-import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
-import org.yakindu.sct.simulation.core.sruntime.ExecutionSlot;
+import org.yakindu.sct.model.sruntime.ExecutionContext;
+import org.yakindu.sct.model.sruntime.ExecutionSlot;
 
 import com.google.inject.ImplementedBy;
 

+ 5 - 5
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/IStatementInterpreter.java

@@ -8,10 +8,10 @@
  * Contributors:
  *     committers of YAKINDU - initial API and implementation
  */
-package org.yakindu.sct.simulation.core.sexec.interpreter;
+package org.yakindu.base.expressions.interpreter;
 
 import org.yakindu.base.expressions.expressions.Expression;
-import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
+import org.yakindu.sct.model.sruntime.ExecutionContext;
 
 import com.google.inject.ImplementedBy;
 
@@ -20,9 +20,9 @@ import com.google.inject.ImplementedBy;
  * @author andreas muelder - Initial contribution and API
  * 
  */
-@ImplementedBy(StextStatementInterpreter.class)
-public interface IStatementInterpreter {
+@ImplementedBy(DefaultExpressionInterpreter.class)
+public interface IExpressionInterpreter {
 	
-	public Object evaluateStatement(Expression statement, ExecutionContext context);
+	public Object evaluate(Expression statement, ExecutionContext context);
 
 }

+ 1 - 1
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/IOperationMockup.java

@@ -8,7 +8,7 @@
  * 	committers of YAKINDU - initial API and implementation
  * 
  */
-package org.yakindu.sct.simulation.core.sexec.interpreter;
+package org.yakindu.base.expressions.interpreter;
 
 import org.yakindu.base.types.Operation;
 

+ 1 - 1
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/Signature.java

@@ -8,7 +8,7 @@
  * Contributors:
  *     committers of YAKINDU - initial API and implementation
  */
-package org.yakindu.sct.simulation.core.sexec.interpreter;
+package org.yakindu.base.expressions.interpreter;
 
 import java.util.Arrays;
 

+ 3 - 0
plugins/org.yakindu.base.expressions/src/org/yakindu/base/expressions/Expressions.xtext

@@ -108,6 +108,9 @@ Argument:
 ParenthesizedExpression returns Expression:
 	{ParenthesizedExpression} '(' expression=Expression ')';
 
+TypeSpecifier returns types::TypeSpecifier:
+	type=[types::Type|QID] ('<' (typeArguments+=TypeSpecifier (',' typeArguments+=TypeSpecifier)*'>'))?;
+
 Literal:
 	BoolLiteral | IntLiteral | HexLiteral | BinaryLiteral | DoubleLiteral | FloatLiteral | StringLiteral | NullLiteral;
 

+ 2 - 1
plugins/org.yakindu.sct.domain.generic.simulation/META-INF/MANIFEST.MF

@@ -9,5 +9,6 @@ Require-Bundle: org.yakindu.sct.simulation.core,
  org.yakindu.sct.domain,
  org.yakindu.sct.model.stext,
  org.yakindu.sct.simulation.core.sexec,
- org.yakindu.sct.model.sexec
+ org.yakindu.sct.model.sexec,
+ org.yakindu.base.expressions.interpreter
 Export-Package: org.yakindu.sct.domain.generic.simulation

+ 7 - 7
plugins/org.yakindu.sct.domain.generic.simulation/src/org/yakindu/sct/domain/generic/simulation/GenericSimulationModule.java

@@ -14,11 +14,15 @@ import org.eclipse.xtext.naming.IQualifiedNameProvider;
 import org.eclipse.xtext.resource.IResourceDescriptions;
 import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions;
 import org.eclipse.xtext.service.AbstractGenericModule;
+import org.yakindu.base.expressions.interpreter.IExpressionInterpreter;
+import org.yakindu.base.expressions.interpreter.IOperationMockup;
 import org.yakindu.base.types.inferrer.ITypeSystemInferrer;
 import org.yakindu.base.types.typesystem.GenericTypeSystem;
 import org.yakindu.base.types.typesystem.ITypeSystem;
 import org.yakindu.sct.model.sexec.transformation.IModelSequencer;
 import org.yakindu.sct.model.sexec.transformation.ModelSequencer;
+import org.yakindu.sct.model.sruntime.ExecutionContext;
+import org.yakindu.sct.model.sruntime.impl.ExecutionContextImpl;
 import org.yakindu.sct.model.stext.inferrer.STextTypeInferrer;
 import org.yakindu.sct.model.stext.naming.StextNameProvider;
 import org.yakindu.sct.simulation.core.sexec.container.DefaultExecutionContextInitializer;
@@ -28,12 +32,8 @@ import org.yakindu.sct.simulation.core.sexec.container.ISimulationEngineFactory;
 import org.yakindu.sct.simulation.core.sexec.interpreter.DefaultExecutionFlowInterpreter;
 import org.yakindu.sct.simulation.core.sexec.interpreter.IEventRaiser;
 import org.yakindu.sct.simulation.core.sexec.interpreter.IExecutionFlowInterpreter;
-import org.yakindu.sct.simulation.core.sexec.interpreter.IOperationMockup;
-import org.yakindu.sct.simulation.core.sexec.interpreter.IStatementInterpreter;
 import org.yakindu.sct.simulation.core.sexec.interpreter.JavaOperationMockup;
-import org.yakindu.sct.simulation.core.sexec.interpreter.StextStatementInterpreter;
-import org.yakindu.sct.simulation.core.sruntime.ExecutionContext;
-import org.yakindu.sct.simulation.core.sruntime.impl.ExecutionContextImpl;
+import org.yakindu.sct.simulation.core.sexec.interpreter.StextExpressionInterpreter;
 
 import com.google.inject.Binder;
 import com.google.inject.name.Names;
@@ -84,8 +84,8 @@ public class GenericSimulationModule extends AbstractGenericModule {
 		return DefaultExecutionFlowInterpreter.class;
 	}
 
-	public Class<? extends IStatementInterpreter> bindIStatementInterpreter() {
-		return StextStatementInterpreter.class;
+	public Class<? extends IExpressionInterpreter> bindIExpressionInterpreter() {
+		return StextExpressionInterpreter.class;
 	}
 
 	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {

+ 1 - 1
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/features/CDefaultFeatureValueProvider.java

@@ -54,7 +54,7 @@ public class CDefaultFeatureValueProvider extends AbstractDefaultFeatureValuePro
 		} else if (ICFeatureConstants.PARAMETER_NAMING_STATEMACHINE_PREFIX.equals(parameterName)) {
 			parameterValue.setValue(StringExtensions.toFirstLower(asIdentifier(statechart.getName(), "_")));
 		} else if (ICFeatureConstants.PARAMETER_NAMING_MAX_IDENTIFIER_LENGTH.equals(parameterName)) {
-			parameterValue.setValue("31");
+			parameterValue.setValue(31);
 		} else if (ICFeatureConstants.PARAMETER_NAMING_SEPARATOR.equals(parameterName)) {
 			parameterValue.setValue("_");
 		} else if (ICFeatureConstants.PARAMETER_TRACING_ENTER_STATE.equals(parameterName)) {

+ 1 - 1
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/filesystem/DefaultFileSystemAccessFactory.java

@@ -52,7 +52,7 @@ public class DefaultFileSystemAccessFactory {
 
 	protected void initDefaultOutput(ISCTFileSystemAccess access, GeneratorEntry entry) {
 		access.setOutputPath(IFileSystemAccess.DEFAULT_OUTPUT,
-				helper.getTargetFolderValue(entry).getExpression().toString());
+				helper.getTargetFolderValue(entry).getStringValue());
 		access.getOutputConfigurations().get(IFileSystemAccess.DEFAULT_OUTPUT).setCreateOutputDirectory(true);
 	}
 

+ 2 - 7
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/library/impl/CoreLibraryDefaultFeatureValueProvider.java

@@ -22,7 +22,6 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.generator.core.library.AbstractDefaultFeatureValueProvider;
-import org.yakindu.sct.model.sgen.BoolLiteral;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
 import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
@@ -58,7 +57,7 @@ public class CoreLibraryDefaultFeatureValueProvider extends AbstractDefaultFeatu
 	public IStatus validateParameterValue(FeatureParameterValue parameterValue) {
 		String parameterName = parameterValue.getParameter().getName();
 		if (OUTLET_FEATURE_TARGET_PROJECT.equals(parameterName) && !access.projectExists(parameterValue.getStringValue()))
-			return error(String.format("The Project %s does not exist.", parameterValue.getExpression()));
+			return error(String.format("The Project %s does not exist.", parameterValue.getStringValue()));
 		if (OUTLET_FEATURE_TARGET_PROJECT.equals(parameterName) && access.projectExists(parameterValue.getStringValue())
 				&& !access.projectOpened(parameterValue.getStringValue()))
 			return error(String.format("The Project %s is not open.", parameterValue.getExpression()));
@@ -70,13 +69,9 @@ public class CoreLibraryDefaultFeatureValueProvider extends AbstractDefaultFeatu
 			String targetProjectName = targetProjectParam != null ? targetProjectParam.getStringValue() : null;
 			if (targetProjectName != null && !access.folderExists(targetProjectName, parameterValue.getStringValue())) {
 				return warning(String.format("The Folder %s does not exist in Project %s",
-						parameterValue.getExpression(), targetProjectName));
+						parameterValue.getStringValue(), targetProjectName));
 			}
 		}
-		if (DEBUG_FEATURE_DUMP_SEXEC.equals(parameterName)
-				&& !(parameterValue.getExpression() instanceof BoolLiteral)) {
-			return error("Illegal Value. Must be 'true' or 'false'");
-		}
 		return Status.OK_STATUS;
 	}
 }

+ 2 - 2
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/library/impl/DefaultCoreLibraryHelper.java

@@ -50,8 +50,8 @@ public class DefaultCoreLibraryHelper implements ICoreLibraryHelper {
 
 	@Override
 	public String getRelativeTargetFolder(GeneratorEntry entry) {
-		String projectFolderName = getTargetProjectValue(entry).getExpression().toString();
-		String targetFolderValue = getTargetFolderValue(entry).getExpression().toString();
+		String projectFolderName = getTargetProjectValue(entry).getStringValue();
+		String targetFolderValue = getTargetFolderValue(entry).getStringValue();
 		return projectFolderName + Path.SEPARATOR + targetFolderValue;
 	}
 

+ 2 - 1
plugins/org.yakindu.sct.generator.genmodel.ui/META-INF/MANIFEST.MF

@@ -27,7 +27,8 @@ Require-Bundle: org.yakindu.sct.generator.genmodel;visibility:=reexport,
  org.yakindu.base.xtext.utils.jface,
  org.yakindu.sct.ui,
  org.yakindu.sct.doc.user,
- org.yakindu.sct.generator.builder
+ org.yakindu.sct.generator.builder,
+ org.yakindu.base.expressions.ui
 Import-Package: org.apache.commons.logging,
  org.apache.log4j,
  org.eclipse.jdt.core

+ 9 - 5
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/templates/SGenProposalCreator.xtend

@@ -38,9 +38,13 @@ class SGenProposalCreator {
 		
 	def value(FeatureConfiguration value, FeatureParameter param){
 		 var defaultValue = value.getParameterValue(param.name)
-		 if(defaultValue != null) {
+		 if(defaultValue !== null) {
 		 	if(param.parameterType.equals(ParameterTypes::STRING))
-		 		return ''' "«defaultValue.expression»" '''.toString
+		 		return ''' "«defaultValue.stringValue»" '''.toString
+		 	if(param.parameterType.equals(ParameterTypes::BOOLEAN))
+		 		return ''' «defaultValue.booleanValue» '''.toString
+		 	if(param.parameterType.equals(ParameterTypes::INTEGER))
+		 		return ''' «defaultValue.integerValue» '''.toString
 		 	else
 		 		return defaultValue.expression
 		 }
@@ -48,11 +52,11 @@ class SGenProposalCreator {
 		 	case ParameterTypes::STRING:
 		 		return "\"\""
 		 	case ParameterTypes::BOOLEAN:
-		 		return "false"
+		 		return false
 		 	case ParameterTypes::FLOAT:
-		 		return "0.0"	
+		 		return 0.0	
 		 	case ParameterTypes::INTEGER:
-		 		return "0"
+		 		return 0l
 		 }
 		 null
 		 

+ 8 - 1
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/GenerateSGen.mwe2

@@ -13,8 +13,15 @@ Workflow {
     bean = StandaloneSetup {
         scanClassPath = true
         platformUri = "${runtimeProject}/.."
-		registerGenModelFile = "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel"
 		registerGenModelFile = "platform:/resource/org.yakindu.sct.model.sgen/model/emf/sgen.genmodel"
+		registerGenModelFile = "platform:/resource/org.yakindu.base.expressions/model/Expressions.genmodel"
+		registerGenModelFile = "platform:/resource/org.yakindu.base.types/model/base.genmodel"
+		registerGenModelFile = "platform:/resource/org.yakindu.base.types/model/types.genmodel"
+		
+		registerEcoreFile ="platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore"
+		registerEcoreFile = "platform:/resource/org.yakindu.sct.model.sgen/model/emf/sgen.ecore"
+		registerEcoreFile ="platform:/resource/org.yakindu.base.types/model/base.ecore"
+		registerEcoreFile ="platform:/resource/org.yakindu.base.types/model/types.ecore"
     }
 
     component = DirectoryCleaner {

+ 19 - 37
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGen.xtext

@@ -8,55 +8,37 @@
  * Contributors:
  *     committers of YAKINDU - initial API and implementation
  */
-grammar org.yakindu.sct.generator.genmodel.SGen with org.eclipse.xtext.common.Terminals
+grammar org.yakindu.sct.generator.genmodel.SGen with org.yakindu.base.expressions.Expressions
 
 import "http://www.eclipse.org/emf/2002/Ecore" as ecore
-import "platform:/resource/org.yakindu.sct.model.sgen/model/emf/sgen.ecore" as gen
-import "platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore" as sct
+import "http://www.yakindu.org/base/types/2.0.0" as types
+import "http://www.yakindu.org/sct/statechart/SGen"
 
 /**
  * @author Andreas Muelder
  */
-GeneratorModel returns gen::GeneratorModel:
-	'GeneratorModel' 'for' generatorId=QID '{'
+GeneratorModel returns GeneratorModel:
+	'GeneratorModel' 'for' generatorId=GENERATOR_ID '{'
+	(properties+=PropertyDefinition)*
 	(entries+=GeneratorEntry)*
 	'}';
- 
-GeneratorEntry returns gen::GeneratorEntry:
+
+PropertyDefinition returns PropertyDefinition:
+	{PropertyDefinition} ('var') name=ID ':' typeSpecifier=TypeSpecifier
+	('=' initialValue=Expression)?;
+
+GeneratorEntry returns GeneratorEntry:
 	contentType=ID elementRef=[ecore::EObject|QID] '{'
 	(features+=FeatureConfiguration)*
 	'}';
- 
-FeatureConfiguration returns gen::FeatureConfiguration:
-	{gen::FeatureConfiguration} 'feature' type=[gen::FeatureType] '{'
+
+FeatureConfiguration returns FeatureConfiguration:
+	{FeatureConfiguration} 'feature' type=[FeatureType] '{'
 	(parameterValues+=FeatureParameterValue)*
 	'}';
 
-FeatureParameterValue returns gen::FeatureParameterValue:
-	{gen::FeatureParameterValue} parameter=[gen::FeatureParameter] '=' expression=Literal;
-
-Literal returns gen::Literal:
-	BoolLiteral | IntLiteral | RealLiteral | StringLiteral;
-
-BoolLiteral returns gen::BoolLiteral:
-	{gen::BoolLiteral} value=BOOL;
-
-IntLiteral returns gen::IntLiteral:
-	{gen::IntLiteral} value=INT;
-
-RealLiteral returns gen::RealLiteral:
-	{gen::RealLiteral} value=FLOAT;
-
-StringLiteral returns gen::StringLiteral:
-	{gen::StringLiteral} value=STRING;
-
-terminal BOOL returns ecore::EBoolean:
-	'true' | 'false' | 'yes' | 'no';
-
-terminal FLOAT returns ecore::EFloat:
-	(INT '.' INT) ('e' ('-' | '+') INT)? ('f' | 'F' | 'd' | 'D')?;
-	
+FeatureParameterValue returns FeatureParameterValue:
+	{FeatureParameterValue} parameter=[FeatureParameter] '=' expression=Expression;
 
-QID:
-	ID (('::' | '.') ID)*; 
-	
+GENERATOR_ID:
+	ID (('::' | '.') ID)*;

+ 22 - 6
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGenRuntimeModule.java

@@ -12,16 +12,32 @@ package org.yakindu.sct.generator.genmodel;
 
 import org.eclipse.xtext.naming.IQualifiedNameProvider;
 import org.eclipse.xtext.serializer.tokens.ICrossReferenceSerializer;
+import org.yakindu.base.types.inferrer.ITypeSystemInferrer;
+import org.yakindu.base.types.typesystem.GenericTypeSystem;
+import org.yakindu.base.types.typesystem.ITypeSystem;
 import org.yakindu.sct.generator.genmodel.naming.GenModelQualifiedNameProvider;
 import org.yakindu.sct.generator.genmodel.serializer.SGenCrossReferenceSerializer;
+import org.yakindu.sct.generator.genmodel.typesystem.SGenTypeInferrer;
+
+import com.google.inject.Binder;
 
-/**
- * Use this class to register components to be used at runtime / without the
- * Equinox extension registry.
- */
 @SuppressWarnings("restriction")
-public class SGenRuntimeModule extends
-		org.yakindu.sct.generator.genmodel.AbstractSGenRuntimeModule {
+public class SGenRuntimeModule extends org.yakindu.sct.generator.genmodel.AbstractSGenRuntimeModule {
+
+	@Override
+	public void configure(Binder binder) {
+		super.configure(binder);
+		binder.bind(ITypeSystem.class).toInstance(getTypeSystem());
+	}
+
+	protected ITypeSystem getTypeSystem() {
+		return GenericTypeSystem.getInstance();
+	}
+
+	public Class<? extends ITypeSystemInferrer> bindITypeSystemInferrer() {
+		return SGenTypeInferrer.class;
+	}
+
 	@Override
 	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
 		return GenModelQualifiedNameProvider.class;

+ 60 - 58
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/scoping/SGenScopeProvider.java

@@ -21,9 +21,13 @@ import org.eclipse.xtext.EcoreUtil2;
 import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.resource.XtextResourceSet;
 import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.Scopes;
 import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
 import org.eclipse.xtext.scoping.impl.FilteringScope;
 import org.eclipse.xtext.scoping.impl.SimpleScope;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.types.TypesPackage;
+import org.yakindu.base.types.typesystem.ITypeSystem;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions;
 import org.yakindu.sct.generator.core.extensions.IGeneratorDescriptor;
 import org.yakindu.sct.generator.core.extensions.ILibraryDescriptor;
@@ -31,6 +35,7 @@ import org.yakindu.sct.generator.core.extensions.LibraryExtensions;
 import org.yakindu.sct.generator.genmodel.resource.FeatureResourceDescription;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.GeneratorModel;
+import org.yakindu.sct.model.sgen.PropertyDefinition;
 import org.yakindu.sct.model.sgen.SGenPackage;
 
 import com.google.common.base.Predicate;
@@ -51,9 +56,17 @@ public class SGenScopeProvider extends AbstractDeclarativeScopeProvider {
 
 	@Inject
 	private Injector injector;
+	@Inject
+	private ITypeSystem typeSystem;
 
 	@Override
 	public IScope getScope(EObject context, EReference reference) {
+		if (reference == TypesPackage.Literals.TYPE_SPECIFIER__TYPE) {
+			return Scopes.scopeFor(typeSystem.getConcreteTypes());
+		}
+		if (reference == ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE) {
+			return getElementReferenceScope(context);
+		}
 		if (reference.getName().equals("type")) {
 			return scope_Type(context, reference);
 		}
@@ -66,82 +79,73 @@ public class SGenScopeProvider extends AbstractDeclarativeScopeProvider {
 		return super.getScope(context, reference);
 	}
 
-	protected IScope scope_GeneratorEntry_elementRef(final EObject context,
-			final EReference reference) {
-		GeneratorModel generatorModel = (GeneratorModel) EcoreUtil2
-				.getRootContainer(context);
+	protected IScope getElementReferenceScope(EObject context) {
+		GeneratorModel generatorModel = (GeneratorModel) EcoreUtil.getRootContainer(context);
+		EList<PropertyDefinition> properties = generatorModel.getProperties();
+		return Scopes.scopeFor(properties);
+	}
+
+	protected IScope scope_GeneratorEntry_elementRef(final EObject context, final EReference reference) {
+		GeneratorModel generatorModel = (GeneratorModel) EcoreUtil2.getRootContainer(context);
 		String id = generatorModel.getGeneratorId();
-		final IGeneratorDescriptor desc = GeneratorExtensions
-				.getGeneratorDescriptor(id);
+		final IGeneratorDescriptor desc = GeneratorExtensions.getGeneratorDescriptor(id);
 		if (desc == null)
 			return IScope.NULLSCOPE;
 		final String elementRefType = desc.getElementRefType();
 		IScope scope = new FilteringScope(getDelegate().getScope(context, reference),
-			new Predicate<IEObjectDescription>() {
-				public boolean apply(IEObjectDescription input) {
-
-					EList<EClass> allSuperTypes = input.getEClass()
-							.getESuperTypes();
-					for (EClass eClass : allSuperTypes) {
-						if (elementRefType.equals(eClass.getInstanceClassName()))
-							return true;
+				new Predicate<IEObjectDescription>() {
+					public boolean apply(IEObjectDescription input) {
+
+						EList<EClass> allSuperTypes = input.getEClass().getESuperTypes();
+						for (EClass eClass : allSuperTypes) {
+							if (elementRefType.equals(eClass.getInstanceClassName()))
+								return true;
+						}
+						return elementRefType.equals(input.getEClass().getInstanceClassName());
 					}
-					return elementRefType.equals(input.getEClass()
-							.getInstanceClassName());
-				}
-			});
+				});
 		return new SimpleScope(scope.getAllElements());
-		
+
 	}
 
 	protected IScope scope_Parameter(final EObject context, EReference reference) {
 		IScope libraryScope = getLibraryScope(context.eResource());
-		return new FilteringScope(libraryScope,
-				new Predicate<IEObjectDescription>() {
-					public boolean apply(IEObjectDescription input) {
-						if (!input.getEClass().equals(
-								SGenPackage.Literals.FEATURE_PARAMETER)) {
-							return false;
-						}
-						// Only allow references to FeatureParameters defined by
-						// enclosing Feature
-						FeatureConfiguration configuration = EcoreUtil2
-								.getContainerOfType(context,
-										FeatureConfiguration.class);
-						if (configuration == null
-								|| configuration.getType() == null)
-							return false;
-						String featureName = configuration.getType().getName();
-						if (featureName == null) {
-							return false;
-						}
-						return featureName.equals(input
-								.getUserData(FeatureResourceDescription.FEATURE_CONTAINER));
+		return new FilteringScope(libraryScope, new Predicate<IEObjectDescription>() {
+			public boolean apply(IEObjectDescription input) {
+				if (!input.getEClass().equals(SGenPackage.Literals.FEATURE_PARAMETER)) {
+					return false;
+				}
+				// Only allow references to FeatureParameters defined by
+				// enclosing Feature
+				FeatureConfiguration configuration = EcoreUtil2.getContainerOfType(context, FeatureConfiguration.class);
+				if (configuration == null || configuration.getType() == null)
+					return false;
+				String featureName = configuration.getType().getName();
+				if (featureName == null) {
+					return false;
+				}
+				return featureName.equals(input.getUserData(FeatureResourceDescription.FEATURE_CONTAINER));
 
-					}
-				});
+			}
+		});
 	}
 
 	protected IScope scope_Type(EObject context, EReference reference) {
 		IScope libraryScope = getLibraryScope(context.eResource());
-		return new FilteringScope(libraryScope,
-				new Predicate<IEObjectDescription>() {
-					public boolean apply(IEObjectDescription input) {
-						return input.getEClass().equals(
-								SGenPackage.Literals.FEATURE_TYPE);
-					}
-				});
+		return new FilteringScope(libraryScope, new Predicate<IEObjectDescription>() {
+			public boolean apply(IEObjectDescription input) {
+				return input.getEClass().equals(SGenPackage.Literals.FEATURE_TYPE);
+			}
+		});
 	}
 
 	protected SimpleScope getLibraryScope(Resource resource) {
-		GeneratorModel generatorModel = (GeneratorModel) EcoreUtil
-				.getObjectByType(resource.getContents(),
-						SGenPackage.Literals.GENERATOR_MODEL);
+		GeneratorModel generatorModel = (GeneratorModel) EcoreUtil.getObjectByType(resource.getContents(),
+				SGenPackage.Literals.GENERATOR_MODEL);
 		Assert.isNotNull(generatorModel);
 		String generatorId = generatorModel.getGeneratorId();
 
-		IGeneratorDescriptor generatorDescriptor = GeneratorExtensions
-				.getGeneratorDescriptor(generatorId);
+		IGeneratorDescriptor generatorDescriptor = GeneratorExtensions.getGeneratorDescriptor(generatorId);
 
 		Iterable<IEObjectDescription> allElements = Lists.newArrayList();
 
@@ -151,11 +155,9 @@ public class SGenScopeProvider extends AbstractDeclarativeScopeProvider {
 
 			for (ILibraryDescriptor desc : libraryDescriptor) {
 				Resource library = resourceSet.getResource(desc.getURI(), true);
-				FeatureResourceDescription description = new FeatureResourceDescription(
-						library);
+				FeatureResourceDescription description = new FeatureResourceDescription(library);
 				injector.injectMembers(description);
-				allElements = Iterables.concat(allElements,
-						description.getExportedObjects());
+				allElements = Iterables.concat(allElements, description.getExportedObjects());
 			}
 		}
 		return new SimpleScope(allElements);

+ 30 - 0
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/typesystem/SGenTypeInferrer.java

@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2017 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.generator.genmodel.typesystem;
+
+import org.yakindu.base.expressions.expressions.NumericalAddSubtractExpression;
+import org.yakindu.base.expressions.inferrer.ExpressionsTypeInferrer;
+
+/**
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class SGenTypeInferrer extends ExpressionsTypeInferrer {
+
+	@Override
+	public InferenceResult doInfer(NumericalAddSubtractExpression e) {
+		InferenceResult result1 = inferTypeDispatch(e.getLeftOperand());
+		InferenceResult result2 = inferTypeDispatch(e.getRightOperand());
+		assertCompatible(result1, result2, String.format(ARITHMETIC_OPERATORS, e.getOperator(), result1, result2));
+		return getCommonType(inferTypeDispatch(e.getLeftOperand()), inferTypeDispatch(e.getRightOperand()));
+	}
+
+}

+ 39 - 34
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/validation/SGenJavaValidator.java

@@ -20,13 +20,18 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.xtext.EcoreUtil2;
 import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.validation.CheckType;
 import org.yakindu.base.base.NamedElement;
+import org.yakindu.base.types.Type;
+import org.yakindu.base.types.inferrer.ITypeSystemInferrer;
+import org.yakindu.base.types.inferrer.ITypeSystemInferrer.InferenceResult;
+import org.yakindu.base.types.typesystem.ITypeSystem;
+import org.yakindu.base.types.validation.TypeValidator;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions;
 import org.yakindu.sct.generator.core.extensions.IGeneratorDescriptor;
 import org.yakindu.sct.generator.core.extensions.ILibraryDescriptor;
 import org.yakindu.sct.generator.core.extensions.LibraryExtensions;
 import org.yakindu.sct.generator.core.library.IDefaultFeatureValueProvider;
-import org.yakindu.sct.model.sgen.BoolLiteral;
 import org.yakindu.sct.model.sgen.DeprecatableElement;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameter;
@@ -35,12 +40,9 @@ import org.yakindu.sct.model.sgen.FeatureType;
 import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgen.GeneratorModel;
-import org.yakindu.sct.model.sgen.IntLiteral;
-import org.yakindu.sct.model.sgen.Literal;
 import org.yakindu.sct.model.sgen.ParameterTypes;
-import org.yakindu.sct.model.sgen.RealLiteral;
+import org.yakindu.sct.model.sgen.PropertyDefinition;
 import org.yakindu.sct.model.sgen.SGenPackage;
-import org.yakindu.sct.model.sgen.StringLiteral;
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
@@ -62,10 +64,6 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 	public static final String DUPLICATE_PARAMETER = "Duplicate parameter.";
 	public static final String DUPLICATE_FEATURE = "Duplicate feature.";
 	public static final String UNKOWN_GENERATOR = "Unknown generator.";
-	public static final String INCOMPATIBLE_TYPE_BOOLEAN_EXPECTED = "Incompatible type, Boolean expected.";
-	public static final String INCOMPATIBLE_TYPE_INTEGER_EXPECTED = "Incompatible type, Integer expected.";
-	public static final String INCOMPATIBLE_TYPE_FLOAT_EXPECTED = "Incompatible type, Float expected.";
-	public static final String INCOMPATIBLE_TYPE_STRING_EXPECTED = "Incompatible type, String expected.";
 	public static final String UNKNOWN_CONTENT_TYPE = "Unknown content type '";
 	public static final String DEPRECATED = "Element is depricated.";
 	public static final String EMPTY_SGEN = ".sgen file does not contain any entries.";
@@ -74,6 +72,20 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 
 	@Inject
 	private Injector injector;
+	@Inject
+	private ITypeSystemInferrer inferrer;
+	@Inject
+	protected TypeValidator typeValidator;
+	@Inject
+	protected ITypeSystem typesystem;
+
+	@Check(CheckType.FAST)
+	public void checkInitialValue(PropertyDefinition property) {
+		if (property.getType() == null || property.getType().eIsProxy())
+			return;
+		InferenceResult expressionResult = inferrer.infer(property.getInitialValue(), this);
+		typeValidator.assertAssignable(InferenceResult.from(property.getType()), expressionResult, null, this);
+	}
 
 	@Check
 	public void checkContentType(GeneratorEntry entry) {
@@ -94,25 +106,23 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 	public void checkParameterValueType(final FeatureParameterValue parameterValue) {
 		if (parameterValue == null || parameterValue.getExpression() == null)
 			return;
-		Literal value = parameterValue.getExpression();
+		InferenceResult valueResult = inferrer.infer(parameterValue.getExpression());
 		ParameterTypes parameterType = parameterValue.getParameter().getParameterType();
-		switch (parameterType) {
+		typeValidator.assertAssignable(InferenceResult.from(mapType(parameterType)), valueResult, null, this);
+	}
+
+	public Type mapType(ParameterTypes type) {
+		switch (type) {
 		case BOOLEAN:
-			if (!(value instanceof BoolLiteral))
-				error(INCOMPATIBLE_TYPE_BOOLEAN_EXPECTED, SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
-			break;
+			return typesystem.getType(ITypeSystem.BOOLEAN);
 		case INTEGER:
-			if (!(value instanceof IntLiteral))
-				error(INCOMPATIBLE_TYPE_INTEGER_EXPECTED, SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
-			break;
+			return typesystem.getType(ITypeSystem.INTEGER);
 		case FLOAT:
-			if (!(value instanceof RealLiteral))
-				error(INCOMPATIBLE_TYPE_FLOAT_EXPECTED, SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
-			break;
+			return typesystem.getType(ITypeSystem.REAL);
 		case STRING:
-			if (!(value instanceof StringLiteral))
-				error(INCOMPATIBLE_TYPE_STRING_EXPECTED, SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION);
-			break;
+			return typesystem.getType(ITypeSystem.STRING);
+		default:
+			return typesystem.getType(ITypeSystem.ANY);
 		}
 	}
 
@@ -149,14 +159,13 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 					SGenPackage.Literals.GENERATOR_MODEL__GENERATOR_ID);
 		}
 	}
-	
+
 	@Check
 	public void checkEntriesExist(GeneratorModel model) {
-		if(model.getEntries() == null || model.getEntries().isEmpty()) {
+		if (model.getEntries() == null || model.getEntries().isEmpty()) {
 			warning(EMPTY_SGEN, null);
 		}
 	}
-	
 
 	@Check
 	public void checkDuplicateGeneratorEntryFeature(final FeatureConfiguration config) {
@@ -230,14 +239,10 @@ public class SGenJavaValidator extends AbstractSGenJavaValidator {
 		Iterable<ILibraryDescriptor> libraryDescriptors = LibraryExtensions
 				.getLibraryDescriptors(generatorDescriptor.getLibraryIDs());
 
-		Iterable<String> requiredParameters = transform(
-				filter(concat(
-						transform(
-								filter(concat(transform(transform(libraryDescriptors, getFeatureTypeLibrary()),
-										getFeatureTypes())), hasName(configuration.getType().getName())),
-								getParameter())),
-						isRequiredParamter()),
-				getName());
+		Iterable<String> requiredParameters = transform(filter(concat(transform(
+				filter(concat(transform(transform(libraryDescriptors, getFeatureTypeLibrary()), getFeatureTypes())),
+						hasName(configuration.getType().getName())),
+				getParameter())), isRequiredParamter()), getName());
 
 		List<String> configuredParameters = Lists.newArrayList();
 

+ 3 - 1
plugins/org.yakindu.sct.model.sgen.edit/META-INF/MANIFEST.MF

@@ -16,5 +16,7 @@ Require-Bundle: org.eclipse.core.runtime,
  org.yakindu.sct.model.sgraph.edit;visibility:=reexport,
  org.eclipse.xtext.xbase;visibility:=reexport,
  org.yakindu.base.types;visibility:=reexport,
- org.yakindu.base.types.edit;visibility:=reexport
+ org.yakindu.base.types.edit;visibility:=reexport,
+ org.yakindu.base.expressions;visibility:=reexport,
+ org.yakindu.base.expressions.edit;visibility:=reexport
 Bundle-ActivationPolicy: lazy

BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_AssignmentExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_BitwiseAndExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_BitwiseOrExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_BitwiseXorExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_ConditionalExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_ElementReferenceExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_FeatureCall.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_LogicalAndExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_LogicalNotExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_LogicalOrExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_LogicalRelationExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_NumericalAddSubtractExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_NumericalMultiplyDivideExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_NumericalUnaryExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_ParenthesizedExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_PrimitiveValueExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_ShiftExpression.gif


BIN
plugins/org.yakindu.sct.model.sgen.edit/icons/full/ctool16/CreateFeatureParameterValue_expression_TypeCastExpression.gif


+ 3 - 0
plugins/org.yakindu.sct.model.sgen.edit/plugin.properties

@@ -151,3 +151,6 @@ _UI_BoolLiteral_value_feature = Value
 _UI_IntLiteral_value_feature = Value
 _UI_RealLiteral_value_feature = Value
 _UI_StringLiteral_value_feature = Value
+_UI_DeprecatableElement_type = Deprecatable Element
+_UI_DeprecatableElement_deprecated_feature = Deprecated
+_UI_DeprecatableElement_comment_feature = Comment

+ 0 - 149
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/BoolLiteralItemProvider.java

@@ -1,149 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.provider;
-
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ViewerNotification;
-
-import org.yakindu.sct.model.sgen.BoolLiteral;
-import org.yakindu.sct.model.sgen.SGenPackage;
-
-/**
- * This is the item provider adapter for a {@link org.yakindu.sct.model.sgen.BoolLiteral} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class BoolLiteralItemProvider
-	extends LiteralItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public BoolLiteralItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-			addValuePropertyDescriptor(object);
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This adds a property descriptor for the Value feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addValuePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_BoolLiteral_value_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_BoolLiteral_value_feature", "_UI_BoolLiteral_type"),
-				 SGenPackage.Literals.BOOL_LITERAL__VALUE,
-				 true,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This returns BoolLiteral.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/BoolLiteral"));
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		BoolLiteral boolLiteral = (BoolLiteral)object;
-		return getString("_UI_BoolLiteral_type") + " " + boolLiteral.isValue();
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-
-		switch (notification.getFeatureID(BoolLiteral.class)) {
-			case SGenPackage.BOOL_LITERAL__VALUE:
-				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
-				return;
-		}
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-}

+ 0 - 3
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/DeprecatableElementItemProvider.java

@@ -16,9 +16,7 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -29,7 +27,6 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
-
 import org.yakindu.sct.model.sgen.DeprecatableElement;
 import org.yakindu.sct.model.sgen.SGenPackage;
 

+ 1 - 12
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureParameterItemProvider.java

@@ -18,12 +18,7 @@ import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.yakindu.base.base.provider.NamedElementItemProvider;
@@ -37,13 +32,7 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * @generated
  */
 public class FeatureParameterItemProvider
-	extends NamedElementItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends NamedElementItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->

+ 75 - 5
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureParameterValueItemProvider.java

@@ -26,8 +26,8 @@ import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
 import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.yakindu.base.expressions.expressions.ExpressionsFactory;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
-import org.yakindu.sct.model.sgen.SGenFactory;
 import org.yakindu.sct.model.sgen.SGenPackage;
 
 /**
@@ -174,22 +174,92 @@ public class FeatureParameterValueItemProvider extends ItemProviderAdapter
 		newChildDescriptors.add
 			(createChildParameter
 				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
-				 SGenFactory.eINSTANCE.createBoolLiteral()));
+				 ExpressionsFactory.eINSTANCE.createAssignmentExpression()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
-				 SGenFactory.eINSTANCE.createIntLiteral()));
+				 ExpressionsFactory.eINSTANCE.createConditionalExpression()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
-				 SGenFactory.eINSTANCE.createRealLiteral()));
+				 ExpressionsFactory.eINSTANCE.createLogicalOrExpression()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
-				 SGenFactory.eINSTANCE.createStringLiteral()));
+				 ExpressionsFactory.eINSTANCE.createLogicalAndExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createLogicalNotExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createBitwiseXorExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createBitwiseOrExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createBitwiseAndExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createLogicalRelationExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createShiftExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createNumericalAddSubtractExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createNumericalMultiplyDivideExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createNumericalUnaryExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createPrimitiveValueExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createElementReferenceExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createParenthesizedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGenPackage.Literals.FEATURE_PARAMETER_VALUE__EXPRESSION,
+				 ExpressionsFactory.eINSTANCE.createTypeCastExpression()));
 	}
 
 	/**

+ 1 - 12
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/FeatureTypeItemProvider.java

@@ -19,12 +19,7 @@ import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.yakindu.base.base.provider.NamedElementItemProvider;
@@ -39,13 +34,7 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * @generated
  */
 public class FeatureTypeItemProvider
-	extends NamedElementItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends NamedElementItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->

+ 0 - 149
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/IntLiteralItemProvider.java

@@ -1,149 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.provider;
-
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ViewerNotification;
-
-import org.yakindu.sct.model.sgen.IntLiteral;
-import org.yakindu.sct.model.sgen.SGenPackage;
-
-/**
- * This is the item provider adapter for a {@link org.yakindu.sct.model.sgen.IntLiteral} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class IntLiteralItemProvider
-	extends LiteralItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public IntLiteralItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-			addValuePropertyDescriptor(object);
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This adds a property descriptor for the Value feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addValuePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_IntLiteral_value_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_IntLiteral_value_feature", "_UI_IntLiteral_type"),
-				 SGenPackage.Literals.INT_LITERAL__VALUE,
-				 true,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This returns IntLiteral.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/IntLiteral"));
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		IntLiteral intLiteral = (IntLiteral)object;
-		return getString("_UI_IntLiteral_type") + " " + intLiteral.getValue();
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-
-		switch (notification.getFeatureID(IntLiteral.class)) {
-			case SGenPackage.INT_LITERAL__VALUE:
-				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
-				return;
-		}
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-}

+ 0 - 2
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/LiteralItemProvider.java

@@ -16,9 +16,7 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;

+ 0 - 149
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/RealLiteralItemProvider.java

@@ -1,149 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.provider;
-
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ViewerNotification;
-
-import org.yakindu.sct.model.sgen.RealLiteral;
-import org.yakindu.sct.model.sgen.SGenPackage;
-
-/**
- * This is the item provider adapter for a {@link org.yakindu.sct.model.sgen.RealLiteral} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class RealLiteralItemProvider
-	extends LiteralItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public RealLiteralItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-			addValuePropertyDescriptor(object);
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This adds a property descriptor for the Value feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addValuePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_RealLiteral_value_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_RealLiteral_value_feature", "_UI_RealLiteral_type"),
-				 SGenPackage.Literals.REAL_LITERAL__VALUE,
-				 true,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This returns RealLiteral.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/RealLiteral"));
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		RealLiteral realLiteral = (RealLiteral)object;
-		return getString("_UI_RealLiteral_type") + " " + realLiteral.getValue();
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-
-		switch (notification.getFeatureID(RealLiteral.class)) {
-			case SGenPackage.REAL_LITERAL__VALUE:
-				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
-				return;
-		}
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-}

+ 0 - 96
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/SGenItemProviderAdapterFactory.java

@@ -261,98 +261,6 @@ public class SGenItemProviderAdapterFactory extends SGenAdapterFactory implement
 		return featureTypeLibraryItemProvider;
 	}
 
-	/**
-	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgen.BoolLiteral} instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected BoolLiteralItemProvider boolLiteralItemProvider;
-
-	/**
-	 * This creates an adapter for a {@link org.yakindu.sct.model.sgen.BoolLiteral}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Adapter createBoolLiteralAdapter() {
-		if (boolLiteralItemProvider == null) {
-			boolLiteralItemProvider = new BoolLiteralItemProvider(this);
-		}
-
-		return boolLiteralItemProvider;
-	}
-
-	/**
-	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgen.IntLiteral} instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected IntLiteralItemProvider intLiteralItemProvider;
-
-	/**
-	 * This creates an adapter for a {@link org.yakindu.sct.model.sgen.IntLiteral}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Adapter createIntLiteralAdapter() {
-		if (intLiteralItemProvider == null) {
-			intLiteralItemProvider = new IntLiteralItemProvider(this);
-		}
-
-		return intLiteralItemProvider;
-	}
-
-	/**
-	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgen.RealLiteral} instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected RealLiteralItemProvider realLiteralItemProvider;
-
-	/**
-	 * This creates an adapter for a {@link org.yakindu.sct.model.sgen.RealLiteral}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Adapter createRealLiteralAdapter() {
-		if (realLiteralItemProvider == null) {
-			realLiteralItemProvider = new RealLiteralItemProvider(this);
-		}
-
-		return realLiteralItemProvider;
-	}
-
-	/**
-	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgen.StringLiteral} instances.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected StringLiteralItemProvider stringLiteralItemProvider;
-
-	/**
-	 * This creates an adapter for a {@link org.yakindu.sct.model.sgen.StringLiteral}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Adapter createStringLiteralAdapter() {
-		if (stringLiteralItemProvider == null) {
-			stringLiteralItemProvider = new StringLiteralItemProvider(this);
-		}
-
-		return stringLiteralItemProvider;
-	}
-
 	/**
 	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgen.DeprecatableElement} instances.
 	 * <!-- begin-user-doc -->
@@ -483,10 +391,6 @@ public class SGenItemProviderAdapterFactory extends SGenAdapterFactory implement
 		if (generatorEntryItemProvider != null) generatorEntryItemProvider.dispose();
 		if (featureParameterValueItemProvider != null) featureParameterValueItemProvider.dispose();
 		if (featureTypeLibraryItemProvider != null) featureTypeLibraryItemProvider.dispose();
-		if (boolLiteralItemProvider != null) boolLiteralItemProvider.dispose();
-		if (intLiteralItemProvider != null) intLiteralItemProvider.dispose();
-		if (realLiteralItemProvider != null) realLiteralItemProvider.dispose();
-		if (stringLiteralItemProvider != null) stringLiteralItemProvider.dispose();
 		if (deprecatableElementItemProvider != null) deprecatableElementItemProvider.dispose();
 	}
 

+ 4 - 0
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/SgenEditPlugin.java

@@ -13,6 +13,8 @@ package org.yakindu.sct.model.sgen.provider;
 import org.eclipse.emf.common.EMFPlugin;
 import org.eclipse.emf.common.util.ResourceLocator;
 import org.yakindu.base.base.provider.BaseEditPlugin;
+import org.yakindu.base.expressions.expressions.provider.ExpressionsEditPlugin;
+import org.yakindu.base.types.provider.TypesEditPlugin;
 
 /**
  * This is the central singleton for the Sgen edit plugin.
@@ -46,6 +48,8 @@ public final class SgenEditPlugin extends EMFPlugin {
 		super
 		  (new ResourceLocator [] {
 		     BaseEditPlugin.INSTANCE,
+		     ExpressionsEditPlugin.INSTANCE,
+		     TypesEditPlugin.INSTANCE,
 		   });
 	}
 

+ 0 - 151
plugins/org.yakindu.sct.model.sgen.edit/src/org/yakindu/sct/model/sgen/provider/StringLiteralItemProvider.java

@@ -1,151 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.provider;
-
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ViewerNotification;
-
-import org.yakindu.sct.model.sgen.SGenPackage;
-import org.yakindu.sct.model.sgen.StringLiteral;
-
-/**
- * This is the item provider adapter for a {@link org.yakindu.sct.model.sgen.StringLiteral} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class StringLiteralItemProvider
-	extends LiteralItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public StringLiteralItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-			addValuePropertyDescriptor(object);
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This adds a property descriptor for the Value feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addValuePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_StringLiteral_value_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_StringLiteral_value_feature", "_UI_StringLiteral_type"),
-				 SGenPackage.Literals.STRING_LITERAL__VALUE,
-				 true,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This returns StringLiteral.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringLiteral"));
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		String label = ((StringLiteral)object).getValue();
-		return label == null || label.length() == 0 ?
-			getString("_UI_StringLiteral_type") :
-			getString("_UI_StringLiteral_type") + " " + label;
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-
-		switch (notification.getFeatureID(StringLiteral.class)) {
-			case SGenPackage.STRING_LITERAL__VALUE:
-				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
-				return;
-		}
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-}

+ 6 - 0
plugins/org.yakindu.sct.model.sgen/.project

@@ -5,6 +5,11 @@
 	<projects>
 	</projects>
 	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 		<buildCommand>
 			<name>org.eclipse.jdt.core.javabuilder</name>
 			<arguments>
@@ -24,6 +29,7 @@
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 	</natures>
 	<filteredResources>
 		<filter>

+ 3 - 1
plugins/org.yakindu.sct.model.sgen/META-INF/MANIFEST.MF

@@ -15,5 +15,7 @@ Require-Bundle: org.eclipse.core.runtime,
  org.yakindu.sct.model.sgraph;visibility:=reexport,
  org.eclipse.emf.ecore.xmi;visibility:=reexport,
  org.yakindu.base.types;visibility:=reexport,
- com.google.inject;visibility:=reexport
+ com.google.inject;visibility:=reexport,
+ org.yakindu.base.expressions;visibility:=reexport,
+ org.yakindu.base.expressions.interpreter
 Bundle-ActivationPolicy: lazy

+ 11 - 14
plugins/org.yakindu.sct.model.sgen/model/emf/sgen.ecore

@@ -5,6 +5,8 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
         eType="#//GeneratorEntry" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="generatorId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+        eType="#//PropertyDefinition" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="GeneratorConfiguration">
     <eStructuralFeatures xsi:type="ecore:EReference" name="configurations" upperBound="-1"
@@ -56,10 +58,14 @@
     </eOperations>
     <eOperations name="getStringValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eOperations name="getBooleanValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eOperations name="setValue">
+      <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </eOperations>
+    <eOperations name="getIntegerValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" eType="#//FeatureParameter"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="featureConfiguration" eType="#//FeatureConfiguration"
         changeable="false" eOpposite="#//FeatureConfiguration/parameterValues"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//Literal"
+    <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="ecore:EClass ../../../org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
         containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FeatureTypeLibrary">
@@ -73,22 +79,13 @@
     <eLiterals name="BOOLEAN"/>
     <eLiterals name="INTEGER" value="3"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Literal" abstract="true"/>
-  <eClassifiers xsi:type="ecore:EClass" name="BoolLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="IntLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="RealLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DeprecatableElement">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="deprecated" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertyDefinition" eSuperTypes="../../../org.yakindu.base.types/model/types.ecore#//Property">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="initialValue" eType="ecore:EClass ../../../org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
 </ecore:EPackage>

+ 19 - 17
plugins/org.yakindu.sct.model.sgen/model/emf/sgen.genmodel

@@ -1,12 +1,11 @@
 <?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" modelDirectory="/org.yakindu.sct.model.sgen/src"
-    modelPluginID="org.yakindu.sct.model.sgen" modelName="Sgen" importerID="org.eclipse.emf.importer.ecore"
-    complianceLevel="5.0" copyrightFields="false" usedGenPackages="../../../org.yakindu.base.types/model/base.genmodel#//base">
+<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" modelDirectory="/org.yakindu.sct.model.sgen/src" modelPluginID="org.yakindu.sct.model.sgen"
+    modelName="Sgen" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0"
+    copyrightFields="false" usedGenPackages="../../../org.yakindu.base.types/model/base.genmodel#//base ../../../org.yakindu.base.expressions/model/Expressions.genmodel#//expressions ../../../org.yakindu.base.types/model/types.genmodel#//types">
   <foreignModel>sgen.ecore</foreignModel>
   <genPackages prefix="SGen" basePackage="org.yakindu.sct.model" disposableProviderFactory="true"
-      loadInitialization="true" ecorePackage="sgen.ecore#/">
+      ecorePackage="sgen.ecore#/">
     <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgen.ecore#//ParameterTypes">
       <genEnumLiterals ecoreEnumLiteral="sgen.ecore#//ParameterTypes/STRING"/>
       <genEnumLiterals ecoreEnumLiteral="sgen.ecore#//ParameterTypes/FLOAT"/>
@@ -16,6 +15,7 @@
     <genClasses ecoreClass="sgen.ecore#//GeneratorModel">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgen.ecore#//GeneratorModel/entries"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgen.ecore#//GeneratorModel/generatorId"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgen.ecore#//GeneratorModel/properties"/>
     </genClasses>
     <genClasses ecoreClass="sgen.ecore#//GeneratorConfiguration">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgen.ecore#//GeneratorConfiguration/configurations"/>
@@ -44,6 +44,10 @@
       <genOperations ecoreOperation="sgen.ecore#//GeneratorEntry/getFeatureConfiguration">
         <genParameters ecoreParameter="sgen.ecore#//GeneratorEntry/getFeatureConfiguration/featureName"/>
       </genOperations>
+      <genOperations ecoreOperation="sgen.ecore#//GeneratorEntry/getFeatureParameterValue">
+        <genParameters ecoreParameter="sgen.ecore#//GeneratorEntry/getFeatureParameterValue/featureName"/>
+        <genParameters ecoreParameter="sgen.ecore#//GeneratorEntry/getFeatureParameterValue/paramName"/>
+      </genOperations>
     </genClasses>
     <genClasses ecoreClass="sgen.ecore#//FeatureParameterValue">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgen.ecore#//FeatureParameterValue/parameter"/>
@@ -57,23 +61,21 @@
       </genOperations>
       <genOperations ecoreOperation="sgen.ecore#//FeatureParameterValue/getStringValue"/>
       <genOperations ecoreOperation="sgen.ecore#//FeatureParameterValue/getBooleanValue"/>
+      <genOperations ecoreOperation="sgen.ecore#//FeatureParameterValue/setValue.2">
+        <genParameters ecoreParameter="sgen.ecore#//FeatureParameterValue/setValue.2/value"/>
+      </genOperations>
+      <genOperations ecoreOperation="sgen.ecore#//FeatureParameterValue/getIntegerValue"/>
     </genClasses>
     <genClasses ecoreClass="sgen.ecore#//FeatureTypeLibrary">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgen.ecore#//FeatureTypeLibrary/types"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgen.ecore#//FeatureTypeLibrary/name"/>
     </genClasses>
-    <genClasses image="false" ecoreClass="sgen.ecore#//Literal"/>
-    <genClasses ecoreClass="sgen.ecore#//BoolLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgen.ecore#//BoolLiteral/value"/>
-    </genClasses>
-    <genClasses ecoreClass="sgen.ecore#//IntLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgen.ecore#//IntLiteral/value"/>
-    </genClasses>
-    <genClasses ecoreClass="sgen.ecore#//RealLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgen.ecore#//RealLiteral/value"/>
+    <genClasses ecoreClass="sgen.ecore#//DeprecatableElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgen.ecore#//DeprecatableElement/deprecated"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgen.ecore#//DeprecatableElement/comment"/>
     </genClasses>
-    <genClasses ecoreClass="sgen.ecore#//StringLiteral">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgen.ecore#//StringLiteral/value"/>
+    <genClasses ecoreClass="sgen.ecore#//PropertyDefinition">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgen.ecore#//PropertyDefinition/initialValue"/>
     </genClasses>
   </genPackages>
 </genmodel:GenModel>

+ 0 - 57
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/BoolLiteral.java

@@ -1,57 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Bool Literal</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.BoolLiteral#isValue <em>Value</em>}</li>
- * </ul>
- *
- * @see org.yakindu.sct.model.sgen.SGenPackage#getBoolLiteral()
- * @model
- * @generated
- */
-public interface BoolLiteral extends Literal {
-	/**
-	 * 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(boolean)
-	 * @see org.yakindu.sct.model.sgen.SGenPackage#getBoolLiteral_Value()
-	 * @model
-	 * @generated
-	 */
-	boolean isValue();
-
-	/**
-	 * Sets the value of the '{@link org.yakindu.sct.model.sgen.BoolLiteral#isValue <em>Value</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Value</em>' attribute.
-	 * @see #isValue()
-	 * @generated
-	 */
-	void setValue(boolean value);
-
-} // BoolLiteral

+ 20 - 3
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/FeatureParameterValue.java

@@ -11,6 +11,7 @@
 package org.yakindu.sct.model.sgen;
 
 import org.eclipse.emf.ecore.EObject;
+import org.yakindu.base.expressions.expressions.Expression;
 
 /**
  * <!-- begin-user-doc --> A representation of the model object '
@@ -87,12 +88,12 @@ public interface FeatureParameterValue extends EObject {
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Expression</em>' containment reference.
-	 * @see #setExpression(Literal)
+	 * @see #setExpression(Expression)
 	 * @see org.yakindu.sct.model.sgen.SGenPackage#getFeatureParameterValue_Expression()
 	 * @model containment="true"
 	 * @generated
 	 */
-	Literal getExpression();
+	Expression getExpression();
 
 	/**
 	 * Sets the value of the '{@link org.yakindu.sct.model.sgen.FeatureParameterValue#getExpression <em>Expression</em>}' containment reference.
@@ -102,7 +103,7 @@ public interface FeatureParameterValue extends EObject {
 	 * @see #getExpression()
 	 * @generated
 	 */
-	void setExpression(Literal value);
+	void setExpression(Expression value);
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -131,6 +132,22 @@ public interface FeatureParameterValue extends EObject {
 	 * @generated
 	 */
 	boolean getBooleanValue();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	void setValue(int value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation"
+	 * @generated
+	 */
+	int getIntegerValue();
 	
 
 } // FeatureParameterValue

+ 17 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/GeneratorModel.java

@@ -24,6 +24,7 @@ import org.eclipse.emf.ecore.EObject;
  * <ul>
  *   <li>{@link org.yakindu.sct.model.sgen.GeneratorModel#getEntries <em>Entries</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgen.GeneratorModel#getGeneratorId <em>Generator Id</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgen.GeneratorModel#getProperties <em>Properties</em>}</li>
  * </ul>
  *
  * @see org.yakindu.sct.model.sgen.SGenPackage#getGeneratorModel()
@@ -73,4 +74,20 @@ public interface GeneratorModel extends EObject {
 	 */
 	void setGeneratorId(String value);
 
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.sct.model.sgen.PropertyDefinition}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Properties</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>Properties</em>' containment reference list.
+	 * @see org.yakindu.sct.model.sgen.SGenPackage#getGeneratorModel_Properties()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<PropertyDefinition> getProperties();
+
 } // GeneratorModel

+ 0 - 57
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/IntLiteral.java

@@ -1,57 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Int Literal</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.IntLiteral#getValue <em>Value</em>}</li>
- * </ul>
- *
- * @see org.yakindu.sct.model.sgen.SGenPackage#getIntLiteral()
- * @model
- * @generated
- */
-public interface IntLiteral extends Literal {
-	/**
-	 * 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(int)
-	 * @see org.yakindu.sct.model.sgen.SGenPackage#getIntLiteral_Value()
-	 * @model
-	 * @generated
-	 */
-	int getValue();
-
-	/**
-	 * Sets the value of the '{@link org.yakindu.sct.model.sgen.IntLiteral#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(int value);
-
-} // IntLiteral

+ 0 - 26
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/Literal.java

@@ -1,26 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen;
-
-import org.eclipse.emf.ecore.EObject;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Literal</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see org.yakindu.sct.model.sgen.SGenPackage#getLiteral()
- * @model abstract="true"
- * @generated
- */
-public interface Literal extends EObject {
-} // Literal

+ 52 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/PropertyDefinition.java

@@ -0,0 +1,52 @@
+/**
+ */
+package org.yakindu.sct.model.sgen;
+
+import org.yakindu.base.expressions.expressions.Expression;
+
+import org.yakindu.base.types.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Definition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgen.PropertyDefinition#getInitialValue <em>Initial Value</em>}</li>
+ * </ul>
+ *
+ * @see org.yakindu.sct.model.sgen.SGenPackage#getPropertyDefinition()
+ * @model
+ * @generated
+ */
+public interface PropertyDefinition extends Property {
+	/**
+	 * Returns the value of the '<em><b>Initial Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Initial Value</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Initial Value</em>' containment reference.
+	 * @see #setInitialValue(Expression)
+	 * @see org.yakindu.sct.model.sgen.SGenPackage#getPropertyDefinition_InitialValue()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getInitialValue();
+
+	/**
+	 * Sets the value of the '{@link org.yakindu.sct.model.sgen.PropertyDefinition#getInitialValue <em>Initial Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Initial Value</em>' containment reference.
+	 * @see #getInitialValue()
+	 * @generated
+	 */
+	void setInitialValue(Expression value);
+
+} // PropertyDefinition

+ 0 - 57
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/RealLiteral.java

@@ -1,57 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Real Literal</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.RealLiteral#getValue <em>Value</em>}</li>
- * </ul>
- *
- * @see org.yakindu.sct.model.sgen.SGenPackage#getRealLiteral()
- * @model
- * @generated
- */
-public interface RealLiteral extends Literal {
-	/**
-	 * 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(float)
-	 * @see org.yakindu.sct.model.sgen.SGenPackage#getRealLiteral_Value()
-	 * @model
-	 * @generated
-	 */
-	float getValue();
-
-	/**
-	 * Sets the value of the '{@link org.yakindu.sct.model.sgen.RealLiteral#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(float value);
-
-} // RealLiteral

+ 6 - 33
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/SGenFactory.java

@@ -102,49 +102,22 @@ public interface SGenFactory extends EFactory {
 	FeatureTypeLibrary createFeatureTypeLibrary();
 
 	/**
-	 * Returns a new object of class '<em>Bool Literal</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Bool Literal</em>'.
-	 * @generated
-	 */
-	BoolLiteral createBoolLiteral();
-
-	/**
-	 * Returns a new object of class '<em>Int Literal</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Int Literal</em>'.
-	 * @generated
-	 */
-	IntLiteral createIntLiteral();
-
-	/**
-	 * Returns a new object of class '<em>Real Literal</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Real Literal</em>'.
-	 * @generated
-	 */
-	RealLiteral createRealLiteral();
-
-	/**
-	 * Returns a new object of class '<em>String Literal</em>'.
+	 * Returns a new object of class '<em>Deprecatable Element</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>String Literal</em>'.
+	 * @return a new object of class '<em>Deprecatable Element</em>'.
 	 * @generated
 	 */
-	StringLiteral createStringLiteral();
+	DeprecatableElement createDeprecatableElement();
 
 	/**
-	 * Returns a new object of class '<em>Deprecatable Element</em>'.
+	 * Returns a new object of class '<em>Property Definition</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Deprecatable Element</em>'.
+	 * @return a new object of class '<em>Property Definition</em>'.
 	 * @generated
 	 */
-	DeprecatableElement createDeprecatableElement();
+	PropertyDefinition createPropertyDefinition();
 
 	/**
 	 * Returns the package supported by this factory.

+ 101 - 240
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/SGenPackage.java

@@ -16,6 +16,7 @@ import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.yakindu.base.base.BasePackage;
+import org.yakindu.base.types.TypesPackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -93,6 +94,15 @@ public interface SGenPackage extends EPackage {
 	 */
 	int GENERATOR_MODEL__GENERATOR_ID = 1;
 
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERATOR_MODEL__PROPERTIES = 2;
+
 	/**
 	 * The number of structural features of the '<em>Generator Model</em>' class.
 	 * <!-- begin-user-doc -->
@@ -100,7 +110,7 @@ public interface SGenPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int GENERATOR_MODEL_FEATURE_COUNT = 2;
+	int GENERATOR_MODEL_FEATURE_COUNT = 3;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.GeneratorConfigurationImpl <em>Generator Configuration</em>}' class.
@@ -444,172 +454,141 @@ public interface SGenPackage extends EPackage {
 
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.LiteralImpl <em>Literal</em>}' class.
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl <em>Deprecatable Element</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgen.impl.LiteralImpl
-	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getLiteral()
+	 * @see org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl
+	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getDeprecatableElement()
 	 * @generated
 	 */
-	int LITERAL = 8;
+	int DEPRECATABLE_ELEMENT = 8;
 
 	/**
-	 * The number of structural features of the '<em>Literal</em>' class.
+	 * The feature id for the '<em><b>Deprecated</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LITERAL_FEATURE_COUNT = 0;
-
-	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.BoolLiteralImpl <em>Bool Literal</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgen.impl.BoolLiteralImpl
-	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getBoolLiteral()
-	 * @generated
-	 */
-	int BOOL_LITERAL = 9;
+	int DEPRECATABLE_ELEMENT__DEPRECATED = 0;
 
 	/**
-	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * The feature id for the '<em><b>Comment</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int BOOL_LITERAL__VALUE = LITERAL_FEATURE_COUNT + 0;
+	int DEPRECATABLE_ELEMENT__COMMENT = 1;
 
 	/**
-	 * The number of structural features of the '<em>Bool Literal</em>' class.
+	 * The number of structural features of the '<em>Deprecatable Element</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int BOOL_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 1;
+	int DEPRECATABLE_ELEMENT_FEATURE_COUNT = 2;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.IntLiteralImpl <em>Int Literal</em>}' class.
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.PropertyDefinitionImpl <em>Property Definition</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgen.impl.IntLiteralImpl
-	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getIntLiteral()
+	 * @see org.yakindu.sct.model.sgen.impl.PropertyDefinitionImpl
+	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getPropertyDefinition()
 	 * @generated
 	 */
-	int INT_LITERAL = 10;
+	int PROPERTY_DEFINITION = 9;
 
 	/**
-	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INT_LITERAL__VALUE = LITERAL_FEATURE_COUNT + 0;
+	int PROPERTY_DEFINITION__TYPE = TypesPackage.PROPERTY__TYPE;
 
 	/**
-	 * The number of structural features of the '<em>Int Literal</em>' class.
+	 * The feature id for the '<em><b>Type Specifier</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INT_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 1;
+	int PROPERTY_DEFINITION__TYPE_SPECIFIER = TypesPackage.PROPERTY__TYPE_SPECIFIER;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.RealLiteralImpl <em>Real Literal</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgen.impl.RealLiteralImpl
-	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getRealLiteral()
-	 * @generated
-	 */
-	int REAL_LITERAL = 11;
-
-	/**
-	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int REAL_LITERAL__VALUE = LITERAL_FEATURE_COUNT + 0;
+	int PROPERTY_DEFINITION__NAME = TypesPackage.PROPERTY__NAME;
 
 	/**
-	 * The number of structural features of the '<em>Real Literal</em>' class.
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int REAL_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 1;
+	int PROPERTY_DEFINITION__ID = TypesPackage.PROPERTY__ID;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.StringLiteralImpl <em>String Literal</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgen.impl.StringLiteralImpl
-	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getStringLiteral()
-	 * @generated
-	 */
-	int STRING_LITERAL = 12;
-
-	/**
-	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int STRING_LITERAL__VALUE = LITERAL_FEATURE_COUNT + 0;
+	int PROPERTY_DEFINITION__ANNOTATIONS = TypesPackage.PROPERTY__ANNOTATIONS;
 
 	/**
-	 * The number of structural features of the '<em>String Literal</em>' class.
+	 * The feature id for the '<em><b>Const</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int STRING_LITERAL_FEATURE_COUNT = LITERAL_FEATURE_COUNT + 1;
+	int PROPERTY_DEFINITION__CONST = TypesPackage.PROPERTY__CONST;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl <em>Deprecatable Element</em>}' class.
+	 * The feature id for the '<em><b>Readonly</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl
-	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getDeprecatableElement()
 	 * @generated
+	 * @ordered
 	 */
-	int DEPRECATABLE_ELEMENT = 13;
+	int PROPERTY_DEFINITION__READONLY = TypesPackage.PROPERTY__READONLY;
 
 	/**
-	 * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+	 * The feature id for the '<em><b>External</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DEPRECATABLE_ELEMENT__DEPRECATED = 0;
+	int PROPERTY_DEFINITION__EXTERNAL = TypesPackage.PROPERTY__EXTERNAL;
 
 	/**
-	 * The feature id for the '<em><b>Comment</b></em>' attribute.
+	 * The feature id for the '<em><b>Initial Value</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DEPRECATABLE_ELEMENT__COMMENT = 1;
+	int PROPERTY_DEFINITION__INITIAL_VALUE = TypesPackage.PROPERTY_FEATURE_COUNT + 0;
 
 	/**
-	 * The number of structural features of the '<em>Deprecatable Element</em>' class.
+	 * The number of structural features of the '<em>Property Definition</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DEPRECATABLE_ELEMENT_FEATURE_COUNT = 2;
+	int PROPERTY_DEFINITION_FEATURE_COUNT = TypesPackage.PROPERTY_FEATURE_COUNT + 1;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgen.ParameterTypes <em>Parameter Types</em>}' enum.
@@ -619,7 +598,7 @@ public interface SGenPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getParameterTypes()
 	 * @generated
 	 */
-	int PARAMETER_TYPES = 14;
+	int PARAMETER_TYPES = 10;
 
 
 	/**
@@ -654,6 +633,17 @@ public interface SGenPackage extends EPackage {
 	 */
 	EAttribute getGeneratorModel_GeneratorId();
 
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.yakindu.sct.model.sgen.GeneratorModel#getProperties <em>Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Properties</em>'.
+	 * @see org.yakindu.sct.model.sgen.GeneratorModel#getProperties()
+	 * @see #getGeneratorModel()
+	 * @generated
+	 */
+	EReference getGeneratorModel_Properties();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.GeneratorConfiguration <em>Generator Configuration</em>}'.
 	 * <!-- begin-user-doc -->
@@ -911,100 +901,6 @@ public interface SGenPackage extends EPackage {
 	 */
 	EAttribute getFeatureTypeLibrary_Name();
 
-	/**
-	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.Literal <em>Literal</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Literal</em>'.
-	 * @see org.yakindu.sct.model.sgen.Literal
-	 * @generated
-	 */
-	EClass getLiteral();
-
-	/**
-	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.BoolLiteral <em>Bool Literal</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Bool Literal</em>'.
-	 * @see org.yakindu.sct.model.sgen.BoolLiteral
-	 * @generated
-	 */
-	EClass getBoolLiteral();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgen.BoolLiteral#isValue <em>Value</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Value</em>'.
-	 * @see org.yakindu.sct.model.sgen.BoolLiteral#isValue()
-	 * @see #getBoolLiteral()
-	 * @generated
-	 */
-	EAttribute getBoolLiteral_Value();
-
-	/**
-	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.IntLiteral <em>Int Literal</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Int Literal</em>'.
-	 * @see org.yakindu.sct.model.sgen.IntLiteral
-	 * @generated
-	 */
-	EClass getIntLiteral();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgen.IntLiteral#getValue <em>Value</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Value</em>'.
-	 * @see org.yakindu.sct.model.sgen.IntLiteral#getValue()
-	 * @see #getIntLiteral()
-	 * @generated
-	 */
-	EAttribute getIntLiteral_Value();
-
-	/**
-	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.RealLiteral <em>Real Literal</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Real Literal</em>'.
-	 * @see org.yakindu.sct.model.sgen.RealLiteral
-	 * @generated
-	 */
-	EClass getRealLiteral();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgen.RealLiteral#getValue <em>Value</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Value</em>'.
-	 * @see org.yakindu.sct.model.sgen.RealLiteral#getValue()
-	 * @see #getRealLiteral()
-	 * @generated
-	 */
-	EAttribute getRealLiteral_Value();
-
-	/**
-	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.StringLiteral <em>String Literal</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>String Literal</em>'.
-	 * @see org.yakindu.sct.model.sgen.StringLiteral
-	 * @generated
-	 */
-	EClass getStringLiteral();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.yakindu.sct.model.sgen.StringLiteral#getValue <em>Value</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Value</em>'.
-	 * @see org.yakindu.sct.model.sgen.StringLiteral#getValue()
-	 * @see #getStringLiteral()
-	 * @generated
-	 */
-	EAttribute getStringLiteral_Value();
-
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.DeprecatableElement <em>Deprecatable Element</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1037,6 +933,27 @@ public interface SGenPackage extends EPackage {
 	 */
 	EAttribute getDeprecatableElement_Comment();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgen.PropertyDefinition <em>Property Definition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Definition</em>'.
+	 * @see org.yakindu.sct.model.sgen.PropertyDefinition
+	 * @generated
+	 */
+	EClass getPropertyDefinition();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.yakindu.sct.model.sgen.PropertyDefinition#getInitialValue <em>Initial Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Initial Value</em>'.
+	 * @see org.yakindu.sct.model.sgen.PropertyDefinition#getInitialValue()
+	 * @see #getPropertyDefinition()
+	 * @generated
+	 */
+	EReference getPropertyDefinition_InitialValue();
+
 	/**
 	 * Returns the meta object for enum '{@link org.yakindu.sct.model.sgen.ParameterTypes <em>Parameter Types</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1095,6 +1012,14 @@ public interface SGenPackage extends EPackage {
 		 */
 		EAttribute GENERATOR_MODEL__GENERATOR_ID = eINSTANCE.getGeneratorModel_GeneratorId();
 
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference GENERATOR_MODEL__PROPERTIES = eINSTANCE.getGeneratorModel_Properties();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.GeneratorConfigurationImpl <em>Generator Configuration</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -1302,112 +1227,48 @@ public interface SGenPackage extends EPackage {
 		EAttribute FEATURE_TYPE_LIBRARY__NAME = eINSTANCE.getFeatureTypeLibrary_Name();
 
 		/**
-		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.LiteralImpl <em>Literal</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.yakindu.sct.model.sgen.impl.LiteralImpl
-		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getLiteral()
-		 * @generated
-		 */
-		EClass LITERAL = eINSTANCE.getLiteral();
-
-		/**
-		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.BoolLiteralImpl <em>Bool Literal</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.yakindu.sct.model.sgen.impl.BoolLiteralImpl
-		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getBoolLiteral()
-		 * @generated
-		 */
-		EClass BOOL_LITERAL = eINSTANCE.getBoolLiteral();
-
-		/**
-		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute BOOL_LITERAL__VALUE = eINSTANCE.getBoolLiteral_Value();
-
-		/**
-		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.IntLiteralImpl <em>Int Literal</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.yakindu.sct.model.sgen.impl.IntLiteralImpl
-		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getIntLiteral()
-		 * @generated
-		 */
-		EClass INT_LITERAL = eINSTANCE.getIntLiteral();
-
-		/**
-		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute INT_LITERAL__VALUE = eINSTANCE.getIntLiteral_Value();
-
-		/**
-		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.RealLiteralImpl <em>Real Literal</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.yakindu.sct.model.sgen.impl.RealLiteralImpl
-		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getRealLiteral()
-		 * @generated
-		 */
-		EClass REAL_LITERAL = eINSTANCE.getRealLiteral();
-
-		/**
-		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute REAL_LITERAL__VALUE = eINSTANCE.getRealLiteral_Value();
-
-		/**
-		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.StringLiteralImpl <em>String Literal</em>}' class.
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl <em>Deprecatable Element</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see org.yakindu.sct.model.sgen.impl.StringLiteralImpl
-		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getStringLiteral()
+		 * @see org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl
+		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getDeprecatableElement()
 		 * @generated
 		 */
-		EClass STRING_LITERAL = eINSTANCE.getStringLiteral();
+		EClass DEPRECATABLE_ELEMENT = eINSTANCE.getDeprecatableElement();
 
 		/**
-		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Deprecated</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute STRING_LITERAL__VALUE = eINSTANCE.getStringLiteral_Value();
+		EAttribute DEPRECATABLE_ELEMENT__DEPRECATED = eINSTANCE.getDeprecatableElement_Deprecated();
 
 		/**
-		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl <em>Deprecatable Element</em>}' class.
+		 * The meta object literal for the '<em><b>Comment</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see org.yakindu.sct.model.sgen.impl.DeprecatableElementImpl
-		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getDeprecatableElement()
 		 * @generated
 		 */
-		EClass DEPRECATABLE_ELEMENT = eINSTANCE.getDeprecatableElement();
+		EAttribute DEPRECATABLE_ELEMENT__COMMENT = eINSTANCE.getDeprecatableElement_Comment();
 
 		/**
-		 * The meta object literal for the '<em><b>Deprecated</b></em>' attribute feature.
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.impl.PropertyDefinitionImpl <em>Property Definition</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sgen.impl.PropertyDefinitionImpl
+		 * @see org.yakindu.sct.model.sgen.impl.SGenPackageImpl#getPropertyDefinition()
 		 * @generated
 		 */
-		EAttribute DEPRECATABLE_ELEMENT__DEPRECATED = eINSTANCE.getDeprecatableElement_Deprecated();
+		EClass PROPERTY_DEFINITION = eINSTANCE.getPropertyDefinition();
 
 		/**
-		 * The meta object literal for the '<em><b>Comment</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Initial Value</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute DEPRECATABLE_ELEMENT__COMMENT = eINSTANCE.getDeprecatableElement_Comment();
+		EReference PROPERTY_DEFINITION__INITIAL_VALUE = eINSTANCE.getPropertyDefinition_InitialValue();
 
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sgen.ParameterTypes <em>Parameter Types</em>}' enum.

+ 0 - 57
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/StringLiteral.java

@@ -1,57 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>String Literal</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.StringLiteral#getValue <em>Value</em>}</li>
- * </ul>
- *
- * @see org.yakindu.sct.model.sgen.SGenPackage#getStringLiteral()
- * @model
- * @generated
- */
-public interface StringLiteral extends Literal {
-	/**
-	 * 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(String)
-	 * @see org.yakindu.sct.model.sgen.SGenPackage#getStringLiteral_Value()
-	 * @model
-	 * @generated
-	 */
-	String getValue();
-
-	/**
-	 * Sets the value of the '{@link org.yakindu.sct.model.sgen.StringLiteral#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(String value);
-
-} // StringLiteral

+ 0 - 153
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/BoolLiteralImpl.java

@@ -1,153 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.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.model.sgen.BoolLiteral;
-import org.yakindu.sct.model.sgen.SGenPackage;
-
-/**
- * <!-- begin-user-doc --> An implementation of the model object '
- * <em><b>Bool Literal</b></em>'. <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.impl.BoolLiteralImpl#isValue <em>Value</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class BoolLiteralImpl extends LiteralImpl implements BoolLiteral {
-	/**
-	 * The default value of the '{@link #isValue() <em>Value</em>}' attribute.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @see #isValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final boolean VALUE_EDEFAULT = false;
-
-	/**
-	 * The cached value of the '{@link #isValue() <em>Value</em>}' attribute.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @see #isValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected boolean value = VALUE_EDEFAULT;
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected BoolLiteralImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SGenPackage.Literals.BOOL_LITERAL;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	public boolean isValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setValue(boolean newValue) {
-		boolean oldValue = value;
-		value = newValue;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.BOOL_LITERAL__VALUE, oldValue, value));
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case SGenPackage.BOOL_LITERAL__VALUE:
-				return isValue();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case SGenPackage.BOOL_LITERAL__VALUE:
-				setValue((Boolean)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case SGenPackage.BOOL_LITERAL__VALUE:
-				setValue(VALUE_EDEFAULT);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case SGenPackage.BOOL_LITERAL__VALUE:
-				return value != VALUE_EDEFAULT;
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated NOT
-	 */
-	@Override
-	public String toString() {
-		return String.valueOf(value);
-	}
-
-} // BoolLiteralImpl

+ 92 - 23
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/FeatureParameterValueImpl.java

@@ -12,18 +12,32 @@ package org.yakindu.sct.model.sgen.impl;
 
 import org.eclipse.emf.common.notify.Notification;
 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.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
-import org.yakindu.sct.model.sgen.BoolLiteral;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.yakindu.base.expressions.expressions.BoolLiteral;
+import org.yakindu.base.expressions.expressions.Expression;
+import org.yakindu.base.expressions.expressions.ExpressionsFactory;
+import org.yakindu.base.expressions.expressions.IntLiteral;
+import org.yakindu.base.expressions.expressions.Literal;
+import org.yakindu.base.expressions.expressions.PrimitiveValueExpression;
+import org.yakindu.base.expressions.expressions.StringLiteral;
+import org.yakindu.base.expressions.interpreter.IExpressionInterpreter;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameter;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
-import org.yakindu.sct.model.sgen.Literal;
-import org.yakindu.sct.model.sgen.SGenFactory;
+import org.yakindu.sct.model.sgen.GeneratorModel;
+import org.yakindu.sct.model.sgen.PropertyDefinition;
 import org.yakindu.sct.model.sgen.SGenPackage;
-import org.yakindu.sct.model.sgen.StringLiteral;
+import org.yakindu.sct.model.sruntime.ExecutionContext;
+import org.yakindu.sct.model.sruntime.ExecutionVariable;
+import org.yakindu.sct.model.sruntime.SRuntimeFactory;
+import org.yakindu.sct.model.sruntime.impl.ExecutionContextImpl;
+
+import com.google.inject.Inject;
 
 /**
  * <!-- begin-user-doc --> An implementation of the model object '
@@ -57,13 +71,15 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * @generated
 	 * @ordered
 	 */
-	protected Literal expression;
+	protected Expression expression;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
-
+	@Inject
+	protected IExpressionInterpreter interpreter;
+	
 	protected FeatureParameterValueImpl() {
 		super();
 	}
@@ -125,7 +141,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Literal getExpression() {
+	public Expression getExpression() {
 		return expression;
 	}
 
@@ -134,8 +150,8 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetExpression(Literal newExpression, NotificationChain msgs) {
-		Literal oldExpression = expression;
+	public NotificationChain basicSetExpression(Expression newExpression, NotificationChain msgs) {
+		Expression oldExpression = expression;
 		expression = newExpression;
 		if (eNotificationRequired()) {
 			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION, oldExpression, newExpression);
@@ -149,7 +165,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setExpression(Literal newExpression) {
+	public void setExpression(Expression newExpression) {
 		if (newExpression != expression) {
 			NotificationChain msgs = null;
 			if (expression != null)
@@ -168,10 +184,11 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * 
 	 * @generated NOT
 	 */
+	@Override
 	public void setValue(String string) {
-		StringLiteral literal = SGenFactory.eINSTANCE.createStringLiteral();
-		literal.setValue(string);
-		setExpression(literal);
+		StringLiteral stringLiteral = ExpressionsFactory.eINSTANCE.createStringLiteral();
+		stringLiteral.setValue(string);
+		setValue(stringLiteral);
 	}
 
 	/**
@@ -179,10 +196,29 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * 
 	 * @generated NOT
 	 */
-	public void setValue(boolean boolean_) {
-		BoolLiteral literal = SGenFactory.eINSTANCE.createBoolLiteral();
-		literal.setValue(boolean_);
-		setExpression(literal);
+	@Override
+	public void setValue(boolean bool) {
+		BoolLiteral boolLiteral = ExpressionsFactory.eINSTANCE.createBoolLiteral();
+		boolLiteral.setValue(bool);
+		setValue(boolLiteral);
+	}
+	
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public void setValue(int bool) {
+		IntLiteral intLiteral = ExpressionsFactory.eINSTANCE.createIntLiteral();
+		intLiteral.setValue(bool);
+		setValue(intLiteral);
+	}
+
+	protected void setValue(Literal literal) {
+		PrimitiveValueExpression expression = ExpressionsFactory.eINSTANCE.createPrimitiveValueExpression();
+		expression.setValue(literal);
+		setExpression(expression);
 	}
 
 	/**
@@ -191,19 +227,52 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 	 * @generated NOT
 	 */
 	public String getStringValue() {
-		return expression.toString();
+		return interpreter.evaluate(getExpression(), getExecutionContext()).toString();
 	}
 
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * 
 	 * @generated NOT
 	 */
 	public boolean getBooleanValue() {
-		return ((BoolLiteral)expression).isValue();
+		return (boolean) interpreter.evaluate(getExpression(), getExecutionContext());
+	}
+	
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public int getIntegerValue() {
+		return ((Long)interpreter.evaluate(getExpression(), getExecutionContext())).intValue();
+	}
+	
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	protected ExecutionContext getExecutionContext() {
+		if (!(EcoreUtil.getRootContainer(this) instanceof GeneratorModel)) {
+			return new ExecutionContextImpl();
+		}
+		ExecutionContext context = new ExecutionContextImpl();
+		GeneratorModel generatorModel = (GeneratorModel) EcoreUtil.getRootContainer(this);
+		EList<PropertyDefinition> properties = generatorModel.getProperties();
+		for (PropertyDefinition propertyDefinition : properties) {
+			ExecutionVariable variable = SRuntimeFactory.eINSTANCE.createExecutionVariable();
+			variable.setName(propertyDefinition.getName());
+			variable.setFqName(propertyDefinition.getName());
+			variable.setType(propertyDefinition.getType());
+			variable.setValue(interpreter.evaluate(propertyDefinition.getInitialValue(), context));
+			context.getSlots().add(variable);
+		}
+		return context;
 	}
 
-
+//
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -279,7 +348,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 				setParameter((FeatureParameter)newValue);
 				return;
 			case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
-				setExpression((Literal)newValue);
+				setExpression((Expression)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -296,7 +365,7 @@ public class FeatureParameterValueImpl extends EObjectImpl implements
 				setParameter((FeatureParameter)null);
 				return;
 			case SGenPackage.FEATURE_PARAMETER_VALUE__EXPRESSION:
-				setExpression((Literal)null);
+				setExpression((Expression)null);
 				return;
 		}
 		super.eUnset(featureID);

+ 37 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/GeneratorModelImpl.java

@@ -23,6 +23,7 @@ import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.yakindu.sct.model.sgen.GeneratorEntry;
 import org.yakindu.sct.model.sgen.GeneratorModel;
+import org.yakindu.sct.model.sgen.PropertyDefinition;
 import org.yakindu.sct.model.sgen.SGenPackage;
 
 /**
@@ -35,6 +36,7 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * <ul>
  *   <li>{@link org.yakindu.sct.model.sgen.impl.GeneratorModelImpl#getEntries <em>Entries</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgen.impl.GeneratorModelImpl#getGeneratorId <em>Generator Id</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.GeneratorModelImpl#getProperties <em>Properties</em>}</li>
  * </ul>
  *
  * @generated
@@ -69,6 +71,16 @@ public class GeneratorModelImpl extends EObjectImpl implements GeneratorModel {
 	 */
 	protected String generatorId = GENERATOR_ID_EDEFAULT;
 
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PropertyDefinition> properties;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -121,6 +133,18 @@ public class GeneratorModelImpl extends EObjectImpl implements GeneratorModel {
 			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.GENERATOR_MODEL__GENERATOR_ID, oldGeneratorId, generatorId));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<PropertyDefinition> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<PropertyDefinition>(PropertyDefinition.class, this, SGenPackage.GENERATOR_MODEL__PROPERTIES);
+		}
+		return properties;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -131,6 +155,8 @@ public class GeneratorModelImpl extends EObjectImpl implements GeneratorModel {
 		switch (featureID) {
 			case SGenPackage.GENERATOR_MODEL__ENTRIES:
 				return ((InternalEList<?>)getEntries()).basicRemove(otherEnd, msgs);
+			case SGenPackage.GENERATOR_MODEL__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -147,6 +173,8 @@ public class GeneratorModelImpl extends EObjectImpl implements GeneratorModel {
 				return getEntries();
 			case SGenPackage.GENERATOR_MODEL__GENERATOR_ID:
 				return getGeneratorId();
+			case SGenPackage.GENERATOR_MODEL__PROPERTIES:
+				return getProperties();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -167,6 +195,10 @@ public class GeneratorModelImpl extends EObjectImpl implements GeneratorModel {
 			case SGenPackage.GENERATOR_MODEL__GENERATOR_ID:
 				setGeneratorId((String)newValue);
 				return;
+			case SGenPackage.GENERATOR_MODEL__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends PropertyDefinition>)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -185,6 +217,9 @@ public class GeneratorModelImpl extends EObjectImpl implements GeneratorModel {
 			case SGenPackage.GENERATOR_MODEL__GENERATOR_ID:
 				setGeneratorId(GENERATOR_ID_EDEFAULT);
 				return;
+			case SGenPackage.GENERATOR_MODEL__PROPERTIES:
+				getProperties().clear();
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -201,6 +236,8 @@ public class GeneratorModelImpl extends EObjectImpl implements GeneratorModel {
 				return entries != null && !entries.isEmpty();
 			case SGenPackage.GENERATOR_MODEL__GENERATOR_ID:
 				return GENERATOR_ID_EDEFAULT == null ? generatorId != null : !GENERATOR_ID_EDEFAULT.equals(generatorId);
+			case SGenPackage.GENERATOR_MODEL__PROPERTIES:
+				return properties != null && !properties.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}

+ 0 - 153
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/IntLiteralImpl.java

@@ -1,153 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.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.model.sgen.IntLiteral;
-import org.yakindu.sct.model.sgen.SGenPackage;
-
-/**
- * <!-- begin-user-doc --> An implementation of the model object '
- * <em><b>Int Literal</b></em>'. <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.impl.IntLiteralImpl#getValue <em>Value</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class IntLiteralImpl extends LiteralImpl implements IntLiteral {
-	/**
-	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @see #getValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final int VALUE_EDEFAULT = 0;
-
-	/**
-	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @see #getValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected int value = VALUE_EDEFAULT;
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected IntLiteralImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SGenPackage.Literals.INT_LITERAL;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	public int getValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setValue(int newValue) {
-		int oldValue = value;
-		value = newValue;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.INT_LITERAL__VALUE, oldValue, value));
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case SGenPackage.INT_LITERAL__VALUE:
-				return getValue();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case SGenPackage.INT_LITERAL__VALUE:
-				setValue((Integer)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case SGenPackage.INT_LITERAL__VALUE:
-				setValue(VALUE_EDEFAULT);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case SGenPackage.INT_LITERAL__VALUE:
-				return value != VALUE_EDEFAULT;
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
-	 * @generated NOT
-	 */
-	@Override
-	public String toString() {
-		return String.valueOf(getValue());
-	}
-
-} // IntLiteralImpl

+ 0 - 48
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/LiteralImpl.java

@@ -1,48 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.impl;
-
-import org.eclipse.emf.ecore.EClass;
-
-import org.eclipse.emf.ecore.impl.EObjectImpl;
-
-import org.yakindu.sct.model.sgen.Literal;
-import org.yakindu.sct.model.sgen.SGenPackage;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Literal</b></em>'.
- * <!-- end-user-doc -->
- *
- * @generated
- */
-public abstract class LiteralImpl extends EObjectImpl implements Literal {
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected LiteralImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SGenPackage.Literals.LITERAL;
-	}
-	
-
-} //LiteralImpl

+ 178 - 0
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/PropertyDefinitionImpl.java

@@ -0,0 +1,178 @@
+/**
+ */
+package org.yakindu.sct.model.sgen.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.base.expressions.expressions.Expression;
+
+import org.yakindu.base.types.impl.PropertyImpl;
+
+import org.yakindu.sct.model.sgen.PropertyDefinition;
+import org.yakindu.sct.model.sgen.SGenPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.sgen.impl.PropertyDefinitionImpl#getInitialValue <em>Initial Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PropertyDefinitionImpl extends PropertyImpl implements PropertyDefinition {
+	/**
+	 * The cached value of the '{@link #getInitialValue() <em>Initial Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInitialValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression initialValue;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyDefinitionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SGenPackage.Literals.PROPERTY_DEFINITION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getInitialValue() {
+		return initialValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInitialValue(Expression newInitialValue, NotificationChain msgs) {
+		Expression oldInitialValue = initialValue;
+		initialValue = newInitialValue;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE, oldInitialValue, newInitialValue);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInitialValue(Expression newInitialValue) {
+		if (newInitialValue != initialValue) {
+			NotificationChain msgs = null;
+			if (initialValue != null)
+				msgs = ((InternalEObject)initialValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE, null, msgs);
+			if (newInitialValue != null)
+				msgs = ((InternalEObject)newInitialValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE, null, msgs);
+			msgs = basicSetInitialValue(newInitialValue, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE, newInitialValue, newInitialValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE:
+				return basicSetInitialValue(null, 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 SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE:
+				return getInitialValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE:
+				setInitialValue((Expression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE:
+				setInitialValue((Expression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SGenPackage.PROPERTY_DEFINITION__INITIAL_VALUE:
+				return initialValue != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PropertyDefinitionImpl

+ 0 - 164
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/RealLiteralImpl.java

@@ -1,164 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.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.model.sgen.RealLiteral;
-import org.yakindu.sct.model.sgen.SGenPackage;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Real Literal</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.impl.RealLiteralImpl#getValue <em>Value</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class RealLiteralImpl extends LiteralImpl implements RealLiteral {
-	/**
-	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final float VALUE_EDEFAULT = 0.0F;
-
-	/**
-	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected float value = VALUE_EDEFAULT;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected RealLiteralImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SGenPackage.Literals.REAL_LITERAL;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public float getValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setValue(float newValue) {
-		float oldValue = value;
-		value = newValue;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.REAL_LITERAL__VALUE, oldValue, value));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case SGenPackage.REAL_LITERAL__VALUE:
-				return getValue();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case SGenPackage.REAL_LITERAL__VALUE:
-				setValue((Float)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case SGenPackage.REAL_LITERAL__VALUE:
-				setValue(VALUE_EDEFAULT);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case SGenPackage.REAL_LITERAL__VALUE:
-				return value != VALUE_EDEFAULT;
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated NOT
-	 */
-	@Override
-	public String toString() {
-		return String.valueOf(getValue());
-	}
-
-} //RealLiteralImpl

+ 18 - 43
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/SGenFactoryImpl.java

@@ -16,7 +16,9 @@ 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.expressions.ExpressionsRuntimeModule;
 import org.yakindu.sct.model.sgen.*;
+import org.yakindu.sct.model.sgen.DeprecatableElement;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameter;
 import org.yakindu.sct.model.sgen.FeatureParameterValue;
@@ -29,6 +31,9 @@ import org.yakindu.sct.model.sgen.ParameterTypes;
 import org.yakindu.sct.model.sgen.SGenFactory;
 import org.yakindu.sct.model.sgen.SGenPackage;
 
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Factory</b>.
@@ -54,15 +59,17 @@ public class SGenFactoryImpl extends EFactoryImpl implements SGenFactory {
 		}
 		return new SGenFactoryImpl();
 	}
+	
+	protected Injector injector;
 
 	/**
 	 * Creates an instance of the factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	public SGenFactoryImpl() {
-		super();
+		injector = Guice.createInjector(new ExpressionsRuntimeModule());
 	}
 
 	/**
@@ -81,11 +88,8 @@ public class SGenFactoryImpl extends EFactoryImpl implements SGenFactory {
 			case SGenPackage.GENERATOR_ENTRY: return createGeneratorEntry();
 			case SGenPackage.FEATURE_PARAMETER_VALUE: return createFeatureParameterValue();
 			case SGenPackage.FEATURE_TYPE_LIBRARY: return createFeatureTypeLibrary();
-			case SGenPackage.BOOL_LITERAL: return createBoolLiteral();
-			case SGenPackage.INT_LITERAL: return createIntLiteral();
-			case SGenPackage.REAL_LITERAL: return createRealLiteral();
-			case SGenPackage.STRING_LITERAL: return createStringLiteral();
 			case SGenPackage.DEPRECATABLE_ELEMENT: return createDeprecatableElement();
+			case SGenPackage.PROPERTY_DEFINITION: return createPropertyDefinition();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -184,10 +188,11 @@ public class SGenFactoryImpl extends EFactoryImpl implements SGenFactory {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	public FeatureParameterValue createFeatureParameterValue() {
 		FeatureParameterValueImpl featureParameterValue = new FeatureParameterValueImpl();
+		injector.injectMembers(featureParameterValue);
 		return featureParameterValue;
 	}
 
@@ -206,39 +211,9 @@ public class SGenFactoryImpl extends EFactoryImpl implements SGenFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public BoolLiteral createBoolLiteral() {
-		BoolLiteralImpl boolLiteral = new BoolLiteralImpl();
-		return boolLiteral;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public IntLiteral createIntLiteral() {
-		IntLiteralImpl intLiteral = new IntLiteralImpl();
-		return intLiteral;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public RealLiteral createRealLiteral() {
-		RealLiteralImpl realLiteral = new RealLiteralImpl();
-		return realLiteral;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public StringLiteral createStringLiteral() {
-		StringLiteralImpl stringLiteral = new StringLiteralImpl();
-		return stringLiteral;
+	public DeprecatableElement createDeprecatableElement() {
+		DeprecatableElementImpl deprecatableElement = new DeprecatableElementImpl();
+		return deprecatableElement;
 	}
 
 	/**
@@ -246,9 +221,9 @@ public class SGenFactoryImpl extends EFactoryImpl implements SGenFactory {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public DeprecatableElement createDeprecatableElement() {
-		DeprecatableElementImpl deprecatableElement = new DeprecatableElementImpl();
-		return deprecatableElement;
+	public PropertyDefinition createPropertyDefinition() {
+		PropertyDefinitionImpl propertyDefinition = new PropertyDefinitionImpl();
+		return propertyDefinition;
 	}
 
 	/**

+ 216 - 213
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/SGenPackageImpl.java

@@ -19,12 +19,26 @@ import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
 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.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
 import org.yakindu.base.base.BasePackage;
+import org.yakindu.base.expressions.expressions.ExpressionsPackage;
+import org.yakindu.base.types.TypesPackage;
+import org.yakindu.sct.model.sgen.DeprecatableElement;
+import org.yakindu.sct.model.sgen.FeatureConfiguration;
+import org.yakindu.sct.model.sgen.FeatureParameter;
+import org.yakindu.sct.model.sgen.FeatureParameterValue;
+import org.yakindu.sct.model.sgen.FeatureType;
+import org.yakindu.sct.model.sgen.FeatureTypeLibrary;
+import org.yakindu.sct.model.sgen.GeneratorConfiguration;
+import org.yakindu.sct.model.sgen.GeneratorEntry;
+import org.yakindu.sct.model.sgen.GeneratorModel;
+import org.yakindu.sct.model.sgen.ParameterTypes;
+import org.yakindu.sct.model.sgen.PropertyDefinition;
 import org.yakindu.sct.model.sgen.SGenFactory;
 import org.yakindu.sct.model.sgen.SGenPackage;
 
@@ -35,13 +49,6 @@ import org.yakindu.sct.model.sgen.SGenPackage;
  * @generated
  */
 public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected String packageFilename = "sgen.ecore";
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -103,42 +110,14 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass literalEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EClass boolLiteralEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EClass intLiteralEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EClass realLiteralEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EClass stringLiteralEClass = null;
+	private EClass deprecatableElementEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass deprecatableElementEClass = null;
+	private EClass propertyDefinitionEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -181,6 +160,8 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
 	 * @generated
 	 */
 	public static SGenPackage init() {
@@ -193,12 +174,14 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 
 		// Initialize simple dependencies
 		BasePackage.eINSTANCE.eClass();
+		ExpressionsPackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
 
-		// Load packages
-		theSGenPackage.loadPackage();
+		// Create package meta-data objects
+		theSGenPackage.createPackageContents();
 
-		// Fix loaded packages
-		theSGenPackage.fixPackageContents();
+		// Initialize created meta-data
+		theSGenPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theSGenPackage.freeze();
@@ -215,9 +198,6 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EClass getGeneratorModel() {
-		if (generatorModelEClass == null) {
-			generatorModelEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(0);
-		}
 		return generatorModelEClass;
 	}
 
@@ -227,7 +207,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getGeneratorModel_Entries() {
-        return (EReference)getGeneratorModel().getEStructuralFeatures().get(0);
+		return (EReference)generatorModelEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -236,7 +216,16 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EAttribute getGeneratorModel_GeneratorId() {
-        return (EAttribute)getGeneratorModel().getEStructuralFeatures().get(1);
+		return (EAttribute)generatorModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getGeneratorModel_Properties() {
+		return (EReference)generatorModelEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -245,9 +234,6 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EClass getGeneratorConfiguration() {
-		if (generatorConfigurationEClass == null) {
-			generatorConfigurationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(1);
-		}
 		return generatorConfigurationEClass;
 	}
 
@@ -257,7 +243,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getGeneratorConfiguration_Configurations() {
-        return (EReference)getGeneratorConfiguration().getEStructuralFeatures().get(0);
+		return (EReference)generatorConfigurationEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -266,9 +252,6 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EClass getFeatureType() {
-		if (featureTypeEClass == null) {
-			featureTypeEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(2);
-		}
 		return featureTypeEClass;
 	}
 
@@ -278,7 +261,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureType_Parameters() {
-        return (EReference)getFeatureType().getEStructuralFeatures().get(0);
+		return (EReference)featureTypeEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -287,7 +270,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureType_Library() {
-        return (EReference)getFeatureType().getEStructuralFeatures().get(1);
+		return (EReference)featureTypeEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -296,7 +279,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EAttribute getFeatureType_Optional() {
-        return (EAttribute)getFeatureType().getEStructuralFeatures().get(2);
+		return (EAttribute)featureTypeEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -305,9 +288,6 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EClass getFeatureParameter() {
-		if (featureParameterEClass == null) {
-			featureParameterEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(3);
-		}
 		return featureParameterEClass;
 	}
 
@@ -317,7 +297,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureParameter_FeatureType() {
-        return (EReference)getFeatureParameter().getEStructuralFeatures().get(0);
+		return (EReference)featureParameterEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -326,7 +306,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EAttribute getFeatureParameter_Optional() {
-        return (EAttribute)getFeatureParameter().getEStructuralFeatures().get(1);
+		return (EAttribute)featureParameterEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -335,7 +315,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EAttribute getFeatureParameter_ParameterType() {
-        return (EAttribute)getFeatureParameter().getEStructuralFeatures().get(2);
+		return (EAttribute)featureParameterEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -344,9 +324,6 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EClass getFeatureConfiguration() {
-		if (featureConfigurationEClass == null) {
-			featureConfigurationEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(4);
-		}
 		return featureConfigurationEClass;
 	}
 
@@ -356,7 +333,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureConfiguration_Type() {
-        return (EReference)getFeatureConfiguration().getEStructuralFeatures().get(0);
+		return (EReference)featureConfigurationEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -365,7 +342,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureConfiguration_ParameterValues() {
-        return (EReference)getFeatureConfiguration().getEStructuralFeatures().get(1);
+		return (EReference)featureConfigurationEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -374,9 +351,6 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EClass getGeneratorEntry() {
-		if (generatorEntryEClass == null) {
-			generatorEntryEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(5);
-		}
 		return generatorEntryEClass;
 	}
 
@@ -386,7 +360,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getGeneratorEntry_ElementRef() {
-        return (EReference)getGeneratorEntry().getEStructuralFeatures().get(0);
+		return (EReference)generatorEntryEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -395,7 +369,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getGeneratorEntry_Features() {
-        return (EReference)getGeneratorEntry().getEStructuralFeatures().get(1);
+		return (EReference)generatorEntryEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -404,7 +378,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EAttribute getGeneratorEntry_ContentType() {
-        return (EAttribute)getGeneratorEntry().getEStructuralFeatures().get(2);
+		return (EAttribute)generatorEntryEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -413,9 +387,6 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EClass getFeatureParameterValue() {
-		if (featureParameterValueEClass == null) {
-			featureParameterValueEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(6);
-		}
 		return featureParameterValueEClass;
 	}
 
@@ -425,7 +396,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureParameterValue_Parameter() {
-        return (EReference)getFeatureParameterValue().getEStructuralFeatures().get(0);
+		return (EReference)featureParameterValueEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -434,7 +405,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureParameterValue_FeatureConfiguration() {
-        return (EReference)getFeatureParameterValue().getEStructuralFeatures().get(1);
+		return (EReference)featureParameterValueEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -443,7 +414,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureParameterValue_Expression() {
-        return (EReference)getFeatureParameterValue().getEStructuralFeatures().get(2);
+		return (EReference)featureParameterValueEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -452,9 +423,6 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EClass getFeatureTypeLibrary() {
-		if (featureTypeLibraryEClass == null) {
-			featureTypeLibraryEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(7);
-		}
 		return featureTypeLibraryEClass;
 	}
 
@@ -464,7 +432,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EReference getFeatureTypeLibrary_Types() {
-        return (EReference)getFeatureTypeLibrary().getEStructuralFeatures().get(0);
+		return (EReference)featureTypeLibraryEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -473,7 +441,7 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * @generated
 	 */
 	public EAttribute getFeatureTypeLibrary_Name() {
-        return (EAttribute)getFeatureTypeLibrary().getEStructuralFeatures().get(1);
+		return (EAttribute)featureTypeLibraryEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -481,11 +449,8 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getLiteral() {
-		if (literalEClass == null) {
-			literalEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(9);
-		}
-		return literalEClass;
+	public EClass getDeprecatableElement() {
+		return deprecatableElementEClass;
 	}
 
 	/**
@@ -493,11 +458,8 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getBoolLiteral() {
-		if (boolLiteralEClass == null) {
-			boolLiteralEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(10);
-		}
-		return boolLiteralEClass;
+	public EAttribute getDeprecatableElement_Deprecated() {
+		return (EAttribute)deprecatableElementEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -505,8 +467,8 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getBoolLiteral_Value() {
-        return (EAttribute)getBoolLiteral().getEStructuralFeatures().get(0);
+	public EAttribute getDeprecatableElement_Comment() {
+		return (EAttribute)deprecatableElementEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -514,11 +476,8 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getIntLiteral() {
-		if (intLiteralEClass == null) {
-			intLiteralEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(11);
-		}
-		return intLiteralEClass;
+	public EClass getPropertyDefinition() {
+		return propertyDefinitionEClass;
 	}
 
 	/**
@@ -526,8 +485,8 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getIntLiteral_Value() {
-        return (EAttribute)getIntLiteral().getEStructuralFeatures().get(0);
+	public EReference getPropertyDefinition_InitialValue() {
+		return (EReference)propertyDefinitionEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -535,11 +494,8 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getRealLiteral() {
-		if (realLiteralEClass == null) {
-			realLiteralEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(12);
-		}
-		return realLiteralEClass;
+	public EEnum getParameterTypes() {
+		return parameterTypesEEnum;
 	}
 
 	/**
@@ -547,8 +503,8 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getRealLiteral_Value() {
-        return (EAttribute)getRealLiteral().getEStructuralFeatures().get(0);
+	public SGenFactory getSGenFactory() {
+		return (SGenFactory)getEFactoryInstance();
 	}
 
 	/**
@@ -556,104 +512,65 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getStringLiteral() {
-		if (stringLiteralEClass == null) {
-			stringLiteralEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(13);
-		}
-		return stringLiteralEClass;
-	}
+	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 EAttribute getStringLiteral_Value() {
-        return (EAttribute)getStringLiteral().getEStructuralFeatures().get(0);
-	}
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EClass getDeprecatableElement() {
-		if (deprecatableElementEClass == null) {
-			deprecatableElementEClass = (EClass)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(14);
-		}
-		return deprecatableElementEClass;
-	}
+		// Create classes and their features
+		generatorModelEClass = createEClass(GENERATOR_MODEL);
+		createEReference(generatorModelEClass, GENERATOR_MODEL__ENTRIES);
+		createEAttribute(generatorModelEClass, GENERATOR_MODEL__GENERATOR_ID);
+		createEReference(generatorModelEClass, GENERATOR_MODEL__PROPERTIES);
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EAttribute getDeprecatableElement_Deprecated() {
-        return (EAttribute)getDeprecatableElement().getEStructuralFeatures().get(0);
-	}
+		generatorConfigurationEClass = createEClass(GENERATOR_CONFIGURATION);
+		createEReference(generatorConfigurationEClass, GENERATOR_CONFIGURATION__CONFIGURATIONS);
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EAttribute getDeprecatableElement_Comment() {
-        return (EAttribute)getDeprecatableElement().getEStructuralFeatures().get(1);
-	}
+		featureTypeEClass = createEClass(FEATURE_TYPE);
+		createEReference(featureTypeEClass, FEATURE_TYPE__PARAMETERS);
+		createEReference(featureTypeEClass, FEATURE_TYPE__LIBRARY);
+		createEAttribute(featureTypeEClass, FEATURE_TYPE__OPTIONAL);
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EEnum getParameterTypes() {
-		if (parameterTypesEEnum == null) {
-			parameterTypesEEnum = (EEnum)EPackage.Registry.INSTANCE.getEPackage(SGenPackage.eNS_URI).getEClassifiers().get(8);
-		}
-		return parameterTypesEEnum;
-	}
+		featureParameterEClass = createEClass(FEATURE_PARAMETER);
+		createEReference(featureParameterEClass, FEATURE_PARAMETER__FEATURE_TYPE);
+		createEAttribute(featureParameterEClass, FEATURE_PARAMETER__OPTIONAL);
+		createEAttribute(featureParameterEClass, FEATURE_PARAMETER__PARAMETER_TYPE);
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SGenFactory getSGenFactory() {
-		return (SGenFactory)getEFactoryInstance();
-	}
+		featureConfigurationEClass = createEClass(FEATURE_CONFIGURATION);
+		createEReference(featureConfigurationEClass, FEATURE_CONFIGURATION__TYPE);
+		createEReference(featureConfigurationEClass, FEATURE_CONFIGURATION__PARAMETER_VALUES);
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private boolean isLoaded = false;
+		generatorEntryEClass = createEClass(GENERATOR_ENTRY);
+		createEReference(generatorEntryEClass, GENERATOR_ENTRY__ELEMENT_REF);
+		createEReference(generatorEntryEClass, GENERATOR_ENTRY__FEATURES);
+		createEAttribute(generatorEntryEClass, GENERATOR_ENTRY__CONTENT_TYPE);
 
-	/**
-	 * Laods the package and any sub-packages from their serialized form.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void loadPackage() {
-		if (isLoaded) return;
-		isLoaded = true;
+		featureParameterValueEClass = createEClass(FEATURE_PARAMETER_VALUE);
+		createEReference(featureParameterValueEClass, FEATURE_PARAMETER_VALUE__PARAMETER);
+		createEReference(featureParameterValueEClass, FEATURE_PARAMETER_VALUE__FEATURE_CONFIGURATION);
+		createEReference(featureParameterValueEClass, FEATURE_PARAMETER_VALUE__EXPRESSION);
 
-		URL url = getClass().getResource(packageFilename);
-		if (url == null) {
-			throw new RuntimeException("Missing serialized package: " + packageFilename);
-		}
-		URI uri = URI.createURI(url.toString());
-		Resource resource = new EcoreResourceFactoryImpl().createResource(uri);
-		try {
-			resource.load(null);
-		}
-		catch (IOException exception) {
-			throw new WrappedException(exception);
-		}
-		initializeFromLoadedEPackage(this, (EPackage)resource.getContents().get(0));
-		createResource(eNS_URI);
+		featureTypeLibraryEClass = createEClass(FEATURE_TYPE_LIBRARY);
+		createEReference(featureTypeLibraryEClass, FEATURE_TYPE_LIBRARY__TYPES);
+		createEAttribute(featureTypeLibraryEClass, FEATURE_TYPE_LIBRARY__NAME);
+
+		deprecatableElementEClass = createEClass(DEPRECATABLE_ELEMENT);
+		createEAttribute(deprecatableElementEClass, DEPRECATABLE_ELEMENT__DEPRECATED);
+		createEAttribute(deprecatableElementEClass, DEPRECATABLE_ELEMENT__COMMENT);
+
+		propertyDefinitionEClass = createEClass(PROPERTY_DEFINITION);
+		createEReference(propertyDefinitionEClass, PROPERTY_DEFINITION__INITIAL_VALUE);
+
+		// Create enums
+		parameterTypesEEnum = createEEnum(PARAMETER_TYPES);
 	}
 
 	/**
@@ -661,32 +578,118 @@ public class SGenPackageImpl extends EPackageImpl implements SGenPackage {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private boolean isFixed = false;
+	private boolean isInitialized = false;
 
 	/**
-	 * Fixes up the loaded package, to make it appear as if it had been programmatically built.
+	 * 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 fixPackageContents() {
-		if (isFixed) return;
-		isFixed = true;
-		fixEClassifiers();
-	}
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
 
-	/**
-	 * Sets the instance class on the given classifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void fixInstanceClass(EClassifier eClassifier) {
-		if (eClassifier.getInstanceClassName() == null) {
-			eClassifier.setInstanceClassName("org.yakindu.sct.model.sgen." + eClassifier.getName());
-			setGeneratedClassName(eClassifier);
-		}
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		BasePackage theBasePackage = (BasePackage)EPackage.Registry.INSTANCE.getEPackage(BasePackage.eNS_URI);
+		ExpressionsPackage theExpressionsPackage = (ExpressionsPackage)EPackage.Registry.INSTANCE.getEPackage(ExpressionsPackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		featureTypeEClass.getESuperTypes().add(theBasePackage.getNamedElement());
+		featureTypeEClass.getESuperTypes().add(this.getDeprecatableElement());
+		featureParameterEClass.getESuperTypes().add(theBasePackage.getNamedElement());
+		featureParameterEClass.getESuperTypes().add(this.getDeprecatableElement());
+		propertyDefinitionEClass.getESuperTypes().add(theTypesPackage.getProperty());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(generatorModelEClass, GeneratorModel.class, "GeneratorModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getGeneratorModel_Entries(), this.getGeneratorEntry(), null, "entries", null, 0, -1, GeneratorModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getGeneratorModel_GeneratorId(), ecorePackage.getEString(), "generatorId", null, 0, 1, GeneratorModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getGeneratorModel_Properties(), this.getPropertyDefinition(), null, "properties", null, 0, -1, GeneratorModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(generatorConfigurationEClass, GeneratorConfiguration.class, "GeneratorConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getGeneratorConfiguration_Configurations(), this.getFeatureConfiguration(), null, "configurations", null, 0, -1, GeneratorConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(featureTypeEClass, FeatureType.class, "FeatureType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFeatureType_Parameters(), this.getFeatureParameter(), this.getFeatureParameter_FeatureType(), "parameters", null, 0, -1, FeatureType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFeatureType_Library(), this.getFeatureTypeLibrary(), null, "library", null, 1, 1, FeatureType.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFeatureType_Optional(), ecorePackage.getEBoolean(), "optional", "false", 0, 1, FeatureType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(featureParameterEClass, FeatureParameter.class, "FeatureParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFeatureParameter_FeatureType(), this.getFeatureType(), this.getFeatureType_Parameters(), "featureType", null, 0, 1, FeatureParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFeatureParameter_Optional(), ecorePackage.getEBoolean(), "optional", "false", 0, 1, FeatureParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFeatureParameter_ParameterType(), this.getParameterTypes(), "parameterType", null, 0, 1, FeatureParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(featureConfigurationEClass, FeatureConfiguration.class, "FeatureConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFeatureConfiguration_Type(), this.getFeatureType(), null, "type", null, 0, 1, FeatureConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFeatureConfiguration_ParameterValues(), this.getFeatureParameterValue(), this.getFeatureParameterValue_FeatureConfiguration(), "parameterValues", null, 0, -1, FeatureConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		EOperation op = addEOperation(featureConfigurationEClass, this.getFeatureParameterValue(), "getParameterValue", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "parameterName", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(generatorEntryEClass, GeneratorEntry.class, "GeneratorEntry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getGeneratorEntry_ElementRef(), ecorePackage.getEObject(), null, "elementRef", null, 0, 1, GeneratorEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getGeneratorEntry_Features(), this.getFeatureConfiguration(), null, "features", null, 0, -1, GeneratorEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getGeneratorEntry_ContentType(), ecorePackage.getEString(), "contentType", null, 0, 1, GeneratorEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		op = addEOperation(generatorEntryEClass, this.getFeatureConfiguration(), "getFeatureConfiguration", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "featureName", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = addEOperation(generatorEntryEClass, this.getFeatureParameterValue(), "getFeatureParameterValue", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "featureName", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "paramName", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(featureParameterValueEClass, FeatureParameterValue.class, "FeatureParameterValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFeatureParameterValue_Parameter(), this.getFeatureParameter(), null, "parameter", null, 0, 1, FeatureParameterValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFeatureParameterValue_FeatureConfiguration(), this.getFeatureConfiguration(), this.getFeatureConfiguration_ParameterValues(), "featureConfiguration", null, 0, 1, FeatureParameterValue.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFeatureParameterValue_Expression(), theExpressionsPackage.getExpression(), null, "expression", null, 0, 1, FeatureParameterValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		op = addEOperation(featureParameterValueEClass, null, "setValue", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEString(), "string", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = addEOperation(featureParameterValueEClass, null, "setValue", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEBoolean(), "boolean_", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(featureParameterValueEClass, ecorePackage.getEString(), "getStringValue", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(featureParameterValueEClass, ecorePackage.getEBoolean(), "getBooleanValue", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		op = addEOperation(featureParameterValueEClass, null, "setValue", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEInt(), "value", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(featureParameterValueEClass, ecorePackage.getEInt(), "getIntegerValue", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(featureTypeLibraryEClass, FeatureTypeLibrary.class, "FeatureTypeLibrary", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFeatureTypeLibrary_Types(), this.getFeatureType(), null, "types", null, 0, -1, FeatureTypeLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFeatureTypeLibrary_Name(), ecorePackage.getEString(), "name", null, 0, 1, FeatureTypeLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(deprecatableElementEClass, DeprecatableElement.class, "DeprecatableElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDeprecatableElement_Deprecated(), ecorePackage.getEBoolean(), "deprecated", "false", 1, 1, DeprecatableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDeprecatableElement_Comment(), ecorePackage.getEString(), "comment", null, 0, 1, DeprecatableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyDefinitionEClass, PropertyDefinition.class, "PropertyDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPropertyDefinition_InitialValue(), theExpressionsPackage.getExpression(), null, "initialValue", null, 0, 1, PropertyDefinition.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(parameterTypesEEnum, ParameterTypes.class, "ParameterTypes");
+		addEEnumLiteral(parameterTypesEEnum, ParameterTypes.STRING);
+		addEEnumLiteral(parameterTypesEEnum, ParameterTypes.FLOAT);
+		addEEnumLiteral(parameterTypesEEnum, ParameterTypes.BOOLEAN);
+		addEEnumLiteral(parameterTypesEEnum, ParameterTypes.INTEGER);
+
+		// Create resource
+		createResource(eNS_URI);
 	}
 
 } //SGenPackageImpl

+ 0 - 164
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/StringLiteralImpl.java

@@ -1,164 +0,0 @@
-/** 
- * Copyright (c) 2015 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.model.sgen.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.model.sgen.SGenPackage;
-import org.yakindu.sct.model.sgen.StringLiteral;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>String Literal</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.sct.model.sgen.impl.StringLiteralImpl#getValue <em>Value</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class StringLiteralImpl extends LiteralImpl implements StringLiteral {
-	/**
-	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String 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 String value = VALUE_EDEFAULT;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected StringLiteralImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SGenPackage.Literals.STRING_LITERAL;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getValue() {
-		return value;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setValue(String newValue) {
-		String oldValue = value;
-		value = newValue;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SGenPackage.STRING_LITERAL__VALUE, oldValue, value));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case SGenPackage.STRING_LITERAL__VALUE:
-				return getValue();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case SGenPackage.STRING_LITERAL__VALUE:
-				setValue((String)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case SGenPackage.STRING_LITERAL__VALUE:
-				setValue(VALUE_EDEFAULT);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case SGenPackage.STRING_LITERAL__VALUE:
-				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated NOT
-	 */
-	@Override
-	public String toString() {
-		return String.valueOf(getValue());
-	}
-
-} //StringLiteralImpl

+ 0 - 94
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/impl/sgen.ecore

@@ -1,94 +0,0 @@
-<?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="sgen" nsURI="http://www.yakindu.org/sct/statechart/SGen" nsPrefix="sgen">
-  <eClassifiers xsi:type="ecore:EClass" name="GeneratorModel">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
-        eType="#//GeneratorEntry" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="generatorId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="GeneratorConfiguration">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="configurations" upperBound="-1"
-        eType="#//FeatureConfiguration" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureType" eSuperTypes="http://www.yakindu.org/base/base/2.0.0#//NamedElement #//DeprecatableElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
-        eType="#//FeatureParameter" containment="true" eOpposite="#//FeatureParameter/featureType"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="library" lowerBound="1"
-        eType="#//FeatureTypeLibrary" changeable="false" volatile="true" transient="true"
-        derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="false"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureParameter" eSuperTypes="http://www.yakindu.org/base/base/2.0.0#//NamedElement #//DeprecatableElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="featureType" eType="#//FeatureType"
-        eOpposite="#//FeatureType/parameters"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="false"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterType" eType="#//ParameterTypes"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureConfiguration">
-    <eOperations name="getParameterValue" eType="#//FeatureParameterValue">
-      <eParameters name="parameterName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//FeatureType"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="parameterValues" upperBound="-1"
-        eType="#//FeatureParameterValue" containment="true" eOpposite="#//FeatureParameterValue/featureConfiguration"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="GeneratorEntry">
-    <eOperations name="getFeatureConfiguration" eType="#//FeatureConfiguration">
-      <eParameters name="featureName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eOperations>
-    <eOperations name="getFeatureParameterValue" eType="#//FeatureParameterValue">
-      <eParameters name="featureName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eParameters name="paramName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="elementRef" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1"
-        eType="#//FeatureConfiguration" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="contentType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureParameterValue">
-    <eOperations name="setValue">
-      <eParameters name="string" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    </eOperations>
-    <eOperations name="setValue">
-      <eParameters name="boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    </eOperations>
-    <eOperations name="getStringValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eOperations name="getBooleanValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" eType="#//FeatureParameter"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="featureConfiguration" eType="#//FeatureConfiguration"
-        changeable="false" eOpposite="#//FeatureConfiguration/parameterValues"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//Literal"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FeatureTypeLibrary">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
-        eType="#//FeatureType" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="ParameterTypes">
-    <eLiterals name="STRING" value="1"/>
-    <eLiterals name="FLOAT" value="2" literal="FLOAT"/>
-    <eLiterals name="BOOLEAN"/>
-    <eLiterals name="INTEGER" value="3"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Literal" abstract="true"/>
-  <eClassifiers xsi:type="ecore:EClass" name="BoolLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="IntLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="RealLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Literal">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DeprecatableElement">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="deprecated" lowerBound="1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-</ecore:EPackage>

+ 58 - 35
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/util/SGenAdapterFactory.java

@@ -15,6 +15,11 @@ 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.base.types.AnnotatableElement;
+import org.yakindu.base.types.Declaration;
+import org.yakindu.base.types.PackageMember;
+import org.yakindu.base.types.Property;
+import org.yakindu.base.types.TypedElement;
 import org.yakindu.sct.model.sgen.*;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameter;
@@ -115,32 +120,36 @@ public class SGenAdapterFactory extends AdapterFactoryImpl {
 				return createFeatureTypeLibraryAdapter();
 			}
 			@Override
-			public Adapter caseLiteral(Literal object) {
-				return createLiteralAdapter();
+			public Adapter caseDeprecatableElement(DeprecatableElement object) {
+				return createDeprecatableElementAdapter();
 			}
 			@Override
-			public Adapter caseBoolLiteral(BoolLiteral object) {
-				return createBoolLiteralAdapter();
+			public Adapter casePropertyDefinition(PropertyDefinition object) {
+				return createPropertyDefinitionAdapter();
 			}
 			@Override
-			public Adapter caseIntLiteral(IntLiteral object) {
-				return createIntLiteralAdapter();
+			public Adapter caseNamedElement(NamedElement object) {
+				return createNamedElementAdapter();
 			}
 			@Override
-			public Adapter caseRealLiteral(RealLiteral object) {
-				return createRealLiteralAdapter();
+			public Adapter caseTypedElement(TypedElement object) {
+				return createTypedElementAdapter();
 			}
 			@Override
-			public Adapter caseStringLiteral(StringLiteral object) {
-				return createStringLiteralAdapter();
+			public Adapter caseAnnotatableElement(AnnotatableElement object) {
+				return createAnnotatableElementAdapter();
 			}
 			@Override
-			public Adapter caseDeprecatableElement(DeprecatableElement object) {
-				return createDeprecatableElementAdapter();
+			public Adapter casePackageMember(PackageMember object) {
+				return createPackageMemberAdapter();
 			}
 			@Override
-			public Adapter caseNamedElement(NamedElement object) {
-				return createNamedElementAdapter();
+			public Adapter caseDeclaration(Declaration object) {
+				return createDeclarationAdapter();
+			}
+			@Override
+			public Adapter caseProperty(Property object) {
+				return createPropertyAdapter();
 			}
 			@Override
 			public Adapter defaultCase(EObject object) {
@@ -275,100 +284,114 @@ public class SGenAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.Literal <em>Literal</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.DeprecatableElement <em>Deprecatable 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.sct.model.sgen.Literal
+	 * @see org.yakindu.sct.model.sgen.DeprecatableElement
 	 * @generated
 	 */
-	public Adapter createLiteralAdapter() {
+	public Adapter createDeprecatableElementAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.BoolLiteral <em>Bool Literal</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.PropertyDefinition <em>Property Definition</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.model.sgen.BoolLiteral
+	 * @see org.yakindu.sct.model.sgen.PropertyDefinition
 	 * @generated
 	 */
-	public Adapter createBoolLiteralAdapter() {
+	public Adapter createPropertyDefinitionAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.IntLiteral <em>Int Literal</em>}'.
+	 * 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.sct.model.sgen.IntLiteral
+	 * @see org.yakindu.base.base.NamedElement
 	 * @generated
 	 */
-	public Adapter createIntLiteralAdapter() {
+	public Adapter createNamedElementAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.RealLiteral <em>Real Literal</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.TypedElement <em>Typed 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.sct.model.sgen.RealLiteral
+	 * @see org.yakindu.base.types.TypedElement
 	 * @generated
 	 */
-	public Adapter createRealLiteralAdapter() {
+	public Adapter createTypedElementAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.StringLiteral <em>String Literal</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.AnnotatableElement <em>Annotatable 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.sct.model.sgen.StringLiteral
+	 * @see org.yakindu.base.types.AnnotatableElement
 	 * @generated
 	 */
-	public Adapter createStringLiteralAdapter() {
+	public Adapter createAnnotatableElementAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgen.DeprecatableElement <em>Deprecatable Element</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.PackageMember <em>Package Member</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.model.sgen.DeprecatableElement
+	 * @see org.yakindu.base.types.PackageMember
 	 * @generated
 	 */
-	public Adapter createDeprecatableElementAdapter() {
+	public Adapter createPackageMemberAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.yakindu.base.base.NamedElement <em>Named Element</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.Declaration <em>Declaration</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
+	 * @see org.yakindu.base.types.Declaration
 	 * @generated
 	 */
-	public Adapter createNamedElementAdapter() {
+	public Adapter createDeclarationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.Property <em>Property</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.types.Property
+	 * @generated
+	 */
+	public Adapter createPropertyAdapter() {
 		return null;
 	}
 

+ 53 - 55
plugins/org.yakindu.sct.model.sgen/src/org/yakindu/sct/model/sgen/util/SGenSwitch.java

@@ -14,6 +14,11 @@ 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.base.types.AnnotatableElement;
+import org.yakindu.base.types.Declaration;
+import org.yakindu.base.types.PackageMember;
+import org.yakindu.base.types.Property;
+import org.yakindu.base.types.TypedElement;
 import org.yakindu.sct.model.sgen.*;
 import org.yakindu.sct.model.sgen.FeatureConfiguration;
 import org.yakindu.sct.model.sgen.FeatureParameter;
@@ -134,46 +139,24 @@ public class SGenSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SGenPackage.LITERAL: {
-				Literal literal = (Literal)theEObject;
-				T result = caseLiteral(literal);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case SGenPackage.BOOL_LITERAL: {
-				BoolLiteral boolLiteral = (BoolLiteral)theEObject;
-				T result = caseBoolLiteral(boolLiteral);
-				if (result == null) result = caseLiteral(boolLiteral);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case SGenPackage.INT_LITERAL: {
-				IntLiteral intLiteral = (IntLiteral)theEObject;
-				T result = caseIntLiteral(intLiteral);
-				if (result == null) result = caseLiteral(intLiteral);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case SGenPackage.REAL_LITERAL: {
-				RealLiteral realLiteral = (RealLiteral)theEObject;
-				T result = caseRealLiteral(realLiteral);
-				if (result == null) result = caseLiteral(realLiteral);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case SGenPackage.STRING_LITERAL: {
-				StringLiteral stringLiteral = (StringLiteral)theEObject;
-				T result = caseStringLiteral(stringLiteral);
-				if (result == null) result = caseLiteral(stringLiteral);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			case SGenPackage.DEPRECATABLE_ELEMENT: {
 				DeprecatableElement deprecatableElement = (DeprecatableElement)theEObject;
 				T result = caseDeprecatableElement(deprecatableElement);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SGenPackage.PROPERTY_DEFINITION: {
+				PropertyDefinition propertyDefinition = (PropertyDefinition)theEObject;
+				T result = casePropertyDefinition(propertyDefinition);
+				if (result == null) result = caseProperty(propertyDefinition);
+				if (result == null) result = caseDeclaration(propertyDefinition);
+				if (result == null) result = caseTypedElement(propertyDefinition);
+				if (result == null) result = casePackageMember(propertyDefinition);
+				if (result == null) result = caseNamedElement(propertyDefinition);
+				if (result == null) result = caseAnnotatableElement(propertyDefinition);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -299,107 +282,122 @@ public class SGenSwitch<T> extends Switch<T> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Literal</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Deprecatable 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>Deprecatable Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDeprecatableElement(DeprecatableElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Definition</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>Literal</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Property Definition</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseLiteral(Literal object) {
+	public T casePropertyDefinition(PropertyDefinition object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Bool Literal</em>'.
+	 * 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>Bool Literal</em>'.
+	 * @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 caseBoolLiteral(BoolLiteral object) {
+	public T caseNamedElement(NamedElement object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Int Literal</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Typed 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>Int Literal</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Typed Element</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseIntLiteral(IntLiteral object) {
+	public T caseTypedElement(TypedElement object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Real Literal</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Annotatable 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>Real Literal</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Annotatable Element</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseRealLiteral(RealLiteral object) {
+	public T caseAnnotatableElement(AnnotatableElement object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>String Literal</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Package Member</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>String Literal</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Package Member</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseStringLiteral(StringLiteral object) {
+	public T casePackageMember(PackageMember object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Deprecatable Element</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Declaration</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>Deprecatable Element</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Declaration</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseDeprecatableElement(DeprecatableElement object) {
+	public T caseDeclaration(Declaration object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Property</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>'.
+	 * @return the result of interpreting the object as an instance of '<em>Property</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseNamedElement(NamedElement object) {
+	public T caseProperty(Property object) {
 		return null;
 	}
 

+ 7 - 0
plugins/org.yakindu.sct.model.sruntime/.classpath

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 3 - 0
plugins/org.yakindu.sct.model.sruntime/.gitignore

@@ -0,0 +1,3 @@
+/bin/
+/target/
+/xtend-gen/

+ 28 - 0
plugins/org.yakindu.sct.model.sruntime/.project

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.yakindu.sct.model.sruntime</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 7 - 0
plugins/org.yakindu.sct.model.sruntime/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8

+ 17 - 0
plugins/org.yakindu.sct.model.sruntime/META-INF/MANIFEST.MF

@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.yakindu.sct.model.sruntime;singleton:=true
+Bundle-Version: 3.0.1.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.yakindu.sct.model.sruntime,
+ org.yakindu.sct.model.sruntime.impl,
+ org.yakindu.sct.model.sruntime.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.yakindu.base.types;visibility:=reexport,
+ com.google.guava
+Bundle-ActivationPolicy: lazy

+ 17 - 0
plugins/org.yakindu.sct.model.sruntime/build.properties

@@ -0,0 +1,17 @@
+# 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
+# 
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/

+ 1 - 2
plugins/org.yakindu.sct.simulation.core/model/sruntime.ecore

@@ -10,7 +10,6 @@
     <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"/>
     <eOperations name="getAllEvents" upperBound="-1" eType="#//ExecutionEvent"/>
     <eOperations name="getAllVariables" upperBound="-1" eType="#//ExecutionVariable"/>
     <eOperations name="getAllSlots" upperBound="-1" eType="#//ExecutionSlot"/>
@@ -18,7 +17,7 @@
       <eParameters name="qualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="activeStates" upperBound="-1"
-        eType="ecore:EClass ../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//RegularState"/>
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
     <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="suspendedElements" upperBound="-1"

+ 5 - 7
plugins/org.yakindu.sct.simulation.core/model/sruntime.genmodel

@@ -1,13 +1,13 @@
 <?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"
+    modelDirectory="/org.yakindu.sct.model.sruntime/src" modelPluginID="org.yakindu.sct.model.sruntime"
     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 ../../org.yakindu.base.types/model/types.genmodel#//types"
+    suppressEMFTypes="true" importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0"
+    copyrightFields="false" publicConstructors="true" usedGenPackages="../../org.yakindu.base.types/model/base.genmodel#//base ../../org.yakindu.base.types/model/types.genmodel#//types"
     interfaceNamePattern="" importOrganizing="true">
   <foreignModel>sruntime.ecore</foreignModel>
-  <genPackages prefix="SRuntime" basePackage="org.yakindu.sct.simulation.core" disposableProviderFactory="true"
+  <genPackages prefix="SRuntime" basePackage="org.yakindu.sct.model" disposableProviderFactory="true"
       ecorePackage="sruntime.ecore#/">
     <genEnums typeSafeEnumCompatible="false" ecoreEnum="sruntime.ecore#//EventDirection">
       <genEnumLiterals ecoreEnumLiteral="sruntime.ecore#//EventDirection/LOCAL"/>
@@ -21,14 +21,12 @@
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sruntime.ecore#//ExecutionContext/suspendedElements"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sruntime.ecore#//ExecutionContext/snapshot"/>
       <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"/>
       <genOperations ecoreOperation="sruntime.ecore#//ExecutionContext/getAllEvents"/>
       <genOperations ecoreOperation="sruntime.ecore#//ExecutionContext/getAllVariables"/>
       <genOperations ecoreOperation="sruntime.ecore#//ExecutionContext/getAllSlots"/>
@@ -38,7 +36,6 @@
     </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">
@@ -54,5 +51,6 @@
     <genClasses ecoreClass="sruntime.ecore#//ReferenceSlot">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sruntime.ecore#//ReferenceSlot/reference"/>
     </genClasses>
+    <genClasses ecoreClass="sruntime.ecore#//ExecutionOperation"/>
   </genPackages>
 </genmodel:GenModel>

+ 11 - 0
plugins/org.yakindu.sct.model.sruntime/plugin.properties

@@ -0,0 +1,11 @@
+# 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
+# 
+
+pluginName = Sruntime Model
+providerName = www.example.org

+ 25 - 0
plugins/org.yakindu.sct.model.sruntime/plugin.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.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
+ 
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated sruntime -->
+      <package
+            uri="http://www.yakindu.org/sct/sruntime/2.0.0"
+            class="org.yakindu.sct.model.sruntime.SRuntimePackage"
+            genModel="model/sruntime.genmodel"/>
+   </extension>
+
+</plugin>

+ 0 - 0
plugins/org.yakindu.sct.model.sruntime/pom.xml


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor