diff options
author | Shuai Li | 2015-10-13 12:00:37 +0000 |
---|---|---|
committer | Shuai Li | 2015-10-21 09:24:35 +0000 |
commit | a219cef5252207c328d8509409df29d7ddfa91c6 (patch) | |
tree | b5f5fec64ae1733f707a26cf884c19a9b3b118c7 /extraplugins | |
parent | f0eda97ba210f592a466c96f43963d832c731254 (diff) | |
download | org.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')
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; |