diff options
author | Ed Willink | 2016-09-20 14:44:53 +0000 |
---|---|---|
committer | Ed Willink | 2016-09-20 14:44:53 +0000 |
commit | f2a5093c703790389fa0e72bf7ab73e446440766 (patch) | |
tree | 62f8063de4401a9f6b8ec88e67515d70dce4d351 | |
parent | a7a9612732d0e4be31aa10552ef2954b22196593 (diff) | |
download | org.eclipse.qvtd-f2a5093c703790389fa0e72bf7ab73e446440766.tar.gz org.eclipse.qvtd-f2a5093c703790389fa0e72bf7ab73e446440766.tar.xz org.eclipse.qvtd-f2a5093c703790389fa0e72bf7ab73e446440766.zip |
[500369] Prepare for Mapping install
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
a MappingCall. A value is bound to the variable. OPtionally isLoop may be true
to indicate that the value is a collection of values, each of which is to
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
a MappingCall. A value is bound to the variable. OPtionally isLoop may be true
to indicate that the value is a collection of values, each of which is to
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
a MappingCall. A value is bound to the variable. OPtionally isLoop may be true
to indicate that the value is a collection of values, each of which is to
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
of the bound variables of the referredMapping to values provided in the invocation.
Where Collections of values are provided for isLoop bindings, a distinct invocation
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
a MappingCall. A value is bound to the variable. OPtionally isLoop may be true
to indicate that the value is a collection of values, each of which is to
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
a MappingCall. A value is bound to the variable. OPtionally isLoop may be true
to indicate that the value is a collection of values, each of which is to
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
of the bound variables of the referredMapping to values provided in the invocation.
Where Collections of values are provided for isLoop bindings, a distinct invocation
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
a MappingCall. A value is bound to the variable. OPtionally isLoop may be true
to indicate that the value is a collection of values, each of which is to
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 ';')* '}'; |