Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShuai Li2015-10-13 12:00:37 +0000
committerShuai Li2015-10-21 09:24:35 +0000
commita219cef5252207c328d8509409df29d7ddfa91c6 (patch)
treeb5f5fec64ae1733f707a26cf884c19a9b3b118c7 /extraplugins
parentf0eda97ba210f592a466c96f43963d832c731254 (diff)
downloadorg.eclipse.papyrus-a219cef5252207c328d8509409df29d7ddfa91c6.tar.gz
org.eclipse.papyrus-a219cef5252207c328d8509409df29d7ddfa91c6.tar.xz
org.eclipse.papyrus-a219cef5252207c328d8509409df29d7ddfa91c6.zip
Bug 479649 - [C++ codegen] Mutable and variadic
- Stereotype <<Variadic>> extends Operation - Stereotype <<Mutable>> extends Property - Code generator for these entities Change-Id: I75d25e11def1d27b84567f45ebf8883c1868c561 Signed-off-by: Shuai Li <shuai.li@cea.fr>
Diffstat (limited to 'extraplugins')
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java9
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend3
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend24
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.ecore10
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.genmodel8
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.notation62
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.uml16
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppFactory.java18
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppPackage.java158
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/Mutable.java52
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/Variadic.java52
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppFactoryImpl.java24
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppPackageImpl.java64
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/MutableImpl.java157
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/VariadicImpl.java157
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppAdapterFactory.java38
-rw-r--r--extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppSwitch.java44
17 files changed, 883 insertions, 13 deletions
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java
index 981b4d328e7..a55f4f6c0a0 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java
@@ -13,6 +13,7 @@ package org.eclipse.papyrus.cpp.codegen.utils;
import org.eclipse.papyrus.C_Cpp.Array;
import org.eclipse.papyrus.C_Cpp.Const;
+import org.eclipse.papyrus.C_Cpp.Mutable;
import org.eclipse.papyrus.C_Cpp.Ptr;
import org.eclipse.papyrus.C_Cpp.Ref;
import org.eclipse.papyrus.C_Cpp.StorageClass;
@@ -132,6 +133,14 @@ public class Modifier {
"volatile "; // before operation or parameter, //$NON-NLS-1$
// postfix with " "
}
+
+ // Mutable (non-static attribute only)
+ if (GenUtils.hasStereotype(propertyOrParameter, Mutable.class)) {
+ if (propertyOrParameter instanceof Property && !((Property) propertyOrParameter).isStatic()) {
+ cvQualifier = "mutable " + cvQualifier;
+ }
+ }
+
return cvQualifier;
}
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend
index da77fce07c8..3e806406da2 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppAttribute.xtend
@@ -21,6 +21,7 @@ import org.eclipse.papyrus.codegen.base.GenUtils
import org.eclipse.papyrus.C_Cpp.Const
import org.eclipse.papyrus.cpp.codegen.utils.Modifier
import org.eclipse.papyrus.cpp.codegen.utils.CppGenUtils
+import org.eclipse.papyrus.C_Cpp.Mutable
/**
* @author Önder GÜRCAN (onder.gurcan@cea.fr)
@@ -33,7 +34,7 @@ class CppAttribute {
var code = '''
// static attributes (if any)
«FOR ownedAttribute : getOwnedAttributes(classifier)»
- «IF (ownedAttribute.isStatic && !GenUtils.hasStereotype(ownedAttribute, Const))»
+ «IF (ownedAttribute.isStatic && !GenUtils.hasStereotype(ownedAttribute, Const) && !GenUtils.hasStereotype(ownedAttribute, Mutable))»
«CppStaticAttributeImplementation(ownedAttribute)»
«ENDIF»
«ENDFOR»
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend
index de037fb9498..557bd5b1c90 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/xtend/CppOperations.xtend
@@ -32,6 +32,8 @@ import org.eclipse.uml2.uml.NamedElement
import org.eclipse.uml2.uml.Region
import org.eclipse.papyrus.cpp.codegen.utils.ClassUtils
import org.eclipse.papyrus.codegen.base.GenUtils
+import org.eclipse.papyrus.C_Cpp.Variadic
+import org.eclipse.uml2.uml.ParameterDirectionKind
class CppOperations {
static def CppOperationImplementation(Operation operation) '''
@@ -41,7 +43,7 @@ class CppOperations {
«GenUtils.getBody(operation, Constants.supportedLanguages)»
}
«ELSE»
- «CppTemplates.templateSignature(operation)»«InlineTxt(operation)»«CppReturnSpec(operation)»«GenUtils.getNestedOperationFarthestClassifierOwnerNamespace(operation)»«CppTemplates.templateShortSignature(operation)»::«destructor(operation)»«operation.name»(«CppParameter.CppOperationParameters(operation, false)»)«throwss(operation)»«Modifier.modCVQualifier(operation)»«CppConstInit(operation)» {
+ «CppTemplates.templateSignature(operation)»«InlineTxt(operation)»«CppReturnSpec(operation)»«GenUtils.getNestedOperationFarthestClassifierOwnerNamespace(operation)»«CppTemplates.templateShortSignature(operation)»::«destructor(operation)»«operation.name»(«CppParameter.CppOperationParameters(operation, false)»«variadicParameter(operation)»)«throwss(operation)»«Modifier.modCVQualifier(operation)»«CppConstInit(operation)» {
«GenUtils.getBody(operation, Constants.supportedLanguages)»
}
«ENDIF»
@@ -136,7 +138,7 @@ class CppOperations {
static def CppOperationDeclaration(Operation operation) '''
«CppDocumentation.CppOperationDoc(operation)»
- «InlineTxt(operation)»«virtualTxt(operation)»«staticTxt(operation)»«CppReturnSpec(operation)»«destructor(operation)»«operation.name»(«CppParameter.CppOperationParameters(operation,true)»)«Modifier.modCVQualifier(operation)»«virtualSuffix(operation)»;
+ «InlineTxt(operation)»«virtualTxt(operation)»«staticTxt(operation)»«CppReturnSpec(operation)»«destructor(operation)»«operation.name»(«CppParameter.CppOperationParameters(operation,true)»«variadicParameter(operation)»)«Modifier.modCVQualifier(operation)»«virtualSuffix(operation)»;
'''
static def InlineTxt(Element element) {
@@ -181,4 +183,22 @@ class CppOperations {
}
return name
}
+
+ static def variadicParameter(Operation operation) {
+ var hasParameters = false;
+ var i = 0;
+ if (GenUtils.hasStereotype(operation, Variadic)) {
+ while (i < operation.ownedParameters.size && !hasParameters) {
+ if (operation.ownedParameters.get(i).direction != ParameterDirectionKind.RETURN_LITERAL) {
+ hasParameters = true;
+ }
+ }
+
+ if (hasParameters) {
+ ', ...'
+ } else {
+ '...'
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.ecore b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.ecore
index 9cb49e8e66d..65ebda94e6b 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.ecore
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.ecore
@@ -192,4 +192,14 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="base_operation" ordered="false"
unique="false" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
</eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Variadic">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_operation" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Operation">
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Mutable">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_property" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Property">
+ </eStructuralFeatures>
+ </eClassifiers>
</ecore:EPackage>
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.genmodel b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.genmodel
index 1beea976935..1273b29c170 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.genmodel
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.genmodel
@@ -184,5 +184,13 @@
<genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Volatile/base_operation"/>
</genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//Variadic">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Variadic/base_operation"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//Mutable">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Mutable/base_property"/>
+ </genClasses>
</genPackages>
</genmodel:GenModel>
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.notation b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.notation
index a973e3db7f1..5acb64df288 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.notation
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.notation
@@ -192,7 +192,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_f0pZAlCbEeWdH-pLiDvc5A"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2QldscoREeGKstsYRuxdvw" x="800" y="20" width="449" height="41"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2QldscoREeGKstsYRuxdvw" x="800" y="20" width="561" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_4yVowMoREeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4yWP0MoREeGKstsYRuxdvw" source="ShadowFigure">
@@ -436,6 +436,40 @@
<element xsi:nil="true"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_f2P7glCbEeWdH-pLiDvc5A" x="1220" y="340"/>
</children>
+ <children xmi:type="notation:Shape" xmi:id="_cLUrAHDeEeWeeNq7pVC2_w" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cLWgMHDeEeWeeNq7pVC2_w" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cLWgMXDeEeWeeNq7pVC2_w" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cLWgMnDeEeWeeNq7pVC2_w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cLWgM3DeEeWeeNq7pVC2_w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cLWgNHDeEeWeeNq7pVC2_w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cLWgNXDeEeWeeNq7pVC2_w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cLWgNnDeEeWeeNq7pVC2_w" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cLWgN3DeEeWeeNq7pVC2_w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cLWgOHDeEeWeeNq7pVC2_w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cLWgOXDeEeWeeNq7pVC2_w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cLWgOnDeEeWeeNq7pVC2_w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="C_Cpp.profile.uml#_cKKNYHDeEeWeeNq7pVC2_w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cLUrAXDeEeWeeNq7pVC2_w" x="1273" y="158" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Os81kHGHEeWRFvcel2rJKQ" type="1026">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Os-qwHGHEeWRFvcel2rJKQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Os_R0HGHEeWRFvcel2rJKQ" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Os_R0XGHEeWRFvcel2rJKQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Os_R0nGHEeWRFvcel2rJKQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Os_R03GHEeWRFvcel2rJKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Os_R1HGHEeWRFvcel2rJKQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Os_R1XGHEeWRFvcel2rJKQ" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Os_R1nGHEeWRFvcel2rJKQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Os_R13GHEeWRFvcel2rJKQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Os_R2HGHEeWRFvcel2rJKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Os_R2XGHEeWRFvcel2rJKQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="C_Cpp.profile.uml#_OsMnoHGHEeWRFvcel2rJKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Os81kXGHEeWRFvcel2rJKQ" x="478" y="438" height="86"/>
+ </children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_cj6rMcoREeGKstsYRuxdvw"/>
<styles xmi:type="notation:StringValueStyle" xmi:id="_fn4vYFCbEeWdH-pLiDvc5A" name="diagram_compatibility_version" stringValue="1.1.0"/>
<element xmi:type="uml:Profile" href="C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
@@ -492,22 +526,22 @@
<styles xmi:type="notation:FontStyle" xmi:id="_2Q9RIcoREeGKstsYRuxdvw" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="C_Cpp.profile.uml#_hPPwIByMEdu0tMSz-ceC5A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2Q9RIsoREeGKstsYRuxdvw" points="[-50, -16, 675, 205]$[-725, -221, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rlTLQfuNEeOuv40UUNEbNQ" id="(0.58,0.0)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HVmd4MoSEeGKstsYRuxdvw" id="(0.2984409799554566,1.0)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rlTLQfuNEeOuv40UUNEbNQ" id="(0.61,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HVmd4MoSEeGKstsYRuxdvw" id="(0.24420677361853832,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_4ywfgMoREeGKstsYRuxdvw" type="1013" source="_4yVowMoREeGKstsYRuxdvw" target="_2QldsMoREeGKstsYRuxdvw" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_4ywfgcoREeGKstsYRuxdvw" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="C_Cpp.profile.uml#_n1PMsByMEdu0tMSz-ceC5A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4ywfgsoREeGKstsYRuxdvw" points="[0, 0, -707, -61]$[657, 56, -50, -5]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L1kTcKYNEeSti6341zpcDg" id="(0.53,0.0)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I59zoMoSEeGKstsYRuxdvw" id="(0.5879732739420935,1.0)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L1kTcKYNEeSti6341zpcDg" id="(0.59,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I59zoMoSEeGKstsYRuxdvw" id="(0.48128342245989303,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_7BzxAMoREeGKstsYRuxdvw" type="1013" source="_51_eIMoREeGKstsYRuxdvw" target="_2QldsMoREeGKstsYRuxdvw" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_7BzxAcoREeGKstsYRuxdvw" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="C_Cpp.profile.uml#_K5gnwByNEdu0tMSz-ceC5A"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7BzxAsoREeGKstsYRuxdvw" points="[-50, -30, 217, 130]$[-226, -135, 41, 25]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L1k6gKYNEeSti6341zpcDg" id="(0.56,0.0)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_If9_QMoSEeGKstsYRuxdvw" id="(0.8752783964365256,1.0)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L1k6gKYNEeSti6341zpcDg" id="(0.63,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_If9_QMoSEeGKstsYRuxdvw" id="(0.7130124777183601,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_fjeXIMoSEeGKstsYRuxdvw" type="1013" source="_hA3-sMoREeGKstsYRuxdvw" target="_2QldsMoREeGKstsYRuxdvw" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_fjeXIcoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
@@ -632,6 +666,20 @@
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f2P7h1CbEeWdH-pLiDvc5A"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f2P7iFCbEeWdH-pLiDvc5A"/>
</edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kLBFcHDeEeWeeNq7pVC2_w" type="1013" source="_cLUrAHDeEeWeeNq7pVC2_w" target="_2QldsMoREeGKstsYRuxdvw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kLBFcXDeEeWeeNq7pVC2_w"/>
+ <element xmi:type="uml:Extension" href="C_Cpp.profile.uml#_kJ_KsHDeEeWeeNq7pVC2_w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kLBFcnDeEeWeeNq7pVC2_w" points="[4, -50, 0, 117]$[51, -167, 47, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kMIfwHDeEeWeeNq7pVC2_w" id="(0.46,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kMIfwXDeEeWeeNq7pVC2_w" id="(0.9251336898395722,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_RAKOUHGHEeWRFvcel2rJKQ" type="1013" source="_Os81kHGHEeWRFvcel2rJKQ" target="_hBS1cMoREeGKstsYRuxdvw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_RAKOUXGHEeWRFvcel2rJKQ"/>
+ <element xmi:type="uml:Extension" href="C_Cpp.profile.uml#_Q_sUQHGHEeWRFvcel2rJKQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RAKOUnGHEeWRFvcel2rJKQ" points="[4, -50, 12, 78]$[313, -133, 321, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RBH3oHGHEeWRFvcel2rJKQ" id="(0.49,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RBH3oXGHEeWRFvcel2rJKQ" id="(0.5101404056162246,1.0)"/>
+ </edges>
</notation:Diagram>
<notation:Diagram xmi:id="_UNXagMoSEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Tweaks" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_XJFkwMoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.uml b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.uml
index 6e8cb7f3af1..624c26dd6b5 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.uml
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/profiles/C_Cpp.profile.uml
@@ -502,6 +502,22 @@ Can be used to define for instance primitive types (like int). Can also be used
<packagedElement xmi:type="uml:Extension" xmi:id="_Hp7E8FCcEeWdH-pLiDvc5A" name="E_StorageClass_Parameter1" memberEnd="_Hp7sAFCcEeWdH-pLiDvc5A _Hp7sAVCcEeWdH-pLiDvc5A">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Hp7sAFCcEeWdH-pLiDvc5A" name="extension_StorageClass" type="_U3BNgJVPEeKCE6_KfOehJw" aggregation="composite" association="_Hp7E8FCcEeWdH-pLiDvc5A"/>
</packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_cKKNYHDeEeWeeNq7pVC2_w" name="Variadic">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_kKEqQHDeEeWeeNq7pVC2_w" name="base_operation" association="_kJ_KsHDeEeWeeNq7pVC2_w">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_kJ_KsHDeEeWeeNq7pVC2_w" name="E_Variadic_Operation1" memberEnd="_kKDcIHDeEeWeeNq7pVC2_w _kKEqQHDeEeWeeNq7pVC2_w">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_kKDcIHDeEeWeeNq7pVC2_w" name="extension_Variadic" type="_cKKNYHDeEeWeeNq7pVC2_w" aggregation="composite" association="_kJ_KsHDeEeWeeNq7pVC2_w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_OsMnoHGHEeWRFvcel2rJKQ" name="Mutable">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Q_zB8HGHEeWRFvcel2rJKQ" name="base_property" association="_Q_sUQHGHEeWRFvcel2rJKQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Q_sUQHGHEeWRFvcel2rJKQ" name="E_Mutable_Property1" memberEnd="_Q_uwgHGHEeWRFvcel2rJKQ _Q_zB8HGHEeWRFvcel2rJKQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Q_uwgHGHEeWRFvcel2rJKQ" name="extension_Mutable" type="_OsMnoHGHEeWRFvcel2rJKQ" aggregation="composite" association="_Q_sUQHGHEeWRFvcel2rJKQ"/>
+ </packagedElement>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_QS19UMogEeGKstsYRuxdvw">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QUmQ0MogEeGKstsYRuxdvw" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppFactory.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppFactory.java
index f37e04d6824..23497620ac3 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppFactory.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppFactory.java
@@ -239,6 +239,24 @@ public interface C_CppFactory extends EFactory {
Volatile createVolatile();
/**
+ * Returns a new object of class '<em>Variadic</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Variadic</em>'.
+ * @generated
+ */
+ Variadic createVariadic();
+
+ /**
+ * Returns a new object of class '<em>Mutable</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Mutable</em>'.
+ * @generated
+ */
+ Mutable createMutable();
+
+ /**
* Returns the package supported by this factory.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppPackage.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppPackage.java
index d2fe164ff27..e58139c0869 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppPackage.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/C_CppPackage.java
@@ -1206,6 +1206,80 @@ public interface C_CppPackage extends EPackage {
int VOLATILE_OPERATION_COUNT = 0;
/**
+ * The meta object id for the '{@link org.eclipse.papyrus.C_Cpp.impl.VariadicImpl <em>Variadic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.C_Cpp.impl.VariadicImpl
+ * @see org.eclipse.papyrus.C_Cpp.impl.C_CppPackageImpl#getVariadic()
+ * @generated
+ */
+ int VARIADIC = 23;
+
+ /**
+ * The feature id for the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIADIC__BASE_OPERATION = 0;
+
+ /**
+ * The number of structural features of the '<em>Variadic</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIADIC_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Variadic</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int VARIADIC_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.C_Cpp.impl.MutableImpl <em>Mutable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.C_Cpp.impl.MutableImpl
+ * @see org.eclipse.papyrus.C_Cpp.impl.C_CppPackageImpl#getMutable()
+ * @generated
+ */
+ int MUTABLE = 24;
+
+ /**
+ * The feature id for the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MUTABLE__BASE_PROPERTY = 0;
+
+ /**
+ * The number of structural features of the '<em>Mutable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MUTABLE_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Mutable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MUTABLE_OPERATION_COUNT = 0;
+
+ /**
* The meta object id for the '{@link org.eclipse.papyrus.C_Cpp.VisibilityKind <em>Visibility Kind</em>}' enum.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1213,7 +1287,7 @@ public interface C_CppPackage extends EPackage {
* @see org.eclipse.papyrus.C_Cpp.impl.C_CppPackageImpl#getVisibilityKind()
* @generated
*/
- int VISIBILITY_KIND = 23;
+ int VISIBILITY_KIND = 25;
/**
* The meta object id for the '{@link org.eclipse.papyrus.C_Cpp.EAccessKind <em>EAccess Kind</em>}' enum.
@@ -1223,7 +1297,7 @@ public interface C_CppPackage extends EPackage {
* @see org.eclipse.papyrus.C_Cpp.impl.C_CppPackageImpl#getEAccessKind()
* @generated
*/
- int EACCESS_KIND = 24;
+ int EACCESS_KIND = 26;
/**
* The meta object id for the '{@link org.eclipse.papyrus.C_Cpp.EStorageClass <em>EStorage Class</em>}' enum.
@@ -1233,7 +1307,7 @@ public interface C_CppPackage extends EPackage {
* @see org.eclipse.papyrus.C_Cpp.impl.C_CppPackageImpl#getEStorageClass()
* @generated
*/
- int ESTORAGE_CLASS = 25;
+ int ESTORAGE_CLASS = 27;
/**
@@ -2072,6 +2146,48 @@ public interface C_CppPackage extends EPackage {
EReference getVolatile_Base_operation();
/**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.C_Cpp.Variadic <em>Variadic</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Variadic</em>'.
+ * @see org.eclipse.papyrus.C_Cpp.Variadic
+ * @generated
+ */
+ EClass getVariadic();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.C_Cpp.Variadic#getBase_operation <em>Base operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base operation</em>'.
+ * @see org.eclipse.papyrus.C_Cpp.Variadic#getBase_operation()
+ * @see #getVariadic()
+ * @generated
+ */
+ EReference getVariadic_Base_operation();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.C_Cpp.Mutable <em>Mutable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Mutable</em>'.
+ * @see org.eclipse.papyrus.C_Cpp.Mutable
+ * @generated
+ */
+ EClass getMutable();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.C_Cpp.Mutable#getBase_property <em>Base property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base property</em>'.
+ * @see org.eclipse.papyrus.C_Cpp.Mutable#getBase_property()
+ * @see #getMutable()
+ * @generated
+ */
+ EReference getMutable_Base_property();
+
+ /**
* Returns the meta object for enum '{@link org.eclipse.papyrus.C_Cpp.VisibilityKind <em>Visibility Kind</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -2794,6 +2910,42 @@ public interface C_CppPackage extends EPackage {
EReference VOLATILE__BASE_OPERATION = eINSTANCE.getVolatile_Base_operation();
/**
+ * The meta object literal for the '{@link org.eclipse.papyrus.C_Cpp.impl.VariadicImpl <em>Variadic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.C_Cpp.impl.VariadicImpl
+ * @see org.eclipse.papyrus.C_Cpp.impl.C_CppPackageImpl#getVariadic()
+ * @generated
+ */
+ EClass VARIADIC = eINSTANCE.getVariadic();
+
+ /**
+ * The meta object literal for the '<em><b>Base operation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference VARIADIC__BASE_OPERATION = eINSTANCE.getVariadic_Base_operation();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.C_Cpp.impl.MutableImpl <em>Mutable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.C_Cpp.impl.MutableImpl
+ * @see org.eclipse.papyrus.C_Cpp.impl.C_CppPackageImpl#getMutable()
+ * @generated
+ */
+ EClass MUTABLE = eINSTANCE.getMutable();
+
+ /**
+ * The meta object literal for the '<em><b>Base property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MUTABLE__BASE_PROPERTY = eINSTANCE.getMutable_Base_property();
+
+ /**
* The meta object literal for the '{@link org.eclipse.papyrus.C_Cpp.VisibilityKind <em>Visibility Kind</em>}' enum.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/Mutable.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/Mutable.java
new file mode 100644
index 00000000000..9ca0a41cd6a
--- /dev/null
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/Mutable.java
@@ -0,0 +1,52 @@
+/**
+ */
+package org.eclipse.papyrus.C_Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mutable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.C_Cpp.Mutable#getBase_property <em>Base property</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.C_Cpp.C_CppPackage#getMutable()
+ * @model
+ * @generated
+ */
+public interface Mutable extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base property</em>' reference.
+ * @see #setBase_property(Property)
+ * @see org.eclipse.papyrus.C_Cpp.C_CppPackage#getMutable_Base_property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_property();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.C_Cpp.Mutable#getBase_property <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base property</em>' reference.
+ * @see #getBase_property()
+ * @generated
+ */
+ void setBase_property(Property value);
+
+} // Mutable
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/Variadic.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/Variadic.java
new file mode 100644
index 00000000000..37ead44821e
--- /dev/null
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/Variadic.java
@@ -0,0 +1,52 @@
+/**
+ */
+package org.eclipse.papyrus.C_Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Variadic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.C_Cpp.Variadic#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.C_Cpp.C_CppPackage#getVariadic()
+ * @model
+ * @generated
+ */
+public interface Variadic extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base operation</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base operation</em>' reference.
+ * @see #setBase_operation(Operation)
+ * @see org.eclipse.papyrus.C_Cpp.C_CppPackage#getVariadic_Base_operation()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Operation getBase_operation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.C_Cpp.Variadic#getBase_operation <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base operation</em>' reference.
+ * @see #getBase_operation()
+ * @generated
+ */
+ void setBase_operation(Operation value);
+
+} // Variadic
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppFactoryImpl.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppFactoryImpl.java
index 843ae6d95f7..e16267d1b13 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppFactoryImpl.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppFactoryImpl.java
@@ -33,6 +33,7 @@ import org.eclipse.papyrus.C_Cpp.Friend;
import org.eclipse.papyrus.C_Cpp.Include;
import org.eclipse.papyrus.C_Cpp.Inline;
import org.eclipse.papyrus.C_Cpp.ManualGeneration;
+import org.eclipse.papyrus.C_Cpp.Mutable;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
import org.eclipse.papyrus.C_Cpp.Ptr;
import org.eclipse.papyrus.C_Cpp.Ref;
@@ -42,6 +43,7 @@ import org.eclipse.papyrus.C_Cpp.TemplateBinding;
import org.eclipse.papyrus.C_Cpp.TemplateParameter;
import org.eclipse.papyrus.C_Cpp.Typedef;
import org.eclipse.papyrus.C_Cpp.Union;
+import org.eclipse.papyrus.C_Cpp.Variadic;
import org.eclipse.papyrus.C_Cpp.Virtual;
import org.eclipse.papyrus.C_Cpp.Visibility;
import org.eclipse.papyrus.C_Cpp.VisibilityKind;
@@ -114,6 +116,8 @@ public class C_CppFactoryImpl extends EFactoryImpl implements C_CppFactory {
case C_CppPackage.UNION: return createUnion();
case C_CppPackage.STORAGE_CLASS: return createStorageClass();
case C_CppPackage.VOLATILE: return createVolatile();
+ case C_CppPackage.VARIADIC: return createVariadic();
+ case C_CppPackage.MUTABLE: return createMutable();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
}
@@ -415,6 +419,26 @@ public class C_CppFactoryImpl extends EFactoryImpl implements C_CppFactory {
* <!-- end-user-doc -->
* @generated
*/
+ public Variadic createVariadic() {
+ VariadicImpl variadic = new VariadicImpl();
+ return variadic;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Mutable createMutable() {
+ MutableImpl mutable = new MutableImpl();
+ return mutable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public VisibilityKind createVisibilityKindFromString(EDataType eDataType, String initialValue) {
VisibilityKind result = VisibilityKind.get(initialValue);
if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppPackageImpl.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppPackageImpl.java
index ae8ea665784..9d62fda5089 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppPackageImpl.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/C_CppPackageImpl.java
@@ -33,6 +33,7 @@ import org.eclipse.papyrus.C_Cpp.Friend;
import org.eclipse.papyrus.C_Cpp.Include;
import org.eclipse.papyrus.C_Cpp.Inline;
import org.eclipse.papyrus.C_Cpp.ManualGeneration;
+import org.eclipse.papyrus.C_Cpp.Mutable;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
import org.eclipse.papyrus.C_Cpp.Ptr;
import org.eclipse.papyrus.C_Cpp.Ref;
@@ -42,6 +43,7 @@ import org.eclipse.papyrus.C_Cpp.TemplateBinding;
import org.eclipse.papyrus.C_Cpp.TemplateParameter;
import org.eclipse.papyrus.C_Cpp.Typedef;
import org.eclipse.papyrus.C_Cpp.Union;
+import org.eclipse.papyrus.C_Cpp.Variadic;
import org.eclipse.papyrus.C_Cpp.Virtual;
import org.eclipse.papyrus.C_Cpp.Visibility;
import org.eclipse.papyrus.C_Cpp.VisibilityKind;
@@ -222,6 +224,20 @@ public class C_CppPackageImpl extends EPackageImpl implements C_CppPackage {
* <!-- end-user-doc -->
* @generated
*/
+ private EClass variadicEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass mutableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
private EEnum visibilityKindEEnum = null;
/**
@@ -1081,6 +1097,42 @@ public class C_CppPackageImpl extends EPackageImpl implements C_CppPackage {
* <!-- end-user-doc -->
* @generated
*/
+ public EClass getVariadic() {
+ return variadicEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getVariadic_Base_operation() {
+ return (EReference)variadicEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMutable() {
+ return mutableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMutable_Base_property() {
+ return (EReference)mutableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
@Override
public EEnum getVisibilityKind() {
return visibilityKindEEnum;
@@ -1236,6 +1288,12 @@ public class C_CppPackageImpl extends EPackageImpl implements C_CppPackage {
createEReference(volatileEClass, VOLATILE__BASE_PROPERTY);
createEReference(volatileEClass, VOLATILE__BASE_OPERATION);
+ variadicEClass = createEClass(VARIADIC);
+ createEReference(variadicEClass, VARIADIC__BASE_OPERATION);
+
+ mutableEClass = createEClass(MUTABLE);
+ createEReference(mutableEClass, MUTABLE__BASE_PROPERTY);
+
// Create enums
visibilityKindEEnum = createEEnum(VISIBILITY_KIND);
eAccessKindEEnum = createEEnum(EACCESS_KIND);
@@ -1377,6 +1435,12 @@ public class C_CppPackageImpl extends EPackageImpl implements C_CppPackage {
initEReference(getVolatile_Base_property(), theUMLPackage.getProperty(), null, "base_property", null, 0, 1, Volatile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
initEReference(getVolatile_Base_operation(), theUMLPackage.getOperation(), null, "base_operation", null, 0, 1, Volatile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEClass(variadicEClass, Variadic.class, "Variadic", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getVariadic_Base_operation(), theUMLPackage.getOperation(), null, "base_operation", null, 1, 1, Variadic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(mutableEClass, Mutable.class, "Mutable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getMutable_Base_property(), theUMLPackage.getProperty(), null, "base_property", null, 1, 1, Mutable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
// Initialize enums and add enum literals
initEEnum(visibilityKindEEnum, VisibilityKind.class, "VisibilityKind");
addEEnumLiteral(visibilityKindEEnum, VisibilityKind.PRIVATE);
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/MutableImpl.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/MutableImpl.java
new file mode 100644
index 00000000000..d0d2217c44d
--- /dev/null
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/MutableImpl.java
@@ -0,0 +1,157 @@
+/**
+ */
+package org.eclipse.papyrus.C_Cpp.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.C_Cpp.C_CppPackage;
+import org.eclipse.papyrus.C_Cpp.Mutable;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Mutable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.C_Cpp.impl.MutableImpl#getBase_property <em>Base property</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MutableImpl extends MinimalEObjectImpl.Container implements Mutable {
+ /**
+ * The cached value of the '{@link #getBase_property() <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_property;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MutableImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return C_CppPackage.Literals.MUTABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_property() {
+ if (base_property != null && base_property.eIsProxy()) {
+ InternalEObject oldBase_property = (InternalEObject)base_property;
+ base_property = (Property)eResolveProxy(oldBase_property);
+ if (base_property != oldBase_property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, C_CppPackage.MUTABLE__BASE_PROPERTY, oldBase_property, base_property));
+ }
+ }
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_property() {
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_property(Property newBase_property) {
+ Property oldBase_property = base_property;
+ base_property = newBase_property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, C_CppPackage.MUTABLE__BASE_PROPERTY, oldBase_property, base_property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case C_CppPackage.MUTABLE__BASE_PROPERTY:
+ if (resolve) return getBase_property();
+ return basicGetBase_property();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case C_CppPackage.MUTABLE__BASE_PROPERTY:
+ setBase_property((Property)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case C_CppPackage.MUTABLE__BASE_PROPERTY:
+ setBase_property((Property)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case C_CppPackage.MUTABLE__BASE_PROPERTY:
+ return base_property != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //MutableImpl
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/VariadicImpl.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/VariadicImpl.java
new file mode 100644
index 00000000000..d59834ca4ad
--- /dev/null
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/impl/VariadicImpl.java
@@ -0,0 +1,157 @@
+/**
+ */
+package org.eclipse.papyrus.C_Cpp.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.C_Cpp.C_CppPackage;
+import org.eclipse.papyrus.C_Cpp.Variadic;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Variadic</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.C_Cpp.impl.VariadicImpl#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class VariadicImpl extends MinimalEObjectImpl.Container implements Variadic {
+ /**
+ * The cached value of the '{@link #getBase_operation() <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_operation()
+ * @generated
+ * @ordered
+ */
+ protected Operation base_operation;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected VariadicImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return C_CppPackage.Literals.VARIADIC;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation getBase_operation() {
+ if (base_operation != null && base_operation.eIsProxy()) {
+ InternalEObject oldBase_operation = (InternalEObject)base_operation;
+ base_operation = (Operation)eResolveProxy(oldBase_operation);
+ if (base_operation != oldBase_operation) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, C_CppPackage.VARIADIC__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+ }
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation basicGetBase_operation() {
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_operation(Operation newBase_operation) {
+ Operation oldBase_operation = base_operation;
+ base_operation = newBase_operation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, C_CppPackage.VARIADIC__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case C_CppPackage.VARIADIC__BASE_OPERATION:
+ if (resolve) return getBase_operation();
+ return basicGetBase_operation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case C_CppPackage.VARIADIC__BASE_OPERATION:
+ setBase_operation((Operation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case C_CppPackage.VARIADIC__BASE_OPERATION:
+ setBase_operation((Operation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case C_CppPackage.VARIADIC__BASE_OPERATION:
+ return base_operation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //VariadicImpl
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppAdapterFactory.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppAdapterFactory.java
index 7caa1bb49d7..b00c2921104 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppAdapterFactory.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppAdapterFactory.java
@@ -28,6 +28,7 @@ import org.eclipse.papyrus.C_Cpp.Friend;
import org.eclipse.papyrus.C_Cpp.Include;
import org.eclipse.papyrus.C_Cpp.Inline;
import org.eclipse.papyrus.C_Cpp.ManualGeneration;
+import org.eclipse.papyrus.C_Cpp.Mutable;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
import org.eclipse.papyrus.C_Cpp.Ptr;
import org.eclipse.papyrus.C_Cpp.Ref;
@@ -37,6 +38,7 @@ import org.eclipse.papyrus.C_Cpp.TemplateBinding;
import org.eclipse.papyrus.C_Cpp.TemplateParameter;
import org.eclipse.papyrus.C_Cpp.Typedef;
import org.eclipse.papyrus.C_Cpp.Union;
+import org.eclipse.papyrus.C_Cpp.Variadic;
import org.eclipse.papyrus.C_Cpp.Virtual;
import org.eclipse.papyrus.C_Cpp.Visibility;
import org.eclipse.papyrus.C_Cpp.Volatile;
@@ -190,6 +192,14 @@ public class C_CppAdapterFactory extends AdapterFactoryImpl {
return createVolatileAdapter();
}
@Override
+ public Adapter caseVariadic(Variadic object) {
+ return createVariadicAdapter();
+ }
+ @Override
+ public Adapter caseMutable(Mutable object) {
+ return createMutableAdapter();
+ }
+ @Override
public Adapter defaultCase(EObject object) {
return createEObjectAdapter();
}
@@ -532,6 +542,34 @@ public class C_CppAdapterFactory extends AdapterFactoryImpl {
}
/**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.C_Cpp.Variadic <em>Variadic</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.C_Cpp.Variadic
+ * @generated
+ */
+ public Adapter createVariadicAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.C_Cpp.Mutable <em>Mutable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.C_Cpp.Mutable
+ * @generated
+ */
+ public Adapter createMutableAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for the default case.
* <!-- begin-user-doc -->
* This default implementation returns null.
diff --git a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppSwitch.java b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppSwitch.java
index f1c64479341..cc3991bb0e4 100644
--- a/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppSwitch.java
+++ b/extraplugins/codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/C_Cpp/util/C_CppSwitch.java
@@ -27,6 +27,7 @@ import org.eclipse.papyrus.C_Cpp.Friend;
import org.eclipse.papyrus.C_Cpp.Include;
import org.eclipse.papyrus.C_Cpp.Inline;
import org.eclipse.papyrus.C_Cpp.ManualGeneration;
+import org.eclipse.papyrus.C_Cpp.Mutable;
import org.eclipse.papyrus.C_Cpp.NoCodeGen;
import org.eclipse.papyrus.C_Cpp.Ptr;
import org.eclipse.papyrus.C_Cpp.Ref;
@@ -36,6 +37,7 @@ import org.eclipse.papyrus.C_Cpp.TemplateBinding;
import org.eclipse.papyrus.C_Cpp.TemplateParameter;
import org.eclipse.papyrus.C_Cpp.Typedef;
import org.eclipse.papyrus.C_Cpp.Union;
+import org.eclipse.papyrus.C_Cpp.Variadic;
import org.eclipse.papyrus.C_Cpp.Virtual;
import org.eclipse.papyrus.C_Cpp.Visibility;
import org.eclipse.papyrus.C_Cpp.Volatile;
@@ -234,6 +236,18 @@ public class C_CppSwitch<T> extends Switch<T> {
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case C_CppPackage.VARIADIC: {
+ Variadic variadic = (Variadic)theEObject;
+ T result = caseVariadic(variadic);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case C_CppPackage.MUTABLE: {
+ Mutable mutable = (Mutable)theEObject;
+ T result = caseMutable(mutable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
default: return defaultCase(theEObject);
}
}
@@ -584,6 +598,36 @@ public class C_CppSwitch<T> extends Switch<T> {
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>Variadic</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Variadic</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseVariadic(Variadic object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Mutable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Mutable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMutable(Mutable object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;

Back to the top