Commit df6f85e4 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ latest updates to the meta-model implementation (breaking changes, other...

+ latest updates to the meta-model implementation (breaking changes, other components still to be aligned)

* changed actualParameter to argument in TDReference and ActionReference
+ added conformsTo(name) operation
* changed SimpleDataType extension to [0..1] and adapted operations
+ added resolveDataType to PredefinedFunctionCall, DataElementUse
* renamed operation extending to isExtending
* changed Constraint.quantifier to DataUse
+ updated GenModel
parent cebc63cb
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -42,7 +42,13 @@
      eSuperTypes="#//NamedElement">
    <eOperations name="conformsTo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (self.oclIsKindOf(AnnotationType)) then&#xA;&#x9;&#x9;&#x9;&#x9;self.oclAsType(AnnotationType).extension.extending(e)&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(ComponentType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(ComponentType).extension.extending(e)&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(GateType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(GateType).extension.extending(e)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(StructuredDataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(StructuredDataType).extension->exists(ex | ex.extending(e))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(SimpleDataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(SimpleDataType).extension->exists(ex | ex.extending(e))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;"/>
        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;self.conformsTo(PackageableElement.allInstances()->select(e|e.name = n)->asOrderedSet()->first())&#xA;&#x9;&#x9;&#x9;"/>
      </eAnnotations>
      <eParameters name="n" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eOperations>
    <eOperations name="conformsTo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (self.oclIsKindOf(AnnotationType)) then&#xA;&#x9;&#x9;&#x9;&#x9;self.oclAsType(AnnotationType).extension.isExtending(e)&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(ComponentType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(ComponentType).extension.isExtending(e)&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(GateType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(GateType).extension.isExtending(e)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(StructuredDataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(StructuredDataType).extension->exists(ex | ex.isExtending(e))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(SimpleDataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(SimpleDataType).extension->exists(ex | ex.isExtending(e))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;"/>
      </eAnnotations>
      <eParameters name="e" eType="#//PackageableElement"/>
    </eOperations>
@@ -111,12 +117,8 @@
        eType="#//DataType"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="SimpleDataType" eSuperTypes="#//DataType">
    <eStructuralFeatures xsi:type="ecore:EReference" name="extension" upperBound="-1"
        eType="#//Extension" containment="true">
      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
        <details key="nullFree" value="false"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="SimpleDataInstance" eSuperTypes="#//DataInstance"/>
  <eClassifiers xsi:type="ecore:EClass" name="StructuredDataType" eSuperTypes="#//DataType">
@@ -591,7 +593,7 @@
  <eClassifiers xsi:type="ecore:EClass" name="ActionReference" eSuperTypes="#//ActionBehaviour">
    <eStructuralFeatures xsi:type="ecore:EReference" name="action" lowerBound="1"
        eType="#//Action"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="actualParameter" upperBound="-1"
    <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
        eType="#//ParameterBinding" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="TestDescriptionReference" eSuperTypes="#//AtomicBehaviour">
@@ -607,7 +609,7 @@
        eType="#//TestDescription"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="componentInstanceBinding"
        ordered="false" upperBound="-1" eType="#//ComponentInstanceBinding" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="actualParameter" upperBound="-1"
    <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
        eType="#//ParameterBinding" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ComponentInstanceBinding" eSuperTypes="#//Element">
@@ -645,6 +647,11 @@
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PredefinedFunctionCall" eSuperTypes="#//DynamicDataUse">
    <eOperations name="resolveDataType" eType="#//DataType">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="self.function.returnType"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="function" lowerBound="1"
        eType="#//PredefinedFunction"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="actualParameters" upperBound="-1"
@@ -712,13 +719,13 @@
  <eClassifiers xsi:type="ecore:EClass" name="Extension" eSuperTypes="#//Element">
    <eOperations name="transitiveExtending" upperBound="-1" eType="#//Extension">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(AnnotationType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { self.extending.oclAsType(AnnotationType).extension }&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(ComponentType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { self.extending.oclAsType(ComponentType).extension }&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(GateType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { self.extending.oclAsType(GateType).extension }&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(StructuredDataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.extending.oclAsType(StructuredDataType).extension&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(SimpleDataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.extending.oclAsType(SimpleDataType).extension&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { }&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(AnnotationType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { self.extending.oclAsType(AnnotationType).extension }&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(ComponentType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { self.extending.oclAsType(ComponentType).extension }&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(GateType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { self.extending.oclAsType(GateType).extension }&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(StructuredDataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.extending.oclAsType(StructuredDataType).extension&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(SimpleDataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { self.extending.oclAsType(SimpleDataType).extension }&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet { }&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
        <details key="nullFree" value="false"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="extending" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
    <eOperations name="isExtending" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;if (self.extending = e) then&#xA;&#x9;&#x9;&#x9;&#x9;    true&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self->closure(transitiveExtending())->includes(e)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;true&#xA;&#x9;            &#x9;else&#xA;&#x9;            &#x9;&#x9;false&#xA;&#x9;            &#x9;endif &#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
      </eAnnotations>
@@ -742,7 +749,7 @@
  <eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//ConstraintType"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="quantifier" upperBound="-1"
        eType="#//LiteralValueUse" containment="true">
        eType="#//DataUse" containment="true">
      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
        <details key="nullFree" value="false"/>
      </eAnnotations>
@@ -753,6 +760,11 @@
        eType="#//SimpleDataInstance" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DataElementUse" eSuperTypes="#//DataUse">
    <eOperations name="resolveDataType" eType="#//DataType">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;if (not self.dataElement.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.dataElement.oclIsTypeOf(DataType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.dataElement.oclAsType(DataType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.dataElement.oclIsTypeOf(DataInstance)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.dataElement.oclAsType(DataInstance).dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.dataElement.oclIsTypeOf(FormalParameter)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.dataElement.oclAsType(FormalParameter).dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.dataElement.oclIsTypeOf(Function)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.dataElement.oclAsType(Function).returnType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;null&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.container().oclIsTypeOf(MemberAssignment)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.container().oclAsType(MemberAssignment).member.dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.container().oclIsTypeOf(ParameterBinding)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.container().oclAsType(ParameterBinding).parameter.dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;null&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="unassignedMember" eType="#//UnassignedMemberTreatment"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dataElement" eType="#//NamedElement"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="item" upperBound="-1" eType="#//DataUse"
+11 −6
Original line number Diff line number Diff line
@@ -174,7 +174,10 @@
    </genClasses>
    <genClasses image="false" ecoreClass="tdl.ecore#//PackageableElement">
      <genOperations ecoreOperation="tdl.ecore#//PackageableElement/conformsTo">
        <genParameters ecoreParameter="tdl.ecore#//PackageableElement/conformsTo/e"/>
        <genParameters ecoreParameter="tdl.ecore#//PackageableElement/conformsTo/n"/>
      </genOperations>
      <genOperations ecoreOperation="tdl.ecore#//PackageableElement/conformsTo.1">
        <genParameters ecoreParameter="tdl.ecore#//PackageableElement/conformsTo.1/e"/>
      </genOperations>
    </genClasses>
    <genClasses image="false" ecoreClass="tdl.ecore#//NamedElement">
@@ -440,12 +443,12 @@
    </genClasses>
    <genClasses ecoreClass="tdl.ecore#//ActionReference">
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//ActionReference/action"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//ActionReference/actualParameter"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//ActionReference/argument"/>
    </genClasses>
    <genClasses ecoreClass="tdl.ecore#//TestDescriptionReference">
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//TestDescriptionReference/testDescription"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//TestDescriptionReference/componentInstanceBinding"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//TestDescriptionReference/actualParameter"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//TestDescriptionReference/argument"/>
      <genOperations ecoreOperation="tdl.ecore#//TestDescriptionReference/getParticipatingComponents"/>
    </genClasses>
    <genClasses ecoreClass="tdl.ecore#//ComponentInstanceBinding">
@@ -471,6 +474,7 @@
    <genClasses ecoreClass="tdl.ecore#//PredefinedFunctionCall">
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//PredefinedFunctionCall/function"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//PredefinedFunctionCall/actualParameters"/>
      <genOperations ecoreOperation="tdl.ecore#//PredefinedFunctionCall/resolveDataType"/>
    </genClasses>
    <genClasses ecoreClass="tdl.ecore#//LocalExpression">
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//LocalExpression/expression"/>
@@ -499,10 +503,10 @@
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute tdl.ecore#//CollectionDataInstance/unassignedMember"/>
    </genClasses>
    <genClasses ecoreClass="tdl.ecore#//Extension">
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//Extension/extending.1"/>
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//Extension/extending"/>
      <genOperations ecoreOperation="tdl.ecore#//Extension/transitiveExtending"/>
      <genOperations ecoreOperation="tdl.ecore#//Extension/extending">
        <genParameters ecoreParameter="tdl.ecore#//Extension/extending/e"/>
      <genOperations ecoreOperation="tdl.ecore#//Extension/isExtending">
        <genParameters ecoreParameter="tdl.ecore#//Extension/isExtending/e"/>
      </genOperations>
    </genClasses>
    <genClasses ecoreClass="tdl.ecore#//LiteralValueUse">
@@ -524,6 +528,7 @@
      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute tdl.ecore#//DataElementUse/unassignedMember"/>
      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference tdl.ecore#//DataElementUse/dataElement"/>
      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference tdl.ecore#//DataElementUse/item"/>
      <genOperations ecoreOperation="tdl.ecore#//DataElementUse/resolveDataType"/>
    </genClasses>
  </genPackages>
</genmodel:GenModel>