Przeglądaj źródła

Merge pull request #489 from Yakindu/issue_488

Issue 488
Axel Terfloth 9 lat temu
rodzic
commit
9f6260456e

+ 1 - 1
plugins/org.yakindu.base.types/model/types.ecore

@@ -58,7 +58,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="superTypes" upperBound="-1"
         eType="#//ComplexType"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Enumerator" eSuperTypes="base.ecore#//NamedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Enumerator" eSuperTypes="#//Declaration">
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningEnumeration" eType="#//EnumerationType"
         eOpposite="#//EnumerationType/enumerator"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="literalValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Enumerator.java

@@ -21,7 +21,7 @@ import org.yakindu.base.base.NamedElement;
  * @model
  * @generated
  */
-public interface Enumerator extends NamedElement {
+public interface Enumerator extends Declaration {
 
 	/**
 	 * Returns the value of the '<em><b>Owning Enumeration</b></em>' container reference.

+ 22 - 4
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java

@@ -815,6 +815,24 @@ public interface TypesPackage extends EPackage {
 	 */
 	int ENUMERATOR = 11;
 
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENUMERATOR__TYPE = DECLARATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Type Arguments</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENUMERATOR__TYPE_ARGUMENTS = DECLARATION__TYPE_ARGUMENTS;
+
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -822,7 +840,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ENUMERATOR__NAME = BasePackage.NAMED_ELEMENT__NAME;
+	int ENUMERATOR__NAME = DECLARATION__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Owning Enumeration</b></em>' container reference.
@@ -831,7 +849,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ENUMERATOR__OWNING_ENUMERATION = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
+	int ENUMERATOR__OWNING_ENUMERATION = DECLARATION_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Literal Value</b></em>' attribute.
@@ -840,7 +858,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ENUMERATOR__LITERAL_VALUE = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+	int ENUMERATOR__LITERAL_VALUE = DECLARATION_FEATURE_COUNT + 1;
 
 	/**
 	 * The number of structural features of the '<em>Enumerator</em>' class.
@@ -849,7 +867,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int ENUMERATOR_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
+	int ENUMERATOR_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 2;
 
 
 	/**

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/EnumeratorImpl.java

@@ -27,7 +27,7 @@ import org.yakindu.base.types.TypesPackage;
  *
  * @generated
  */
-public class EnumeratorImpl extends NamedElementImpl implements Enumerator {
+public class EnumeratorImpl extends DeclarationImpl implements Enumerator {
 	/**
 	 * The default value of the '{@link #getLiteralValue() <em>Literal Value</em>}' attribute.
 	 * <!-- begin-user-doc -->

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java

@@ -767,7 +767,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		enumerationTypeEClass.getESuperTypes().add(this.getPrimitiveType());
 		primitiveTypeEClass.getESuperTypes().add(this.getType());
 		complexTypeEClass.getESuperTypes().add(this.getParameterizedType());
-		enumeratorEClass.getESuperTypes().add(theBasePackage.getNamedElement());
+		enumeratorEClass.getESuperTypes().add(this.getDeclaration());
 		typeParameterEClass.getESuperTypes().add(this.getType());
 		parameterizedTypeEClass.getESuperTypes().add(this.getType());
 		packageMemberEClass.getESuperTypes().add(theBasePackage.getNamedElement());

+ 3 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesSwitch.java

@@ -183,6 +183,9 @@ public class TypesSwitch<T> extends Switch<T> {
 			case TypesPackage.ENUMERATOR: {
 				Enumerator enumerator = (Enumerator)theEObject;
 				T result = caseEnumerator(enumerator);
+				if (result == null) result = caseDeclaration(enumerator);
+				if (result == null) result = caseTypedElement(enumerator);
+				if (result == null) result = casePackageMember(enumerator);
 				if (result == null) result = caseNamedElement(enumerator);
 				if (result == null) result = defaultCase(theEObject);
 				return result;

+ 3 - 0
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/ExpressionCode.xtend

@@ -50,6 +50,7 @@ import org.yakindu.sct.model.stext.stext.EventValueReferenceExpression
 import org.yakindu.sct.model.stext.stext.OperationDefinition
 import org.yakindu.sct.model.stext.stext.VariableDefinition
 import org.yakindu.base.types.Operation
+import org.yakindu.base.types.Enumerator
 
 class ExpressionCode {
 
@@ -92,6 +93,8 @@ class ExpressionCode {
 		code»«ENDFOR»)'''
 
 	def dispatch CharSequence code(FeatureCall it, org.yakindu.base.types.Property target) '''«it.owner.code».«target.access»'''
+	
+	def dispatch CharSequence code(FeatureCall it, Enumerator target) '''«target.access»'''
 
 	/* HANDLING LITERALS */
 	def dispatch CharSequence code(Literal it) '''#error unknown literal type «getClass().name» '''

+ 7 - 1
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/Naming.xtend

@@ -13,7 +13,9 @@ package org.yakindu.sct.generator.c
 import com.google.inject.Inject
 import java.util.List
 import org.eclipse.emf.ecore.EObject
+import org.yakindu.base.types.Enumerator
 import org.yakindu.base.types.Event
+import org.yakindu.base.types.Operation
 import org.yakindu.sct.generator.core.types.ICodegenTypeSystemAccess
 import org.yakindu.sct.model.sexec.ExecutionFlow
 import org.yakindu.sct.model.sexec.Step
@@ -246,7 +248,11 @@ class Naming {
 		'''«name.asEscapedIdentifier»'''
 	}
 
-	def dispatch access(org.yakindu.base.types.Operation it) {
+	def dispatch access(Operation it) {
+		'''«name.asEscapedIdentifier»'''
+	}
+	
+	def dispatch access(Enumerator it) {
 		'''«name.asEscapedIdentifier»'''
 	}