Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore131
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel37
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl11
-rw-r--r--plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore62
-rw-r--r--plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.genmodel40
-rw-r--r--plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext30
6 files changed, 236 insertions, 75 deletions
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore
index 7959d4ab3..374b32b52 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore
@@ -28,6 +28,23 @@
<details key="documentation" value="A ConnectionVariable accumulates one or more assignments."/>
</eAnnotations>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AppendParameterBinding" eSuperTypes="#//MappingParameterBinding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A MappingCallBinding specifies the binding of a single variable as part of&#xA;a MappingCall. A value is bound to the variable. OPtionally isLoop may be true&#xA;to indicate that the value is a collection of values, each of which is to&#xA;be used as part of a distinct invocation."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//ConnectionVariable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value or collection of values to bind to boundVariable"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BufferStatement" eSuperTypes="#//ConnectionVariable #//VariableStatement #//ObservableStatement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A ConnectionVariable accumulates one or more assignments."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedExpression" eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//OCLExpression"
+ containment="true"/>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CheckStatement" eSuperTypes="#//ObservableStatement">
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedExpression" lowerBound="1"
eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//OCLExpression"
@@ -40,7 +57,7 @@
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeclareStatement" eSuperTypes="#//VariableStatement #//ObservableStatement">
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="isChecked" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheck" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Whether the variable initialization needs to be checked as a predicate. This is a derivation of not ownedInit.type.conformsTo(self.type)."/>
@@ -57,6 +74,22 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="referredTypedModel" lowerBound="1"
eType="#//ImperativeTypedModel"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GuardParameterBinding" eSuperTypes="#//MappingParameterBinding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A MappingCallBinding specifies the binding of a single variable as part of&#xA;a MappingCall. A value is bound to the variable. OPtionally isLoop may be true&#xA;to indicate that the value is a collection of values, each of which is to&#xA;be used as part of a distinct invocation."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//ConnectionVariable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value or collection of values to bind to boundVariable"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheck" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the variable initialization needs to be checked as a predicate. This is a derivation of not ownedInit.type.conformsTo(self.type)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ImperativeModel" eSuperTypes="../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore#//BaseModel">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Model of an Imperative QVT transformation."/>
@@ -71,6 +104,22 @@
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isEnforced" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="false"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LoopParameterBinding" eSuperTypes="#//MappingParameterBinding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A MappingCallBinding specifies the binding of a single variable as part of&#xA;a MappingCall. A value is bound to the variable. OPtionally isLoop may be true&#xA;to indicate that the value is a collection of values, each of which is to&#xA;be used as part of a distinct invocation."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//LoopVariable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value or collection of values to bind to boundVariable"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheck" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the variable initialization needs to be checked as a predicate. This is a derivation of not ownedInit.type.conformsTo(self.type)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LoopVariable" eSuperTypes="../../org.eclipse.ocl.pivot/model/Pivot.ecore#//VariableDeclaration">
<eStructuralFeatures xsi:type="ecore:EReference" name="owningMappingLoop" lowerBound="1"
eType="#//MappingLoop" eOpposite="#//MappingLoop/ownedIterators"/>
@@ -89,7 +138,7 @@
<details key="documentation" value="A MappingCall specifies the invocation of a referredMapping with a set of bindings&#xA;of the bound variables of the referredMapping to values provided in the invocation.&#xA;Where Collections of values are provided for isLoop bindings, a distinct invocation&#xA;is performed for each distinct permutation of Collection elements."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="binding" upperBound="-1"
- eType="#//MappingCallBinding" containment="true" eOpposite="#//MappingCallBinding/mappingCall">
+ eType="#//MappingParameterBinding" containment="true" eOpposite="#//MappingParameterBinding/mappingCall">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Set of value to bound variable bindings."/>
</eAnnotations>
@@ -100,33 +149,22 @@
<details key="documentation" value="An infinite MappingCall requires re-invocation of the called mapping to be suppressed to avoid an infinite loop."/>
</eAnnotations>
</eStructuralFeatures>
- <eStructuralFeatures xsi:type="ecore:EReference" name="referredMapping" lowerBound="1"
- eType="#//Mapping">
- <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
- <details key="documentation" value="The Mapping invoked by the MappingCall."/>
- </eAnnotations>
- </eStructuralFeatures>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="MappingCallBinding" eSuperTypes="../../org.eclipse.ocl.pivot/model/Pivot.ecore#//Element">
- <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
- <details key="documentation" value="A MappingCallBinding specifies the binding of a single variable as part of&#xA;a MappingCall. A value is bound to the variable. OPtionally isLoop may be true&#xA;to indicate that the value is a collection of values, each of which is to&#xA;be used as part of a distinct invocation."/>
- </eAnnotations>
- <eStructuralFeatures xsi:type="ecore:EReference" name="boundVariable" lowerBound="1"
- eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//VariableDeclaration">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isInstall" eType="ecore:EDataType ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//Boolean"
+ defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
- <details key="documentation" value="The variable with the mappingCall.referredMapping bound to the/a value"/>
+ <details key="documentation" value="An infinite MappingCall requires re-invocation of the called mapping to be suppressed to avoid an infinite loop."/>
</eAnnotations>
</eStructuralFeatures>
- <eStructuralFeatures xsi:type="ecore:EReference" name="mappingCall" eType="#//MappingCall"
- eOpposite="#//MappingCall/binding">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isInvoke" eType="ecore:EDataType ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//Boolean"
+ defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
- <details key="documentation" value="The containing MappingCall."/>
+ <details key="documentation" value="An infinite MappingCall requires re-invocation of the called mapping to be suppressed to avoid an infinite loop."/>
</eAnnotations>
</eStructuralFeatures>
- <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//OCLExpression"
- containment="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredMapping" lowerBound="1"
+ eType="#//Mapping">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
- <details key="documentation" value="The value or collection of values to bind to boundVariable"/>
+ <details key="documentation" value="The Mapping invoked by the MappingCall."/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
@@ -147,6 +185,24 @@
<details key="documentation" value="A ConnectionVariable accumulates one or more assignments."/>
</eAnnotations>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MappingParameterBinding" abstract="true"
+ eSuperTypes="../../org.eclipse.ocl.pivot/model/Pivot.ecore#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A MappingCallBinding specifies the binding of a single variable as part of&#xA;a MappingCall. A value is bound to the variable. OPtionally isLoop may be true&#xA;to indicate that the value is a collection of values, each of which is to&#xA;be used as part of a distinct invocation."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mappingCall" eType="#//MappingCall"
+ eOpposite="#//MappingCall/binding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The containing MappingCall."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="boundVariable" lowerBound="1"
+ eType="#//MappingParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The variable with the mappingCall.referredMapping bound to the/a value"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MappingStatement" abstract="true" eSuperTypes="#//Statement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A MappingCall specifies the invocation of a referredMapping with a set of bindings&#xA;of the bound variables of the referredMapping to values provided in the invocation.&#xA;Where Collections of values are provided for isLoop bindings, a distinct invocation&#xA;is performed for each distinct permutation of Collection elements."/>
@@ -167,13 +223,6 @@
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="OutConnectionVariable" eSuperTypes="#//ConnectionVariable #//VariableStatement #//ObservableStatement">
- <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
- <details key="documentation" value="A ConnectionVariable accumulates one or more assignments."/>
- </eAnnotations>
- <eStructuralFeatures xsi:type="ecore:EReference" name="ownedExpression" eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//OCLExpression"
- containment="true"/>
- </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SetStatement" eSuperTypes="#//ObservableStatement">
<eStructuralFeatures xsi:type="ecore:EReference" name="targetVariable" lowerBound="1"
eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//VariableDeclaration">
@@ -193,6 +242,30 @@
eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//OCLExpression"
containment="true"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleParameter" eSuperTypes="#//MappingParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A ConnectionVariable accumulates one or more assignments."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredTypedModel" lowerBound="1"
+ eType="#//ImperativeTypedModel"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleParameterBinding" eSuperTypes="#//MappingParameterBinding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A MappingCallBinding specifies the binding of a single variable as part of&#xA;a MappingCall. A value is bound to the variable. OPtionally isLoop may be true&#xA;to indicate that the value is a collection of values, each of which is to&#xA;be used as part of a distinct invocation."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//OCLExpression"
+ containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value or collection of values to bind to boundVariable"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheck" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the variable initialization needs to be checked as a predicate. This is a derivation of not ownedInit.type.conformsTo(self.type)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Statement" abstract="true" eSuperTypes="../../org.eclipse.ocl.pivot/model/Pivot.ecore#//NamedElement"/>
<eClassifiers xsi:type="ecore:EClass" name="VariableStatement" abstract="true" eSuperTypes="../../org.eclipse.ocl.pivot/model/Pivot.ecore#//VariableDeclaration #//Statement"/>
</ecore:EPackage>
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel
index dc4f92475..563c52175 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel
@@ -24,22 +24,36 @@
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//AddStatement/ownedExpression"/>
</genClasses>
<genClasses ecoreClass="QVTimperative.ecore#//AppendParameter"/>
+ <genClasses ecoreClass="QVTimperative.ecore#//AppendParameterBinding">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//AppendParameterBinding/value"/>
+ </genClasses>
+ <genClasses ecoreClass="QVTimperative.ecore#//BufferStatement">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//BufferStatement/ownedExpression"/>
+ </genClasses>
<genClasses ecoreClass="QVTimperative.ecore#//CheckStatement">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//CheckStatement/ownedExpression"/>
</genClasses>
<genClasses ecoreClass="QVTimperative.ecore#//ConnectionVariable"/>
<genClasses ecoreClass="QVTimperative.ecore#//DeclareStatement">
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//DeclareStatement/isChecked"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//DeclareStatement/isCheck"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//DeclareStatement/ownedExpression"/>
</genClasses>
<genClasses ecoreClass="QVTimperative.ecore#//GuardParameter">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//GuardParameter/referredTypedModel"/>
</genClasses>
+ <genClasses ecoreClass="QVTimperative.ecore#//GuardParameterBinding">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//GuardParameterBinding/value"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//GuardParameterBinding/isCheck"/>
+ </genClasses>
<genClasses ecoreClass="QVTimperative.ecore#//ImperativeModel"/>
<genClasses ecoreClass="QVTimperative.ecore#//ImperativeTypedModel">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//ImperativeTypedModel/isChecked"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//ImperativeTypedModel/isEnforced"/>
</genClasses>
+ <genClasses ecoreClass="QVTimperative.ecore#//LoopParameterBinding">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//LoopParameterBinding/value"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//LoopParameterBinding/isCheck"/>
+ </genClasses>
<genClasses ecoreClass="QVTimperative.ecore#//LoopVariable">
<genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTimperative.ecore#//LoopVariable/owningMappingLoop"/>
</genClasses>
@@ -50,19 +64,20 @@
<genClasses ecoreClass="QVTimperative.ecore#//MappingCall">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingCall/binding"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//MappingCall/isInfinite"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//MappingCall/isInstall"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//MappingCall/isInvoke"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingCall/referredMapping"/>
</genClasses>
- <genClasses ecoreClass="QVTimperative.ecore#//MappingCallBinding">
- <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingCallBinding/boundVariable"/>
- <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingCallBinding/mappingCall"/>
- <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingCallBinding/value"/>
- </genClasses>
<genClasses ecoreClass="QVTimperative.ecore#//MappingLoop">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingLoop/ownedIterators"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingLoop/ownedMappingStatements"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingLoop/ownedExpression"/>
</genClasses>
<genClasses image="false" ecoreClass="QVTimperative.ecore#//MappingParameter"/>
+ <genClasses image="false" ecoreClass="QVTimperative.ecore#//MappingParameterBinding">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingParameterBinding/mappingCall"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//MappingParameterBinding/boundVariable"/>
+ </genClasses>
<genClasses image="false" ecoreClass="QVTimperative.ecore#//MappingStatement"/>
<genClasses ecoreClass="QVTimperative.ecore#//NewStatement">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//NewStatement/referredTypedModel"/>
@@ -71,9 +86,6 @@
<genClasses image="false" ecoreClass="QVTimperative.ecore#//ObservableStatement">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//ObservableStatement/observedProperties"/>
</genClasses>
- <genClasses ecoreClass="QVTimperative.ecore#//OutConnectionVariable">
- <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//OutConnectionVariable/ownedExpression"/>
- </genClasses>
<genClasses ecoreClass="QVTimperative.ecore#//SetStatement">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//SetStatement/targetVariable"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//SetStatement/targetProperty"/>
@@ -81,6 +93,13 @@
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//SetStatement/isNotify"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//SetStatement/ownedExpression"/>
</genClasses>
+ <genClasses ecoreClass="QVTimperative.ecore#//SimpleParameter">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//SimpleParameter/referredTypedModel"/>
+ </genClasses>
+ <genClasses ecoreClass="QVTimperative.ecore#//SimpleParameterBinding">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperative.ecore#//SimpleParameterBinding/value"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperative.ecore#//SimpleParameterBinding/isCheck"/>
+ </genClasses>
<genClasses image="false" ecoreClass="QVTimperative.ecore#//Statement"/>
<genClasses image="false" ecoreClass="QVTimperative.ecore#//VariableStatement"/>
</genPackages>
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl
index a614fc482..1035f50b8 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl
@@ -31,7 +31,7 @@ def: referringNames : Set(String) = binding.boundVariable.name->asSet()
inv MatchingCallBindings('Mismatched bindings ' + referredMapping.name + joinNames(referredNames) + ' <= ' + joinNames(referringNames)): referredNames = referringNames
inv UniqueCallBindings: binding->isUnique(boundVariable)
-context MappingCallBinding
+context GuardParameterBinding
inv CompatibleBinding: value.type.conformsTo(boundVariable.type) or boundVariable.type.conformsTo(value.type)
endpackage
@@ -65,8 +65,13 @@ inv NoRealizedVariableNavigations: ownedExpression->closure(oclContents())->sele
--inv IsEnforced: let area = oclContainer().oclAsType(GuardPattern).area, mapping = area.mapping in
-- if mapping.isToMiddle then area = mapping else area.oclAsType(CoreDomain).isEnforceable endif
---context PredicateVariable
---inv NoVariableAssignmentsInSourceDomain: not bottomPattern.area.isSource
+context GuardParameterBinding
+inv CheckedTypeIsNotConformant: isCheck implies not value.type.conformsTo(boundVariable.type)
+inv UncheckedTypeIsConformant: not isCheck implies value.type.conformsTo(boundVariable.type)
+
+context SimpleParameterBinding
+inv CheckedTypeIsNotConformant: isCheck implies not value.type.conformsTo(boundVariable.type)
+inv UncheckedTypeIsConformant: not isCheck implies value.type.conformsTo(boundVariable.type)
--inv CompatibleType: ownedInit.type.conformsTo(type)
endpackage
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore b/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore
index 010854d25..fd1f8c120 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore
+++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore
@@ -8,7 +8,16 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="targetVariable" lowerBound="1"
eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//ConnectionVariable"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AppendParameterBindingCS" eSuperTypes="#//MappingParameterBindingCS">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//ConnectionVariable"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredVariable" lowerBound="1"
+ eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//AppendParameter"/>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AppendParameterCS" eSuperTypes="#//MappingParameterCS"/>
+ <eClassifiers xsi:type="ecore:EClass" name="BufferStatementCS" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//TypedElementCS #//StatementCS">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedExpression" eType="ecore:EClass ../../org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.ecore#//ExpCS"
+ containment="true"/>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CheckStatementCS" eSuperTypes="#//StatementCS #//ObservableStatementCS">
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedCondition" lowerBound="1"
eType="ecore:EClass ../../org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.ecore#//ExpCS"
@@ -18,7 +27,7 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedExpression" lowerBound="1"
eType="ecore:EClass ../../org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.ecore#//ExpCS"
containment="true"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="isChecked" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheck" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DirectionCS" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//NamedElementCS">
@@ -27,10 +36,24 @@
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isChecked" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isEnforced" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GuardParameterBindingCS" eSuperTypes="#//MappingParameterBindingCS">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//ConnectionVariable"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredVariable" lowerBound="1"
+ eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//GuardParameter"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheck" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GuardParameterCS" eSuperTypes="#//MappingParameterCS">
<eStructuralFeatures xsi:type="ecore:EReference" name="referredTypedModel" lowerBound="1"
eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//ImperativeTypedModel"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LoopParameterBindingCS" eSuperTypes="#//MappingParameterBindingCS">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//LoopVariable"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredVariable" lowerBound="1"
+ eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//GuardParameter"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheck" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MappingCS" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//NamedElementCS">
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedInPathName" eType="ecore:EClass ../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//PathNameCS"
containment="true"/>
@@ -39,20 +62,15 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedStatements" upperBound="-1"
eType="#//StatementCS" containment="true"/>
</eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="MappingCallBindingCS" eSuperTypes="../../org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.ecore#//ExpCS">
- <eStructuralFeatures xsi:type="ecore:EReference" name="ownedValue" lowerBound="1"
- eType="ecore:EClass ../../org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.ecore#//ExpCS"
- containment="true"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="owningMappingCall" eType="#//MappingCallCS"
- eOpposite="#//MappingCallCS/ownedBindings"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="referredVariable" lowerBound="1"
- eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//VariableDeclaration"/>
- </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MappingCallCS" eSuperTypes="#//MappingStatementCS">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isInfinite" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isInstall" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isInvoke" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedBindings" ordered="false"
- upperBound="-1" eType="#//MappingCallBindingCS" containment="true" eOpposite="#//MappingCallBindingCS/owningMappingCall"/>
+ upperBound="-1" eType="#//MappingParameterBindingCS" containment="true" eOpposite="#//MappingParameterBindingCS/owningMappingCall"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedPathName" eType="ecore:EClass ../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//PathNameCS"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredMapping" eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//Mapping"
@@ -70,6 +88,11 @@
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MappingParameterCS" abstract="true"
eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//TypedElementCS"/>
+ <eClassifiers xsi:type="ecore:EClass" name="MappingParameterBindingCS" abstract="true"
+ eSuperTypes="../../org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.ecore#//ExpCS">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningMappingCall" eType="#//MappingCallCS"
+ eOpposite="#//MappingCallCS/ownedBindings"/>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MappingStatementCS" abstract="true"
eSuperTypes="#//StatementCS"/>
<eClassifiers xsi:type="ecore:EClass" name="NewStatementCS" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//TypedElementCS #//ObservableStatementCS">
@@ -88,10 +111,6 @@
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="OutVariableCS" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//TypedElementCS #//StatementCS">
- <eStructuralFeatures xsi:type="ecore:EReference" name="ownedExpression" eType="ecore:EClass ../../org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.ecore#//ExpCS"
- containment="true"/>
- </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ParamDeclarationCS" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//TypedElementCS"/>
<eClassifiers xsi:type="ecore:EClass" name="QueryCS" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//TypedElementCS">
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedPathName" eType="ecore:EClass ../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//PathNameCS"
@@ -116,6 +135,19 @@
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isNotify" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="false"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleParameterBindingCS" eSuperTypes="#//MappingParameterBindingCS">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedValue" lowerBound="1"
+ eType="ecore:EClass ../../org.eclipse.ocl.xtext.essentialocl/model/EssentialOCLCS.ecore#//ExpCS"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredVariable" lowerBound="1"
+ eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//SimpleParameter"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheck" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleParameterCS" eSuperTypes="#//MappingParameterCS">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredTypedModel" lowerBound="1"
+ eType="ecore:EClass ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#//ImperativeTypedModel"/>
+ </eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StatementCS" abstract="true" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//ModelElementCS"/>
<eClassifiers xsi:type="ecore:EClass" name="TopLevelCS" eSuperTypes="../../org.eclipse.ocl.xtext.base/model/BaseCS.ecore#//RootPackageCS">
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedMappings" upperBound="-1"
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.genmodel b/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.genmodel
index b693884fe..908efd834 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.genmodel
+++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.genmodel
@@ -19,34 +19,48 @@
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//AddStatementCS/ownedExpression"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//AddStatementCS/targetVariable"/>
</genClasses>
+ <genClasses ecoreClass="QVTimperativeCS.ecore#//AppendParameterBindingCS">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//AppendParameterBindingCS/value"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//AppendParameterBindingCS/referredVariable"/>
+ </genClasses>
<genClasses ecoreClass="QVTimperativeCS.ecore#//AppendParameterCS"/>
+ <genClasses ecoreClass="QVTimperativeCS.ecore#//BufferStatementCS">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//BufferStatementCS/ownedExpression"/>
+ </genClasses>
<genClasses ecoreClass="QVTimperativeCS.ecore#//CheckStatementCS">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//CheckStatementCS/ownedCondition"/>
</genClasses>
<genClasses ecoreClass="QVTimperativeCS.ecore#//DeclareStatementCS">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//DeclareStatementCS/ownedExpression"/>
- <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//DeclareStatementCS/isChecked"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//DeclareStatementCS/isCheck"/>
</genClasses>
<genClasses ecoreClass="QVTimperativeCS.ecore#//DirectionCS">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//DirectionCS/imports"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//DirectionCS/isChecked"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//DirectionCS/isEnforced"/>
</genClasses>
+ <genClasses ecoreClass="QVTimperativeCS.ecore#//GuardParameterBindingCS">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//GuardParameterBindingCS/value"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//GuardParameterBindingCS/referredVariable"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//GuardParameterBindingCS/isCheck"/>
+ </genClasses>
<genClasses ecoreClass="QVTimperativeCS.ecore#//GuardParameterCS">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//GuardParameterCS/referredTypedModel"/>
</genClasses>
+ <genClasses ecoreClass="QVTimperativeCS.ecore#//LoopParameterBindingCS">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//LoopParameterBindingCS/value"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//LoopParameterBindingCS/referredVariable"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//LoopParameterBindingCS/isCheck"/>
+ </genClasses>
<genClasses ecoreClass="QVTimperativeCS.ecore#//MappingCS">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCS/ownedInPathName"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCS/ownedParameters"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCS/ownedStatements"/>
</genClasses>
- <genClasses ecoreClass="QVTimperativeCS.ecore#//MappingCallBindingCS">
- <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCallBindingCS/ownedValue"/>
- <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCallBindingCS/owningMappingCall"/>
- <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCallBindingCS/referredVariable"/>
- </genClasses>
<genClasses ecoreClass="QVTimperativeCS.ecore#//MappingCallCS">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//MappingCallCS/isInfinite"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//MappingCallCS/isInstall"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//MappingCallCS/isInvoke"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCallCS/ownedBindings"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCallCS/ownedPathName"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingCallCS/referredMapping"/>
@@ -57,6 +71,9 @@
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingLoopCS/ownedMappingStatements"/>
</genClasses>
<genClasses image="false" ecoreClass="QVTimperativeCS.ecore#//MappingParameterCS"/>
+ <genClasses image="false" ecoreClass="QVTimperativeCS.ecore#//MappingParameterBindingCS">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//MappingParameterBindingCS/owningMappingCall"/>
+ </genClasses>
<genClasses image="false" ecoreClass="QVTimperativeCS.ecore#//MappingStatementCS"/>
<genClasses ecoreClass="QVTimperativeCS.ecore#//NewStatementCS">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//NewStatementCS/ownedExpression"/>
@@ -65,9 +82,6 @@
<genClasses ecoreClass="QVTimperativeCS.ecore#//ObservableStatementCS">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//ObservableStatementCS/observedProperties"/>
</genClasses>
- <genClasses ecoreClass="QVTimperativeCS.ecore#//OutVariableCS">
- <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//OutVariableCS/ownedExpression"/>
- </genClasses>
<genClasses ecoreClass="QVTimperativeCS.ecore#//ParamDeclarationCS"/>
<genClasses ecoreClass="QVTimperativeCS.ecore#//QueryCS">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//QueryCS/ownedPathName"/>
@@ -82,6 +96,14 @@
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//SetStatementCS/ownedExpression"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//SetStatementCS/isNotify"/>
</genClasses>
+ <genClasses ecoreClass="QVTimperativeCS.ecore#//SimpleParameterBindingCS">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//SimpleParameterBindingCS/ownedValue"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//SimpleParameterBindingCS/referredVariable"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTimperativeCS.ecore#//SimpleParameterBindingCS/isCheck"/>
+ </genClasses>
+ <genClasses ecoreClass="QVTimperativeCS.ecore#//SimpleParameterCS">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//SimpleParameterCS/referredTypedModel"/>
+ </genClasses>
<genClasses image="false" ecoreClass="QVTimperativeCS.ecore#//StatementCS"/>
<genClasses ecoreClass="QVTimperativeCS.ecore#//TopLevelCS">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTimperativeCS.ecore#//TopLevelCS/ownedMappings"/>
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext
index 85627360b..63de34ccc 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext
+++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext
@@ -27,7 +27,11 @@ TopLevelCS:
AddStatementCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
'add' targetVariable=[qvtimperative::ConnectionVariable|UnrestrictedName] '+=' ownedExpression=ExpCS ';';
+AppendParameterBindingCS: referredVariable=[qvtimperative::AppendParameter|UnrestrictedName] 'appendsTo' value=[qvtimperative::ConnectionVariable|UnrestrictedName] ';';
+
AppendParameterCS: 'append' name=UnrestrictedName ':' ownedType=TypeExpCS ';';
+
+BufferStatementCS: 'buffer' name=UnrestrictedName (':' ownedType=TypeExpCS)? (':=' ownedExpression=ExpCS)? ';';
CommitStatementCS returns StatementCS: NewStatementCS | SetStatementCS;
@@ -36,19 +40,23 @@ CheckStatementCS: 'check' ownedCondition=ExpCS ';';
ControlStatementCS returns MappingStatementCS: AddStatementCS | MappingCallCS | MappingLoopCS;
DeclareStatementCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
- isChecked?='check'? 'var' name=UnrestrictedName (':' ownedType=TypeExpCS)? ':=' ownedExpression=ExpCS ';';
+ isCheck?='check'? 'var' name=UnrestrictedName (':' ownedType=TypeExpCS)? ':=' ownedExpression=ExpCS ';';
DirectionCS: {DirectionCS} (isChecked?='check'|isEnforced?='enforce')? name=UnrestrictedName?
'imports' imports+=[pivot::Package|UnrestrictedName] (',' imports+=[pivot::Package|UnrestrictedName])*
;
-GuardParameterCS: 'in' ':' referredTypedModel=[qvtimperative::ImperativeTypedModel|UnrestrictedName] name=UnrestrictedName ':' ownedType=TypeExpCS ';';
+GuardParameterBindingCS: isCheck?='check'? referredVariable=[qvtimperative::GuardParameter|UnrestrictedName] 'consumes' value=[qvtimperative::ConnectionVariable|UnrestrictedName] ';';
+
+GuardParameterCS: 'guard' ':' referredTypedModel=[qvtimperative::ImperativeTypedModel|UnrestrictedName] name=UnrestrictedName ':' ownedType=TypeExpCS ';';
-GuardStatementCS returns StatementCS: OutVariableCS | DeclareStatementCS | DeclareStatementCS | CheckStatementCS;
+GuardStatementCS returns StatementCS: BufferStatementCS | DeclareStatementCS | DeclareStatementCS | CheckStatementCS;
ImportCS returns base::ImportCS:
'import' (name=Identifier ':')? ownedPathName=URIPathNameCS (isAll?='::' '*')? ';';
+LoopParameterBindingCS: isCheck?='check'? referredVariable=[qvtimperative::GuardParameter|UnrestrictedName] 'iterates' value=[qvtimperative::LoopVariable|UnrestrictedName] ';';
+
MappingCS: {MappingCS} 'map' name=UnrestrictedName ('in' ownedInPathName=PathNameCS)?
'{'
ownedParameters+=MappingParameterCS*
@@ -57,24 +65,22 @@ MappingCS: {MappingCS} 'map' name=UnrestrictedName ('in' ownedInPathName=PathNam
ownedStatements+=ControlStatementCS*
'}';
-MappingCallCS: {MappingCallCS} isInfinite?='infinite'? 'call' ownedPathName=PathNameCS
- '{' ownedBindings+=MappingCallBindingCS* '}';
-
-MappingCallBindingCS: referredVariable=[pivot::VariableDeclaration|UnrestrictedName] ':=' ownedValue=ExpCS ';';
+MappingCallCS: {MappingCallCS} isInfinite?='infinite'? ('call'|isInstall?='install'|isInvoke?='invoke') ownedPathName=PathNameCS
+ '{' ownedBindings+=MappingParameterBindingCS* '}';
MappingLoopCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
'for' ownedIterator=MappingIteratorCS 'in' ownedInExpression=ExpCS '{' ownedMappingStatements+=ControlStatementCS+ '}';
MappingIteratorCS returns essentialocl::VariableCS: name=UnrestrictedName (':' ownedType=TypeExpCS)?;
-MappingParameterCS: GuardParameterCS | AppendParameterCS;
+MappingParameterBindingCS: AppendParameterBindingCS | GuardParameterBindingCS | LoopParameterBindingCS | SimpleParameterBindingCS;
+
+MappingParameterCS: AppendParameterCS | GuardParameterCS | SimpleParameterCS;
NewStatementCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
'new' ':' referredTypedModel=[qvtimperative::ImperativeTypedModel|UnrestrictedName] name=UnrestrictedName ':' ownedType=TypeExpCS (':=' ownedExpression=ExpCS)? ';'
;
-OutVariableCS: 'out' name=UnrestrictedName ':' ownedType=TypeExpCS (':=' ownedExpression=ExpCS)? ';';
-
ParamDeclarationCS: name=UnrestrictedName ':' ownedType=TypeExpCS;
QualifiedPackageCS returns qvtbasecs::QualifiedPackageCS:
@@ -95,6 +101,10 @@ ScopeNameCS returns base::PathNameCS:
SetStatementCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
(isNotify?='notify')? 'set' referredVariable=[pivot::VariableDeclaration|UnrestrictedName] '.' referredProperty=[pivot::Property|UnrestrictedName] ':=' ownedExpression=ExpCS ';';
+
+SimpleParameterBindingCS: isCheck?='check'? referredVariable=[qvtimperative::SimpleParameter|UnrestrictedName] 'uses' ownedValue=ExpCS ';';
+
+SimpleParameterCS: 'in' ':' referredTypedModel=[qvtimperative::ImperativeTypedModel|UnrestrictedName] name=UnrestrictedName ':' ownedType=TypeExpCS ';';
TransformationCS:
'transformation' ownedPathName=ScopeNameCS? name=UnreservedName '{' (ownedDirections+=DirectionCS ';')* '}';

Back to the top