Bug 574783 - Add ability to specify "delete" or "default" methods.

- Add <Delete> and <Default> stereotypes
- Re-generate static profile
- Modify code generator
- The user is responsible to apply the stereotype only to valid
  operations (e.g. <Default> only to constructors)

Change-Id: I520712dc2f2b9111f118fccfec76f753c5bfcad1
Signed-off-by: Ansgar Radermacher <ansgar.radermacher@cea.fr>
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.codegen/src/org/eclipse/papyrus/designer/languages/cpp/codegen/xtend/CppClassOperationsImplementation.xtend b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.codegen/src/org/eclipse/papyrus/designer/languages/cpp/codegen/xtend/CppClassOperationsImplementation.xtend
index 33dd429..f935e08 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.codegen/src/org/eclipse/papyrus/designer/languages/cpp/codegen/xtend/CppClassOperationsImplementation.xtend
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.codegen/src/org/eclipse/papyrus/designer/languages/cpp/codegen/xtend/CppClassOperationsImplementation.xtend
@@ -18,6 +18,10 @@
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Inline
 import org.eclipse.papyrus.designer.languages.common.base.GenUtils
 import org.eclipse.papyrus.designer.languages.common.profile.Codegen.NoCodeGen
+import org.eclipse.uml2.uml.Operation
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil
+import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default
+import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete
 
 /**
  * @author Önder GÜRCAN (onder.gurcan@cea.fr)
@@ -27,11 +31,11 @@
 	// implementations of a classifier, parameter controls whether only inline (or only not inline) operations
 	//are produced
 	static def CppClassOperationsImplementation(Classifier clazz, boolean inline) '''
-		«FOR ownedOperation : CppOperations.getOwnedOperations(clazz).filter[(!(GenUtils.hasStereotype(it, NoCodeGen) || it.isAbstract)) && (GenUtils.hasStereotype(it, Inline) == inline)] SEPARATOR "\n"»
+		«FOR ownedOperation : CppOperations.getOwnedOperations(clazz).filter[(!it.noImplDef) && (GenUtils.hasStereotype(it, Inline) == inline)] SEPARATOR "\n"»
 			«CppOperations.CppOperationImplementation(ownedOperation)»
 		«ENDFOR»
 
-		«FOR nestedOperation : CppOperations.getNestedOperations(clazz).filter[(!(GenUtils.hasStereotype(it, NoCodeGen) || it.isAbstract)) && (GenUtils.hasStereotype(it, Inline) == inline)] SEPARATOR "\n"»
+		«FOR nestedOperation : CppOperations.getNestedOperations(clazz).filter[(!it.noImplDef) && (GenUtils.hasStereotype(it, Inline) == inline)] SEPARATOR "\n"»
 			«CppOperations.CppOperationImplementation(nestedOperation)»
 		«ENDFOR»
 
@@ -43,4 +47,15 @@
 			«ENDIF»
 		«ENDFOR»
 	'''
+
+	/**
+	 * No implementation definition is required
+	 */
+	static def noImplDef(Operation op) {
+		return 
+			StereotypeUtil.isApplied(op, NoCodeGen) ||
+			StereotypeUtil.isApplied(op, Default) ||
+			StereotypeUtil.isApplied(op, Delete) ||
+			op.isAbstract;
+	}
 }
\ No newline at end of file
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.codegen/src/org/eclipse/papyrus/designer/languages/cpp/codegen/xtend/CppOperations.xtend b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.codegen/src/org/eclipse/papyrus/designer/languages/cpp/codegen/xtend/CppOperations.xtend
index c3fd8a0..2558bab 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.codegen/src/org/eclipse/papyrus/designer/languages/cpp/codegen/xtend/CppOperations.xtend
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.codegen/src/org/eclipse/papyrus/designer/languages/cpp/codegen/xtend/CppOperations.xtend
@@ -36,6 +36,9 @@
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Variadic
 import org.eclipse.uml2.uml.ParameterDirectionKind
 import org.eclipse.papyrus.designer.languages.cpp.codegen.utils.CppClassUtils
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil
+import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete
+import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default
 
 class CppOperations {
 	static def CppOperationImplementation(Operation operation) '''
@@ -166,9 +169,14 @@
 			''
 		}
 	}
-		
+	
+	/**
+	 * Common method to handle virtual, default and deleted operations
+	 */	
 	static def virtualSuffix(Operation operation) {
 		if ((operation.interface !== null) || (operation.isAbstract)) ' = 0'
+		else if (StereotypeUtil.isApplied(operation, Delete)) ' = delete'
+		else if (StereotypeUtil.isApplied(operation, Default)) ' = default'
 	}
 	
 	static def CppBehaviorDeclaration(Classifier cl, Behavior behavior) '''
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.ecore b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.ecore
index 3fc6aee..eed40ba 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.ecore
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.ecore
@@ -66,6 +66,15 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_package" ordered="false"
         unique="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Package"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Typedef">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Declare a new type that is based on another type.&#xA;Can be used to define for instance primitive types (like int). Can also be used for function pointers (see wiki)"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="definition" ordered="false"
+        unique="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_primitivetype" ordered="false"
+        unique="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//PrimitiveType"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="EnumStyle">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="Enumeration style can be choosen individually on an enumeration or on a package (applying to all elements within)&#xA;The &quot;nearest&quot; Enum style hint has precedence"/>
@@ -85,6 +94,20 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
         eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Delete">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="C++ modifiers that are applied to an operator or constructor.&#xA;Produce for =delete or =default statements"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Operation" ordered="false"
+        eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Default">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="C++ modifiers that are applied to an operator or constructor.&#xA;Produce for =delete or =default statements"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Operation" ordered="false"
+        eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
     <eLiterals name="private"/>
     <eLiterals name="protected" value="1"/>
@@ -152,12 +175,6 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_operation" ordered="false"
         unique="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Typedef">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="definition" ordered="false"
-        unique="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="base_primitivetype" ordered="false"
-        unique="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//PrimitiveType"/>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Visibility">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
         unique="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.genmodel b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.genmodel
index 7925aa4..c7d5fdf 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.genmodel
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.genmodel
@@ -87,6 +87,11 @@
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
           propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//CppRoot/base_package"/>
     </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//Typedef">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute C_Cpp.ecore#//Typedef/definition"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Typedef/base_primitivetype"/>
+    </genClasses>
     <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//EnumStyle">
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
           propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//EnumStyle/base_Enumeration"/>
@@ -98,6 +103,14 @@
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
           propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//DefaultConstructor/base_Class"/>
     </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//Delete">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Delete/base_Operation"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//Default">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Default/base_Operation"/>
+    </genClasses>
     <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//Array">
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
           propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Array/base_parameter"/>
@@ -147,11 +160,6 @@
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
           propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Virtual/base_operation"/>
     </genClasses>
-    <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//Typedef">
-      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute C_Cpp.ecore#//Typedef/definition"/>
-      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-          propertySortChoices="true" ecoreFeature="ecore:EReference C_Cpp.ecore#//Typedef/base_primitivetype"/>
-    </genClasses>
     <genClasses xsi:type="genmodel:GenClass" ecoreClass="C_Cpp.ecore#//Visibility">
       <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute C_Cpp.ecore#//Visibility/value"/>
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.profile.notation b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.profile.notation
index 0379b1a..6d9c22f 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.profile.notation
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.profile.notation
@@ -528,6 +528,54 @@
       <element xsi:nil="true"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ahNlEoY3EemX0PaewOryfg" x="1311" y="340"/>
     </children>
+    <children xmi:type="notation:Shape" xmi:id="_TtNEYOZREeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_TtNEYeZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtNEY-ZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TtNEYuZREeuVT7lNNtd7UA" x="280" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_TtTLA-ZREeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_TtTLBOZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtTyEOZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TtTLBeZREeuVT7lNNtd7UA" x="400" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_TtXccOZREeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_TtXcceZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtXcc-ZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Dependency"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TtXccuZREeuVT7lNNtd7UA" x="1171" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_TtafwOZREeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_TtafweZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ttafw-ZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TtafwuZREeuVT7lNNtd7UA" x="1000" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_TthNcOZREeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_TthNceZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TthNc-ZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TthNcuZREeuVT7lNNtd7UA" x="280" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_TtkQw-ZREeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_TtkQxOZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtkQxuZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataType"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TtkQxeZREeuVT7lNNtd7UA" x="1311" y="340"/>
+    </children>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_cj6rMcoREeGKstsYRuxdvw"/>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_fn4vYFCbEeWdH-pLiDvc5A" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_EmDBAGsqEem--q1goitNuQ" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
@@ -861,6 +909,66 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ahNlF4Y3EemX0PaewOryfg"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ahNlGIY3EemX0PaewOryfg"/>
     </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TtNEZOZREeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_f4faUMoREeGKstsYRuxdvw" target="_TtNEYOZREeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_TtNEZeZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtNEaeZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TtNEZuZREeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtNEZ-ZREeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtNEaOZREeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TtTyEeZREeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_hBS1cMoREeGKstsYRuxdvw" target="_TtTLA-ZREeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_TtTyEuZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtTyFuZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TtTyE-ZREeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtTyFOZREeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtTyFeZREeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TtXcdOZREeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_1ujusMoREeGKstsYRuxdvw" target="_TtXccOZREeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_TtXcdeZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtXceeZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Dependency"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TtXcduZREeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtXcd-ZREeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtXceOZREeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TtafxOZREeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_2QldsMoREeGKstsYRuxdvw" target="_TtafwOZREeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_TtafxeZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtafyeZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TtafxuZREeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ttafx-ZREeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtafyOZREeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TthNdOZREeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_AGCaEMp5EeGa7fAyIn2eXA" target="_TthNcOZREeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_TthNdeZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TthNeeZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TthNduZREeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TthNd-ZREeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TthNeOZREeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TtkQx-ZREeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_Oin68F5fEeKpvPHLdOdp2Q" target="_TtkQw-ZREeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_TtkQyOZREeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_TtkQzOZREeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataType"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TtkQyeZREeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtkQyuZREeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TtkQy-ZREeuVT7lNNtd7UA"/>
+    </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_UNXagMoSEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Tweaks" measurementUnit="Pixel">
     <children xmi:type="notation:Shape" xmi:id="_XJFkwMoSEeGKstsYRuxdvw" type="Stereotype_Shape" fontName="Sans Serif" lineColor="0">
@@ -1274,7 +1382,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SGgVmma2EeWN5dA9YwhK2A"/>
       </children>
       <element xmi:type="uml:Stereotype" href="C_Cpp.profile.uml#_5yQWcByNEdu0tMSz-ceC5A"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SGfHcWa2EeWN5dA9YwhK2A" x="1140" y="122" width="161" height="117"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SGfHcWa2EeWN5dA9YwhK2A" x="900" y="482" width="161" height="117"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_TjLu8Ga2EeWN5dA9YwhK2A" type="Class_MetaclassShape">
       <children xmi:type="notation:DecorationNode" xmi:id="_TjLu8ma2EeWN5dA9YwhK2A" type="Class_MetaclassNameLabel"/>
@@ -1284,12 +1392,12 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TjaYcma2EeWN5dA9YwhK2A"/>
       </children>
       <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TjLu8Wa2EeWN5dA9YwhK2A" x="1140" y="40" width="161" height="41"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TjLu8Wa2EeWN5dA9YwhK2A" x="900" y="400" width="161" height="41"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_gLsHkGa2EeWN5dA9YwhK2A" type="Comment_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_gLsuoGa2EeWN5dA9YwhK2A" type="Comment_BodyLabel"/>
       <element xmi:type="uml:Comment" href="C_Cpp.profile.uml#_gLqSYGa2EeWN5dA9YwhK2A"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gLsHkWa2EeWN5dA9YwhK2A" x="1140" y="260" width="181" height="101"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gLsHkWa2EeWN5dA9YwhK2A" x="700" y="620" width="381" height="61"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_alWrUHQWEeWPzK4C44T8yw" type="Comment_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_alXSYHQWEeWPzK4C44T8yw" type="Comment_BodyLabel"/>
@@ -1389,6 +1497,129 @@
       <element xsi:nil="true"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sgKc0t09EemDnfctDETXVA" x="1160" y="40"/>
     </children>
+    <children xmi:type="notation:Shape" xmi:id="_RzBH8-VGEeuAROS7kfE6Kg" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_RzBH9OVGEeuAROS7kfE6Kg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_RzBH9uVGEeuAROS7kfE6Kg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RzBH9eVGEeuAROS7kfE6Kg" x="220" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RzDkM-VGEeuAROS7kfE6Kg" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_RzDkNOVGEeuAROS7kfE6Kg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_RzDkNuVGEeuAROS7kfE6Kg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RzDkNeVGEeuAROS7kfE6Kg" x="220" y="400"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RzPxc-VGEeuAROS7kfE6Kg" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_RzPxdOVGEeuAROS7kfE6Kg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_RzPxduVGEeuAROS7kfE6Kg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RzPxdeVGEeuAROS7kfE6Kg" x="740" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RzUC4OVGEeuAROS7kfE6Kg" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_RzUC4eVGEeuAROS7kfE6Kg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_RzUC4-VGEeuAROS7kfE6Kg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RzUC4uVGEeuAROS7kfE6Kg" x="1340" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_VeVjIOVGEeuAROS7kfE6Kg" type="Class_MetaclassShape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VeWKMuVGEeuAROS7kfE6Kg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VeWKM-VGEeuAROS7kfE6Kg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VeWKNOVGEeuAROS7kfE6Kg" key="StereotypeList" value="StandardProfile::Metaclass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VeWKNeVGEeuAROS7kfE6Kg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VeWKNuVGEeuAROS7kfE6Kg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VeWxQOVGEeuAROS7kfE6Kg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_VeWKMOVGEeuAROS7kfE6Kg" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VeWKMeVGEeuAROS7kfE6Kg" x="940" y="40" width="201"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_XGmhcOVGEeuAROS7kfE6Kg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_XGmhcuVGEeuAROS7kfE6Kg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XGmhc-VGEeuAROS7kfE6Kg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XGmhdOVGEeuAROS7kfE6Kg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XGmhdeVGEeuAROS7kfE6Kg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XGnIgOVGEeuAROS7kfE6Kg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XGnIgeVGEeuAROS7kfE6Kg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XGnIguVGEeuAROS7kfE6Kg" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XGnIg-VGEeuAROS7kfE6Kg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XGnIhOVGEeuAROS7kfE6Kg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XGnIheVGEeuAROS7kfE6Kg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XGnIhuVGEeuAROS7kfE6Kg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="C_Cpp.profile.uml#_XGl6YOVGEeuAROS7kfE6Kg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XGmhceVGEeuAROS7kfE6Kg" x="940" y="120" width="81" height="81"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bcducOVGEeuAROS7kfE6Kg" type="Comment_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bcducuVGEeuAROS7kfE6Kg" type="Comment_BodyLabel"/>
+      <element xmi:type="uml:Comment" href="C_Cpp.profile.uml#_bccgUOVGEeuAROS7kfE6Kg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bcduceVGEeuAROS7kfE6Kg" x="940" y="262" width="201" height="117"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_qTZqoOZQEeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_qTZqoeZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qTZqo-ZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qTZqouZQEeuVT7lNNtd7UA" x="220" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_qTdVAOZQEeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_qTdVAeZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qTdVA-ZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qTdVAuZQEeuVT7lNNtd7UA" x="220" y="400"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_qTrXc-ZQEeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_qTrXdOZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qTr-gOZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qTrXdeZQEeuVT7lNNtd7UA" x="740" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_qTw3AOZQEeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_qTw3AeZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qTw3A-ZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qTw3AuZQEeuVT7lNNtd7UA" x="1340" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_qT5Z4-ZQEeuVT7lNNtd7UA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_qT5Z5OZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qT5Z5uZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qT5Z5eZQEeuVT7lNNtd7UA" x="1140" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_s9nOIOZQEeuVT7lNNtd7UA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_s9ocQOZQEeuVT7lNNtd7UA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_s9ocQeZQEeuVT7lNNtd7UA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_s9ocQuZQEeuVT7lNNtd7UA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_s9ocQ-ZQEeuVT7lNNtd7UA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_s9ocROZQEeuVT7lNNtd7UA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s9ocReZQEeuVT7lNNtd7UA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_s9ocRuZQEeuVT7lNNtd7UA" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_s9ocR-ZQEeuVT7lNNtd7UA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_s9ocSOZQEeuVT7lNNtd7UA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_s9ocSeZQEeuVT7lNNtd7UA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s9ocSuZQEeuVT7lNNtd7UA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="C_Cpp.profile.uml#_s9f5YOZQEeuVT7lNNtd7UA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s9nOIeZQEeuVT7lNNtd7UA" x="1060" y="120" width="81" height="81"/>
+    </children>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_UNXagcoSEeGKstsYRuxdvw"/>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_f3USgFCbEeWdH-pLiDvc5A" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_w_0JUHhaEeiOavVT0s3kHg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
@@ -1510,7 +1741,7 @@
     <edges xmi:type="notation:Connector" xmi:id="_TkQtAGa2EeWN5dA9YwhK2A" type="Extension_Edge" source="_SGfHcGa2EeWN5dA9YwhK2A" target="_TjLu8Ga2EeWN5dA9YwhK2A">
       <styles xmi:type="notation:FontStyle" xmi:id="_TkQtAWa2EeWN5dA9YwhK2A"/>
       <element xmi:type="uml:Extension" href="C_Cpp.profile.uml#_DqJooByOEdu0tMSz-ceC5A"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TkQtAma2EeWN5dA9YwhK2A" points="[1220, 122, -643984, -643984]$[1220, 81, -643984, -643984]"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TkQtAma2EeWN5dA9YwhK2A" points="[980, 482, -643984, -643984]$[980, 441, -643984, -643984]"/>
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UDBsoGa2EeWN5dA9YwhK2A" id="(0.4968944099378882,0.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UDBsoWa2EeWN5dA9YwhK2A" id="(0.4968944099378882,1.0)"/>
     </edges>
@@ -1641,6 +1872,131 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sgKc1909EemDnfctDETXVA"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sgKc2N09EemDnfctDETXVA"/>
     </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_RzBH9-VGEeuAROS7kfE6Kg" type="StereotypeCommentLink" source="_XzsA8MoSEeGKstsYRuxdvw" target="_RzBH8-VGEeuAROS7kfE6Kg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_RzBH-OVGEeuAROS7kfE6Kg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_RzBH_OVGEeuAROS7kfE6Kg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RzBH-eVGEeuAROS7kfE6Kg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RzBH-uVGEeuAROS7kfE6Kg"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RzBH--VGEeuAROS7kfE6Kg"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_RzDkN-VGEeuAROS7kfE6Kg" type="StereotypeCommentLink" source="_YR4Y0MoSEeGKstsYRuxdvw" target="_RzDkM-VGEeuAROS7kfE6Kg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_RzDkOOVGEeuAROS7kfE6Kg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_RzDkPOVGEeuAROS7kfE6Kg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RzDkOeVGEeuAROS7kfE6Kg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RzDkOuVGEeuAROS7kfE6Kg"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RzDkO-VGEeuAROS7kfE6Kg"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_RzPxd-VGEeuAROS7kfE6Kg" type="StereotypeCommentLink" source="_CBn6wOPxEeKKu7vQg_d5Xw" target="_RzPxc-VGEeuAROS7kfE6Kg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_RzPxeOVGEeuAROS7kfE6Kg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_RzQYguVGEeuAROS7kfE6Kg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RzPxeeVGEeuAROS7kfE6Kg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RzQYgOVGEeuAROS7kfE6Kg"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RzQYgeVGEeuAROS7kfE6Kg"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_RzUC5OVGEeuAROS7kfE6Kg" type="StereotypeCommentLink" source="_TjLu8Ga2EeWN5dA9YwhK2A" target="_RzUC4OVGEeuAROS7kfE6Kg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_RzUC5eVGEeuAROS7kfE6Kg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_RzUC6eVGEeuAROS7kfE6Kg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RzUC5uVGEeuAROS7kfE6Kg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RzUC5-VGEeuAROS7kfE6Kg"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RzUC6OVGEeuAROS7kfE6Kg"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ceB5IOVGEeuAROS7kfE6Kg" type="Comment_AnnotatedElementEdge" source="_bcducOVGEeuAROS7kfE6Kg" target="_XGmhcOVGEeuAROS7kfE6Kg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_ceB5IeVGEeuAROS7kfE6Kg"/>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ceB5IuVGEeuAROS7kfE6Kg" points="[1020, 260, -643984, -643984]$[1020, 241, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cfdcgOVGEeuAROS7kfE6Kg" id="(0.29850746268656714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cfdcgeVGEeuAROS7kfE6Kg" id="(0.7407407407407407,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dIwRIOVGEeuAROS7kfE6Kg" type="Comment_AnnotatedElementEdge" source="_gLsHkGa2EeWN5dA9YwhK2A" target="_SGfHcGa2EeWN5dA9YwhK2A">
+      <styles xmi:type="notation:FontStyle" xmi:id="_dIwRIeVGEeuAROS7kfE6Kg"/>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dIwRIuVGEeuAROS7kfE6Kg" points="[960, 620, -643984, -643984]$[960, 599, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dKc6QOVGEeuAROS7kfE6Kg" id="(0.6824146981627297,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dKc6QeVGEeuAROS7kfE6Kg" id="(0.37267080745341613,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_wvDiUOVGEeuAROS7kfE6Kg" type="Extension_Edge" source="_XGmhcOVGEeuAROS7kfE6Kg" target="_VeVjIOVGEeuAROS7kfE6Kg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_wvDiUeVGEeuAROS7kfE6Kg"/>
+      <element xmi:type="uml:Extension" href="C_Cpp.profile.uml#_wuTUYOVGEeuAROS7kfE6Kg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wvDiUuVGEeuAROS7kfE6Kg" points="[1000, 120, -643984, -643984]$[1000, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wwcCYOVGEeuAROS7kfE6Kg" id="(0.49382716049382713,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wwcpcOVGEeuAROS7kfE6Kg" id="(0.19900497512437812,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_qTZqpOZQEeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_XzsA8MoSEeGKstsYRuxdvw" target="_qTZqoOZQEeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_qTZqpeZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qTZqqeZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qTZqpuZQEeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qTZqp-ZQEeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qTZqqOZQEeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_qTdVBOZQEeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_YR4Y0MoSEeGKstsYRuxdvw" target="_qTdVAOZQEeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_qTdVBeZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qTdVCeZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qTdVBuZQEeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qTdVB-ZQEeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qTdVCOZQEeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_qTr-geZQEeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_CBn6wOPxEeKKu7vQg_d5Xw" target="_qTrXc-ZQEeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_qTr-guZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qTr-huZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qTr-g-ZQEeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qTr-hOZQEeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qTr-heZQEeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_qTw3BOZQEeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_TjLu8Ga2EeWN5dA9YwhK2A" target="_qTw3AOZQEeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_qTw3BeZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qTw3CeZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qTw3BuZQEeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qTw3B-ZQEeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qTw3COZQEeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_qT5Z5-ZQEeuVT7lNNtd7UA" type="StereotypeCommentLink" source="_VeVjIOVGEeuAROS7kfE6Kg" target="_qT5Z4-ZQEeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_qT5Z6OZQEeuVT7lNNtd7UA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_qT5Z7OZQEeuVT7lNNtd7UA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qT5Z6eZQEeuVT7lNNtd7UA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qT5Z6uZQEeuVT7lNNtd7UA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qT5Z6-ZQEeuVT7lNNtd7UA"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5mVCIOZQEeuVT7lNNtd7UA" type="Extension_Edge" source="_s9nOIOZQEeuVT7lNNtd7UA" target="_VeVjIOVGEeuAROS7kfE6Kg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_5mVCIeZQEeuVT7lNNtd7UA"/>
+      <element xmi:type="uml:Extension" href="C_Cpp.profile.uml#_5lR5QOZQEeuVT7lNNtd7UA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5mVCIuZQEeuVT7lNNtd7UA" points="[1120, 120, -643984, -643984]$[1120, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5n1eAOZQEeuVT7lNNtd7UA" id="(0.49382716049382713,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5n1eAeZQEeuVT7lNNtd7UA" id="(0.7960199004975125,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_IwrscOZREeuVT7lNNtd7UA" type="Comment_AnnotatedElementEdge" source="_bcducOVGEeuAROS7kfE6Kg" target="_s9nOIOZQEeuVT7lNNtd7UA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_IwrsceZREeuVT7lNNtd7UA"/>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IwrscuZREeuVT7lNNtd7UA" points="[1040, 262, -643984, -643984]$[1080, 201, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IyH24OZREeuVT7lNNtd7UA" id="(0.7960199004975125,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IyH24eZREeuVT7lNNtd7UA" id="(0.49382716049382713,1.0)"/>
+    </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_VN2nIMoSEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Templates" measurementUnit="Pixel">
     <children xmi:type="notation:Shape" xmi:id="_w3sQ8MoSEeGKstsYRuxdvw" type="Stereotype_Shape" fontName="Sans Serif" lineColor="0">
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.profile.uml b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.profile.uml
index 335ec05..f8e25b3 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.profile.uml
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/profiles/C_Cpp.profile.uml
@@ -17,7 +17,7 @@
     <body>&lt;p>Indicates that this package shoudl be a root package, i.e. its contents should appear on top level folder during generation. Currently not used&lt;/p>
 </body>
   </ownedComment>
-  <ownedComment xmi:type="uml:Comment" xmi:id="_gLqSYGa2EeWN5dA9YwhK2A">
+  <ownedComment xmi:type="uml:Comment" xmi:id="_gLqSYGa2EeWN5dA9YwhK2A" annotatedElement="_5yQWcByNEdu0tMSz-ceC5A">
     <body>Declare a new type that is based on another type.
 Can be used to define for instance primitive types (like int). Can also be used for function pointers (see wiki)</body>
   </ownedComment>
@@ -34,6 +34,10 @@
   <ownedComment xmi:type="uml:Comment" xmi:id="_L_jFIBOrEeuuOZ_ASqLxzw" annotatedElement="_ZWsFYBOrEeuuOZ_ASqLxzw">
     <body>If applied, generate default constructor/destructor (supported by C code generator)</body>
   </ownedComment>
+  <ownedComment xmi:type="uml:Comment" xmi:id="_bccgUOVGEeuAROS7kfE6Kg" annotatedElement="_XGl6YOVGEeuAROS7kfE6Kg _s9f5YOZQEeuVT7lNNtd7UA">
+    <body>C++ modifiers that are applied to an operator or constructor.
+Produce for =delete or =default statements</body>
+  </ownedComment>
   <elementImport xmi:type="uml:ElementImport" xmi:id="_TRvswByHEduN1bTiWJ0lyw">
     <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
   </elementImport>
@@ -548,4 +552,22 @@
   <packagedElement xmi:type="uml:Extension" xmi:id="_ezba4BOrEeuuOZ_ASqLxzw" name="E_DefaultConstructor_Class93" memberEnd="_ezcpABOrEeuuOZ_ASqLxzw _ezdQEBOrEeuuOZ_ASqLxzw">
     <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ezcpABOrEeuuOZ_ASqLxzw" name="extension_DefaultConstructor" type="_ZWsFYBOrEeuuOZ_ASqLxzw" aggregation="composite" association="_ezba4BOrEeuuOZ_ASqLxzw"/>
   </packagedElement>
+  <packagedElement xmi:type="uml:Stereotype" xmi:id="_XGl6YOVGEeuAROS7kfE6Kg" name="Delete">
+    <ownedAttribute xmi:type="uml:Property" xmi:id="_wuVJkeVGEeuAROS7kfE6Kg" name="base_Operation" association="_wuTUYOVGEeuAROS7kfE6Kg">
+      <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wuVJkuVGEeuAROS7kfE6Kg"/>
+    </ownedAttribute>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Extension" xmi:id="_wuTUYOVGEeuAROS7kfE6Kg" name="E_Delete_Operation96" memberEnd="_wuVJkOVGEeuAROS7kfE6Kg _wuVJkeVGEeuAROS7kfE6Kg">
+    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_wuVJkOVGEeuAROS7kfE6Kg" name="extension_Delete" type="_XGl6YOVGEeuAROS7kfE6Kg" aggregation="composite" association="_wuTUYOVGEeuAROS7kfE6Kg"/>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Stereotype" xmi:id="_s9f5YOZQEeuVT7lNNtd7UA" name="Default">
+    <ownedAttribute xmi:type="uml:Property" xmi:id="_5lTuceZQEeuVT7lNNtd7UA" name="base_Operation" association="_5lR5QOZQEeuVT7lNNtd7UA">
+      <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5lTucuZQEeuVT7lNNtd7UA"/>
+    </ownedAttribute>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Extension" xmi:id="_5lR5QOZQEeuVT7lNNtd7UA" name="E_Default_Operation98" memberEnd="_5lTucOZQEeuVT7lNNtd7UA _5lTuceZQEeuVT7lNNtd7UA">
+    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_5lTucOZQEeuVT7lNNtd7UA" name="extension_Default" type="_s9f5YOZQEeuVT7lNNtd7UA" aggregation="composite" association="_5lR5QOZQEeuVT7lNNtd7UA"/>
+  </packagedElement>
 </uml:Profile>
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/C_CppFactory.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/C_CppFactory.java
index e68f51a..d4bc4fb 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/C_CppFactory.java
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/C_CppFactory.java
@@ -250,6 +250,24 @@
 	DefaultConstructor createDefaultConstructor();
 
 	/**
+	 * Returns a new object of class '<em>Delete</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Delete</em>'.
+	 * @generated
+	 */
+	Delete createDelete();
+
+	/**
+	 * Returns a new object of class '<em>Default</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Default</em>'.
+	 * @generated
+	 */
+	Default createDefault();
+
+	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/C_CppPackage.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/C_CppPackage.java
index 1977ce6..8d736cc 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/C_CppPackage.java
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/C_CppPackage.java
@@ -387,7 +387,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getArray()
 	 * @generated
 	 */
-	int ARRAY = 7;
+	int ARRAY = 10;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.ConstImpl <em>Const</em>}' class.
@@ -397,7 +397,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getConst()
 	 * @generated
 	 */
-	int CONST = 8;
+	int CONST = 11;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.RefImpl <em>Ref</em>}' class.
@@ -407,7 +407,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getRef()
 	 * @generated
 	 */
-	int REF = 9;
+	int REF = 12;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.ExternalImpl <em>External</em>}' class.
@@ -417,7 +417,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getExternal()
 	 * @generated
 	 */
-	int EXTERNAL = 10;
+	int EXTERNAL = 13;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.ConstInitImpl <em>Const Init</em>}' class.
@@ -427,7 +427,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getConstInit()
 	 * @generated
 	 */
-	int CONST_INIT = 11;
+	int CONST_INIT = 14;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.FriendImpl <em>Friend</em>}' class.
@@ -437,7 +437,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getFriend()
 	 * @generated
 	 */
-	int FRIEND = 12;
+	int FRIEND = 15;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.InlineImpl <em>Inline</em>}' class.
@@ -447,7 +447,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getInline()
 	 * @generated
 	 */
-	int INLINE = 13;
+	int INLINE = 16;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.VirtualImpl <em>Virtual</em>}' class.
@@ -457,7 +457,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getVirtual()
 	 * @generated
 	 */
-	int VIRTUAL = 14;
+	int VIRTUAL = 17;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.TypedefImpl <em>Typedef</em>}' class.
@@ -467,7 +467,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getTypedef()
 	 * @generated
 	 */
-	int TYPEDEF = 15;
+	int TYPEDEF = 5;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.VisibilityImpl <em>Visibility</em>}' class.
@@ -477,7 +477,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getVisibility()
 	 * @generated
 	 */
-	int VISIBILITY = 16;
+	int VISIBILITY = 18;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.CppInitImpl <em>Cpp Init</em>}' class.
@@ -487,7 +487,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getCppInit()
 	 * @generated
 	 */
-	int CPP_INIT = 17;
+	int CPP_INIT = 19;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.TemplateImpl <em>Template</em>}' class.
@@ -497,7 +497,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getTemplate()
 	 * @generated
 	 */
-	int TEMPLATE = 18;
+	int TEMPLATE = 20;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.UnionImpl <em>Union</em>}' class.
@@ -507,7 +507,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getUnion()
 	 * @generated
 	 */
-	int UNION = 19;
+	int UNION = 21;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.StorageClassImpl <em>Storage Class</em>}' class.
@@ -517,7 +517,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getStorageClass()
 	 * @generated
 	 */
-	int STORAGE_CLASS = 20;
+	int STORAGE_CLASS = 22;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.VolatileImpl <em>Volatile</em>}' class.
@@ -527,7 +527,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getVolatile()
 	 * @generated
 	 */
-	int VOLATILE = 21;
+	int VOLATILE = 23;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.VariadicImpl <em>Variadic</em>}' class.
@@ -537,7 +537,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getVariadic()
 	 * @generated
 	 */
-	int VARIADIC = 22;
+	int VARIADIC = 24;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.MutableImpl <em>Mutable</em>}' class.
@@ -547,7 +547,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getMutable()
 	 * @generated
 	 */
-	int MUTABLE = 23;
+	int MUTABLE = 25;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.EnumStyleImpl <em>Enum Style</em>}' class.
@@ -557,7 +557,63 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getEnumStyle()
 	 * @generated
 	 */
-	int ENUM_STYLE = 5;
+	int ENUM_STYLE = 6;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultConstructorImpl <em>Default Constructor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultConstructorImpl
+	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getDefaultConstructor()
+	 * @generated
+	 */
+	int DEFAULT_CONSTRUCTOR = 7;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DeleteImpl <em>Delete</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DeleteImpl
+	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getDelete()
+	 * @generated
+	 */
+	int DELETE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Definition</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPEDEF__DEFINITION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base primitivetype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPEDEF__BASE_PRIMITIVETYPE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Typedef</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPEDEF_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Typedef</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPEDEF_OPERATION_COUNT = 0;
 
 	/**
 	 * The feature id for the '<em><b>Base Enumeration</b></em>' reference.
@@ -605,16 +661,6 @@
 	int ENUM_STYLE_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultConstructorImpl <em>Default Constructor</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultConstructorImpl
-	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getDefaultConstructor()
-	 * @generated
-	 */
-	int DEFAULT_CONSTRUCTOR = 6;
-
-	/**
 	 * The feature id for the '<em><b>Base Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -642,6 +688,70 @@
 	int DEFAULT_CONSTRUCTOR_OPERATION_COUNT = 0;
 
 	/**
+	 * The feature id for the '<em><b>Base Operation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DELETE__BASE_OPERATION = 0;
+
+	/**
+	 * The number of structural features of the '<em>Delete</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DELETE_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Delete</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DELETE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultImpl <em>Default</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultImpl
+	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getDefault()
+	 * @generated
+	 */
+	int DEFAULT = 9;
+
+	/**
+	 * The feature id for the '<em><b>Base Operation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEFAULT__BASE_OPERATION = 0;
+
+	/**
+	 * The number of structural features of the '<em>Default</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEFAULT_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Default</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEFAULT_OPERATION_COUNT = 0;
+
+	/**
 	 * The feature id for the '<em><b>Base parameter</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -957,42 +1067,6 @@
 	int VIRTUAL_OPERATION_COUNT = 0;
 
 	/**
-	 * The feature id for the '<em><b>Definition</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TYPEDEF__DEFINITION = 0;
-
-	/**
-	 * The feature id for the '<em><b>Base primitivetype</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TYPEDEF__BASE_PRIMITIVETYPE = 1;
-
-	/**
-	 * The number of structural features of the '<em>Typedef</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TYPEDEF_FEATURE_COUNT = 2;
-
-	/**
-	 * The number of operations of the '<em>Typedef</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TYPEDEF_OPERATION_COUNT = 0;
-
-	/**
 	 * The feature id for the '<em><b>Value</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1279,7 +1353,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getVisibilityKind()
 	 * @generated
 	 */
-	int VISIBILITY_KIND = 24;
+	int VISIBILITY_KIND = 26;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.EAccessKind <em>EAccess Kind</em>}' enum.
@@ -1289,7 +1363,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getEAccessKind()
 	 * @generated
 	 */
-	int EACCESS_KIND = 25;
+	int EACCESS_KIND = 27;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.EStorageClass <em>EStorage Class</em>}' enum.
@@ -1299,7 +1373,7 @@
 	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getEStorageClass()
 	 * @generated
 	 */
-	int ESTORAGE_CLASS = 26;
+	int ESTORAGE_CLASS = 28;
 
 
 	/**
@@ -2192,6 +2266,48 @@
 	EReference getDefaultConstructor_Base_Class();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete <em>Delete</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Delete</em>'.
+	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete
+	 * @generated
+	 */
+	EClass getDelete();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete#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.designer.languages.cpp.profile.C_Cpp.Delete#getBase_Operation()
+	 * @see #getDelete()
+	 * @generated
+	 */
+	EReference getDelete_Base_Operation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default <em>Default</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Default</em>'.
+	 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default
+	 * @generated
+	 */
+	EClass getDefault();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default#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.designer.languages.cpp.profile.C_Cpp.Default#getBase_Operation()
+	 * @see #getDefault()
+	 * @generated
+	 */
+	EReference getDefault_Base_Operation();
+
+	/**
 	 * Returns the meta object for enum '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.VisibilityKind <em>Visibility Kind</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2956,6 +3072,42 @@
 		EReference DEFAULT_CONSTRUCTOR__BASE_CLASS = eINSTANCE.getDefaultConstructor_Base_Class();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DeleteImpl <em>Delete</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DeleteImpl
+		 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getDelete()
+		 * @generated
+		 */
+		EClass DELETE = eINSTANCE.getDelete();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Operation</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DELETE__BASE_OPERATION = eINSTANCE.getDelete_Base_Operation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultImpl <em>Default</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultImpl
+		 * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.C_CppPackageImpl#getDefault()
+		 * @generated
+		 */
+		EClass DEFAULT = eINSTANCE.getDefault();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Operation</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DEFAULT__BASE_OPERATION = eINSTANCE.getDefault_Base_Operation();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.VisibilityKind <em>Visibility Kind</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Default.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Default.java
new file mode 100644
index 0000000..10a1d9a
--- /dev/null
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Default.java
@@ -0,0 +1,57 @@
+/**
+ */
+package org.eclipse.papyrus.designer.languages.cpp.profile.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>Default</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * C++ modifiers that are applied to an operator or constructor.
+ * Produce for =delete or =default statements
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default#getBase_Operation <em>Base Operation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.C_CppPackage#getDefault()
+ * @model
+ * @generated
+ */
+public interface Default 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.designer.languages.cpp.profile.C_Cpp.C_CppPackage#getDefault_Base_Operation()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Operation getBase_Operation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default#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);
+
+} // Default
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Delete.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Delete.java
new file mode 100644
index 0000000..9b3829d
--- /dev/null
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Delete.java
@@ -0,0 +1,57 @@
+/**
+ */
+package org.eclipse.papyrus.designer.languages.cpp.profile.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>Delete</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * C++ modifiers that are applied to an operator or constructor.
+ * Produce for =delete or =default statements
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete#getBase_Operation <em>Base Operation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.C_CppPackage#getDelete()
+ * @model
+ * @generated
+ */
+public interface Delete 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.designer.languages.cpp.profile.C_Cpp.C_CppPackage#getDelete_Base_Operation()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Operation getBase_Operation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete#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);
+
+} // Delete
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Typedef.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Typedef.java
index 1c73ce6..3f032e6 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Typedef.java
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/Typedef.java
@@ -22,6 +22,11 @@
  * A representation of the model object '<em><b>Typedef</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <!-- begin-model-doc -->
+ * Declare a new type that is based on another type.
+ * Can be used to define for instance primitive types (like int). Can also be used for function pointers (see wiki)
+ * <!-- end-model-doc -->
+ *
  * <p>
  * The following features are supported:
  * </p>
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/C_CppFactoryImpl.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/C_CppFactoryImpl.java
index 6e7c3b3..9d8a999 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/C_CppFactoryImpl.java
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/C_CppFactoryImpl.java
@@ -71,8 +71,11 @@
 			case C_CppPackage.MANUAL_GENERATION: return createManualGeneration();
 			case C_CppPackage.EXTERN_LIBRARY: return createExternLibrary();
 			case C_CppPackage.CPP_ROOT: return createCppRoot();
+			case C_CppPackage.TYPEDEF: return createTypedef();
 			case C_CppPackage.ENUM_STYLE: return createEnumStyle();
 			case C_CppPackage.DEFAULT_CONSTRUCTOR: return createDefaultConstructor();
+			case C_CppPackage.DELETE: return createDelete();
+			case C_CppPackage.DEFAULT: return createDefault();
 			case C_CppPackage.ARRAY: return createArray();
 			case C_CppPackage.CONST: return createConst();
 			case C_CppPackage.REF: return createRef();
@@ -81,7 +84,6 @@
 			case C_CppPackage.FRIEND: return createFriend();
 			case C_CppPackage.INLINE: return createInline();
 			case C_CppPackage.VIRTUAL: return createVirtual();
-			case C_CppPackage.TYPEDEF: return createTypedef();
 			case C_CppPackage.VISIBILITY: return createVisibility();
 			case C_CppPackage.CPP_INIT: return createCppInit();
 			case C_CppPackage.TEMPLATE: return createTemplate();
@@ -402,6 +404,28 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
+	public Delete createDelete() {
+		DeleteImpl delete = new DeleteImpl();
+		return delete;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Default createDefault() {
+		DefaultImpl default_ = new DefaultImpl();
+		return default_;
+	}
+
+	/**
+	 * <!-- 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() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/C_CppPackageImpl.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/C_CppPackageImpl.java
index 8bd6eed..efcc506 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/C_CppPackageImpl.java
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/C_CppPackageImpl.java
@@ -28,7 +28,9 @@
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.ConstInit;
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.CppInit;
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.CppRoot;
+import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default;
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.DefaultConstructor;
+import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete;
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.EAccessKind;
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.EStorageClass;
 import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.EnumStyle;
@@ -233,6 +235,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass deleteEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass defaultEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EEnum visibilityKindEEnum = null;
 
 	/**
@@ -1149,6 +1165,46 @@
 	 * @generated
 	 */
 	@Override
+	public EClass getDelete() {
+		return deleteEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getDelete_Base_Operation() {
+		return (EReference)deleteEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDefault() {
+		return defaultEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getDefault_Base_Operation() {
+		return (EReference)defaultEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EEnum getVisibilityKind() {
 		return visibilityKindEEnum;
 	}
@@ -1231,6 +1287,10 @@
 		cppRootEClass = createEClass(CPP_ROOT);
 		createEReference(cppRootEClass, CPP_ROOT__BASE_PACKAGE);
 
+		typedefEClass = createEClass(TYPEDEF);
+		createEAttribute(typedefEClass, TYPEDEF__DEFINITION);
+		createEReference(typedefEClass, TYPEDEF__BASE_PRIMITIVETYPE);
+
 		enumStyleEClass = createEClass(ENUM_STYLE);
 		createEReference(enumStyleEClass, ENUM_STYLE__BASE_ENUMERATION);
 		createEAttribute(enumStyleEClass, ENUM_STYLE__CLASS_ENUM);
@@ -1239,6 +1299,12 @@
 		defaultConstructorEClass = createEClass(DEFAULT_CONSTRUCTOR);
 		createEReference(defaultConstructorEClass, DEFAULT_CONSTRUCTOR__BASE_CLASS);
 
+		deleteEClass = createEClass(DELETE);
+		createEReference(deleteEClass, DELETE__BASE_OPERATION);
+
+		defaultEClass = createEClass(DEFAULT);
+		createEReference(defaultEClass, DEFAULT__BASE_OPERATION);
+
 		arrayEClass = createEClass(ARRAY);
 		createEReference(arrayEClass, ARRAY__BASE_PARAMETER);
 		createEAttribute(arrayEClass, ARRAY__DEFINITION);
@@ -1274,10 +1340,6 @@
 		virtualEClass = createEClass(VIRTUAL);
 		createEReference(virtualEClass, VIRTUAL__BASE_OPERATION);
 
-		typedefEClass = createEClass(TYPEDEF);
-		createEAttribute(typedefEClass, TYPEDEF__DEFINITION);
-		createEReference(typedefEClass, TYPEDEF__BASE_PRIMITIVETYPE);
-
 		visibilityEClass = createEClass(VISIBILITY);
 		createEAttribute(visibilityEClass, VISIBILITY__VALUE);
 		createEReference(visibilityEClass, VISIBILITY__BASE_GENERALIZATION);
@@ -1378,6 +1440,10 @@
 		initEClass(cppRootEClass, CppRoot.class, "CppRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEReference(getCppRoot_Base_package(), theUMLPackage.getPackage(), null, "base_package", null, 1, 1, CppRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
 
+		initEClass(typedefEClass, Typedef.class, "Typedef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getTypedef_Definition(), theTypesPackage.getString(), "definition", null, 1, 1, Typedef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getTypedef_Base_primitivetype(), theUMLPackage.getPrimitiveType(), null, "base_primitivetype", null, 1, 1, Typedef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
 		initEClass(enumStyleEClass, EnumStyle.class, "EnumStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEReference(getEnumStyle_Base_Enumeration(), theUMLPackage.getEnumeration(), null, "base_Enumeration", null, 0, 1, EnumStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
 		initEAttribute(getEnumStyle_ClassEnum(), theTypesPackage.getBoolean(), "classEnum", "true", 1, 1, EnumStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
@@ -1386,6 +1452,12 @@
 		initEClass(defaultConstructorEClass, DefaultConstructor.class, "DefaultConstructor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEReference(getDefaultConstructor_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 0, 1, DefaultConstructor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
 
+		initEClass(deleteEClass, Delete.class, "Delete", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getDelete_Base_Operation(), theUMLPackage.getOperation(), null, "base_Operation", null, 0, 1, Delete.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(defaultEClass, Default.class, "Default", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getDefault_Base_Operation(), theUMLPackage.getOperation(), null, "base_Operation", null, 0, 1, Default.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
 		initEClass(arrayEClass, Array.class, "Array", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEReference(getArray_Base_parameter(), theUMLPackage.getParameter(), null, "base_parameter", null, 0, 1, Array.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
 		initEAttribute(getArray_Definition(), theTypesPackage.getString(), "definition", null, 1, 1, Array.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
@@ -1421,10 +1493,6 @@
 		initEClass(virtualEClass, Virtual.class, "Virtual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEReference(getVirtual_Base_operation(), theUMLPackage.getOperation(), null, "base_operation", null, 1, 1, Virtual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
 
-		initEClass(typedefEClass, Typedef.class, "Typedef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
-		initEAttribute(getTypedef_Definition(), theTypesPackage.getString(), "definition", null, 1, 1, Typedef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
-		initEReference(getTypedef_Base_primitivetype(), theUMLPackage.getPrimitiveType(), null, "base_primitivetype", null, 1, 1, Typedef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
-
 		initEClass(visibilityEClass, Visibility.class, "Visibility", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
 		initEAttribute(getVisibility_Value(), theTypesPackage.getString(), "value", null, 1, 1, Visibility.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
 		initEReference(getVisibility_Base_generalization(), theUMLPackage.getGeneralization(), null, "base_generalization", null, 1, 1, Visibility.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/DefaultImpl.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/DefaultImpl.java
new file mode 100644
index 0000000..d802285
--- /dev/null
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/DefaultImpl.java
@@ -0,0 +1,160 @@
+/**
+ */
+package org.eclipse.papyrus.designer.languages.cpp.profile.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.designer.languages.cpp.profile.C_Cpp.C_CppPackage;
+import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Default</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DefaultImpl#getBase_Operation <em>Base Operation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DefaultImpl extends MinimalEObjectImpl.Container implements Default {
+	/**
+	 * 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 DefaultImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return C_CppPackage.Literals.DEFAULT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	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.DEFAULT__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
+	 */
+	@Override
+	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.DEFAULT__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.DEFAULT__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.DEFAULT__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.DEFAULT__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.DEFAULT__BASE_OPERATION:
+				return base_Operation != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DefaultImpl
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/DeleteImpl.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/DeleteImpl.java
new file mode 100644
index 0000000..be207c2
--- /dev/null
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/impl/DeleteImpl.java
@@ -0,0 +1,160 @@
+/**
+ */
+package org.eclipse.papyrus.designer.languages.cpp.profile.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.designer.languages.cpp.profile.C_Cpp.C_CppPackage;
+import org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Delete</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.impl.DeleteImpl#getBase_Operation <em>Base Operation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DeleteImpl extends MinimalEObjectImpl.Container implements Delete {
+	/**
+	 * 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 DeleteImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return C_CppPackage.Literals.DELETE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	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.DELETE__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
+	 */
+	@Override
+	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.DELETE__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.DELETE__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.DELETE__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.DELETE__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.DELETE__BASE_OPERATION:
+				return base_Operation != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DeleteImpl
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/util/C_CppAdapterFactory.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/util/C_CppAdapterFactory.java
index e520035..4b3602b 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/util/C_CppAdapterFactory.java
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/util/C_CppAdapterFactory.java
@@ -121,6 +121,10 @@
 				return createCppRootAdapter();
 			}
 			@Override
+			public Adapter caseTypedef(Typedef object) {
+				return createTypedefAdapter();
+			}
+			@Override
 			public Adapter caseEnumStyle(EnumStyle object) {
 				return createEnumStyleAdapter();
 			}
@@ -129,6 +133,14 @@
 				return createDefaultConstructorAdapter();
 			}
 			@Override
+			public Adapter caseDelete(Delete object) {
+				return createDeleteAdapter();
+			}
+			@Override
+			public Adapter caseDefault(Default object) {
+				return createDefaultAdapter();
+			}
+			@Override
 			public Adapter caseArray(Array object) {
 				return createArrayAdapter();
 			}
@@ -161,10 +173,6 @@
 				return createVirtualAdapter();
 			}
 			@Override
-			public Adapter caseTypedef(Typedef object) {
-				return createTypedefAdapter();
-			}
-			@Override
 			public Adapter caseVisibility(Visibility object) {
 				return createVisibilityAdapter();
 			}
@@ -553,6 +561,34 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Delete <em>Delete</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.designer.languages.cpp.profile.C_Cpp.Delete
+	 * @generated
+	 */
+	public Adapter createDeleteAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.designer.languages.cpp.profile.C_Cpp.Default <em>Default</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.designer.languages.cpp.profile.C_Cpp.Default
+	 * @generated
+	 */
+	public Adapter createDefaultAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null.
diff --git a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/util/C_CppSwitch.java b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/util/C_CppSwitch.java
index b3845cb..fa5da37 100644
--- a/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/util/C_CppSwitch.java
+++ b/plugins/languages/cpp/org.eclipse.papyrus.designer.languages.cpp.profile/src-gen/org/eclipse/papyrus/designer/languages/cpp/profile/C_Cpp/util/C_CppSwitch.java
@@ -129,6 +129,12 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case C_CppPackage.TYPEDEF: {
+				Typedef typedef = (Typedef)theEObject;
+				T result = caseTypedef(typedef);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case C_CppPackage.ENUM_STYLE: {
 				EnumStyle enumStyle = (EnumStyle)theEObject;
 				T result = caseEnumStyle(enumStyle);
@@ -141,6 +147,18 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case C_CppPackage.DELETE: {
+				Delete delete = (Delete)theEObject;
+				T result = caseDelete(delete);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case C_CppPackage.DEFAULT: {
+				Default default_ = (Default)theEObject;
+				T result = caseDefault(default_);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case C_CppPackage.ARRAY: {
 				Array array = (Array)theEObject;
 				T result = caseArray(array);
@@ -189,12 +207,6 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case C_CppPackage.TYPEDEF: {
-				Typedef typedef = (Typedef)theEObject;
-				T result = caseTypedef(typedef);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			case C_CppPackage.VISIBILITY: {
 				Visibility visibility = (Visibility)theEObject;
 				T result = caseVisibility(visibility);
@@ -608,6 +620,36 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Delete</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>Delete</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDelete(Delete object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Default</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>Default</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDefault(Default object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;